// 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  S3164C4_nt  {
  int s3164c4f0[2];
  void  mf3164c4(); // _ZN10S3164C4_nt8mf3164c4Ev
};
//SIG(-1 S3164C4_nt) C1{ m Fi[2]}


void  S3164C4_nt ::mf3164c4(){}

//skip512 S3164C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3164C3_nt  {
  int s3164c3f0;
  __tsi64 s3164c3f1;
  void *s3164c3f2[4];
  int s3164c3f3[2];
  void *s3164c3f4;
  ::S3164C4_nt s3164c3f5;
  void *s3164c3f6[2];
  virtual  ~S3164C3_nt(); // _ZN10S3164C3_ntD1Ev
  virtual void  v3(); // _ZN10S3164C3_nt2v3Ev
  virtual void  v4(); // _ZN10S3164C3_nt2v4Ev
  virtual void  v5(); // _ZN10S3164C3_nt2v5Ev
  virtual void  v6(); // _ZN10S3164C3_nt2v6Ev
  virtual void  v7(); // _ZN10S3164C3_nt2v7Ev
  virtual void  v8(); // _ZN10S3164C3_nt2v8Ev
  virtual void  v9(); // _ZN10S3164C3_nt2v9Ev
  virtual void  v10(); // _ZN10S3164C3_nt3v10Ev
  virtual void  v11(); // _ZN10S3164C3_nt3v11Ev
  virtual void  v12(); // _ZN10S3164C3_nt3v12Ev
  virtual void  v13(); // _ZN10S3164C3_nt3v13Ev
  virtual void  v14(); // _ZN10S3164C3_nt3v14Ev
  virtual void  v15(); // _ZN10S3164C3_nt3v15Ev
  virtual void  v16(); // _ZN10S3164C3_nt3v16Ev
  virtual void  v17(); // _ZN10S3164C3_nt3v17Ev
  virtual void  v18(); // _ZN10S3164C3_nt3v18Ev
  virtual void  v19(); // _ZN10S3164C3_nt3v19Ev
  virtual void  v20(); // _ZN10S3164C3_nt3v20Ev
  virtual void  v21(); // _ZN10S3164C3_nt3v21Ev
  virtual void  v22(); // _ZN10S3164C3_nt3v22Ev
  virtual void  v23(); // _ZN10S3164C3_nt3v23Ev
  virtual void  v24(); // _ZN10S3164C3_nt3v24Ev
  virtual void  v25(); // _ZN10S3164C3_nt3v25Ev
  virtual void  v26(); // _ZN10S3164C3_nt3v26Ev
  virtual void  v27(); // _ZN10S3164C3_nt3v27Ev
  virtual void  v28(); // _ZN10S3164C3_nt3v28Ev
  virtual void  v29(); // _ZN10S3164C3_nt3v29Ev
  virtual void  v30(); // _ZN10S3164C3_nt3v30Ev
  virtual void  v31(); // _ZN10S3164C3_nt3v31Ev
  virtual void  v32(); // _ZN10S3164C3_nt3v32Ev
  virtual void  v33(); // _ZN10S3164C3_nt3v33Ev
  virtual void  v34(); // _ZN10S3164C3_nt3v34Ev
  virtual void  v35(); // _ZN10S3164C3_nt3v35Ev
  virtual void  v36(); // _ZN10S3164C3_nt3v36Ev
  virtual void  v37(); // _ZN10S3164C3_nt3v37Ev
  virtual void  v38(); // _ZN10S3164C3_nt3v38Ev
  virtual void  v39(); // _ZN10S3164C3_nt3v39Ev
  virtual void  v40(); // _ZN10S3164C3_nt3v40Ev
  virtual void  v41(); // _ZN10S3164C3_nt3v41Ev
  virtual void  v42(); // _ZN10S3164C3_nt3v42Ev
  virtual void  v43(); // _ZN10S3164C3_nt3v43Ev
  virtual void  v44(); // _ZN10S3164C3_nt3v44Ev
  virtual void  v45(); // _ZN10S3164C3_nt3v45Ev
  virtual void  v46(); // _ZN10S3164C3_nt3v46Ev
  virtual void  v47(); // _ZN10S3164C3_nt3v47Ev
  virtual void  v48(); // _ZN10S3164C3_nt3v48Ev
  virtual void  v49(); // _ZN10S3164C3_nt3v49Ev
  virtual void  v50(); // _ZN10S3164C3_nt3v50Ev
  virtual void  v51(); // _ZN10S3164C3_nt3v51Ev
  virtual void  v52(); // _ZN10S3164C3_nt3v52Ev
  virtual void  v53(); // _ZN10S3164C3_nt3v53Ev
  virtual void  v54(); // _ZN10S3164C3_nt3v54Ev
  virtual void  v55(); // _ZN10S3164C3_nt3v55Ev
  virtual void  v56(); // _ZN10S3164C3_nt3v56Ev
  virtual void  v57(); // _ZN10S3164C3_nt3v57Ev
  virtual void  v58(); // _ZN10S3164C3_nt3v58Ev
  virtual void  v59(); // _ZN10S3164C3_nt3v59Ev
  virtual void  v60(); // _ZN10S3164C3_nt3v60Ev
  virtual void  v61(); // _ZN10S3164C3_nt3v61Ev
  virtual void  v62(); // _ZN10S3164C3_nt3v62Ev
  virtual void  v63(); // _ZN10S3164C3_nt3v63Ev
  virtual void  v64(); // _ZN10S3164C3_nt3v64Ev
  virtual void  v65(); // _ZN10S3164C3_nt3v65Ev
  virtual void  v66(); // _ZN10S3164C3_nt3v66Ev
  S3164C3_nt(); // tgen
};
//SIG(-1 S3164C3_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]}


 S3164C3_nt ::~S3164C3_nt(){ note_dtor("S3164C3_nt", this);}
void  S3164C3_nt ::v3(){vfunc_called(this, "_ZN10S3164C3_nt2v3Ev");}
void  S3164C3_nt ::v4(){vfunc_called(this, "_ZN10S3164C3_nt2v4Ev");}
void  S3164C3_nt ::v5(){vfunc_called(this, "_ZN10S3164C3_nt2v5Ev");}
void  S3164C3_nt ::v6(){vfunc_called(this, "_ZN10S3164C3_nt2v6Ev");}
void  S3164C3_nt ::v7(){vfunc_called(this, "_ZN10S3164C3_nt2v7Ev");}
void  S3164C3_nt ::v8(){vfunc_called(this, "_ZN10S3164C3_nt2v8Ev");}
void  S3164C3_nt ::v9(){vfunc_called(this, "_ZN10S3164C3_nt2v9Ev");}
void  S3164C3_nt ::v10(){vfunc_called(this, "_ZN10S3164C3_nt3v10Ev");}
void  S3164C3_nt ::v11(){vfunc_called(this, "_ZN10S3164C3_nt3v11Ev");}
void  S3164C3_nt ::v12(){vfunc_called(this, "_ZN10S3164C3_nt3v12Ev");}
void  S3164C3_nt ::v13(){vfunc_called(this, "_ZN10S3164C3_nt3v13Ev");}
void  S3164C3_nt ::v14(){vfunc_called(this, "_ZN10S3164C3_nt3v14Ev");}
void  S3164C3_nt ::v15(){vfunc_called(this, "_ZN10S3164C3_nt3v15Ev");}
void  S3164C3_nt ::v16(){vfunc_called(this, "_ZN10S3164C3_nt3v16Ev");}
void  S3164C3_nt ::v17(){vfunc_called(this, "_ZN10S3164C3_nt3v17Ev");}
void  S3164C3_nt ::v18(){vfunc_called(this, "_ZN10S3164C3_nt3v18Ev");}
void  S3164C3_nt ::v19(){vfunc_called(this, "_ZN10S3164C3_nt3v19Ev");}
void  S3164C3_nt ::v20(){vfunc_called(this, "_ZN10S3164C3_nt3v20Ev");}
void  S3164C3_nt ::v21(){vfunc_called(this, "_ZN10S3164C3_nt3v21Ev");}
void  S3164C3_nt ::v22(){vfunc_called(this, "_ZN10S3164C3_nt3v22Ev");}
void  S3164C3_nt ::v23(){vfunc_called(this, "_ZN10S3164C3_nt3v23Ev");}
void  S3164C3_nt ::v24(){vfunc_called(this, "_ZN10S3164C3_nt3v24Ev");}
void  S3164C3_nt ::v25(){vfunc_called(this, "_ZN10S3164C3_nt3v25Ev");}
void  S3164C3_nt ::v26(){vfunc_called(this, "_ZN10S3164C3_nt3v26Ev");}
void  S3164C3_nt ::v27(){vfunc_called(this, "_ZN10S3164C3_nt3v27Ev");}
void  S3164C3_nt ::v28(){vfunc_called(this, "_ZN10S3164C3_nt3v28Ev");}
void  S3164C3_nt ::v29(){vfunc_called(this, "_ZN10S3164C3_nt3v29Ev");}
void  S3164C3_nt ::v30(){vfunc_called(this, "_ZN10S3164C3_nt3v30Ev");}
void  S3164C3_nt ::v31(){vfunc_called(this, "_ZN10S3164C3_nt3v31Ev");}
void  S3164C3_nt ::v32(){vfunc_called(this, "_ZN10S3164C3_nt3v32Ev");}
void  S3164C3_nt ::v33(){vfunc_called(this, "_ZN10S3164C3_nt3v33Ev");}
void  S3164C3_nt ::v34(){vfunc_called(this, "_ZN10S3164C3_nt3v34Ev");}
void  S3164C3_nt ::v35(){vfunc_called(this, "_ZN10S3164C3_nt3v35Ev");}
void  S3164C3_nt ::v36(){vfunc_called(this, "_ZN10S3164C3_nt3v36Ev");}
void  S3164C3_nt ::v37(){vfunc_called(this, "_ZN10S3164C3_nt3v37Ev");}
void  S3164C3_nt ::v38(){vfunc_called(this, "_ZN10S3164C3_nt3v38Ev");}
void  S3164C3_nt ::v39(){vfunc_called(this, "_ZN10S3164C3_nt3v39Ev");}
void  S3164C3_nt ::v40(){vfunc_called(this, "_ZN10S3164C3_nt3v40Ev");}
void  S3164C3_nt ::v41(){vfunc_called(this, "_ZN10S3164C3_nt3v41Ev");}
void  S3164C3_nt ::v42(){vfunc_called(this, "_ZN10S3164C3_nt3v42Ev");}
void  S3164C3_nt ::v43(){vfunc_called(this, "_ZN10S3164C3_nt3v43Ev");}
void  S3164C3_nt ::v44(){vfunc_called(this, "_ZN10S3164C3_nt3v44Ev");}
void  S3164C3_nt ::v45(){vfunc_called(this, "_ZN10S3164C3_nt3v45Ev");}
void  S3164C3_nt ::v46(){vfunc_called(this, "_ZN10S3164C3_nt3v46Ev");}
void  S3164C3_nt ::v47(){vfunc_called(this, "_ZN10S3164C3_nt3v47Ev");}
void  S3164C3_nt ::v48(){vfunc_called(this, "_ZN10S3164C3_nt3v48Ev");}
void  S3164C3_nt ::v49(){vfunc_called(this, "_ZN10S3164C3_nt3v49Ev");}
void  S3164C3_nt ::v50(){vfunc_called(this, "_ZN10S3164C3_nt3v50Ev");}
void  S3164C3_nt ::v51(){vfunc_called(this, "_ZN10S3164C3_nt3v51Ev");}
void  S3164C3_nt ::v52(){vfunc_called(this, "_ZN10S3164C3_nt3v52Ev");}
void  S3164C3_nt ::v53(){vfunc_called(this, "_ZN10S3164C3_nt3v53Ev");}
void  S3164C3_nt ::v54(){vfunc_called(this, "_ZN10S3164C3_nt3v54Ev");}
void  S3164C3_nt ::v55(){vfunc_called(this, "_ZN10S3164C3_nt3v55Ev");}
void  S3164C3_nt ::v56(){vfunc_called(this, "_ZN10S3164C3_nt3v56Ev");}
void  S3164C3_nt ::v57(){vfunc_called(this, "_ZN10S3164C3_nt3v57Ev");}
void  S3164C3_nt ::v58(){vfunc_called(this, "_ZN10S3164C3_nt3v58Ev");}
void  S3164C3_nt ::v59(){vfunc_called(this, "_ZN10S3164C3_nt3v59Ev");}
void  S3164C3_nt ::v60(){vfunc_called(this, "_ZN10S3164C3_nt3v60Ev");}
void  S3164C3_nt ::v61(){vfunc_called(this, "_ZN10S3164C3_nt3v61Ev");}
void  S3164C3_nt ::v62(){vfunc_called(this, "_ZN10S3164C3_nt3v62Ev");}
void  S3164C3_nt ::v63(){vfunc_called(this, "_ZN10S3164C3_nt3v63Ev");}
void  S3164C3_nt ::v64(){vfunc_called(this, "_ZN10S3164C3_nt3v64Ev");}
void  S3164C3_nt ::v65(){vfunc_called(this, "_ZN10S3164C3_nt3v65Ev");}
void  S3164C3_nt ::v66(){vfunc_called(this, "_ZN10S3164C3_nt3v66Ev");}
S3164C3_nt ::S3164C3_nt(){ note_ctor("S3164C3_nt", this);} // tgen

//skip512 S3164C3_nt

#else // __cplusplus

extern void _ZN10S3164C3_ntC1Ev();
extern void _ZN10S3164C3_ntD1Ev();
Name_Map name_map_S3164C3_nt[] = {
  NSPAIR(_ZN10S3164C3_ntC1Ev),
  NSPAIR(_ZN10S3164C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3164C3_nt[];
extern void _ZN10S3164C3_ntD1Ev();
extern void _ZN10S3164C3_ntD0Ev();
extern void _ZN10S3164C3_nt2v3Ev();
extern void _ZN10S3164C3_nt2v4Ev();
extern void _ZN10S3164C3_nt2v5Ev();
extern void _ZN10S3164C3_nt2v6Ev();
extern void _ZN10S3164C3_nt2v7Ev();
extern void _ZN10S3164C3_nt2v8Ev();
extern void _ZN10S3164C3_nt2v9Ev();
extern void _ZN10S3164C3_nt3v10Ev();
extern void _ZN10S3164C3_nt3v11Ev();
extern void _ZN10S3164C3_nt3v12Ev();
extern void _ZN10S3164C3_nt3v13Ev();
extern void _ZN10S3164C3_nt3v14Ev();
extern void _ZN10S3164C3_nt3v15Ev();
extern void _ZN10S3164C3_nt3v16Ev();
extern void _ZN10S3164C3_nt3v17Ev();
extern void _ZN10S3164C3_nt3v18Ev();
extern void _ZN10S3164C3_nt3v19Ev();
extern void _ZN10S3164C3_nt3v20Ev();
extern void _ZN10S3164C3_nt3v21Ev();
extern void _ZN10S3164C3_nt3v22Ev();
extern void _ZN10S3164C3_nt3v23Ev();
extern void _ZN10S3164C3_nt3v24Ev();
extern void _ZN10S3164C3_nt3v25Ev();
extern void _ZN10S3164C3_nt3v26Ev();
extern void _ZN10S3164C3_nt3v27Ev();
extern void _ZN10S3164C3_nt3v28Ev();
extern void _ZN10S3164C3_nt3v29Ev();
extern void _ZN10S3164C3_nt3v30Ev();
extern void _ZN10S3164C3_nt3v31Ev();
extern void _ZN10S3164C3_nt3v32Ev();
extern void _ZN10S3164C3_nt3v33Ev();
extern void _ZN10S3164C3_nt3v34Ev();
extern void _ZN10S3164C3_nt3v35Ev();
extern void _ZN10S3164C3_nt3v36Ev();
extern void _ZN10S3164C3_nt3v37Ev();
extern void _ZN10S3164C3_nt3v38Ev();
extern void _ZN10S3164C3_nt3v39Ev();
extern void _ZN10S3164C3_nt3v40Ev();
extern void _ZN10S3164C3_nt3v41Ev();
extern void _ZN10S3164C3_nt3v42Ev();
extern void _ZN10S3164C3_nt3v43Ev();
extern void _ZN10S3164C3_nt3v44Ev();
extern void _ZN10S3164C3_nt3v45Ev();
extern void _ZN10S3164C3_nt3v46Ev();
extern void _ZN10S3164C3_nt3v47Ev();
extern void _ZN10S3164C3_nt3v48Ev();
extern void _ZN10S3164C3_nt3v49Ev();
extern void _ZN10S3164C3_nt3v50Ev();
extern void _ZN10S3164C3_nt3v51Ev();
extern void _ZN10S3164C3_nt3v52Ev();
extern void _ZN10S3164C3_nt3v53Ev();
extern void _ZN10S3164C3_nt3v54Ev();
extern void _ZN10S3164C3_nt3v55Ev();
extern void _ZN10S3164C3_nt3v56Ev();
extern void _ZN10S3164C3_nt3v57Ev();
extern void _ZN10S3164C3_nt3v58Ev();
extern void _ZN10S3164C3_nt3v59Ev();
extern void _ZN10S3164C3_nt3v60Ev();
extern void _ZN10S3164C3_nt3v61Ev();
extern void _ZN10S3164C3_nt3v62Ev();
extern void _ZN10S3164C3_nt3v63Ev();
extern void _ZN10S3164C3_nt3v64Ev();
extern void _ZN10S3164C3_nt3v65Ev();
extern void _ZN10S3164C3_nt3v66Ev();
static  VTBL_ENTRY vtc_S3164C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3164C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3164C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v66Ev,
};
extern VTBL_ENTRY _ZTI10S3164C3_nt[];
VTBL_ENTRY *P__ZTI10S3164C3_nt = _ZTI10S3164C3_nt; 
extern  VTBL_ENTRY _ZTV10S3164C3_nt[];
Class_Descriptor cd_S3164C3_nt = {  "S3164C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3164C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S3164C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3164C3_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  S3164C7_nt  {
  void *s3164c7f0;
  int s3164c7f1[2];
  void  mf3164c7(); // _ZN10S3164C7_nt8mf3164c7Ev
};
//SIG(-1 S3164C7_nt) C1{ m Fp Fi[2]}


void  S3164C7_nt ::mf3164c7(){}

//skip512 S3164C7_nt

#else // __cplusplus

Class_Descriptor cd_S3164C7_nt = {  "S3164C7_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  S3164C6_nt  : S3164C7_nt {
};
//SIG(-1 S3164C6_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S3164C6_nt

#else // __cplusplus

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



//skip512 S3164C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S3164C7_nt;
extern Class_Descriptor cd_S3164C6_nt;
static Base_Class bases_S3164C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3164C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3164C8_nt  {
  int s3164c8f0;
  void  mf3164c8(); // _ZN10S3164C8_nt8mf3164c8Ev
};
//SIG(-1 S3164C8_nt) C1{ m Fi}


void  S3164C8_nt ::mf3164c8(){}

//skip512 S3164C8_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S3164C8_nt[];
VTBL_ENTRY *P__ZTI10S3164C8_nt = _ZTI10S3164C8_nt; 
Class_Descriptor cd_S3164C8_nt = {  "S3164C8_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S3164C8_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  S3164C12  : S3164C7_nt {
};
//SIG(-1 S3164C12) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3164C12()
{
  extern Class_Descriptor cd_S3164C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3164C12, buf);
    S3164C12 &lv = *(new (buf) S3164C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3164C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C12)");
    check_base_class_offset(lv, (S3164C7_nt*), 0, "S3164C12");
    test_class_info(&lv, &cd_S3164C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3164C12(Test_S3164C12, "S3164C12", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3164C11()
{
  extern Class_Descriptor cd_S3164C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3164C11, buf);
    S3164C11 &lv = *(new (buf) S3164C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3164C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C11)");
    check_base_class_offset(lv, (S3164C7_nt*)(S3164C12*), 0, "S3164C11");
    check_base_class_offset(lv, (S3164C12*), 0, "S3164C11");
    test_class_info(&lv, &cd_S3164C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3164C11(Test_S3164C11, "S3164C11", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3164C7_nt;
extern Class_Descriptor cd_S3164C12;
static Base_Class bases_S3164C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3164C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3164C11 = {  "S3164C11", // class name
  bases_S3164C11, 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  S3164C13_nt  {
  int s3164c13f0[3];
  void  mf3164c13(); // _ZN11S3164C13_nt9mf3164c13Ev
};
//SIG(-1 S3164C13_nt) C1{ m Fi[3]}


void  S3164C13_nt ::mf3164c13(){}

//skip512 S3164C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S3164C18()
{
  extern Class_Descriptor cd_S3164C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3164C18, buf);
    S3164C18 &lv = *(new (buf) S3164C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3164C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C18)");
    check_base_class_offset(lv, (S3164C7_nt*), 0, "S3164C18");
    test_class_info(&lv, &cd_S3164C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3164C18(Test_S3164C18, "S3164C18", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3164C17()
{
  extern Class_Descriptor cd_S3164C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3164C17, buf);
    S3164C17 &lv = *(new (buf) S3164C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3164C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C17)");
    check_base_class_offset(lv, (S3164C7_nt*)(S3164C18*), 0, "S3164C17");
    check_base_class_offset(lv, (S3164C18*), 0, "S3164C17");
    test_class_info(&lv, &cd_S3164C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3164C17(Test_S3164C17, "S3164C17", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3164C7_nt;
extern Class_Descriptor cd_S3164C18;
static Base_Class bases_S3164C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3164C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3164C17 = {  "S3164C17", // class name
  bases_S3164C17, 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  S3164C2_nt  : S3164C3_nt {
  ::S3164C5_nt s3164c2f0;
  ::S3164C5_nt s3164c2f1;
  ::S3164C8_nt s3164c2f2;
  int s3164c2f3;
  char s3164c2f4[4];
  void *s3164c2f5[2];
  ::S3164C5_nt s3164c2f6;
  unsigned int s3164c2f7:1;
  unsigned int s3164c2f8:1;
  unsigned int s3164c2f9:1;
  unsigned int s3164c2f10:1;
  unsigned int s3164c2f11:1;
  unsigned int s3164c2f12:1;
  unsigned int s3164c2f13:1;
  unsigned int s3164c2f14:1;
  unsigned int s3164c2f15:1;
  unsigned int s3164c2f16:1;
  unsigned int s3164c2f17:1;
  unsigned int s3164c2f18:1;
  unsigned int s3164c2f19:1;
  unsigned int s3164c2f20:1;
  unsigned int s3164c2f21:1;
  unsigned int s3164c2f22:1;
  unsigned int s3164c2f23:1;
  unsigned int s3164c2f24:1;
  unsigned int s3164c2f25:1;
  unsigned int s3164c2f26:1;
  unsigned int s3164c2f27:1;
  unsigned int s3164c2f28:1;
  unsigned int s3164c2f29:1;
  unsigned int s3164c2f30:1;
  unsigned int s3164c2f31:1;
  unsigned int s3164c2f32:1;
  unsigned int s3164c2f33:1;
  unsigned int s3164c2f34:1;
  unsigned int s3164c2f35:1;
  unsigned int s3164c2f36:1;
  unsigned int s3164c2f37:1;
  unsigned int s3164c2f38:1;
  unsigned int s3164c2f39:1;
  unsigned int s3164c2f40:1;
  unsigned int s3164c2f41:1;
  unsigned int s3164c2f42:1;
  unsigned int s3164c2f43:1;
  unsigned int s3164c2f44:1;
  unsigned int s3164c2f45:1;
  unsigned int s3164c2f46:1;
  unsigned int s3164c2f47:1;
  unsigned int s3164c2f48:1;
  unsigned int s3164c2f49:1;
  unsigned int s3164c2f50:1;
  unsigned int s3164c2f51:1;
  unsigned int s3164c2f52:1;
  unsigned int s3164c2f53:1;
  unsigned int s3164c2f54:1;
  unsigned int s3164c2f55:1;
  unsigned int s3164c2f56:1;
  unsigned int s3164c2f57:1;
  unsigned int s3164c2f58:1;
  unsigned int s3164c2f59:1;
  unsigned int s3164c2f60:1;
  unsigned int s3164c2f61:1;
  unsigned int s3164c2f62:1;
  unsigned int s3164c2f63:1;
  unsigned int s3164c2f64:1;
  unsigned int s3164c2f65:1;
  unsigned int s3164c2f66:1;
  unsigned int s3164c2f67:1;
  unsigned int s3164c2f68:1;
  unsigned int s3164c2f69:1;
  unsigned int s3164c2f70:1;
  unsigned int s3164c2f71:1;
  unsigned int s3164c2f72:1;
  unsigned int s3164c2f73:1;
  unsigned int s3164c2f74:1;
  unsigned int s3164c2f75:1;
  unsigned int s3164c2f76:1;
  unsigned int s3164c2f77:1;
  unsigned int s3164c2f78:1;
  unsigned int s3164c2f79:1;
  unsigned int s3164c2f80:1;
  unsigned int s3164c2f81:1;
  unsigned int s3164c2f82:1;
  unsigned int s3164c2f83:1;
  int s3164c2f84[5];
  void *s3164c2f85[2];
  int s3164c2f86[3];
  ::S3164C4_nt s3164c2f87;
  ::S3164C4_nt s3164c2f88;
  ::S3164C4_nt s3164c2f89;
  ::S3164C11 s3164c2f90;
  ::S3164C11 s3164c2f91;
  int s3164c2f92;
  void *s3164c2f93[2];
  ::S3164C13_nt s3164c2f94;
  ::S3164C13_nt s3164c2f95;
  ::S3164C13_nt s3164c2f96;
  ::S3164C13_nt s3164c2f97;
  void *s3164c2f98;
  ::S3164C4_nt s3164c2f99;
  ::S3164C11 s3164c2f100;
  ::S3164C13_nt s3164c2f101;
  ::S3164C13_nt s3164c2f102;
  int s3164c2f103;
  ::S3164C13_nt s3164c2f104;
  ::S3164C13_nt s3164c2f105;
  void *s3164c2f106;
  int s3164c2f107;
  char s3164c2f108;
  ::S3164C13_nt s3164c2f109;
  ::S3164C13_nt s3164c2f110;
  void *s3164c2f111;
  int s3164c2f112;
  void *s3164c2f113;
  ::S3164C11 s3164c2f114;
  ::S3164C17 s3164c2f115;
  ::S3164C17 s3164c2f116;
  virtual  ~S3164C2_nt(); // _ZN10S3164C2_ntD1Ev
  virtual void  v67(); // _ZN10S3164C2_nt3v67Ev
  virtual void  v68(); // _ZN10S3164C2_nt3v68Ev
  virtual void  v69(); // _ZN10S3164C2_nt3v69Ev
  virtual void  v70(); // _ZN10S3164C2_nt3v70Ev
  virtual void  v71(); // _ZN10S3164C2_nt3v71Ev
  virtual void  v72(); // _ZN10S3164C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3164C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3164C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3164C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3164C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3164C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3164C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3164C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3164C2_nt3v80Ev
  virtual void  v81(); // _ZN10S3164C2_nt3v81Ev
  virtual void  v82(); // _ZN10S3164C2_nt3v82Ev
  virtual void  v83(); // _ZN10S3164C2_nt3v83Ev
  virtual void  v84(); // _ZN10S3164C2_nt3v84Ev
  virtual void  v85(); // _ZN10S3164C2_nt3v85Ev
  virtual void  v86(); // _ZN10S3164C2_nt3v86Ev
  virtual void  v87(); // _ZN10S3164C2_nt3v87Ev
  virtual void  v88(); // _ZN10S3164C2_nt3v88Ev
  virtual void  v89(); // _ZN10S3164C2_nt3v89Ev
  virtual void  v90(); // _ZN10S3164C2_nt3v90Ev
  virtual void  v91(); // _ZN10S3164C2_nt3v91Ev
  virtual void  v92(); // _ZN10S3164C2_nt3v92Ev
  virtual void  v93(); // _ZN10S3164C2_nt3v93Ev
  virtual void  v94(); // _ZN10S3164C2_nt3v94Ev
  virtual void  v95(); // _ZN10S3164C2_nt3v95Ev
  virtual void  v96(); // _ZN10S3164C2_nt3v96Ev
  virtual void  v97(); // _ZN10S3164C2_nt3v97Ev
  virtual void  v98(); // _ZN10S3164C2_nt3v98Ev
  virtual void  v99(); // _ZN10S3164C2_nt3v99Ev
  virtual void  v100(); // _ZN10S3164C2_nt4v100Ev
  virtual void  v101(); // _ZN10S3164C2_nt4v101Ev
  virtual void  v102(); // _ZN10S3164C2_nt4v102Ev
  virtual void  v103(); // _ZN10S3164C2_nt4v103Ev
  virtual void  v104(); // _ZN10S3164C2_nt4v104Ev
  virtual void  v105(); // _ZN10S3164C2_nt4v105Ev
  virtual void  v106(); // _ZN10S3164C2_nt4v106Ev
  virtual void  v107(); // _ZN10S3164C2_nt4v107Ev
  virtual void  v108(); // _ZN10S3164C2_nt4v108Ev
  virtual void  v109(); // _ZN10S3164C2_nt4v109Ev
  virtual void  v110(); // _ZN10S3164C2_nt4v110Ev
  virtual void  v111(); // _ZN10S3164C2_nt4v111Ev
  virtual void  v112(); // _ZN10S3164C2_nt4v112Ev
  virtual void  v113(); // _ZN10S3164C2_nt4v113Ev
  virtual void  v114(); // _ZN10S3164C2_nt4v114Ev
  virtual void  v115(); // _ZN10S3164C2_nt4v115Ev
  virtual void  v116(); // _ZN10S3164C2_nt4v116Ev
  virtual void  v117(); // _ZN10S3164C2_nt4v117Ev
  virtual void  v118(); // _ZN10S3164C2_nt4v118Ev
  virtual void  v119(); // _ZN10S3164C2_nt4v119Ev
  virtual void  v120(); // _ZN10S3164C2_nt4v120Ev
  virtual void  v121(); // _ZN10S3164C2_nt4v121Ev
  virtual void  v122(); // _ZN10S3164C2_nt4v122Ev
  virtual void  v123(); // _ZN10S3164C2_nt4v123Ev
  virtual void  v124(); // _ZN10S3164C2_nt4v124Ev
  virtual void  v125(); // _ZN10S3164C2_nt4v125Ev
  virtual void  v126(); // _ZN10S3164C2_nt4v126Ev
  virtual void  v127(); // _ZN10S3164C2_nt4v127Ev
  virtual void  v128(); // _ZN10S3164C2_nt4v128Ev
  virtual void  v129(); // _ZN10S3164C2_nt4v129Ev
  virtual void  v130(); // _ZN10S3164C2_nt4v130Ev
  virtual void  v131(); // _ZN10S3164C2_nt4v131Ev
  virtual void  v132(); // _ZN10S3164C2_nt4v132Ev
  virtual void  v133(); // _ZN10S3164C2_nt4v133Ev
  virtual void  v134(); // _ZN10S3164C2_nt4v134Ev
  virtual void  v135(); // _ZN10S3164C2_nt4v135Ev
  virtual void  v136(); // _ZN10S3164C2_nt4v136Ev
  virtual void  v137(); // _ZN10S3164C2_nt4v137Ev
  virtual void  v138(); // _ZN10S3164C2_nt4v138Ev
  virtual void  v139(); // _ZN10S3164C2_nt4v139Ev
  virtual void  v140(); // _ZN10S3164C2_nt4v140Ev
  virtual void  v141(); // _ZN10S3164C2_nt4v141Ev
  virtual void  v142(); // _ZN10S3164C2_nt4v142Ev
  virtual void  v143(); // _ZN10S3164C2_nt4v143Ev
  virtual void  v144(); // _ZN10S3164C2_nt4v144Ev
  virtual void  v145(); // _ZN10S3164C2_nt4v145Ev
  virtual void  v146(); // _ZN10S3164C2_nt4v146Ev
  virtual void  v147(); // _ZN10S3164C2_nt4v147Ev
  virtual void  v148(); // _ZN10S3164C2_nt4v148Ev
  virtual void  v149(); // _ZN10S3164C2_nt4v149Ev
  virtual void  v150(); // _ZN10S3164C2_nt4v150Ev
  virtual void  v151(); // _ZN10S3164C2_nt4v151Ev
  virtual void  v152(); // _ZN10S3164C2_nt4v152Ev
  virtual void  v153(); // _ZN10S3164C2_nt4v153Ev
  virtual void  v154(); // _ZN10S3164C2_nt4v154Ev
  virtual void  v155(); // _ZN10S3164C2_nt4v155Ev
  virtual void  v156(); // _ZN10S3164C2_nt4v156Ev
  virtual void  v157(); // _ZN10S3164C2_nt4v157Ev
  virtual void  v158(); // _ZN10S3164C2_nt4v158Ev
  virtual void  v159(); // _ZN10S3164C2_nt4v159Ev
  virtual void  v160(); // _ZN10S3164C2_nt4v160Ev
  virtual void  v161(); // _ZN10S3164C2_nt4v161Ev
  virtual void  v162(); // _ZN10S3164C2_nt4v162Ev
  virtual void  v163(); // _ZN10S3164C2_nt4v163Ev
  virtual void  v164(); // _ZN10S3164C2_nt4v164Ev
  virtual void  v165(); // _ZN10S3164C2_nt4v165Ev
  virtual void  v166(); // _ZN10S3164C2_nt4v166Ev
  virtual void  v167(); // _ZN10S3164C2_nt4v167Ev
  virtual void  v168(); // _ZN10S3164C2_nt4v168Ev
  virtual void  v169(); // _ZN10S3164C2_nt4v169Ev
  virtual void  v170(); // _ZN10S3164C2_nt4v170Ev
  virtual void  v171(); // _ZN10S3164C2_nt4v171Ev
  virtual void  v172(); // _ZN10S3164C2_nt4v172Ev
  virtual void  v173(); // _ZN10S3164C2_nt4v173Ev
  virtual void  v174(); // _ZN10S3164C2_nt4v174Ev
  virtual void  v175(); // _ZN10S3164C2_nt4v175Ev
  virtual void  v176(); // _ZN10S3164C2_nt4v176Ev
  virtual void  v177(); // _ZN10S3164C2_nt4v177Ev
  virtual void  v178(); // _ZN10S3164C2_nt4v178Ev
  virtual void  v179(); // _ZN10S3164C2_nt4v179Ev
  virtual void  v180(); // _ZN10S3164C2_nt4v180Ev
  virtual void  v181(); // _ZN10S3164C2_nt4v181Ev
  virtual void  v182(); // _ZN10S3164C2_nt4v182Ev
  virtual void  v183(); // _ZN10S3164C2_nt4v183Ev
  virtual void  v184(); // _ZN10S3164C2_nt4v184Ev
  virtual void  v185(); // _ZN10S3164C2_nt4v185Ev
  virtual void  v186(); // _ZN10S3164C2_nt4v186Ev
  virtual void  v187(); // _ZN10S3164C2_nt4v187Ev
  virtual void  v188(); // _ZN10S3164C2_nt4v188Ev
  virtual void  v189(); // _ZN10S3164C2_nt4v189Ev
  virtual void  v190(); // _ZN10S3164C2_nt4v190Ev
  virtual void  v191(); // _ZN10S3164C2_nt4v191Ev
  virtual void  v192(); // _ZN10S3164C2_nt4v192Ev
  virtual void  v193(); // _ZN10S3164C2_nt4v193Ev
  virtual void  v194(); // _ZN10S3164C2_nt4v194Ev
  virtual void  v195(); // _ZN10S3164C2_nt4v195Ev
  virtual void  v196(); // _ZN10S3164C2_nt4v196Ev
  virtual void  v197(); // _ZN10S3164C2_nt4v197Ev
  virtual void  v198(); // _ZN10S3164C2_nt4v198Ev
  virtual void  v199(); // _ZN10S3164C2_nt4v199Ev
  virtual void  v200(); // _ZN10S3164C2_nt4v200Ev
  virtual void  v201(); // _ZN10S3164C2_nt4v201Ev
  virtual void  v202(); // _ZN10S3164C2_nt4v202Ev
  virtual void  v203(); // _ZN10S3164C2_nt4v203Ev
  virtual void  v204(); // _ZN10S3164C2_nt4v204Ev
  virtual void  v205(); // _ZN10S3164C2_nt4v205Ev
  virtual void  v206(); // _ZN10S3164C2_nt4v206Ev
  virtual void  v207(); // _ZN10S3164C2_nt4v207Ev
  virtual void  v208(); // _ZN10S3164C2_nt4v208Ev
  virtual void  v209(); // _ZN10S3164C2_nt4v209Ev
  S3164C2_nt(); // tgen
};
//SIG(-1 S3164C2_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}


 S3164C2_nt ::~S3164C2_nt(){ note_dtor("S3164C2_nt", this);}
void  S3164C2_nt ::v67(){vfunc_called(this, "_ZN10S3164C2_nt3v67Ev");}
void  S3164C2_nt ::v68(){vfunc_called(this, "_ZN10S3164C2_nt3v68Ev");}
void  S3164C2_nt ::v69(){vfunc_called(this, "_ZN10S3164C2_nt3v69Ev");}
void  S3164C2_nt ::v70(){vfunc_called(this, "_ZN10S3164C2_nt3v70Ev");}
void  S3164C2_nt ::v71(){vfunc_called(this, "_ZN10S3164C2_nt3v71Ev");}
void  S3164C2_nt ::v72(){vfunc_called(this, "_ZN10S3164C2_nt3v72Ev");}
void  S3164C2_nt ::v73(){vfunc_called(this, "_ZN10S3164C2_nt3v73Ev");}
void  S3164C2_nt ::v74(){vfunc_called(this, "_ZN10S3164C2_nt3v74Ev");}
void  S3164C2_nt ::v75(){vfunc_called(this, "_ZN10S3164C2_nt3v75Ev");}
void  S3164C2_nt ::v76(){vfunc_called(this, "_ZN10S3164C2_nt3v76Ev");}
void  S3164C2_nt ::v77(){vfunc_called(this, "_ZN10S3164C2_nt3v77Ev");}
void  S3164C2_nt ::v78(){vfunc_called(this, "_ZN10S3164C2_nt3v78Ev");}
void  S3164C2_nt ::v79(){vfunc_called(this, "_ZN10S3164C2_nt3v79Ev");}
void  S3164C2_nt ::v80(){vfunc_called(this, "_ZN10S3164C2_nt3v80Ev");}
void  S3164C2_nt ::v81(){vfunc_called(this, "_ZN10S3164C2_nt3v81Ev");}
void  S3164C2_nt ::v82(){vfunc_called(this, "_ZN10S3164C2_nt3v82Ev");}
void  S3164C2_nt ::v83(){vfunc_called(this, "_ZN10S3164C2_nt3v83Ev");}
void  S3164C2_nt ::v84(){vfunc_called(this, "_ZN10S3164C2_nt3v84Ev");}
void  S3164C2_nt ::v85(){vfunc_called(this, "_ZN10S3164C2_nt3v85Ev");}
void  S3164C2_nt ::v86(){vfunc_called(this, "_ZN10S3164C2_nt3v86Ev");}
void  S3164C2_nt ::v87(){vfunc_called(this, "_ZN10S3164C2_nt3v87Ev");}
void  S3164C2_nt ::v88(){vfunc_called(this, "_ZN10S3164C2_nt3v88Ev");}
void  S3164C2_nt ::v89(){vfunc_called(this, "_ZN10S3164C2_nt3v89Ev");}
void  S3164C2_nt ::v90(){vfunc_called(this, "_ZN10S3164C2_nt3v90Ev");}
void  S3164C2_nt ::v91(){vfunc_called(this, "_ZN10S3164C2_nt3v91Ev");}
void  S3164C2_nt ::v92(){vfunc_called(this, "_ZN10S3164C2_nt3v92Ev");}
void  S3164C2_nt ::v93(){vfunc_called(this, "_ZN10S3164C2_nt3v93Ev");}
void  S3164C2_nt ::v94(){vfunc_called(this, "_ZN10S3164C2_nt3v94Ev");}
void  S3164C2_nt ::v95(){vfunc_called(this, "_ZN10S3164C2_nt3v95Ev");}
void  S3164C2_nt ::v96(){vfunc_called(this, "_ZN10S3164C2_nt3v96Ev");}
void  S3164C2_nt ::v97(){vfunc_called(this, "_ZN10S3164C2_nt3v97Ev");}
void  S3164C2_nt ::v98(){vfunc_called(this, "_ZN10S3164C2_nt3v98Ev");}
void  S3164C2_nt ::v99(){vfunc_called(this, "_ZN10S3164C2_nt3v99Ev");}
void  S3164C2_nt ::v100(){vfunc_called(this, "_ZN10S3164C2_nt4v100Ev");}
void  S3164C2_nt ::v101(){vfunc_called(this, "_ZN10S3164C2_nt4v101Ev");}
void  S3164C2_nt ::v102(){vfunc_called(this, "_ZN10S3164C2_nt4v102Ev");}
void  S3164C2_nt ::v103(){vfunc_called(this, "_ZN10S3164C2_nt4v103Ev");}
void  S3164C2_nt ::v104(){vfunc_called(this, "_ZN10S3164C2_nt4v104Ev");}
void  S3164C2_nt ::v105(){vfunc_called(this, "_ZN10S3164C2_nt4v105Ev");}
void  S3164C2_nt ::v106(){vfunc_called(this, "_ZN10S3164C2_nt4v106Ev");}
void  S3164C2_nt ::v107(){vfunc_called(this, "_ZN10S3164C2_nt4v107Ev");}
void  S3164C2_nt ::v108(){vfunc_called(this, "_ZN10S3164C2_nt4v108Ev");}
void  S3164C2_nt ::v109(){vfunc_called(this, "_ZN10S3164C2_nt4v109Ev");}
void  S3164C2_nt ::v110(){vfunc_called(this, "_ZN10S3164C2_nt4v110Ev");}
void  S3164C2_nt ::v111(){vfunc_called(this, "_ZN10S3164C2_nt4v111Ev");}
void  S3164C2_nt ::v112(){vfunc_called(this, "_ZN10S3164C2_nt4v112Ev");}
void  S3164C2_nt ::v113(){vfunc_called(this, "_ZN10S3164C2_nt4v113Ev");}
void  S3164C2_nt ::v114(){vfunc_called(this, "_ZN10S3164C2_nt4v114Ev");}
void  S3164C2_nt ::v115(){vfunc_called(this, "_ZN10S3164C2_nt4v115Ev");}
void  S3164C2_nt ::v116(){vfunc_called(this, "_ZN10S3164C2_nt4v116Ev");}
void  S3164C2_nt ::v117(){vfunc_called(this, "_ZN10S3164C2_nt4v117Ev");}
void  S3164C2_nt ::v118(){vfunc_called(this, "_ZN10S3164C2_nt4v118Ev");}
void  S3164C2_nt ::v119(){vfunc_called(this, "_ZN10S3164C2_nt4v119Ev");}
void  S3164C2_nt ::v120(){vfunc_called(this, "_ZN10S3164C2_nt4v120Ev");}
void  S3164C2_nt ::v121(){vfunc_called(this, "_ZN10S3164C2_nt4v121Ev");}
void  S3164C2_nt ::v122(){vfunc_called(this, "_ZN10S3164C2_nt4v122Ev");}
void  S3164C2_nt ::v123(){vfunc_called(this, "_ZN10S3164C2_nt4v123Ev");}
void  S3164C2_nt ::v124(){vfunc_called(this, "_ZN10S3164C2_nt4v124Ev");}
void  S3164C2_nt ::v125(){vfunc_called(this, "_ZN10S3164C2_nt4v125Ev");}
void  S3164C2_nt ::v126(){vfunc_called(this, "_ZN10S3164C2_nt4v126Ev");}
void  S3164C2_nt ::v127(){vfunc_called(this, "_ZN10S3164C2_nt4v127Ev");}
void  S3164C2_nt ::v128(){vfunc_called(this, "_ZN10S3164C2_nt4v128Ev");}
void  S3164C2_nt ::v129(){vfunc_called(this, "_ZN10S3164C2_nt4v129Ev");}
void  S3164C2_nt ::v130(){vfunc_called(this, "_ZN10S3164C2_nt4v130Ev");}
void  S3164C2_nt ::v131(){vfunc_called(this, "_ZN10S3164C2_nt4v131Ev");}
void  S3164C2_nt ::v132(){vfunc_called(this, "_ZN10S3164C2_nt4v132Ev");}
void  S3164C2_nt ::v133(){vfunc_called(this, "_ZN10S3164C2_nt4v133Ev");}
void  S3164C2_nt ::v134(){vfunc_called(this, "_ZN10S3164C2_nt4v134Ev");}
void  S3164C2_nt ::v135(){vfunc_called(this, "_ZN10S3164C2_nt4v135Ev");}
void  S3164C2_nt ::v136(){vfunc_called(this, "_ZN10S3164C2_nt4v136Ev");}
void  S3164C2_nt ::v137(){vfunc_called(this, "_ZN10S3164C2_nt4v137Ev");}
void  S3164C2_nt ::v138(){vfunc_called(this, "_ZN10S3164C2_nt4v138Ev");}
void  S3164C2_nt ::v139(){vfunc_called(this, "_ZN10S3164C2_nt4v139Ev");}
void  S3164C2_nt ::v140(){vfunc_called(this, "_ZN10S3164C2_nt4v140Ev");}
void  S3164C2_nt ::v141(){vfunc_called(this, "_ZN10S3164C2_nt4v141Ev");}
void  S3164C2_nt ::v142(){vfunc_called(this, "_ZN10S3164C2_nt4v142Ev");}
void  S3164C2_nt ::v143(){vfunc_called(this, "_ZN10S3164C2_nt4v143Ev");}
void  S3164C2_nt ::v144(){vfunc_called(this, "_ZN10S3164C2_nt4v144Ev");}
void  S3164C2_nt ::v145(){vfunc_called(this, "_ZN10S3164C2_nt4v145Ev");}
void  S3164C2_nt ::v146(){vfunc_called(this, "_ZN10S3164C2_nt4v146Ev");}
void  S3164C2_nt ::v147(){vfunc_called(this, "_ZN10S3164C2_nt4v147Ev");}
void  S3164C2_nt ::v148(){vfunc_called(this, "_ZN10S3164C2_nt4v148Ev");}
void  S3164C2_nt ::v149(){vfunc_called(this, "_ZN10S3164C2_nt4v149Ev");}
void  S3164C2_nt ::v150(){vfunc_called(this, "_ZN10S3164C2_nt4v150Ev");}
void  S3164C2_nt ::v151(){vfunc_called(this, "_ZN10S3164C2_nt4v151Ev");}
void  S3164C2_nt ::v152(){vfunc_called(this, "_ZN10S3164C2_nt4v152Ev");}
void  S3164C2_nt ::v153(){vfunc_called(this, "_ZN10S3164C2_nt4v153Ev");}
void  S3164C2_nt ::v154(){vfunc_called(this, "_ZN10S3164C2_nt4v154Ev");}
void  S3164C2_nt ::v155(){vfunc_called(this, "_ZN10S3164C2_nt4v155Ev");}
void  S3164C2_nt ::v156(){vfunc_called(this, "_ZN10S3164C2_nt4v156Ev");}
void  S3164C2_nt ::v157(){vfunc_called(this, "_ZN10S3164C2_nt4v157Ev");}
void  S3164C2_nt ::v158(){vfunc_called(this, "_ZN10S3164C2_nt4v158Ev");}
void  S3164C2_nt ::v159(){vfunc_called(this, "_ZN10S3164C2_nt4v159Ev");}
void  S3164C2_nt ::v160(){vfunc_called(this, "_ZN10S3164C2_nt4v160Ev");}
void  S3164C2_nt ::v161(){vfunc_called(this, "_ZN10S3164C2_nt4v161Ev");}
void  S3164C2_nt ::v162(){vfunc_called(this, "_ZN10S3164C2_nt4v162Ev");}
void  S3164C2_nt ::v163(){vfunc_called(this, "_ZN10S3164C2_nt4v163Ev");}
void  S3164C2_nt ::v164(){vfunc_called(this, "_ZN10S3164C2_nt4v164Ev");}
void  S3164C2_nt ::v165(){vfunc_called(this, "_ZN10S3164C2_nt4v165Ev");}
void  S3164C2_nt ::v166(){vfunc_called(this, "_ZN10S3164C2_nt4v166Ev");}
void  S3164C2_nt ::v167(){vfunc_called(this, "_ZN10S3164C2_nt4v167Ev");}
void  S3164C2_nt ::v168(){vfunc_called(this, "_ZN10S3164C2_nt4v168Ev");}
void  S3164C2_nt ::v169(){vfunc_called(this, "_ZN10S3164C2_nt4v169Ev");}
void  S3164C2_nt ::v170(){vfunc_called(this, "_ZN10S3164C2_nt4v170Ev");}
void  S3164C2_nt ::v171(){vfunc_called(this, "_ZN10S3164C2_nt4v171Ev");}
void  S3164C2_nt ::v172(){vfunc_called(this, "_ZN10S3164C2_nt4v172Ev");}
void  S3164C2_nt ::v173(){vfunc_called(this, "_ZN10S3164C2_nt4v173Ev");}
void  S3164C2_nt ::v174(){vfunc_called(this, "_ZN10S3164C2_nt4v174Ev");}
void  S3164C2_nt ::v175(){vfunc_called(this, "_ZN10S3164C2_nt4v175Ev");}
void  S3164C2_nt ::v176(){vfunc_called(this, "_ZN10S3164C2_nt4v176Ev");}
void  S3164C2_nt ::v177(){vfunc_called(this, "_ZN10S3164C2_nt4v177Ev");}
void  S3164C2_nt ::v178(){vfunc_called(this, "_ZN10S3164C2_nt4v178Ev");}
void  S3164C2_nt ::v179(){vfunc_called(this, "_ZN10S3164C2_nt4v179Ev");}
void  S3164C2_nt ::v180(){vfunc_called(this, "_ZN10S3164C2_nt4v180Ev");}
void  S3164C2_nt ::v181(){vfunc_called(this, "_ZN10S3164C2_nt4v181Ev");}
void  S3164C2_nt ::v182(){vfunc_called(this, "_ZN10S3164C2_nt4v182Ev");}
void  S3164C2_nt ::v183(){vfunc_called(this, "_ZN10S3164C2_nt4v183Ev");}
void  S3164C2_nt ::v184(){vfunc_called(this, "_ZN10S3164C2_nt4v184Ev");}
void  S3164C2_nt ::v185(){vfunc_called(this, "_ZN10S3164C2_nt4v185Ev");}
void  S3164C2_nt ::v186(){vfunc_called(this, "_ZN10S3164C2_nt4v186Ev");}
void  S3164C2_nt ::v187(){vfunc_called(this, "_ZN10S3164C2_nt4v187Ev");}
void  S3164C2_nt ::v188(){vfunc_called(this, "_ZN10S3164C2_nt4v188Ev");}
void  S3164C2_nt ::v189(){vfunc_called(this, "_ZN10S3164C2_nt4v189Ev");}
void  S3164C2_nt ::v190(){vfunc_called(this, "_ZN10S3164C2_nt4v190Ev");}
void  S3164C2_nt ::v191(){vfunc_called(this, "_ZN10S3164C2_nt4v191Ev");}
void  S3164C2_nt ::v192(){vfunc_called(this, "_ZN10S3164C2_nt4v192Ev");}
void  S3164C2_nt ::v193(){vfunc_called(this, "_ZN10S3164C2_nt4v193Ev");}
void  S3164C2_nt ::v194(){vfunc_called(this, "_ZN10S3164C2_nt4v194Ev");}
void  S3164C2_nt ::v195(){vfunc_called(this, "_ZN10S3164C2_nt4v195Ev");}
void  S3164C2_nt ::v196(){vfunc_called(this, "_ZN10S3164C2_nt4v196Ev");}
void  S3164C2_nt ::v197(){vfunc_called(this, "_ZN10S3164C2_nt4v197Ev");}
void  S3164C2_nt ::v198(){vfunc_called(this, "_ZN10S3164C2_nt4v198Ev");}
void  S3164C2_nt ::v199(){vfunc_called(this, "_ZN10S3164C2_nt4v199Ev");}
void  S3164C2_nt ::v200(){vfunc_called(this, "_ZN10S3164C2_nt4v200Ev");}
void  S3164C2_nt ::v201(){vfunc_called(this, "_ZN10S3164C2_nt4v201Ev");}
void  S3164C2_nt ::v202(){vfunc_called(this, "_ZN10S3164C2_nt4v202Ev");}
void  S3164C2_nt ::v203(){vfunc_called(this, "_ZN10S3164C2_nt4v203Ev");}
void  S3164C2_nt ::v204(){vfunc_called(this, "_ZN10S3164C2_nt4v204Ev");}
void  S3164C2_nt ::v205(){vfunc_called(this, "_ZN10S3164C2_nt4v205Ev");}
void  S3164C2_nt ::v206(){vfunc_called(this, "_ZN10S3164C2_nt4v206Ev");}
void  S3164C2_nt ::v207(){vfunc_called(this, "_ZN10S3164C2_nt4v207Ev");}
void  S3164C2_nt ::v208(){vfunc_called(this, "_ZN10S3164C2_nt4v208Ev");}
void  S3164C2_nt ::v209(){vfunc_called(this, "_ZN10S3164C2_nt4v209Ev");}
S3164C2_nt ::S3164C2_nt(){ note_ctor("S3164C2_nt", this);} // tgen

//skip512 S3164C2_nt

#else // __cplusplus

extern void _ZN10S3164C2_ntC1Ev();
extern void _ZN10S3164C2_ntD1Ev();
Name_Map name_map_S3164C2_nt[] = {
  NSPAIR(_ZN10S3164C2_ntC1Ev),
  NSPAIR(_ZN10S3164C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C3_nt;
extern VTBL_ENTRY _ZTI10S3164C3_nt[];
extern  VTBL_ENTRY _ZTV10S3164C3_nt[];
static Base_Class bases_S3164C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3164C2_nt[];
extern void _ZN10S3164C2_ntD1Ev();
extern void _ZN10S3164C2_ntD0Ev();
extern void _ZN10S3164C3_nt2v3Ev();
extern void _ZN10S3164C3_nt2v4Ev();
extern void _ZN10S3164C3_nt2v5Ev();
extern void _ZN10S3164C3_nt2v6Ev();
extern void _ZN10S3164C3_nt2v7Ev();
extern void _ZN10S3164C3_nt2v8Ev();
extern void _ZN10S3164C3_nt2v9Ev();
extern void _ZN10S3164C3_nt3v10Ev();
extern void _ZN10S3164C3_nt3v11Ev();
extern void _ZN10S3164C3_nt3v12Ev();
extern void _ZN10S3164C3_nt3v13Ev();
extern void _ZN10S3164C3_nt3v14Ev();
extern void _ZN10S3164C3_nt3v15Ev();
extern void _ZN10S3164C3_nt3v16Ev();
extern void _ZN10S3164C3_nt3v17Ev();
extern void _ZN10S3164C3_nt3v18Ev();
extern void _ZN10S3164C3_nt3v19Ev();
extern void _ZN10S3164C3_nt3v20Ev();
extern void _ZN10S3164C3_nt3v21Ev();
extern void _ZN10S3164C3_nt3v22Ev();
extern void _ZN10S3164C3_nt3v23Ev();
extern void _ZN10S3164C3_nt3v24Ev();
extern void _ZN10S3164C3_nt3v25Ev();
extern void _ZN10S3164C3_nt3v26Ev();
extern void _ZN10S3164C3_nt3v27Ev();
extern void _ZN10S3164C3_nt3v28Ev();
extern void _ZN10S3164C3_nt3v29Ev();
extern void _ZN10S3164C3_nt3v30Ev();
extern void _ZN10S3164C3_nt3v31Ev();
extern void _ZN10S3164C3_nt3v32Ev();
extern void _ZN10S3164C3_nt3v33Ev();
extern void _ZN10S3164C3_nt3v34Ev();
extern void _ZN10S3164C3_nt3v35Ev();
extern void _ZN10S3164C3_nt3v36Ev();
extern void _ZN10S3164C3_nt3v37Ev();
extern void _ZN10S3164C3_nt3v38Ev();
extern void _ZN10S3164C3_nt3v39Ev();
extern void _ZN10S3164C3_nt3v40Ev();
extern void _ZN10S3164C3_nt3v41Ev();
extern void _ZN10S3164C3_nt3v42Ev();
extern void _ZN10S3164C3_nt3v43Ev();
extern void _ZN10S3164C3_nt3v44Ev();
extern void _ZN10S3164C3_nt3v45Ev();
extern void _ZN10S3164C3_nt3v46Ev();
extern void _ZN10S3164C3_nt3v47Ev();
extern void _ZN10S3164C3_nt3v48Ev();
extern void _ZN10S3164C3_nt3v49Ev();
extern void _ZN10S3164C3_nt3v50Ev();
extern void _ZN10S3164C3_nt3v51Ev();
extern void _ZN10S3164C3_nt3v52Ev();
extern void _ZN10S3164C3_nt3v53Ev();
extern void _ZN10S3164C3_nt3v54Ev();
extern void _ZN10S3164C3_nt3v55Ev();
extern void _ZN10S3164C3_nt3v56Ev();
extern void _ZN10S3164C3_nt3v57Ev();
extern void _ZN10S3164C3_nt3v58Ev();
extern void _ZN10S3164C3_nt3v59Ev();
extern void _ZN10S3164C3_nt3v60Ev();
extern void _ZN10S3164C3_nt3v61Ev();
extern void _ZN10S3164C3_nt3v62Ev();
extern void _ZN10S3164C3_nt3v63Ev();
extern void _ZN10S3164C3_nt3v64Ev();
extern void _ZN10S3164C3_nt3v65Ev();
extern void _ZN10S3164C3_nt3v66Ev();
extern void _ZN10S3164C2_nt3v67Ev();
extern void _ZN10S3164C2_nt3v68Ev();
extern void _ZN10S3164C2_nt3v69Ev();
extern void _ZN10S3164C2_nt3v70Ev();
extern void _ZN10S3164C2_nt3v71Ev();
extern void _ZN10S3164C2_nt3v72Ev();
extern void _ZN10S3164C2_nt3v73Ev();
extern void _ZN10S3164C2_nt3v74Ev();
extern void _ZN10S3164C2_nt3v75Ev();
extern void _ZN10S3164C2_nt3v76Ev();
extern void _ZN10S3164C2_nt3v77Ev();
extern void _ZN10S3164C2_nt3v78Ev();
extern void _ZN10S3164C2_nt3v79Ev();
extern void _ZN10S3164C2_nt3v80Ev();
extern void _ZN10S3164C2_nt3v81Ev();
extern void _ZN10S3164C2_nt3v82Ev();
extern void _ZN10S3164C2_nt3v83Ev();
extern void _ZN10S3164C2_nt3v84Ev();
extern void _ZN10S3164C2_nt3v85Ev();
extern void _ZN10S3164C2_nt3v86Ev();
extern void _ZN10S3164C2_nt3v87Ev();
extern void _ZN10S3164C2_nt3v88Ev();
extern void _ZN10S3164C2_nt3v89Ev();
extern void _ZN10S3164C2_nt3v90Ev();
extern void _ZN10S3164C2_nt3v91Ev();
extern void _ZN10S3164C2_nt3v92Ev();
extern void _ZN10S3164C2_nt3v93Ev();
extern void _ZN10S3164C2_nt3v94Ev();
extern void _ZN10S3164C2_nt3v95Ev();
extern void _ZN10S3164C2_nt3v96Ev();
extern void _ZN10S3164C2_nt3v97Ev();
extern void _ZN10S3164C2_nt3v98Ev();
extern void _ZN10S3164C2_nt3v99Ev();
extern void _ZN10S3164C2_nt4v100Ev();
extern void _ZN10S3164C2_nt4v101Ev();
extern void _ZN10S3164C2_nt4v102Ev();
extern void _ZN10S3164C2_nt4v103Ev();
extern void _ZN10S3164C2_nt4v104Ev();
extern void _ZN10S3164C2_nt4v105Ev();
extern void _ZN10S3164C2_nt4v106Ev();
extern void _ZN10S3164C2_nt4v107Ev();
extern void _ZN10S3164C2_nt4v108Ev();
extern void _ZN10S3164C2_nt4v109Ev();
extern void _ZN10S3164C2_nt4v110Ev();
extern void _ZN10S3164C2_nt4v111Ev();
extern void _ZN10S3164C2_nt4v112Ev();
extern void _ZN10S3164C2_nt4v113Ev();
extern void _ZN10S3164C2_nt4v114Ev();
extern void _ZN10S3164C2_nt4v115Ev();
extern void _ZN10S3164C2_nt4v116Ev();
extern void _ZN10S3164C2_nt4v117Ev();
extern void _ZN10S3164C2_nt4v118Ev();
extern void _ZN10S3164C2_nt4v119Ev();
extern void _ZN10S3164C2_nt4v120Ev();
extern void _ZN10S3164C2_nt4v121Ev();
extern void _ZN10S3164C2_nt4v122Ev();
extern void _ZN10S3164C2_nt4v123Ev();
extern void _ZN10S3164C2_nt4v124Ev();
extern void _ZN10S3164C2_nt4v125Ev();
extern void _ZN10S3164C2_nt4v126Ev();
extern void _ZN10S3164C2_nt4v127Ev();
extern void _ZN10S3164C2_nt4v128Ev();
extern void _ZN10S3164C2_nt4v129Ev();
extern void _ZN10S3164C2_nt4v130Ev();
extern void _ZN10S3164C2_nt4v131Ev();
extern void _ZN10S3164C2_nt4v132Ev();
extern void _ZN10S3164C2_nt4v133Ev();
extern void _ZN10S3164C2_nt4v134Ev();
extern void _ZN10S3164C2_nt4v135Ev();
extern void _ZN10S3164C2_nt4v136Ev();
extern void _ZN10S3164C2_nt4v137Ev();
extern void _ZN10S3164C2_nt4v138Ev();
extern void _ZN10S3164C2_nt4v139Ev();
extern void _ZN10S3164C2_nt4v140Ev();
extern void _ZN10S3164C2_nt4v141Ev();
extern void _ZN10S3164C2_nt4v142Ev();
extern void _ZN10S3164C2_nt4v143Ev();
extern void _ZN10S3164C2_nt4v144Ev();
extern void _ZN10S3164C2_nt4v145Ev();
extern void _ZN10S3164C2_nt4v146Ev();
extern void _ZN10S3164C2_nt4v147Ev();
extern void _ZN10S3164C2_nt4v148Ev();
extern void _ZN10S3164C2_nt4v149Ev();
extern void _ZN10S3164C2_nt4v150Ev();
extern void _ZN10S3164C2_nt4v151Ev();
extern void _ZN10S3164C2_nt4v152Ev();
extern void _ZN10S3164C2_nt4v153Ev();
extern void _ZN10S3164C2_nt4v154Ev();
extern void _ZN10S3164C2_nt4v155Ev();
extern void _ZN10S3164C2_nt4v156Ev();
extern void _ZN10S3164C2_nt4v157Ev();
extern void _ZN10S3164C2_nt4v158Ev();
extern void _ZN10S3164C2_nt4v159Ev();
extern void _ZN10S3164C2_nt4v160Ev();
extern void _ZN10S3164C2_nt4v161Ev();
extern void _ZN10S3164C2_nt4v162Ev();
extern void _ZN10S3164C2_nt4v163Ev();
extern void _ZN10S3164C2_nt4v164Ev();
extern void _ZN10S3164C2_nt4v165Ev();
extern void _ZN10S3164C2_nt4v166Ev();
extern void _ZN10S3164C2_nt4v167Ev();
extern void _ZN10S3164C2_nt4v168Ev();
extern void _ZN10S3164C2_nt4v169Ev();
extern void _ZN10S3164C2_nt4v170Ev();
extern void _ZN10S3164C2_nt4v171Ev();
extern void _ZN10S3164C2_nt4v172Ev();
extern void _ZN10S3164C2_nt4v173Ev();
extern void _ZN10S3164C2_nt4v174Ev();
extern void _ZN10S3164C2_nt4v175Ev();
extern void _ZN10S3164C2_nt4v176Ev();
extern void _ZN10S3164C2_nt4v177Ev();
extern void _ZN10S3164C2_nt4v178Ev();
extern void _ZN10S3164C2_nt4v179Ev();
extern void _ZN10S3164C2_nt4v180Ev();
extern void _ZN10S3164C2_nt4v181Ev();
extern void _ZN10S3164C2_nt4v182Ev();
extern void _ZN10S3164C2_nt4v183Ev();
extern void _ZN10S3164C2_nt4v184Ev();
extern void _ZN10S3164C2_nt4v185Ev();
extern void _ZN10S3164C2_nt4v186Ev();
extern void _ZN10S3164C2_nt4v187Ev();
extern void _ZN10S3164C2_nt4v188Ev();
extern void _ZN10S3164C2_nt4v189Ev();
extern void _ZN10S3164C2_nt4v190Ev();
extern void _ZN10S3164C2_nt4v191Ev();
extern void _ZN10S3164C2_nt4v192Ev();
extern void _ZN10S3164C2_nt4v193Ev();
extern void _ZN10S3164C2_nt4v194Ev();
extern void _ZN10S3164C2_nt4v195Ev();
extern void _ZN10S3164C2_nt4v196Ev();
extern void _ZN10S3164C2_nt4v197Ev();
extern void _ZN10S3164C2_nt4v198Ev();
extern void _ZN10S3164C2_nt4v199Ev();
extern void _ZN10S3164C2_nt4v200Ev();
extern void _ZN10S3164C2_nt4v201Ev();
extern void _ZN10S3164C2_nt4v202Ev();
extern void _ZN10S3164C2_nt4v203Ev();
extern void _ZN10S3164C2_nt4v204Ev();
extern void _ZN10S3164C2_nt4v205Ev();
extern void _ZN10S3164C2_nt4v206Ev();
extern void _ZN10S3164C2_nt4v207Ev();
extern void _ZN10S3164C2_nt4v208Ev();
extern void _ZN10S3164C2_nt4v209Ev();
static  VTBL_ENTRY vtc_S3164C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3164C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3164C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v209Ev,
};
extern VTBL_ENTRY _ZTI10S3164C2_nt[];
VTBL_ENTRY *P__ZTI10S3164C2_nt = _ZTI10S3164C2_nt; 
extern  VTBL_ENTRY _ZTV10S3164C2_nt[];
Class_Descriptor cd_S3164C2_nt = {  "S3164C2_nt", // class name
  bases_S3164C2_nt, 1,
  &(vtc_S3164C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI10S3164C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3164C2_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  S3164C24  : S3164C7_nt {
};
//SIG(-1 S3164C24) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3164C24()
{
  extern Class_Descriptor cd_S3164C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3164C24, buf);
    S3164C24 &lv = *(new (buf) S3164C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3164C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C24)");
    check_base_class_offset(lv, (S3164C7_nt*), 0, "S3164C24");
    test_class_info(&lv, &cd_S3164C24);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3164C24(Test_S3164C24, "S3164C24", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3164C23()
{
  extern Class_Descriptor cd_S3164C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3164C23, buf);
    S3164C23 &lv = *(new (buf) S3164C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3164C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C23)");
    check_base_class_offset(lv, (S3164C7_nt*)(S3164C24*), 0, "S3164C23");
    check_base_class_offset(lv, (S3164C24*), 0, "S3164C23");
    test_class_info(&lv, &cd_S3164C23);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3164C23(Test_S3164C23, "S3164C23", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3164C7_nt;
extern Class_Descriptor cd_S3164C24;
static Base_Class bases_S3164C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3164C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3164C23 = {  "S3164C23", // class name
  bases_S3164C23, 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  S3164C22  {
  char s3164c22f0[4];
  ::S3164C23 s3164c22f1;
  int s3164c22f2[2];
  void  mf3164c22(); // _ZN8S3164C229mf3164c22Ev
};
//SIG(-1 S3164C22) C1{ m Fc[4] FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fi[2]}


void  S3164C22 ::mf3164c22(){}

static void Test_S3164C22()
{
  {
    init_simple_test("S3164C22");
    S3164C22 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3164C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C22)");
    check_field_offset(lv, s3164c22f0, 0, "S3164C22.s3164c22f0");
    check_field_offset(lv, s3164c22f1, ABISELECT(8,4), "S3164C22.s3164c22f1");
    check_field_offset(lv, s3164c22f2, ABISELECT(24,16), "S3164C22.s3164c22f2");
  }
}
static Arrange_To_Call_Me vS3164C22(Test_S3164C22, "S3164C22", ABISELECT(32,24));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S3164C21()
{
  extern Class_Descriptor cd_S3164C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S3164C21, buf);
    S3164C21 &lv = *(new (buf) S3164C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S3164C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C21)");
    check_base_class_offset(lv, (S3164C22*), 0, "S3164C21");
    check_field_offset(lv, s3164c21f0, ABISELECT(32,24), "S3164C21.s3164c21f0");
    test_class_info(&lv, &cd_S3164C21);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3164C21(Test_S3164C21, "S3164C21", ABISELECT(40,28));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S3164C28()
{
  extern Class_Descriptor cd_S3164C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3164C28, buf);
    S3164C28 &lv = *(new (buf) S3164C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3164C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C28)");
    check_base_class_offset(lv, (S3164C7_nt*), 0, "S3164C28");
    test_class_info(&lv, &cd_S3164C28);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3164C28(Test_S3164C28, "S3164C28", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3164C27()
{
  extern Class_Descriptor cd_S3164C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3164C27, buf);
    S3164C27 &lv = *(new (buf) S3164C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3164C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C27)");
    check_base_class_offset(lv, (S3164C7_nt*)(S3164C28*), 0, "S3164C27");
    check_base_class_offset(lv, (S3164C28*), 0, "S3164C27");
    test_class_info(&lv, &cd_S3164C27);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3164C27(Test_S3164C27, "S3164C27", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3164C7_nt;
extern Class_Descriptor cd_S3164C28;
static Base_Class bases_S3164C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3164C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3164C27 = {  "S3164C27", // class name
  bases_S3164C27, 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  S3164C31_nt  {
  void  mf3164c31(); // _ZN11S3164C31_nt9mf3164c31Ev
};
//SIG(-1 S3164C31_nt) C1{ m}


void  S3164C31_nt ::mf3164c31(){}

//skip512 S3164C31_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S3164C31_nt[];
VTBL_ENTRY *P__ZTI11S3164C31_nt = _ZTI11S3164C31_nt; 
Class_Descriptor cd_S3164C31_nt = {  "S3164C31_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI11S3164C31_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  S3164C1  : S3164C2_nt {
  unsigned int s3164c1f0:1;
  int s3164c1f1[14];
  ::S3164C13_nt s3164c1f2;
  int s3164c1f3[2];
  ::S3164C21 s3164c1f4;
  ::S3164C21 s3164c1f5;
  ::S3164C21 s3164c1f6;
  ::S3164C23 s3164c1f7;
  ::S3164C23 s3164c1f8;
  int s3164c1f9[8];
  ::S3164C27 s3164c1f10;
  ::S3164C27 s3164c1f11;
  ::S3164C4_nt s3164c1f12;
  ::S3164C4_nt s3164c1f13;
  void *s3164c1f14;
  ::S3164C27 s3164c1f15;
  ::S3164C4_nt s3164c1f16;
  ::S3164C31_nt s3164c1f17;
  virtual  ~S3164C1(); // _ZN7S3164C1D1Ev
  virtual void  v1(); // _ZN7S3164C12v1Ev
  virtual void  v2(); // _ZN7S3164C12v2Ev
  S3164C1(); // tgen
};
//SIG(1 S3164C1) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 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 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 Fi:1 Fi[14] FC11 Fi[2] FC14{ BC15{ m Fc[4] FC16{ BC17{ BC7}} Fi[2]} Fp} FC14 FC14 FC16 FC16 Fi[8] FC18{ BC19{ BC7}} FC18 FC4 FC4 Fp FC18 FC4 FC20{ m}}


 S3164C1 ::~S3164C1(){ note_dtor("S3164C1", this);}
void  S3164C1 ::v1(){vfunc_called(this, "_ZN7S3164C12v1Ev");}
void  S3164C1 ::v2(){vfunc_called(this, "_ZN7S3164C12v2Ev");}
S3164C1 ::S3164C1(){ note_ctor("S3164C1", this);} // tgen

static void Test_S3164C1()
{
  extern Class_Descriptor cd_S3164C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(116,182)];
    init_test(&cd_S3164C1, buf);
    S3164C1 *dp, &lv = *(dp=new (buf) S3164C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(920,724), "sizeof(S3164C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3164C1)");
    check_base_class_offset(lv, (S3164C3_nt*)(S3164C2_nt*), 0, "S3164C1");
    check_base_class_offset(lv, (S3164C2_nt*), 0, "S3164C1");
    set_bf_and_test(lv, s3164c1f0, ABISELECT(568,436), 0, 1, 1, "S3164C1");
    check_field_offset(lv, s3164c1f1, ABISELECT(572,440), "S3164C1.s3164c1f1");
    check_field_offset(lv, s3164c1f2, ABISELECT(628,496), "S3164C1.s3164c1f2");
    check_field_offset(lv, s3164c1f3, ABISELECT(640,508), "S3164C1.s3164c1f3");
    check_field_offset(lv, s3164c1f4, ABISELECT(648,516), "S3164C1.s3164c1f4");
    check_field_offset(lv, s3164c1f5, ABISELECT(688,544), "S3164C1.s3164c1f5");
    check_field_offset(lv, s3164c1f6, ABISELECT(728,572), "S3164C1.s3164c1f6");
    check_field_offset(lv, s3164c1f7, ABISELECT(768,600), "S3164C1.s3164c1f7");
    check_field_offset(lv, s3164c1f8, ABISELECT(784,612), "S3164C1.s3164c1f8");
    check_field_offset(lv, s3164c1f9, ABISELECT(800,624), "S3164C1.s3164c1f9");
    check_field_offset(lv, s3164c1f10, ABISELECT(832,656), "S3164C1.s3164c1f10");
    check_field_offset(lv, s3164c1f11, ABISELECT(848,668), "S3164C1.s3164c1f11");
    check_field_offset(lv, s3164c1f12, ABISELECT(864,680), "S3164C1.s3164c1f12");
    check_field_offset(lv, s3164c1f13, ABISELECT(872,688), "S3164C1.s3164c1f13");
    check_field_offset(lv, s3164c1f14, ABISELECT(880,696), "S3164C1.s3164c1f14");
    check_field_offset(lv, s3164c1f15, ABISELECT(888,700), "S3164C1.s3164c1f15");
    check_field_offset(lv, s3164c1f16, ABISELECT(904,712), "S3164C1.s3164c1f16");
    check_field_offset(lv, s3164c1f17, ABISELECT(912,720), "S3164C1.s3164c1f17");
    test_class_info(&lv, &cd_S3164C1);
    dp->~S3164C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3164C1(Test_S3164C1, "S3164C1", ABISELECT(920,724));

#else // __cplusplus

extern void _ZN7S3164C1C1Ev();
extern void _ZN7S3164C1D1Ev();
Name_Map name_map_S3164C1[] = {
  NSPAIR(_ZN7S3164C1C1Ev),
  NSPAIR(_ZN7S3164C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C3_nt;
extern VTBL_ENTRY _ZTI10S3164C3_nt[];
extern  VTBL_ENTRY _ZTV10S3164C3_nt[];
extern Class_Descriptor cd_S3164C2_nt;
extern VTBL_ENTRY _ZTI10S3164C2_nt[];
extern  VTBL_ENTRY _ZTV10S3164C2_nt[];
static Base_Class bases_S3164C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3164C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3164C1[];
extern void _ZN7S3164C1D1Ev();
extern void _ZN7S3164C1D0Ev();
extern void _ZN10S3164C3_nt2v3Ev();
extern void _ZN10S3164C3_nt2v4Ev();
extern void _ZN10S3164C3_nt2v5Ev();
extern void _ZN10S3164C3_nt2v6Ev();
extern void _ZN10S3164C3_nt2v7Ev();
extern void _ZN10S3164C3_nt2v8Ev();
extern void _ZN10S3164C3_nt2v9Ev();
extern void _ZN10S3164C3_nt3v10Ev();
extern void _ZN10S3164C3_nt3v11Ev();
extern void _ZN10S3164C3_nt3v12Ev();
extern void _ZN10S3164C3_nt3v13Ev();
extern void _ZN10S3164C3_nt3v14Ev();
extern void _ZN10S3164C3_nt3v15Ev();
extern void _ZN10S3164C3_nt3v16Ev();
extern void _ZN10S3164C3_nt3v17Ev();
extern void _ZN10S3164C3_nt3v18Ev();
extern void _ZN10S3164C3_nt3v19Ev();
extern void _ZN10S3164C3_nt3v20Ev();
extern void _ZN10S3164C3_nt3v21Ev();
extern void _ZN10S3164C3_nt3v22Ev();
extern void _ZN10S3164C3_nt3v23Ev();
extern void _ZN10S3164C3_nt3v24Ev();
extern void _ZN10S3164C3_nt3v25Ev();
extern void _ZN10S3164C3_nt3v26Ev();
extern void _ZN10S3164C3_nt3v27Ev();
extern void _ZN10S3164C3_nt3v28Ev();
extern void _ZN10S3164C3_nt3v29Ev();
extern void _ZN10S3164C3_nt3v30Ev();
extern void _ZN10S3164C3_nt3v31Ev();
extern void _ZN10S3164C3_nt3v32Ev();
extern void _ZN10S3164C3_nt3v33Ev();
extern void _ZN10S3164C3_nt3v34Ev();
extern void _ZN10S3164C3_nt3v35Ev();
extern void _ZN10S3164C3_nt3v36Ev();
extern void _ZN10S3164C3_nt3v37Ev();
extern void _ZN10S3164C3_nt3v38Ev();
extern void _ZN10S3164C3_nt3v39Ev();
extern void _ZN10S3164C3_nt3v40Ev();
extern void _ZN10S3164C3_nt3v41Ev();
extern void _ZN10S3164C3_nt3v42Ev();
extern void _ZN10S3164C3_nt3v43Ev();
extern void _ZN10S3164C3_nt3v44Ev();
extern void _ZN10S3164C3_nt3v45Ev();
extern void _ZN10S3164C3_nt3v46Ev();
extern void _ZN10S3164C3_nt3v47Ev();
extern void _ZN10S3164C3_nt3v48Ev();
extern void _ZN10S3164C3_nt3v49Ev();
extern void _ZN10S3164C3_nt3v50Ev();
extern void _ZN10S3164C3_nt3v51Ev();
extern void _ZN10S3164C3_nt3v52Ev();
extern void _ZN10S3164C3_nt3v53Ev();
extern void _ZN10S3164C3_nt3v54Ev();
extern void _ZN10S3164C3_nt3v55Ev();
extern void _ZN10S3164C3_nt3v56Ev();
extern void _ZN10S3164C3_nt3v57Ev();
extern void _ZN10S3164C3_nt3v58Ev();
extern void _ZN10S3164C3_nt3v59Ev();
extern void _ZN10S3164C3_nt3v60Ev();
extern void _ZN10S3164C3_nt3v61Ev();
extern void _ZN10S3164C3_nt3v62Ev();
extern void _ZN10S3164C3_nt3v63Ev();
extern void _ZN10S3164C3_nt3v64Ev();
extern void _ZN10S3164C3_nt3v65Ev();
extern void _ZN10S3164C3_nt3v66Ev();
extern void _ZN10S3164C2_nt3v67Ev();
extern void _ZN10S3164C2_nt3v68Ev();
extern void _ZN10S3164C2_nt3v69Ev();
extern void _ZN10S3164C2_nt3v70Ev();
extern void _ZN10S3164C2_nt3v71Ev();
extern void _ZN10S3164C2_nt3v72Ev();
extern void _ZN10S3164C2_nt3v73Ev();
extern void _ZN10S3164C2_nt3v74Ev();
extern void _ZN10S3164C2_nt3v75Ev();
extern void _ZN10S3164C2_nt3v76Ev();
extern void _ZN10S3164C2_nt3v77Ev();
extern void _ZN10S3164C2_nt3v78Ev();
extern void _ZN10S3164C2_nt3v79Ev();
extern void _ZN10S3164C2_nt3v80Ev();
extern void _ZN10S3164C2_nt3v81Ev();
extern void _ZN10S3164C2_nt3v82Ev();
extern void _ZN10S3164C2_nt3v83Ev();
extern void _ZN10S3164C2_nt3v84Ev();
extern void _ZN10S3164C2_nt3v85Ev();
extern void _ZN10S3164C2_nt3v86Ev();
extern void _ZN10S3164C2_nt3v87Ev();
extern void _ZN10S3164C2_nt3v88Ev();
extern void _ZN10S3164C2_nt3v89Ev();
extern void _ZN10S3164C2_nt3v90Ev();
extern void _ZN10S3164C2_nt3v91Ev();
extern void _ZN10S3164C2_nt3v92Ev();
extern void _ZN10S3164C2_nt3v93Ev();
extern void _ZN10S3164C2_nt3v94Ev();
extern void _ZN10S3164C2_nt3v95Ev();
extern void _ZN10S3164C2_nt3v96Ev();
extern void _ZN10S3164C2_nt3v97Ev();
extern void _ZN10S3164C2_nt3v98Ev();
extern void _ZN10S3164C2_nt3v99Ev();
extern void _ZN10S3164C2_nt4v100Ev();
extern void _ZN10S3164C2_nt4v101Ev();
extern void _ZN10S3164C2_nt4v102Ev();
extern void _ZN10S3164C2_nt4v103Ev();
extern void _ZN10S3164C2_nt4v104Ev();
extern void _ZN10S3164C2_nt4v105Ev();
extern void _ZN10S3164C2_nt4v106Ev();
extern void _ZN10S3164C2_nt4v107Ev();
extern void _ZN10S3164C2_nt4v108Ev();
extern void _ZN10S3164C2_nt4v109Ev();
extern void _ZN10S3164C2_nt4v110Ev();
extern void _ZN10S3164C2_nt4v111Ev();
extern void _ZN10S3164C2_nt4v112Ev();
extern void _ZN10S3164C2_nt4v113Ev();
extern void _ZN10S3164C2_nt4v114Ev();
extern void _ZN10S3164C2_nt4v115Ev();
extern void _ZN10S3164C2_nt4v116Ev();
extern void _ZN10S3164C2_nt4v117Ev();
extern void _ZN10S3164C2_nt4v118Ev();
extern void _ZN10S3164C2_nt4v119Ev();
extern void _ZN10S3164C2_nt4v120Ev();
extern void _ZN10S3164C2_nt4v121Ev();
extern void _ZN10S3164C2_nt4v122Ev();
extern void _ZN10S3164C2_nt4v123Ev();
extern void _ZN10S3164C2_nt4v124Ev();
extern void _ZN10S3164C2_nt4v125Ev();
extern void _ZN10S3164C2_nt4v126Ev();
extern void _ZN10S3164C2_nt4v127Ev();
extern void _ZN10S3164C2_nt4v128Ev();
extern void _ZN10S3164C2_nt4v129Ev();
extern void _ZN10S3164C2_nt4v130Ev();
extern void _ZN10S3164C2_nt4v131Ev();
extern void _ZN10S3164C2_nt4v132Ev();
extern void _ZN10S3164C2_nt4v133Ev();
extern void _ZN10S3164C2_nt4v134Ev();
extern void _ZN10S3164C2_nt4v135Ev();
extern void _ZN10S3164C2_nt4v136Ev();
extern void _ZN10S3164C2_nt4v137Ev();
extern void _ZN10S3164C2_nt4v138Ev();
extern void _ZN10S3164C2_nt4v139Ev();
extern void _ZN10S3164C2_nt4v140Ev();
extern void _ZN10S3164C2_nt4v141Ev();
extern void _ZN10S3164C2_nt4v142Ev();
extern void _ZN10S3164C2_nt4v143Ev();
extern void _ZN10S3164C2_nt4v144Ev();
extern void _ZN10S3164C2_nt4v145Ev();
extern void _ZN10S3164C2_nt4v146Ev();
extern void _ZN10S3164C2_nt4v147Ev();
extern void _ZN10S3164C2_nt4v148Ev();
extern void _ZN10S3164C2_nt4v149Ev();
extern void _ZN10S3164C2_nt4v150Ev();
extern void _ZN10S3164C2_nt4v151Ev();
extern void _ZN10S3164C2_nt4v152Ev();
extern void _ZN10S3164C2_nt4v153Ev();
extern void _ZN10S3164C2_nt4v154Ev();
extern void _ZN10S3164C2_nt4v155Ev();
extern void _ZN10S3164C2_nt4v156Ev();
extern void _ZN10S3164C2_nt4v157Ev();
extern void _ZN10S3164C2_nt4v158Ev();
extern void _ZN10S3164C2_nt4v159Ev();
extern void _ZN10S3164C2_nt4v160Ev();
extern void _ZN10S3164C2_nt4v161Ev();
extern void _ZN10S3164C2_nt4v162Ev();
extern void _ZN10S3164C2_nt4v163Ev();
extern void _ZN10S3164C2_nt4v164Ev();
extern void _ZN10S3164C2_nt4v165Ev();
extern void _ZN10S3164C2_nt4v166Ev();
extern void _ZN10S3164C2_nt4v167Ev();
extern void _ZN10S3164C2_nt4v168Ev();
extern void _ZN10S3164C2_nt4v169Ev();
extern void _ZN10S3164C2_nt4v170Ev();
extern void _ZN10S3164C2_nt4v171Ev();
extern void _ZN10S3164C2_nt4v172Ev();
extern void _ZN10S3164C2_nt4v173Ev();
extern void _ZN10S3164C2_nt4v174Ev();
extern void _ZN10S3164C2_nt4v175Ev();
extern void _ZN10S3164C2_nt4v176Ev();
extern void _ZN10S3164C2_nt4v177Ev();
extern void _ZN10S3164C2_nt4v178Ev();
extern void _ZN10S3164C2_nt4v179Ev();
extern void _ZN10S3164C2_nt4v180Ev();
extern void _ZN10S3164C2_nt4v181Ev();
extern void _ZN10S3164C2_nt4v182Ev();
extern void _ZN10S3164C2_nt4v183Ev();
extern void _ZN10S3164C2_nt4v184Ev();
extern void _ZN10S3164C2_nt4v185Ev();
extern void _ZN10S3164C2_nt4v186Ev();
extern void _ZN10S3164C2_nt4v187Ev();
extern void _ZN10S3164C2_nt4v188Ev();
extern void _ZN10S3164C2_nt4v189Ev();
extern void _ZN10S3164C2_nt4v190Ev();
extern void _ZN10S3164C2_nt4v191Ev();
extern void _ZN10S3164C2_nt4v192Ev();
extern void _ZN10S3164C2_nt4v193Ev();
extern void _ZN10S3164C2_nt4v194Ev();
extern void _ZN10S3164C2_nt4v195Ev();
extern void _ZN10S3164C2_nt4v196Ev();
extern void _ZN10S3164C2_nt4v197Ev();
extern void _ZN10S3164C2_nt4v198Ev();
extern void _ZN10S3164C2_nt4v199Ev();
extern void _ZN10S3164C2_nt4v200Ev();
extern void _ZN10S3164C2_nt4v201Ev();
extern void _ZN10S3164C2_nt4v202Ev();
extern void _ZN10S3164C2_nt4v203Ev();
extern void _ZN10S3164C2_nt4v204Ev();
extern void _ZN10S3164C2_nt4v205Ev();
extern void _ZN10S3164C2_nt4v206Ev();
extern void _ZN10S3164C2_nt4v207Ev();
extern void _ZN10S3164C2_nt4v208Ev();
extern void _ZN10S3164C2_nt4v209Ev();
extern void _ZN7S3164C12v1Ev();
extern void _ZN7S3164C12v2Ev();
static  VTBL_ENTRY vtc_S3164C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3164C1[0]),
  (VTBL_ENTRY)&_ZN7S3164C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3164C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3164C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3164C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN7S3164C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3164C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3164C1[];
extern  VTBL_ENTRY _ZTV7S3164C1[];
Class_Descriptor cd_S3164C1 = {  "S3164C1", // class name
  bases_S3164C1, 2,
  &(vtc_S3164C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(920,724), // object size
  NSPAIRA(_ZTI7S3164C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3164C1),213, //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  S2213C8_nt  {
  void  mf2213c8(); // _ZN10S2213C8_nt8mf2213c8Ev
};
//SIG(-1 S2213C8_nt) C1{ m}


void  S2213C8_nt ::mf2213c8(){}

//skip512 S2213C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C6_nt  {
  void *s2213c6f0;
  int s2213c6f1;
  ::S3164C31_nt s2213c6f2;
  ::S2213C8_nt s2213c6f3;
  void  mf2213c6(); // _ZN10S2213C6_nt8mf2213c6Ev
};
//SIG(-1 S2213C6_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S2213C6_nt ::mf2213c6(){}

//skip512 S2213C6_nt

#else // __cplusplus

Class_Descriptor cd_S2213C6_nt = {  "S2213C6_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  S2213C5_nt  : S2213C6_nt {
};
//SIG(-1 S2213C5_nt) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



//skip512 S2213C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S2213C6_nt;
static Base_Class bases_S2213C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2213C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S2213C4_nt  {
  void *s2213c4f0;
  int s2213c4f1;
  ::S2213C5_nt s2213c4f2;
  ::S2213C5_nt s2213c4f3;
  int s2213c4f4;
  virtual  ~S2213C4_nt(); // _ZN10S2213C4_ntD1Ev
  virtual void  v3(); // _ZN10S2213C4_nt2v3Ev
  virtual void  v4(); // _ZN10S2213C4_nt2v4Ev
  virtual void  v5(); // _ZN10S2213C4_nt2v5Ev
  virtual void  v6(); // _ZN10S2213C4_nt2v6Ev
  virtual void  v7(); // _ZN10S2213C4_nt2v7Ev
  virtual void  v8(); // _ZN10S2213C4_nt2v8Ev
  virtual void  v9(); // _ZN10S2213C4_nt2v9Ev
  virtual void  v10(); // _ZN10S2213C4_nt3v10Ev
  virtual void  v11(); // _ZN10S2213C4_nt3v11Ev
  virtual void  v12(); // _ZN10S2213C4_nt3v12Ev
  virtual void  v13(); // _ZN10S2213C4_nt3v13Ev
  virtual void  v14(); // _ZN10S2213C4_nt3v14Ev
  virtual void  v15(); // _ZN10S2213C4_nt3v15Ev
  virtual void  v16(); // _ZN10S2213C4_nt3v16Ev
  virtual void  v17(); // _ZN10S2213C4_nt3v17Ev
  virtual void  v18(); // _ZN10S2213C4_nt3v18Ev
  virtual void  v19(); // _ZN10S2213C4_nt3v19Ev
  virtual void  v20(); // _ZN10S2213C4_nt3v20Ev
  virtual void  v21(); // _ZN10S2213C4_nt3v21Ev
  virtual void  v22(); // _ZN10S2213C4_nt3v22Ev
  virtual void  v23(); // _ZN10S2213C4_nt3v23Ev
  virtual void  v24(); // _ZN10S2213C4_nt3v24Ev
  virtual void  v25(); // _ZN10S2213C4_nt3v25Ev
  S2213C4_nt(); // tgen
};
//SIG(-1 S2213C4_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp Fi FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}} FC2 Fi}


 S2213C4_nt ::~S2213C4_nt(){ note_dtor("S2213C4_nt", this);}
void  S2213C4_nt ::v3(){vfunc_called(this, "_ZN10S2213C4_nt2v3Ev");}
void  S2213C4_nt ::v4(){vfunc_called(this, "_ZN10S2213C4_nt2v4Ev");}
void  S2213C4_nt ::v5(){vfunc_called(this, "_ZN10S2213C4_nt2v5Ev");}
void  S2213C4_nt ::v6(){vfunc_called(this, "_ZN10S2213C4_nt2v6Ev");}
void  S2213C4_nt ::v7(){vfunc_called(this, "_ZN10S2213C4_nt2v7Ev");}
void  S2213C4_nt ::v8(){vfunc_called(this, "_ZN10S2213C4_nt2v8Ev");}
void  S2213C4_nt ::v9(){vfunc_called(this, "_ZN10S2213C4_nt2v9Ev");}
void  S2213C4_nt ::v10(){vfunc_called(this, "_ZN10S2213C4_nt3v10Ev");}
void  S2213C4_nt ::v11(){vfunc_called(this, "_ZN10S2213C4_nt3v11Ev");}
void  S2213C4_nt ::v12(){vfunc_called(this, "_ZN10S2213C4_nt3v12Ev");}
void  S2213C4_nt ::v13(){vfunc_called(this, "_ZN10S2213C4_nt3v13Ev");}
void  S2213C4_nt ::v14(){vfunc_called(this, "_ZN10S2213C4_nt3v14Ev");}
void  S2213C4_nt ::v15(){vfunc_called(this, "_ZN10S2213C4_nt3v15Ev");}
void  S2213C4_nt ::v16(){vfunc_called(this, "_ZN10S2213C4_nt3v16Ev");}
void  S2213C4_nt ::v17(){vfunc_called(this, "_ZN10S2213C4_nt3v17Ev");}
void  S2213C4_nt ::v18(){vfunc_called(this, "_ZN10S2213C4_nt3v18Ev");}
void  S2213C4_nt ::v19(){vfunc_called(this, "_ZN10S2213C4_nt3v19Ev");}
void  S2213C4_nt ::v20(){vfunc_called(this, "_ZN10S2213C4_nt3v20Ev");}
void  S2213C4_nt ::v21(){vfunc_called(this, "_ZN10S2213C4_nt3v21Ev");}
void  S2213C4_nt ::v22(){vfunc_called(this, "_ZN10S2213C4_nt3v22Ev");}
void  S2213C4_nt ::v23(){vfunc_called(this, "_ZN10S2213C4_nt3v23Ev");}
void  S2213C4_nt ::v24(){vfunc_called(this, "_ZN10S2213C4_nt3v24Ev");}
void  S2213C4_nt ::v25(){vfunc_called(this, "_ZN10S2213C4_nt3v25Ev");}
S2213C4_nt ::S2213C4_nt(){ note_ctor("S2213C4_nt", this);} // tgen

//skip512 S2213C4_nt

#else // __cplusplus

extern void _ZN10S2213C4_ntC1Ev();
extern void _ZN10S2213C4_ntD1Ev();
Name_Map name_map_S2213C4_nt[] = {
  NSPAIR(_ZN10S2213C4_ntC1Ev),
  NSPAIR(_ZN10S2213C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2213C4_nt[];
extern void _ZN10S2213C4_ntD1Ev();
extern void _ZN10S2213C4_ntD0Ev();
extern void _ZN10S2213C4_nt2v3Ev();
extern void _ZN10S2213C4_nt2v4Ev();
extern void _ZN10S2213C4_nt2v5Ev();
extern void _ZN10S2213C4_nt2v6Ev();
extern void _ZN10S2213C4_nt2v7Ev();
extern void _ZN10S2213C4_nt2v8Ev();
extern void _ZN10S2213C4_nt2v9Ev();
extern void _ZN10S2213C4_nt3v10Ev();
extern void _ZN10S2213C4_nt3v11Ev();
extern void _ZN10S2213C4_nt3v12Ev();
extern void _ZN10S2213C4_nt3v13Ev();
extern void _ZN10S2213C4_nt3v14Ev();
extern void _ZN10S2213C4_nt3v15Ev();
extern void _ZN10S2213C4_nt3v16Ev();
extern void _ZN10S2213C4_nt3v17Ev();
extern void _ZN10S2213C4_nt3v18Ev();
extern void _ZN10S2213C4_nt3v19Ev();
extern void _ZN10S2213C4_nt3v20Ev();
extern void _ZN10S2213C4_nt3v21Ev();
extern void _ZN10S2213C4_nt3v22Ev();
extern void _ZN10S2213C4_nt3v23Ev();
extern void _ZN10S2213C4_nt3v24Ev();
extern void _ZN10S2213C4_nt3v25Ev();
static  VTBL_ENTRY vtc_S2213C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2213C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2213C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v25Ev,
};
extern VTBL_ENTRY _ZTI10S2213C4_nt[];
VTBL_ENTRY *P__ZTI10S2213C4_nt = _ZTI10S2213C4_nt; 
extern  VTBL_ENTRY _ZTV10S2213C4_nt[];
Class_Descriptor cd_S2213C4_nt = {  "S2213C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2213C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI10S2213C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2213C4_nt),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C14_nt  {
  __tsi64 s2213c14f0[2];
  void  mf2213c14(); // _ZN11S2213C14_nt9mf2213c14Ev
};
//SIG(-1 S2213C14_nt) C1{ m FL[2]}


void  S2213C14_nt ::mf2213c14(){}

//skip512 S2213C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C13_nt  {
  ::S2213C14_nt s2213c13f0;
  void  mf2213c13(); // _ZN11S2213C13_nt9mf2213c13Ev
};
//SIG(-1 S2213C13_nt) C1{ m FC2{ m FL[2]}}


void  S2213C13_nt ::mf2213c13(){}

//skip512 S2213C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C17_nt  {
  ::S2213C13_nt s2213c17f0;
  void  mf2213c17(); // _ZN11S2213C17_nt9mf2213c17Ev
};
//SIG(-1 S2213C17_nt) C1{ m FC2{ m FC3{ m FL[2]}}}


void  S2213C17_nt ::mf2213c17(){}

//skip512 S2213C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C18_nt  {
  ::S2213C13_nt s2213c18f0;
  ::S2213C13_nt s2213c18f1;
  ::S2213C13_nt s2213c18f2;
  ::S2213C13_nt s2213c18f3;
  void  mf2213c18(); // _ZN11S2213C18_nt9mf2213c18Ev
};
//SIG(-1 S2213C18_nt) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2}


void  S2213C18_nt ::mf2213c18(){}

//skip512 S2213C18_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C20_nt  {
  void *s2213c20f0;
  int s2213c20f1;
  ::S2213C8_nt s2213c20f2;
  void  mf2213c20(); // _ZN11S2213C20_nt9mf2213c20Ev
};
//SIG(-1 S2213C20_nt) C1{ m Fp Fi FC2{ m}}


void  S2213C20_nt ::mf2213c20(){}

//skip512 S2213C20_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C19_nt  {
  ::S2213C20_nt s2213c19f0;
  int s2213c19f1;
  void  mf2213c19(); // _ZN11S2213C19_nt9mf2213c19Ev
};
//SIG(-1 S2213C19_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S2213C19_nt ::mf2213c19(){}

//skip512 S2213C19_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C23  {
  void  mf2213c23(); // _ZN8S2213C239mf2213c23Ev
};
//SIG(-1 S2213C23) C1{ m}


void  S2213C23 ::mf2213c23(){}

static void Test_S2213C23()
{
  {
    init_simple_test("S2213C23");
    S2213C23 lv;
    check2(sizeof(lv), 1, "sizeof(S2213C23)");
    check2(__alignof__(lv), 1, "__alignof__(S2213C23)");
  }
}
static Arrange_To_Call_Me vS2213C23(Test_S2213C23, "S2213C23", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C22  {
  void *s2213c22f0;
  int s2213c22f1;
  ::S2213C23 s2213c22f2;
  ::S2213C23 s2213c22f3;
  void  mf2213c22(); // _ZN8S2213C229mf2213c22Ev
};
//SIG(-1 S2213C22) C1{ m Fp Fi FC2{ m} FC2}


void  S2213C22 ::mf2213c22(){}

static void Test_S2213C22()
{
  {
    init_simple_test("S2213C22");
    S2213C22 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2213C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2213C22)");
    check_field_offset(lv, s2213c22f0, 0, "S2213C22.s2213c22f0");
    check_field_offset(lv, s2213c22f1, ABISELECT(8,4), "S2213C22.s2213c22f1");
    check_field_offset(lv, s2213c22f2, ABISELECT(12,8), "S2213C22.s2213c22f2");
    check_field_offset(lv, s2213c22f3, ABISELECT(13,9), "S2213C22.s2213c22f3");
  }
}
static Arrange_To_Call_Me vS2213C22(Test_S2213C22, "S2213C22", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C27  {
  void  mf2213c27(); // _ZN8S2213C279mf2213c27Ev
};
//SIG(-1 S2213C27) C1{ m}


void  S2213C27 ::mf2213c27(){}

static void Test_S2213C27()
{
  {
    init_simple_test("S2213C27");
    S2213C27 lv;
    check2(sizeof(lv), 1, "sizeof(S2213C27)");
    check2(__alignof__(lv), 1, "__alignof__(S2213C27)");
  }
}
static Arrange_To_Call_Me vS2213C27(Test_S2213C27, "S2213C27", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C26  {
  void *s2213c26f0;
  int s2213c26f1;
  ::S2213C27 s2213c26f2;
  ::S2213C27 s2213c26f3;
  void  mf2213c26(); // _ZN8S2213C269mf2213c26Ev
};
//SIG(-1 S2213C26) C1{ m Fp Fi FC2{ m} FC2}


void  S2213C26 ::mf2213c26(){}

static void Test_S2213C26()
{
  {
    init_simple_test("S2213C26");
    S2213C26 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2213C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2213C26)");
    check_field_offset(lv, s2213c26f0, 0, "S2213C26.s2213c26f0");
    check_field_offset(lv, s2213c26f1, ABISELECT(8,4), "S2213C26.s2213c26f1");
    check_field_offset(lv, s2213c26f2, ABISELECT(12,8), "S2213C26.s2213c26f2");
    check_field_offset(lv, s2213c26f3, ABISELECT(13,9), "S2213C26.s2213c26f3");
  }
}
static Arrange_To_Call_Me vS2213C26(Test_S2213C26, "S2213C26", ABISELECT(16,12));

#else // __cplusplus

Class_Descriptor cd_S2213C26 = {  "S2213C26", // 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  S2213C25  : S2213C26 {
};
//SIG(-1 S2213C25) C1{ BC2{ m Fp Fi FC3{ m} FC3}}



static void Test_S2213C25()
{
  extern Class_Descriptor cd_S2213C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2213C25, buf);
    S2213C25 &lv = *(new (buf) S2213C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2213C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2213C25)");
    check_base_class_offset(lv, (S2213C26*), 0, "S2213C25");
    test_class_info(&lv, &cd_S2213C25);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2213C25(Test_S2213C25, "S2213C25", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2213C30  {
  void  mf2213c30(); // _ZN8S2213C309mf2213c30Ev
};
//SIG(-1 S2213C30) C1{ m}


void  S2213C30 ::mf2213c30(){}

static void Test_S2213C30()
{
  {
    init_simple_test("S2213C30");
    S2213C30 lv;
    check2(sizeof(lv), 1, "sizeof(S2213C30)");
    check2(__alignof__(lv), 1, "__alignof__(S2213C30)");
  }
}
static Arrange_To_Call_Me vS2213C30(Test_S2213C30, "S2213C30", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S2213C30[];
VTBL_ENTRY *P__ZTI8S2213C30 = _ZTI8S2213C30; 
Class_Descriptor cd_S2213C30 = {  "S2213C30", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S2213C30),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  S2213C29_nt  {
  void *s2213c29f0;
  int s2213c29f1[2];
  ::S2213C30 s2213c29f2;
  void  mf2213c29(); // _ZN11S2213C29_nt9mf2213c29Ev
};
//SIG(-1 S2213C29_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S2213C29_nt ::mf2213c29(){}

//skip512 S2213C29_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C37  {
  void *s2213c37f0;
  int s2213c37f1[2];
  ::S2213C30 s2213c37f2;
  void  mf2213c37(); // _ZN8S2213C379mf2213c37Ev
};
//SIG(-1 S2213C37) C1{ m Fp Fi[2] FC2{ m}}


void  S2213C37 ::mf2213c37(){}

static void Test_S2213C37()
{
  {
    init_simple_test("S2213C37");
    S2213C37 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2213C37)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2213C37)");
    check_field_offset(lv, s2213c37f0, 0, "S2213C37.s2213c37f0");
    check_field_offset(lv, s2213c37f1, ABISELECT(8,4), "S2213C37.s2213c37f1");
    check_field_offset(lv, s2213c37f2, ABISELECT(16,12), "S2213C37.s2213c37f2");
  }
}
static Arrange_To_Call_Me vS2213C37(Test_S2213C37, "S2213C37", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C3_nt  : S2213C4_nt {
  ::S2213C13_nt s2213c3f0;
  ::S2213C13_nt s2213c3f1;
  ::S2213C13_nt s2213c3f2;
  ::S2213C13_nt s2213c3f3;
  ::S2213C17_nt s2213c3f4;
  ::S2213C18_nt s2213c3f5;
  ::S2213C18_nt s2213c3f6;
  ::S2213C13_nt s2213c3f7;
  ::S2213C13_nt s2213c3f8;
  ::S2213C13_nt s2213c3f9;
  void *s2213c3f10;
  ::S2213C17_nt s2213c3f11;
  ::S2213C19_nt s2213c3f12;
  int s2213c3f13;
  void *s2213c3f14[7];
  ::S2213C22 s2213c3f15;
  int s2213c3f16:8;
  int s2213c3f17:8;
  int s2213c3f18:16;
  int s2213c3f19:16;
  int s2213c3f20:8;
  int s2213c3f21:8;
  int s2213c3f22:8;
  int s2213c3f23:32;
  int s2213c3f24:8;
  int s2213c3f25:4;
  int s2213c3f26:4;
  int s2213c3f27:4;
  int s2213c3f28:4;
  int s2213c3f29:4;
  int s2213c3f30:4;
  int s2213c3f31:4;
  int s2213c3f32:4;
  int s2213c3f33:4;
  int s2213c3f34:4;
  unsigned char s2213c3f35:1;
  unsigned char s2213c3f36:1;
  unsigned char s2213c3f37:1;
  unsigned char s2213c3f38:1;
  unsigned char s2213c3f39:1;
  unsigned char s2213c3f40:1;
  unsigned char s2213c3f41:1;
  unsigned char s2213c3f42:1;
  unsigned char s2213c3f43:1;
  unsigned char s2213c3f44:1;
  unsigned char s2213c3f45:1;
  unsigned char s2213c3f46:1;
  unsigned char s2213c3f47:1;
  unsigned char s2213c3f48:1;
  unsigned char s2213c3f49:1;
  unsigned char s2213c3f50:1;
  unsigned char s2213c3f51:1;
  unsigned char s2213c3f52:1;
  unsigned char s2213c3f53:1;
  unsigned char s2213c3f54:1;
  unsigned char s2213c3f55:1;
  unsigned char s2213c3f56:1;
  unsigned char s2213c3f57:1;
  unsigned char s2213c3f58:1;
  unsigned char s2213c3f59:1;
  unsigned char s2213c3f60:1;
  unsigned char s2213c3f61:1;
  unsigned char s2213c3f62:1;
  unsigned char s2213c3f63:1;
  unsigned char s2213c3f64:1;
  unsigned char s2213c3f65:1;
  unsigned char s2213c3f66:1;
  unsigned char s2213c3f67:1;
  unsigned char s2213c3f68:1;
  unsigned char s2213c3f69:1;
  unsigned char s2213c3f70:1;
  unsigned char s2213c3f71:1;
  unsigned char s2213c3f72:1;
  unsigned char s2213c3f73:1;
  unsigned char s2213c3f74:1;
  unsigned char s2213c3f75:1;
  int s2213c3f76[7];
  void *s2213c3f77[6];
  int s2213c3f78:8;
  int s2213c3f79:8;
  int s2213c3f80:8;
  int s2213c3f81:8;
  int s2213c3f82:8;
  int s2213c3f83:8;
  ::S2213C25 s2213c3f84;
  void *s2213c3f85[4];
  int s2213c3f86:8;
  int s2213c3f87:8;
  int s2213c3f88:8;
  int s2213c3f89:8;
  int s2213c3f90:8;
  int s2213c3f91:16;
  int s2213c3f92:16;
  int s2213c3f93:16;
  int s2213c3f94:4;
  int s2213c3f95:4;
  int s2213c3f96:4;
  int s2213c3f97:4;
  int s2213c3f98:4;
  int s2213c3f99:4;
  int s2213c3f100:4;
  int s2213c3f101:4;
  int s2213c3f102:4;
  int s2213c3f103:4;
  int s2213c3f104:4;
  int s2213c3f105:4;
  int s2213c3f106:8;
  int s2213c3f107:8;
  int s2213c3f108:8;
  void *s2213c3f109[7];
  ::S2213C29_nt s2213c3f110;
  void *s2213c3f111[2];
  int s2213c3f112:16;
  int s2213c3f113:16;
  ::S2213C25 s2213c3f114;
  ::S2213C29_nt s2213c3f115;
  ::S2213C37 s2213c3f116;
  void *s2213c3f117[2];
  int s2213c3f118:24;
  int s2213c3f119:8;
  void *s2213c3f120;
  virtual  ~S2213C3_nt(); // _ZN10S2213C3_ntD1Ev
  virtual void  v26(); // _ZN10S2213C3_nt3v26Ev
  virtual void  v27(); // _ZN10S2213C3_nt3v27Ev
  virtual void  v28(); // _ZN10S2213C3_nt3v28Ev
  virtual void  v29(); // _ZN10S2213C3_nt3v29Ev
  virtual void  v30(); // _ZN10S2213C3_nt3v30Ev
  virtual void  v31(); // _ZN10S2213C3_nt3v31Ev
  virtual void  v32(); // _ZN10S2213C3_nt3v32Ev
  virtual void  v33(); // _ZN10S2213C3_nt3v33Ev
  virtual void  v34(); // _ZN10S2213C3_nt3v34Ev
  virtual void  v35(); // _ZN10S2213C3_nt3v35Ev
  virtual void  v36(); // _ZN10S2213C3_nt3v36Ev
  virtual void  v37(); // _ZN10S2213C3_nt3v37Ev
  virtual void  v38(); // _ZN10S2213C3_nt3v38Ev
  virtual void  v39(); // _ZN10S2213C3_nt3v39Ev
  virtual void  v40(); // _ZN10S2213C3_nt3v40Ev
  virtual void  v41(); // _ZN10S2213C3_nt3v41Ev
  virtual void  v42(); // _ZN10S2213C3_nt3v42Ev
  virtual void  v43(); // _ZN10S2213C3_nt3v43Ev
  virtual void  v44(); // _ZN10S2213C3_nt3v44Ev
  virtual void  v45(); // _ZN10S2213C3_nt3v45Ev
  virtual void  v46(); // _ZN10S2213C3_nt3v46Ev
  virtual void  v47(); // _ZN10S2213C3_nt3v47Ev
  virtual void  v48(); // _ZN10S2213C3_nt3v48Ev
  virtual void  v49(); // _ZN10S2213C3_nt3v49Ev
  virtual void  v50(); // _ZN10S2213C3_nt3v50Ev
  virtual void  v51(); // _ZN10S2213C3_nt3v51Ev
  virtual void  v52(); // _ZN10S2213C3_nt3v52Ev
  virtual void  v53(); // _ZN10S2213C3_nt3v53Ev
  virtual void  v54(); // _ZN10S2213C3_nt3v54Ev
  virtual void  v55(); // _ZN10S2213C3_nt3v55Ev
  virtual void  v56(); // _ZN10S2213C3_nt3v56Ev
  virtual void  v57(); // _ZN10S2213C3_nt3v57Ev
  virtual void  v58(); // _ZN10S2213C3_nt3v58Ev
  virtual void  v59(); // _ZN10S2213C3_nt3v59Ev
  virtual void  v60(); // _ZN10S2213C3_nt3v60Ev
  virtual void  v61(); // _ZN10S2213C3_nt3v61Ev
  virtual void  v62(); // _ZN10S2213C3_nt3v62Ev
  virtual void  v63(); // _ZN10S2213C3_nt3v63Ev
  virtual void  v64(); // _ZN10S2213C3_nt3v64Ev
  virtual void  v65(); // _ZN10S2213C3_nt3v65Ev
  virtual void  v66(); // _ZN10S2213C3_nt3v66Ev
  virtual void  v67(); // _ZN10S2213C3_nt3v67Ev
  virtual void  v68(); // _ZN10S2213C3_nt3v68Ev
  virtual void  v69(); // _ZN10S2213C3_nt3v69Ev
  virtual void  v70(); // _ZN10S2213C3_nt3v70Ev
  virtual void  v71(); // _ZN10S2213C3_nt3v71Ev
  virtual void  v72(); // _ZN10S2213C3_nt3v72Ev
  virtual void  v73(); // _ZN10S2213C3_nt3v73Ev
  virtual void  v74(); // _ZN10S2213C3_nt3v74Ev
  virtual void  v75(); // _ZN10S2213C3_nt3v75Ev
  virtual void  v76(); // _ZN10S2213C3_nt3v76Ev
  virtual void  v77(); // _ZN10S2213C3_nt3v77Ev
  virtual void  v78(); // _ZN10S2213C3_nt3v78Ev
  virtual void  v79(); // _ZN10S2213C3_nt3v79Ev
  virtual void  v80(); // _ZN10S2213C3_nt3v80Ev
  virtual void  v81(); // _ZN10S2213C3_nt3v81Ev
  virtual void  v82(); // _ZN10S2213C3_nt3v82Ev
  virtual void  v83(); // _ZN10S2213C3_nt3v83Ev
  virtual void  v84(); // _ZN10S2213C3_nt3v84Ev
  virtual void  v85(); // _ZN10S2213C3_nt3v85Ev
  virtual void  v86(); // _ZN10S2213C3_nt3v86Ev
  virtual void  v87(); // _ZN10S2213C3_nt3v87Ev
  virtual void  v88(); // _ZN10S2213C3_nt3v88Ev
  virtual void  v89(); // _ZN10S2213C3_nt3v89Ev
  virtual void  v90(); // _ZN10S2213C3_nt3v90Ev
  virtual void  v91(); // _ZN10S2213C3_nt3v91Ev
  virtual void  v92(); // _ZN10S2213C3_nt3v92Ev
  virtual void  v93(); // _ZN10S2213C3_nt3v93Ev
  virtual void  v94(); // _ZN10S2213C3_nt3v94Ev
  virtual void  v95(); // _ZN10S2213C3_nt3v95Ev
  virtual void  v96(); // _ZN10S2213C3_nt3v96Ev
  virtual void  v97(); // _ZN10S2213C3_nt3v97Ev
  virtual void  v98(); // _ZN10S2213C3_nt3v98Ev
  virtual void  v99(); // _ZN10S2213C3_nt3v99Ev
  virtual void  v100(); // _ZN10S2213C3_nt4v100Ev
  virtual void  v101(); // _ZN10S2213C3_nt4v101Ev
  virtual void  v102(); // _ZN10S2213C3_nt4v102Ev
  virtual void  v103(); // _ZN10S2213C3_nt4v103Ev
  S2213C3_nt(); // tgen
};
//SIG(-1 S2213C3_nt) C1{ BC2{ vd v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 Fp Fi FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}} FC3 Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 FC7{ m FC8{ m FL[2]}} FC7 FC7 FC7 FC9{ m FC7} FC10{ m FC7 FC7 FC7 FC7} FC10 FC7 FC7 FC7 Fp FC9 FC11{ m FC12{ m Fp Fi FC6} Fi} Fi Fp[7] FC13{ m Fp Fi FC14{ m} FC14} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC15{ BC16{ m Fp Fi FC17{ m} FC17}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC18{ m Fp Fi[2] FC19{ m}} Fp[2] Fi:16 Fi:16 FC15 FC18 FC20{ m Fp Fi[2] FC19} Fp[2] Fi:24 Fi:8 Fp}


 S2213C3_nt ::~S2213C3_nt(){ note_dtor("S2213C3_nt", this);}
void  S2213C3_nt ::v26(){vfunc_called(this, "_ZN10S2213C3_nt3v26Ev");}
void  S2213C3_nt ::v27(){vfunc_called(this, "_ZN10S2213C3_nt3v27Ev");}
void  S2213C3_nt ::v28(){vfunc_called(this, "_ZN10S2213C3_nt3v28Ev");}
void  S2213C3_nt ::v29(){vfunc_called(this, "_ZN10S2213C3_nt3v29Ev");}
void  S2213C3_nt ::v30(){vfunc_called(this, "_ZN10S2213C3_nt3v30Ev");}
void  S2213C3_nt ::v31(){vfunc_called(this, "_ZN10S2213C3_nt3v31Ev");}
void  S2213C3_nt ::v32(){vfunc_called(this, "_ZN10S2213C3_nt3v32Ev");}
void  S2213C3_nt ::v33(){vfunc_called(this, "_ZN10S2213C3_nt3v33Ev");}
void  S2213C3_nt ::v34(){vfunc_called(this, "_ZN10S2213C3_nt3v34Ev");}
void  S2213C3_nt ::v35(){vfunc_called(this, "_ZN10S2213C3_nt3v35Ev");}
void  S2213C3_nt ::v36(){vfunc_called(this, "_ZN10S2213C3_nt3v36Ev");}
void  S2213C3_nt ::v37(){vfunc_called(this, "_ZN10S2213C3_nt3v37Ev");}
void  S2213C3_nt ::v38(){vfunc_called(this, "_ZN10S2213C3_nt3v38Ev");}
void  S2213C3_nt ::v39(){vfunc_called(this, "_ZN10S2213C3_nt3v39Ev");}
void  S2213C3_nt ::v40(){vfunc_called(this, "_ZN10S2213C3_nt3v40Ev");}
void  S2213C3_nt ::v41(){vfunc_called(this, "_ZN10S2213C3_nt3v41Ev");}
void  S2213C3_nt ::v42(){vfunc_called(this, "_ZN10S2213C3_nt3v42Ev");}
void  S2213C3_nt ::v43(){vfunc_called(this, "_ZN10S2213C3_nt3v43Ev");}
void  S2213C3_nt ::v44(){vfunc_called(this, "_ZN10S2213C3_nt3v44Ev");}
void  S2213C3_nt ::v45(){vfunc_called(this, "_ZN10S2213C3_nt3v45Ev");}
void  S2213C3_nt ::v46(){vfunc_called(this, "_ZN10S2213C3_nt3v46Ev");}
void  S2213C3_nt ::v47(){vfunc_called(this, "_ZN10S2213C3_nt3v47Ev");}
void  S2213C3_nt ::v48(){vfunc_called(this, "_ZN10S2213C3_nt3v48Ev");}
void  S2213C3_nt ::v49(){vfunc_called(this, "_ZN10S2213C3_nt3v49Ev");}
void  S2213C3_nt ::v50(){vfunc_called(this, "_ZN10S2213C3_nt3v50Ev");}
void  S2213C3_nt ::v51(){vfunc_called(this, "_ZN10S2213C3_nt3v51Ev");}
void  S2213C3_nt ::v52(){vfunc_called(this, "_ZN10S2213C3_nt3v52Ev");}
void  S2213C3_nt ::v53(){vfunc_called(this, "_ZN10S2213C3_nt3v53Ev");}
void  S2213C3_nt ::v54(){vfunc_called(this, "_ZN10S2213C3_nt3v54Ev");}
void  S2213C3_nt ::v55(){vfunc_called(this, "_ZN10S2213C3_nt3v55Ev");}
void  S2213C3_nt ::v56(){vfunc_called(this, "_ZN10S2213C3_nt3v56Ev");}
void  S2213C3_nt ::v57(){vfunc_called(this, "_ZN10S2213C3_nt3v57Ev");}
void  S2213C3_nt ::v58(){vfunc_called(this, "_ZN10S2213C3_nt3v58Ev");}
void  S2213C3_nt ::v59(){vfunc_called(this, "_ZN10S2213C3_nt3v59Ev");}
void  S2213C3_nt ::v60(){vfunc_called(this, "_ZN10S2213C3_nt3v60Ev");}
void  S2213C3_nt ::v61(){vfunc_called(this, "_ZN10S2213C3_nt3v61Ev");}
void  S2213C3_nt ::v62(){vfunc_called(this, "_ZN10S2213C3_nt3v62Ev");}
void  S2213C3_nt ::v63(){vfunc_called(this, "_ZN10S2213C3_nt3v63Ev");}
void  S2213C3_nt ::v64(){vfunc_called(this, "_ZN10S2213C3_nt3v64Ev");}
void  S2213C3_nt ::v65(){vfunc_called(this, "_ZN10S2213C3_nt3v65Ev");}
void  S2213C3_nt ::v66(){vfunc_called(this, "_ZN10S2213C3_nt3v66Ev");}
void  S2213C3_nt ::v67(){vfunc_called(this, "_ZN10S2213C3_nt3v67Ev");}
void  S2213C3_nt ::v68(){vfunc_called(this, "_ZN10S2213C3_nt3v68Ev");}
void  S2213C3_nt ::v69(){vfunc_called(this, "_ZN10S2213C3_nt3v69Ev");}
void  S2213C3_nt ::v70(){vfunc_called(this, "_ZN10S2213C3_nt3v70Ev");}
void  S2213C3_nt ::v71(){vfunc_called(this, "_ZN10S2213C3_nt3v71Ev");}
void  S2213C3_nt ::v72(){vfunc_called(this, "_ZN10S2213C3_nt3v72Ev");}
void  S2213C3_nt ::v73(){vfunc_called(this, "_ZN10S2213C3_nt3v73Ev");}
void  S2213C3_nt ::v74(){vfunc_called(this, "_ZN10S2213C3_nt3v74Ev");}
void  S2213C3_nt ::v75(){vfunc_called(this, "_ZN10S2213C3_nt3v75Ev");}
void  S2213C3_nt ::v76(){vfunc_called(this, "_ZN10S2213C3_nt3v76Ev");}
void  S2213C3_nt ::v77(){vfunc_called(this, "_ZN10S2213C3_nt3v77Ev");}
void  S2213C3_nt ::v78(){vfunc_called(this, "_ZN10S2213C3_nt3v78Ev");}
void  S2213C3_nt ::v79(){vfunc_called(this, "_ZN10S2213C3_nt3v79Ev");}
void  S2213C3_nt ::v80(){vfunc_called(this, "_ZN10S2213C3_nt3v80Ev");}
void  S2213C3_nt ::v81(){vfunc_called(this, "_ZN10S2213C3_nt3v81Ev");}
void  S2213C3_nt ::v82(){vfunc_called(this, "_ZN10S2213C3_nt3v82Ev");}
void  S2213C3_nt ::v83(){vfunc_called(this, "_ZN10S2213C3_nt3v83Ev");}
void  S2213C3_nt ::v84(){vfunc_called(this, "_ZN10S2213C3_nt3v84Ev");}
void  S2213C3_nt ::v85(){vfunc_called(this, "_ZN10S2213C3_nt3v85Ev");}
void  S2213C3_nt ::v86(){vfunc_called(this, "_ZN10S2213C3_nt3v86Ev");}
void  S2213C3_nt ::v87(){vfunc_called(this, "_ZN10S2213C3_nt3v87Ev");}
void  S2213C3_nt ::v88(){vfunc_called(this, "_ZN10S2213C3_nt3v88Ev");}
void  S2213C3_nt ::v89(){vfunc_called(this, "_ZN10S2213C3_nt3v89Ev");}
void  S2213C3_nt ::v90(){vfunc_called(this, "_ZN10S2213C3_nt3v90Ev");}
void  S2213C3_nt ::v91(){vfunc_called(this, "_ZN10S2213C3_nt3v91Ev");}
void  S2213C3_nt ::v92(){vfunc_called(this, "_ZN10S2213C3_nt3v92Ev");}
void  S2213C3_nt ::v93(){vfunc_called(this, "_ZN10S2213C3_nt3v93Ev");}
void  S2213C3_nt ::v94(){vfunc_called(this, "_ZN10S2213C3_nt3v94Ev");}
void  S2213C3_nt ::v95(){vfunc_called(this, "_ZN10S2213C3_nt3v95Ev");}
void  S2213C3_nt ::v96(){vfunc_called(this, "_ZN10S2213C3_nt3v96Ev");}
void  S2213C3_nt ::v97(){vfunc_called(this, "_ZN10S2213C3_nt3v97Ev");}
void  S2213C3_nt ::v98(){vfunc_called(this, "_ZN10S2213C3_nt3v98Ev");}
void  S2213C3_nt ::v99(){vfunc_called(this, "_ZN10S2213C3_nt3v99Ev");}
void  S2213C3_nt ::v100(){vfunc_called(this, "_ZN10S2213C3_nt4v100Ev");}
void  S2213C3_nt ::v101(){vfunc_called(this, "_ZN10S2213C3_nt4v101Ev");}
void  S2213C3_nt ::v102(){vfunc_called(this, "_ZN10S2213C3_nt4v102Ev");}
void  S2213C3_nt ::v103(){vfunc_called(this, "_ZN10S2213C3_nt4v103Ev");}
S2213C3_nt ::S2213C3_nt(){ note_ctor("S2213C3_nt", this);} // tgen

//skip512 S2213C3_nt

#else // __cplusplus

extern void _ZN10S2213C3_ntC1Ev();
extern void _ZN10S2213C3_ntD1Ev();
Name_Map name_map_S2213C3_nt[] = {
  NSPAIR(_ZN10S2213C3_ntC1Ev),
  NSPAIR(_ZN10S2213C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2213C4_nt;
extern VTBL_ENTRY _ZTI10S2213C4_nt[];
extern  VTBL_ENTRY _ZTV10S2213C4_nt[];
static Base_Class bases_S2213C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2213C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2213C3_nt[];
extern void _ZN10S2213C3_ntD1Ev();
extern void _ZN10S2213C3_ntD0Ev();
extern void _ZN10S2213C4_nt2v3Ev();
extern void _ZN10S2213C4_nt2v4Ev();
extern void _ZN10S2213C4_nt2v5Ev();
extern void _ZN10S2213C4_nt2v6Ev();
extern void _ZN10S2213C4_nt2v7Ev();
extern void _ZN10S2213C4_nt2v8Ev();
extern void _ZN10S2213C4_nt2v9Ev();
extern void _ZN10S2213C4_nt3v10Ev();
extern void _ZN10S2213C4_nt3v11Ev();
extern void _ZN10S2213C4_nt3v12Ev();
extern void _ZN10S2213C4_nt3v13Ev();
extern void _ZN10S2213C4_nt3v14Ev();
extern void _ZN10S2213C4_nt3v15Ev();
extern void _ZN10S2213C4_nt3v16Ev();
extern void _ZN10S2213C4_nt3v17Ev();
extern void _ZN10S2213C4_nt3v18Ev();
extern void _ZN10S2213C4_nt3v19Ev();
extern void _ZN10S2213C4_nt3v20Ev();
extern void _ZN10S2213C4_nt3v21Ev();
extern void _ZN10S2213C4_nt3v22Ev();
extern void _ZN10S2213C4_nt3v23Ev();
extern void _ZN10S2213C4_nt3v24Ev();
extern void _ZN10S2213C4_nt3v25Ev();
extern void _ZN10S2213C3_nt3v26Ev();
extern void _ZN10S2213C3_nt3v27Ev();
extern void _ZN10S2213C3_nt3v28Ev();
extern void _ZN10S2213C3_nt3v29Ev();
extern void _ZN10S2213C3_nt3v30Ev();
extern void _ZN10S2213C3_nt3v31Ev();
extern void _ZN10S2213C3_nt3v32Ev();
extern void _ZN10S2213C3_nt3v33Ev();
extern void _ZN10S2213C3_nt3v34Ev();
extern void _ZN10S2213C3_nt3v35Ev();
extern void _ZN10S2213C3_nt3v36Ev();
extern void _ZN10S2213C3_nt3v37Ev();
extern void _ZN10S2213C3_nt3v38Ev();
extern void _ZN10S2213C3_nt3v39Ev();
extern void _ZN10S2213C3_nt3v40Ev();
extern void _ZN10S2213C3_nt3v41Ev();
extern void _ZN10S2213C3_nt3v42Ev();
extern void _ZN10S2213C3_nt3v43Ev();
extern void _ZN10S2213C3_nt3v44Ev();
extern void _ZN10S2213C3_nt3v45Ev();
extern void _ZN10S2213C3_nt3v46Ev();
extern void _ZN10S2213C3_nt3v47Ev();
extern void _ZN10S2213C3_nt3v48Ev();
extern void _ZN10S2213C3_nt3v49Ev();
extern void _ZN10S2213C3_nt3v50Ev();
extern void _ZN10S2213C3_nt3v51Ev();
extern void _ZN10S2213C3_nt3v52Ev();
extern void _ZN10S2213C3_nt3v53Ev();
extern void _ZN10S2213C3_nt3v54Ev();
extern void _ZN10S2213C3_nt3v55Ev();
extern void _ZN10S2213C3_nt3v56Ev();
extern void _ZN10S2213C3_nt3v57Ev();
extern void _ZN10S2213C3_nt3v58Ev();
extern void _ZN10S2213C3_nt3v59Ev();
extern void _ZN10S2213C3_nt3v60Ev();
extern void _ZN10S2213C3_nt3v61Ev();
extern void _ZN10S2213C3_nt3v62Ev();
extern void _ZN10S2213C3_nt3v63Ev();
extern void _ZN10S2213C3_nt3v64Ev();
extern void _ZN10S2213C3_nt3v65Ev();
extern void _ZN10S2213C3_nt3v66Ev();
extern void _ZN10S2213C3_nt3v67Ev();
extern void _ZN10S2213C3_nt3v68Ev();
extern void _ZN10S2213C3_nt3v69Ev();
extern void _ZN10S2213C3_nt3v70Ev();
extern void _ZN10S2213C3_nt3v71Ev();
extern void _ZN10S2213C3_nt3v72Ev();
extern void _ZN10S2213C3_nt3v73Ev();
extern void _ZN10S2213C3_nt3v74Ev();
extern void _ZN10S2213C3_nt3v75Ev();
extern void _ZN10S2213C3_nt3v76Ev();
extern void _ZN10S2213C3_nt3v77Ev();
extern void _ZN10S2213C3_nt3v78Ev();
extern void _ZN10S2213C3_nt3v79Ev();
extern void _ZN10S2213C3_nt3v80Ev();
extern void _ZN10S2213C3_nt3v81Ev();
extern void _ZN10S2213C3_nt3v82Ev();
extern void _ZN10S2213C3_nt3v83Ev();
extern void _ZN10S2213C3_nt3v84Ev();
extern void _ZN10S2213C3_nt3v85Ev();
extern void _ZN10S2213C3_nt3v86Ev();
extern void _ZN10S2213C3_nt3v87Ev();
extern void _ZN10S2213C3_nt3v88Ev();
extern void _ZN10S2213C3_nt3v89Ev();
extern void _ZN10S2213C3_nt3v90Ev();
extern void _ZN10S2213C3_nt3v91Ev();
extern void _ZN10S2213C3_nt3v92Ev();
extern void _ZN10S2213C3_nt3v93Ev();
extern void _ZN10S2213C3_nt3v94Ev();
extern void _ZN10S2213C3_nt3v95Ev();
extern void _ZN10S2213C3_nt3v96Ev();
extern void _ZN10S2213C3_nt3v97Ev();
extern void _ZN10S2213C3_nt3v98Ev();
extern void _ZN10S2213C3_nt3v99Ev();
extern void _ZN10S2213C3_nt4v100Ev();
extern void _ZN10S2213C3_nt4v101Ev();
extern void _ZN10S2213C3_nt4v102Ev();
extern void _ZN10S2213C3_nt4v103Ev();
static  VTBL_ENTRY vtc_S2213C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2213C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S2213C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v103Ev,
};
extern VTBL_ENTRY _ZTI10S2213C3_nt[];
VTBL_ENTRY *P__ZTI10S2213C3_nt = _ZTI10S2213C3_nt; 
extern  VTBL_ENTRY _ZTV10S2213C3_nt[];
Class_Descriptor cd_S2213C3_nt = {  "S2213C3_nt", // class name
  bases_S2213C3_nt, 1,
  &(vtc_S2213C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,632), // object size
  NSPAIRA(_ZTI10S2213C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2213C3_nt),105, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C2_nt  : S2213C3_nt {
  void *s2213c2f0;
  virtual  ~S2213C2_nt(); // _ZN10S2213C2_ntD1Ev
  virtual void  v104(); // _ZN10S2213C2_nt4v104Ev
  virtual void  v105(); // _ZN10S2213C2_nt4v105Ev
  virtual void  v106(); // _ZN10S2213C2_nt4v106Ev
  virtual void  v107(); // _ZN10S2213C2_nt4v107Ev
  virtual void  v108(); // _ZN10S2213C2_nt4v108Ev
  virtual void  v109(); // _ZN10S2213C2_nt4v109Ev
  virtual void  v110(); // _ZN10S2213C2_nt4v110Ev
  virtual void  v111(); // _ZN10S2213C2_nt4v111Ev
  virtual void  v112(); // _ZN10S2213C2_nt4v112Ev
  virtual void  v113(); // _ZN10S2213C2_nt4v113Ev
  S2213C2_nt(); // tgen
};
//SIG(-1 S2213C2_nt) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp Fi FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}} FC4 Fi} vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 FC8{ m FC9{ m FL[2]}} FC8 FC8 FC8 FC10{ m FC8} FC11{ m FC8 FC8 FC8 FC8} FC11 FC8 FC8 FC8 Fp FC10 FC12{ m FC13{ m Fp Fi FC7} Fi} Fi Fp[7] FC14{ m Fp Fi FC15{ m} FC15} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC16{ BC17{ m Fp Fi FC18{ m} FC18}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC19{ m Fp Fi[2] FC20{ m}} Fp[2] Fi:16 Fi:16 FC16 FC19 FC21{ m Fp Fi[2] FC20} Fp[2] Fi:24 Fi:8 Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp}


 S2213C2_nt ::~S2213C2_nt(){ note_dtor("S2213C2_nt", this);}
void  S2213C2_nt ::v104(){vfunc_called(this, "_ZN10S2213C2_nt4v104Ev");}
void  S2213C2_nt ::v105(){vfunc_called(this, "_ZN10S2213C2_nt4v105Ev");}
void  S2213C2_nt ::v106(){vfunc_called(this, "_ZN10S2213C2_nt4v106Ev");}
void  S2213C2_nt ::v107(){vfunc_called(this, "_ZN10S2213C2_nt4v107Ev");}
void  S2213C2_nt ::v108(){vfunc_called(this, "_ZN10S2213C2_nt4v108Ev");}
void  S2213C2_nt ::v109(){vfunc_called(this, "_ZN10S2213C2_nt4v109Ev");}
void  S2213C2_nt ::v110(){vfunc_called(this, "_ZN10S2213C2_nt4v110Ev");}
void  S2213C2_nt ::v111(){vfunc_called(this, "_ZN10S2213C2_nt4v111Ev");}
void  S2213C2_nt ::v112(){vfunc_called(this, "_ZN10S2213C2_nt4v112Ev");}
void  S2213C2_nt ::v113(){vfunc_called(this, "_ZN10S2213C2_nt4v113Ev");}
S2213C2_nt ::S2213C2_nt(){ note_ctor("S2213C2_nt", this);} // tgen

//skip512 S2213C2_nt

#else // __cplusplus

extern void _ZN10S2213C2_ntC1Ev();
extern void _ZN10S2213C2_ntD1Ev();
Name_Map name_map_S2213C2_nt[] = {
  NSPAIR(_ZN10S2213C2_ntC1Ev),
  NSPAIR(_ZN10S2213C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2213C4_nt;
extern VTBL_ENTRY _ZTI10S2213C4_nt[];
extern  VTBL_ENTRY _ZTV10S2213C4_nt[];
extern Class_Descriptor cd_S2213C3_nt;
extern VTBL_ENTRY _ZTI10S2213C3_nt[];
extern  VTBL_ENTRY _ZTV10S2213C3_nt[];
static Base_Class bases_S2213C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2213C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2213C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S2213C2_nt[];
extern void _ZN10S2213C2_ntD1Ev();
extern void _ZN10S2213C2_ntD0Ev();
extern void _ZN10S2213C4_nt2v3Ev();
extern void _ZN10S2213C4_nt2v4Ev();
extern void _ZN10S2213C4_nt2v5Ev();
extern void _ZN10S2213C4_nt2v6Ev();
extern void _ZN10S2213C4_nt2v7Ev();
extern void _ZN10S2213C4_nt2v8Ev();
extern void _ZN10S2213C4_nt2v9Ev();
extern void _ZN10S2213C4_nt3v10Ev();
extern void _ZN10S2213C4_nt3v11Ev();
extern void _ZN10S2213C4_nt3v12Ev();
extern void _ZN10S2213C4_nt3v13Ev();
extern void _ZN10S2213C4_nt3v14Ev();
extern void _ZN10S2213C4_nt3v15Ev();
extern void _ZN10S2213C4_nt3v16Ev();
extern void _ZN10S2213C4_nt3v17Ev();
extern void _ZN10S2213C4_nt3v18Ev();
extern void _ZN10S2213C4_nt3v19Ev();
extern void _ZN10S2213C4_nt3v20Ev();
extern void _ZN10S2213C4_nt3v21Ev();
extern void _ZN10S2213C4_nt3v22Ev();
extern void _ZN10S2213C4_nt3v23Ev();
extern void _ZN10S2213C4_nt3v24Ev();
extern void _ZN10S2213C4_nt3v25Ev();
extern void _ZN10S2213C3_nt3v26Ev();
extern void _ZN10S2213C3_nt3v27Ev();
extern void _ZN10S2213C3_nt3v28Ev();
extern void _ZN10S2213C3_nt3v29Ev();
extern void _ZN10S2213C3_nt3v30Ev();
extern void _ZN10S2213C3_nt3v31Ev();
extern void _ZN10S2213C3_nt3v32Ev();
extern void _ZN10S2213C3_nt3v33Ev();
extern void _ZN10S2213C3_nt3v34Ev();
extern void _ZN10S2213C3_nt3v35Ev();
extern void _ZN10S2213C3_nt3v36Ev();
extern void _ZN10S2213C3_nt3v37Ev();
extern void _ZN10S2213C3_nt3v38Ev();
extern void _ZN10S2213C3_nt3v39Ev();
extern void _ZN10S2213C3_nt3v40Ev();
extern void _ZN10S2213C3_nt3v41Ev();
extern void _ZN10S2213C3_nt3v42Ev();
extern void _ZN10S2213C3_nt3v43Ev();
extern void _ZN10S2213C3_nt3v44Ev();
extern void _ZN10S2213C3_nt3v45Ev();
extern void _ZN10S2213C3_nt3v46Ev();
extern void _ZN10S2213C3_nt3v47Ev();
extern void _ZN10S2213C3_nt3v48Ev();
extern void _ZN10S2213C3_nt3v49Ev();
extern void _ZN10S2213C3_nt3v50Ev();
extern void _ZN10S2213C3_nt3v51Ev();
extern void _ZN10S2213C3_nt3v52Ev();
extern void _ZN10S2213C3_nt3v53Ev();
extern void _ZN10S2213C3_nt3v54Ev();
extern void _ZN10S2213C3_nt3v55Ev();
extern void _ZN10S2213C3_nt3v56Ev();
extern void _ZN10S2213C3_nt3v57Ev();
extern void _ZN10S2213C3_nt3v58Ev();
extern void _ZN10S2213C3_nt3v59Ev();
extern void _ZN10S2213C3_nt3v60Ev();
extern void _ZN10S2213C3_nt3v61Ev();
extern void _ZN10S2213C3_nt3v62Ev();
extern void _ZN10S2213C3_nt3v63Ev();
extern void _ZN10S2213C3_nt3v64Ev();
extern void _ZN10S2213C3_nt3v65Ev();
extern void _ZN10S2213C3_nt3v66Ev();
extern void _ZN10S2213C3_nt3v67Ev();
extern void _ZN10S2213C3_nt3v68Ev();
extern void _ZN10S2213C3_nt3v69Ev();
extern void _ZN10S2213C3_nt3v70Ev();
extern void _ZN10S2213C3_nt3v71Ev();
extern void _ZN10S2213C3_nt3v72Ev();
extern void _ZN10S2213C3_nt3v73Ev();
extern void _ZN10S2213C3_nt3v74Ev();
extern void _ZN10S2213C3_nt3v75Ev();
extern void _ZN10S2213C3_nt3v76Ev();
extern void _ZN10S2213C3_nt3v77Ev();
extern void _ZN10S2213C3_nt3v78Ev();
extern void _ZN10S2213C3_nt3v79Ev();
extern void _ZN10S2213C3_nt3v80Ev();
extern void _ZN10S2213C3_nt3v81Ev();
extern void _ZN10S2213C3_nt3v82Ev();
extern void _ZN10S2213C3_nt3v83Ev();
extern void _ZN10S2213C3_nt3v84Ev();
extern void _ZN10S2213C3_nt3v85Ev();
extern void _ZN10S2213C3_nt3v86Ev();
extern void _ZN10S2213C3_nt3v87Ev();
extern void _ZN10S2213C3_nt3v88Ev();
extern void _ZN10S2213C3_nt3v89Ev();
extern void _ZN10S2213C3_nt3v90Ev();
extern void _ZN10S2213C3_nt3v91Ev();
extern void _ZN10S2213C3_nt3v92Ev();
extern void _ZN10S2213C3_nt3v93Ev();
extern void _ZN10S2213C3_nt3v94Ev();
extern void _ZN10S2213C3_nt3v95Ev();
extern void _ZN10S2213C3_nt3v96Ev();
extern void _ZN10S2213C3_nt3v97Ev();
extern void _ZN10S2213C3_nt3v98Ev();
extern void _ZN10S2213C3_nt3v99Ev();
extern void _ZN10S2213C3_nt4v100Ev();
extern void _ZN10S2213C3_nt4v101Ev();
extern void _ZN10S2213C3_nt4v102Ev();
extern void _ZN10S2213C3_nt4v103Ev();
extern void _ZN10S2213C2_nt4v104Ev();
extern void _ZN10S2213C2_nt4v105Ev();
extern void _ZN10S2213C2_nt4v106Ev();
extern void _ZN10S2213C2_nt4v107Ev();
extern void _ZN10S2213C2_nt4v108Ev();
extern void _ZN10S2213C2_nt4v109Ev();
extern void _ZN10S2213C2_nt4v110Ev();
extern void _ZN10S2213C2_nt4v111Ev();
extern void _ZN10S2213C2_nt4v112Ev();
extern void _ZN10S2213C2_nt4v113Ev();
static  VTBL_ENTRY vtc_S2213C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2213C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S2213C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI10S2213C2_nt[];
VTBL_ENTRY *P__ZTI10S2213C2_nt = _ZTI10S2213C2_nt; 
extern  VTBL_ENTRY _ZTV10S2213C2_nt[];
Class_Descriptor cd_S2213C2_nt = {  "S2213C2_nt", // class name
  bases_S2213C2_nt, 2,
  &(vtc_S2213C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(840,636), // object size
  NSPAIRA(_ZTI10S2213C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2213C2_nt),115, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2213C1  : S2213C2_nt {
  void *s2213c1f0;
  virtual void  v1(); // _ZN7S2213C12v1Ev
  virtual void  v2(); // _ZN7S2213C12v2Ev
  ~S2213C1(); // tgen
  S2213C1(); // tgen
};
//SIG(1 S2213C1) 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 Fp Fi FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}} FC5 Fi} vd v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 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 FC9{ m FC10{ m FL[2]}} FC9 FC9 FC9 FC11{ m FC9} FC12{ m FC9 FC9 FC9 FC9} FC12 FC9 FC9 FC9 Fp FC11 FC13{ m FC14{ m Fp Fi FC8} Fi} Fi Fp[7] FC15{ m Fp Fi FC16{ m} FC16} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC17{ BC18{ m Fp Fi FC19{ m} FC19}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC20{ m Fp Fi[2] FC21{ m}} Fp[2] Fi:16 Fi:16 FC17 FC20 FC22{ m Fp Fi[2] FC21} Fp[2] Fi:24 Fi:8 Fp} vd v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 Fp} v1 v2 Fp}


void  S2213C1 ::v1(){vfunc_called(this, "_ZN7S2213C12v1Ev");}
void  S2213C1 ::v2(){vfunc_called(this, "_ZN7S2213C12v2Ev");}
S2213C1 ::~S2213C1(){ note_dtor("S2213C1", this);} // tgen
S2213C1 ::S2213C1(){ note_ctor("S2213C1", this);} // tgen

static void Test_S2213C1()
{
  extern Class_Descriptor cd_S2213C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(107,161)];
    init_test(&cd_S2213C1, buf);
    S2213C1 *dp, &lv = *(dp=new (buf) S2213C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,640), "sizeof(S2213C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2213C1)");
    check_base_class_offset(lv, (S2213C4_nt*)(S2213C3_nt*)(S2213C2_nt*), 0, "S2213C1");
    check_base_class_offset(lv, (S2213C3_nt*)(S2213C2_nt*), 0, "S2213C1");
    check_base_class_offset(lv, (S2213C2_nt*), 0, "S2213C1");
    check_field_offset(lv, s2213c1f0, ABISELECT(840,636), "S2213C1.s2213c1f0");
    test_class_info(&lv, &cd_S2213C1);
    dp->~S2213C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2213C1(Test_S2213C1, "S2213C1", ABISELECT(848,640));

#else // __cplusplus

extern void _ZN7S2213C1C1Ev();
extern void _ZN7S2213C1D1Ev();
Name_Map name_map_S2213C1[] = {
  NSPAIR(_ZN7S2213C1C1Ev),
  NSPAIR(_ZN7S2213C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2213C4_nt;
extern VTBL_ENTRY _ZTI10S2213C4_nt[];
extern  VTBL_ENTRY _ZTV10S2213C4_nt[];
extern Class_Descriptor cd_S2213C3_nt;
extern VTBL_ENTRY _ZTI10S2213C3_nt[];
extern  VTBL_ENTRY _ZTV10S2213C3_nt[];
extern Class_Descriptor cd_S2213C2_nt;
extern VTBL_ENTRY _ZTI10S2213C2_nt[];
extern  VTBL_ENTRY _ZTV10S2213C2_nt[];
static Base_Class bases_S2213C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2213C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2213C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2213C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2213C1[];
extern void _ZN7S2213C1D1Ev();
extern void _ZN7S2213C1D0Ev();
extern void _ZN10S2213C4_nt2v3Ev();
extern void _ZN10S2213C4_nt2v4Ev();
extern void _ZN10S2213C4_nt2v5Ev();
extern void _ZN10S2213C4_nt2v6Ev();
extern void _ZN10S2213C4_nt2v7Ev();
extern void _ZN10S2213C4_nt2v8Ev();
extern void _ZN10S2213C4_nt2v9Ev();
extern void _ZN10S2213C4_nt3v10Ev();
extern void _ZN10S2213C4_nt3v11Ev();
extern void _ZN10S2213C4_nt3v12Ev();
extern void _ZN10S2213C4_nt3v13Ev();
extern void _ZN10S2213C4_nt3v14Ev();
extern void _ZN10S2213C4_nt3v15Ev();
extern void _ZN10S2213C4_nt3v16Ev();
extern void _ZN10S2213C4_nt3v17Ev();
extern void _ZN10S2213C4_nt3v18Ev();
extern void _ZN10S2213C4_nt3v19Ev();
extern void _ZN10S2213C4_nt3v20Ev();
extern void _ZN10S2213C4_nt3v21Ev();
extern void _ZN10S2213C4_nt3v22Ev();
extern void _ZN10S2213C4_nt3v23Ev();
extern void _ZN10S2213C4_nt3v24Ev();
extern void _ZN10S2213C4_nt3v25Ev();
extern void _ZN10S2213C3_nt3v26Ev();
extern void _ZN10S2213C3_nt3v27Ev();
extern void _ZN10S2213C3_nt3v28Ev();
extern void _ZN10S2213C3_nt3v29Ev();
extern void _ZN10S2213C3_nt3v30Ev();
extern void _ZN10S2213C3_nt3v31Ev();
extern void _ZN10S2213C3_nt3v32Ev();
extern void _ZN10S2213C3_nt3v33Ev();
extern void _ZN10S2213C3_nt3v34Ev();
extern void _ZN10S2213C3_nt3v35Ev();
extern void _ZN10S2213C3_nt3v36Ev();
extern void _ZN10S2213C3_nt3v37Ev();
extern void _ZN10S2213C3_nt3v38Ev();
extern void _ZN10S2213C3_nt3v39Ev();
extern void _ZN10S2213C3_nt3v40Ev();
extern void _ZN10S2213C3_nt3v41Ev();
extern void _ZN10S2213C3_nt3v42Ev();
extern void _ZN10S2213C3_nt3v43Ev();
extern void _ZN10S2213C3_nt3v44Ev();
extern void _ZN10S2213C3_nt3v45Ev();
extern void _ZN10S2213C3_nt3v46Ev();
extern void _ZN10S2213C3_nt3v47Ev();
extern void _ZN10S2213C3_nt3v48Ev();
extern void _ZN10S2213C3_nt3v49Ev();
extern void _ZN10S2213C3_nt3v50Ev();
extern void _ZN10S2213C3_nt3v51Ev();
extern void _ZN10S2213C3_nt3v52Ev();
extern void _ZN10S2213C3_nt3v53Ev();
extern void _ZN10S2213C3_nt3v54Ev();
extern void _ZN10S2213C3_nt3v55Ev();
extern void _ZN10S2213C3_nt3v56Ev();
extern void _ZN10S2213C3_nt3v57Ev();
extern void _ZN10S2213C3_nt3v58Ev();
extern void _ZN10S2213C3_nt3v59Ev();
extern void _ZN10S2213C3_nt3v60Ev();
extern void _ZN10S2213C3_nt3v61Ev();
extern void _ZN10S2213C3_nt3v62Ev();
extern void _ZN10S2213C3_nt3v63Ev();
extern void _ZN10S2213C3_nt3v64Ev();
extern void _ZN10S2213C3_nt3v65Ev();
extern void _ZN10S2213C3_nt3v66Ev();
extern void _ZN10S2213C3_nt3v67Ev();
extern void _ZN10S2213C3_nt3v68Ev();
extern void _ZN10S2213C3_nt3v69Ev();
extern void _ZN10S2213C3_nt3v70Ev();
extern void _ZN10S2213C3_nt3v71Ev();
extern void _ZN10S2213C3_nt3v72Ev();
extern void _ZN10S2213C3_nt3v73Ev();
extern void _ZN10S2213C3_nt3v74Ev();
extern void _ZN10S2213C3_nt3v75Ev();
extern void _ZN10S2213C3_nt3v76Ev();
extern void _ZN10S2213C3_nt3v77Ev();
extern void _ZN10S2213C3_nt3v78Ev();
extern void _ZN10S2213C3_nt3v79Ev();
extern void _ZN10S2213C3_nt3v80Ev();
extern void _ZN10S2213C3_nt3v81Ev();
extern void _ZN10S2213C3_nt3v82Ev();
extern void _ZN10S2213C3_nt3v83Ev();
extern void _ZN10S2213C3_nt3v84Ev();
extern void _ZN10S2213C3_nt3v85Ev();
extern void _ZN10S2213C3_nt3v86Ev();
extern void _ZN10S2213C3_nt3v87Ev();
extern void _ZN10S2213C3_nt3v88Ev();
extern void _ZN10S2213C3_nt3v89Ev();
extern void _ZN10S2213C3_nt3v90Ev();
extern void _ZN10S2213C3_nt3v91Ev();
extern void _ZN10S2213C3_nt3v92Ev();
extern void _ZN10S2213C3_nt3v93Ev();
extern void _ZN10S2213C3_nt3v94Ev();
extern void _ZN10S2213C3_nt3v95Ev();
extern void _ZN10S2213C3_nt3v96Ev();
extern void _ZN10S2213C3_nt3v97Ev();
extern void _ZN10S2213C3_nt3v98Ev();
extern void _ZN10S2213C3_nt3v99Ev();
extern void _ZN10S2213C3_nt4v100Ev();
extern void _ZN10S2213C3_nt4v101Ev();
extern void _ZN10S2213C3_nt4v102Ev();
extern void _ZN10S2213C3_nt4v103Ev();
extern void _ZN10S2213C2_nt4v104Ev();
extern void _ZN10S2213C2_nt4v105Ev();
extern void _ZN10S2213C2_nt4v106Ev();
extern void _ZN10S2213C2_nt4v107Ev();
extern void _ZN10S2213C2_nt4v108Ev();
extern void _ZN10S2213C2_nt4v109Ev();
extern void _ZN10S2213C2_nt4v110Ev();
extern void _ZN10S2213C2_nt4v111Ev();
extern void _ZN10S2213C2_nt4v112Ev();
extern void _ZN10S2213C2_nt4v113Ev();
extern void _ZN7S2213C12v1Ev();
extern void _ZN7S2213C12v2Ev();
static  VTBL_ENTRY vtc_S2213C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2213C1[0]),
  (VTBL_ENTRY)&_ZN7S2213C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2213C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2213C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S2213C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S2213C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN7S2213C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2213C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2213C1[];
extern  VTBL_ENTRY _ZTV7S2213C1[];
Class_Descriptor cd_S2213C1 = {  "S2213C1", // class name
  bases_S2213C1, 3,
  &(vtc_S2213C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(848,640), // object size
  NSPAIRA(_ZTI7S2213C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2213C1),117, //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  S19674C5  {
  __tsi64 s19674c5f0[7];
  short s19674c5f1;
  void *s19674c5f2[3];
  int s19674c5f3;
  long s19674c5f4;
  void *s19674c5f5;
  void  mf19674c5(); // _ZN8S19674C59mf19674c5Ev
  virtual  ~S19674C5(); // _ZN8S19674C5D1Ev
  S19674C5(); // tgen
};
//SIG(-1 S19674C5) C1{ vd m FL[7] Fs Fp[3] Fi Fl Fp}


void  S19674C5 ::mf19674c5(){}
 S19674C5 ::~S19674C5(){ note_dtor("S19674C5", this);}
S19674C5 ::S19674C5(){ note_ctor("S19674C5", this);} // tgen

static void Test_S19674C5()
{
  extern Class_Descriptor cd_S19674C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,23)];
    init_test(&cd_S19674C5, buf);
    S19674C5 *dp, &lv = *(dp=new (buf) S19674C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,88), "sizeof(S19674C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19674C5)");
    check_field_offset(lv, s19674c5f0, ABISELECT(8,4), "S19674C5.s19674c5f0");
    check_field_offset(lv, s19674c5f1, ABISELECT(64,60), "S19674C5.s19674c5f1");
    check_field_offset(lv, s19674c5f2, ABISELECT(72,64), "S19674C5.s19674c5f2");
    check_field_offset(lv, s19674c5f3, ABISELECT(96,76), "S19674C5.s19674c5f3");
    check_field_offset(lv, s19674c5f4, ABISELECT(104,80), "S19674C5.s19674c5f4");
    check_field_offset(lv, s19674c5f5, ABISELECT(112,84), "S19674C5.s19674c5f5");
    test_class_info(&lv, &cd_S19674C5);
    dp->~S19674C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C5(Test_S19674C5, "S19674C5", ABISELECT(120,88));

#else // __cplusplus

extern void _ZN8S19674C5C1Ev();
extern void _ZN8S19674C5D1Ev();
Name_Map name_map_S19674C5[] = {
  NSPAIR(_ZN8S19674C5C1Ev),
  NSPAIR(_ZN8S19674C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19674C5[];
extern void _ZN8S19674C5D1Ev();
extern void _ZN8S19674C5D0Ev();
static  VTBL_ENTRY vtc_S19674C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C5[0]),
  (VTBL_ENTRY)&_ZN8S19674C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
Class_Descriptor cd_S19674C5 = {  "S19674C5", // class name
  0,0,//no base classes
  &(vtc_S19674C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,88), // object size
  NSPAIRA(_ZTI8S19674C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19674C5),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  S19674C4  : virtual S19674C5 {
  virtual void  v6(); // _ZN8S19674C42v6Ev
  ~S19674C4(); // tgen
  S19674C4(); // tgen
};
//SIG(-1 S19674C4) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1}


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

static void Test_S19674C4()
{
  extern Class_Descriptor cd_S19674C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S19674C4, buf);
    S19674C4 *dp, &lv = *(dp=new (buf) S19674C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S19674C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19674C4)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(8,4), "S19674C4");
    test_class_info(&lv, &cd_S19674C4);
    dp->~S19674C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C4(Test_S19674C4, "S19674C4", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S19674C4C1Ev();
extern void _ZN8S19674C4D1Ev();
Name_Map name_map_S19674C4[] = {
  NSPAIR(_ZN8S19674C4C1Ev),
  NSPAIR(_ZN8S19674C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S19674C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19674C4[];
extern void _ZN8S19674C42v6Ev();
extern void _ZN8S19674C4D1Ev();
extern void _ZN8S19674C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev)();
extern void ABISELECT(_ZThn8_N8S19674C4D1Ev,_ZThn4_N8S19674C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev)();
extern void ABISELECT(_ZThn8_N8S19674C4D0Ev,_ZThn4_N8S19674C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19674C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19674C4[];
static  VTT_ENTRY vtt_S19674C4[] = {
  {&(_ZTV8S19674C4[3]),  3,11},
  {&(_ZTV8S19674C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19674C4[];
extern  VTBL_ENTRY _ZTV8S19674C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C4[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19674C4D0Ev,_ZThn4_N8S19674C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19674C4D1Ev,_ZThn4_N8S19674C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C4 = {  "S19674C4", // class name
  bases_S19674C4, 1,
  &(vtc_S19674C4[0]), // expected_vtbl_contents
  &(vtt_S19674C4[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S19674C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19674C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19674C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C7  {
  void *s19674c7f0[14];
  void  mf19674c7(); // _ZN8S19674C79mf19674c7Ev
};
//SIG(-1 S19674C7) C1{ m Fp[14]}


void  S19674C7 ::mf19674c7(){}

static void Test_S19674C7()
{
  {
    init_simple_test("S19674C7");
    S19674C7 lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S19674C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19674C7)");
    check_field_offset(lv, s19674c7f0, 0, "S19674C7.s19674c7f0");
  }
}
static Arrange_To_Call_Me vS19674C7(Test_S19674C7, "S19674C7", ABISELECT(112,56));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19674C7[];
VTBL_ENTRY *P__ZTI8S19674C7 = _ZTI8S19674C7; 
Class_Descriptor cd_S19674C7 = {  "S19674C7", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S19674C7),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

union  S19674C9  {
  void *s19674c9f0[4];
  void *s19674c9f1;
  void *s19674c9f2;
  __tsi64 s19674c9f3;
  int s19674c9f4;
  __tsi64 s19674c9f5;
  void *s19674c9f6;
  char s19674c9f7;
  __tsi64 s19674c9f8;
  void  mf19674c9(); // _ZN8S19674C99mf19674c9Ev
};
//SIG(1 S19674C9) U1{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19674C8  : virtual S19674C5 , S19674C7 {
  short s19674c8f0[6];
  __tsi64 s19674c8f1[3];
  ::S19674C9 s19674c8f2;
  ~S19674C8(); // tgen
  S19674C8(); // tgen
};
//SIG(-1 S19674C8) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ m Fp[14]} Fs[6] FL[3] FU4{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}}


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

static void Test_S19674C8()
{
  extern Class_Descriptor cd_S19674C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,51)];
    init_test(&cd_S19674C8, buf);
    S19674C8 *dp, &lv = *(dp=new (buf) S19674C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,200), "sizeof(S19674C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19674C8)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(192,112), "S19674C8");
    check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S19674C8");
    check_field_offset(lv, s19674c8f0, ABISELECT(120,60), "S19674C8.s19674c8f0");
    check_field_offset(lv, s19674c8f1, ABISELECT(136,72), "S19674C8.s19674c8f1");
    check_field_offset(lv, s19674c8f2, ABISELECT(160,96), "S19674C8.s19674c8f2");
    test_class_info(&lv, &cd_S19674C8);
    dp->~S19674C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C8(Test_S19674C8, "S19674C8", ABISELECT(312,200));

#else // __cplusplus

extern void _ZN8S19674C8C1Ev();
extern void _ZN8S19674C8D1Ev();
Name_Map name_map_S19674C8[] = {
  NSPAIR(_ZN8S19674C8C1Ev),
  NSPAIR(_ZN8S19674C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
static Base_Class bases_S19674C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(192,112), //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},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19674C8[];
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn192_N8S19674C8D1Ev,_ZThn112_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn192_N8S19674C8D0Ev,_ZThn112_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19674C8[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19674C8[];
static  VTT_ENTRY vtt_S19674C8[] = {
  {&(_ZTV8S19674C8[3]),  3,10},
  {&(_ZTV8S19674C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19674C8D0Ev,_ZThn112_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19674C8D1Ev,_ZThn112_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C8 = {  "S19674C8", // class name
  bases_S19674C8, 2,
  &(vtc_S19674C8[0]), // expected_vtbl_contents
  &(vtt_S19674C8[0]), // expected_vtt_contents
  ABISELECT(312,200), // object size
  NSPAIRA(_ZTI8S19674C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19674C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19674C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C6  : virtual S19674C5 , virtual S19674C7 , S19674C8 {
  ::S19674C8 s19674c6f0;
  long double s19674c6f1[7];
  ::S19674C8 s19674c6f2;
  __tsi64 s19674c6f3;
  void *s19674c6f4[5];
  virtual void  v4(); // _ZN8S19674C62v4Ev
  virtual void  v5(); // _ZN8S19674C62v5Ev
  ~S19674C6(); // tgen
  S19674C6(); // tgen
};
//SIG(-1 S19674C6) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ m Fp[14]} BC4{ VBC2 BC3 Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC4 FD[7] FC4 FL Fp[5]}


void  S19674C6 ::v4(){vfunc_called(this, "_ZN8S19674C62v4Ev");}
void  S19674C6 ::v5(){vfunc_called(this, "_ZN8S19674C62v5Ev");}
S19674C6 ::~S19674C6(){ note_dtor("S19674C6", this);} // tgen
S19674C6 ::S19674C6(){ note_ctor("S19674C6", this);} // tgen

static void Test_S19674C6()
{
  extern Class_Descriptor cd_S19674C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,193)];
    init_test(&cd_S19674C6, buf);
    S19674C6 *dp, &lv = *(dp=new (buf) S19674C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,768), "sizeof(S19674C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C6)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(984,624), "S19674C6");
    check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(984,624), "S19674C6");
    /*is_ambiguous_... S19674C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(1104,712), "S19674C6");
    check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(8,4), "S19674C6");
    check_base_class_offset(lv, (S19674C8*), 0, "S19674C6");
    check_field_offset(lv, s19674c6f0, ABISELECT(192,112), "S19674C6.s19674c6f0");
    check_field_offset(lv, s19674c6f1, ABISELECT(512,312), "S19674C6.s19674c6f1");
    check_field_offset(lv, s19674c6f2, ABISELECT(624,396), "S19674C6.s19674c6f2");
    check_field_offset(lv, s19674c6f3, ABISELECT(936,596), "S19674C6.s19674c6f3");
    check_field_offset(lv, s19674c6f4, ABISELECT(944,604), "S19674C6.s19674c6f4");
    test_class_info(&lv, &cd_S19674C6);
    dp->~S19674C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C6(Test_S19674C6, "S19674C6", ABISELECT(1216,768));

#else // __cplusplus

extern void _ZN8S19674C6C1Ev();
extern void _ZN8S19674C6D1Ev();
Name_Map name_map_S19674C6[] = {
  NSPAIR(_ZN8S19674C6C1Ev),
  NSPAIR(_ZN8S19674C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
static Base_Class bases_S19674C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(984,624), //bcp->offset
    8, //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_S19674C7,    ABISELECT(1104,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C8,    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 _ZTI8S19674C6[];
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19674C6[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19674C6[];
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__8S19674C6[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__8S19674C6[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
static  VTT_ENTRY vtt_S19674C6[] = {
  {&(_ZTV8S19674C6[4]),  4,13},
  {&(_tg__ZTV8S19674C8__8S19674C6[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__8S19674C6[3]),  3,5},
  {&(_ZTV8S19674C6[11]),  11,13},
};
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C6 = {  "S19674C6", // class name
  bases_S19674C6, 4,
  &(vtc_S19674C6[0]), // expected_vtbl_contents
  &(vtt_S19674C6[0]), // expected_vtt_contents
  ABISELECT(1216,768), // object size
  NSPAIRA(_ZTI8S19674C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19674C6),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19674C6),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C10  : virtual S19674C8 , S19674C5 {
  char s19674c10f0:6;
  char s19674c10f1[8];
  long double s19674c10f2;
  ::S19674C7 s19674c10f3;
  ::S19674C7 s19674c10f4;
  ~S19674C10(); // tgen
  S19674C10(); // tgen
};
//SIG(-1 S19674C10) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC3 Fc:6 Fc[8] FD FC4 FC4}


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

static void Test_S19674C10()
{
  extern Class_Descriptor cd_S19674C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,107)];
    init_test(&cd_S19674C10, buf);
    S19674C10 *dp, &lv = *(dp=new (buf) S19674C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,424), "sizeof(S19674C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C10)");
    check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(576,336), "S19674C10");
    check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(392,228), "S19674C10");
    check_base_class_offset(lv, (S19674C8*), ABISELECT(384,224), "S19674C10");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), 0, "S19674C10");
    set_bf_and_test(lv, s19674c10f0, ABISELECT(120,88), 0, 6, 1, "S19674C10");
    set_bf_and_test(lv, s19674c10f0, ABISELECT(120,88), 0, 6, hide_sll(1LL<<5), "S19674C10");
    check_field_offset(lv, s19674c10f1, ABISELECT(121,89), "S19674C10.s19674c10f1");
    check_field_offset(lv, s19674c10f2, ABISELECT(144,100), "S19674C10.s19674c10f2");
    check_field_offset(lv, s19674c10f3, ABISELECT(160,112), "S19674C10.s19674c10f3");
    check_field_offset(lv, s19674c10f4, ABISELECT(272,168), "S19674C10.s19674c10f4");
    test_class_info(&lv, &cd_S19674C10);
    dp->~S19674C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C10(Test_S19674C10, "S19674C10", ABISELECT(704,424));

#else // __cplusplus

extern void _ZN9S19674C10C1Ev();
extern void _ZN9S19674C10D1Ev();
Name_Map name_map_S19674C10[] = {
  NSPAIR(_ZN9S19674C10C1Ev),
  NSPAIR(_ZN9S19674C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S19674C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(576,336), //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(384,224), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S19674C10[];
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZThn384_N9S19674C10D1Ev,_ZThn224_N9S19674C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
extern void ABISELECT(_ZThn384_N9S19674C10D0Ev,_ZThn224_N9S19674C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZThn576_N9S19674C10D1Ev,_ZThn336_N9S19674C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
extern void ABISELECT(_ZThn576_N9S19674C10D0Ev,_ZThn336_N9S19674C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19674C10[] = {
  ABISELECT(576,336),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
  ABISELECT(-384,-224),
  ABISELECT(192,112),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
  ABISELECT(-576,-336),
  ABISELECT(-576,-336),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19674C10[];
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn192_N8S19674C8D1Ev,_ZThn112_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn192_N8S19674C8D0Ev,_ZThn112_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__9S19674C10[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
static  VTT_ENTRY vtt_S19674C10[] = {
  {&(_ZTV9S19674C10[4]),  4,17},
  {&(_ZTV9S19674C10[10]),  10,17},
  {&(_ZTV9S19674C10[15]),  15,17},
  {&(_tg__ZTV8S19674C8__9S19674C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__9S19674C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19674C8D0Ev,_ZThn112_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19674C8D1Ev,_ZThn112_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S19674C10D0Ev,_ZThn336_N9S19674C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S19674C10D1Ev,_ZThn336_N9S19674C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19674C10D0Ev,_ZThn224_N9S19674C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19674C10D1Ev,_ZThn224_N9S19674C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C10 = {  "S19674C10", // class name
  bases_S19674C10, 4,
  &(vtc_S19674C10[0]), // expected_vtbl_contents
  &(vtt_S19674C10[0]), // expected_vtt_contents
  ABISELECT(704,424), // object size
  NSPAIRA(_ZTI9S19674C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19674C10),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C10),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C3  : virtual S19674C4 , virtual S19674C6 {
  ::S19674C10 s19674c3f0[5];
  long s19674c3f1;
  int s19674c3f2;
  ::S19674C6 s19674c3f3;
  int s19674c3f4;
  int s19674c3f5;
  ::S19674C4 s19674c3f6;
  virtual  ~S19674C3(); // _ZN8S19674C3D2Ev
  S19674C3(); // tgen
};
//SIG(-1 S19674C3) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1} VBC4{ VBC3 VBC5{ m Fp[14]} BC6{ VBC3 BC5 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v2 v3 FC6 FD[7] FC6 FL Fp[5]} vd FC8{ VBC6 BC3 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC4 Fi Fi FC2}


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

static void Test_S19674C3()
{
  extern Class_Descriptor cd_S19674C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(384,943)];
    init_test(&cd_S19674C3, buf);
    S19674C3 *dp, &lv = *(dp=new (buf) S19674C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6128,3768), "sizeof(S19674C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C3)");
    check_base_class_offset(lv, (S19674C5*)(S19674C4*), ABISELECT(4904,3000), "S19674C3");
    check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(4904,3000), "S19674C3");
    check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(4904,3000), "S19674C3");
    check_base_class_offset(lv, (S19674C4*), 0, "S19674C3");
    /*is_ambiguous_... S19674C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(6008,3712), "S19674C3");
    check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(5032,3092), "S19674C3");
    check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(5024,3088), "S19674C3");
    check_base_class_offset(lv, (S19674C6*), ABISELECT(5024,3088), "S19674C3");
    check_field_offset(lv, s19674c3f0, ABISELECT(16,4), "S19674C3.s19674c3f0");
    check_field_offset(lv, s19674c3f1, ABISELECT(3536,2124), "S19674C3.s19674c3f1");
    check_field_offset(lv, s19674c3f2, ABISELECT(3544,2128), "S19674C3.s19674c3f2");
    check_field_offset(lv, s19674c3f3, ABISELECT(3552,2132), "S19674C3.s19674c3f3");
    check_field_offset(lv, s19674c3f4, ABISELECT(4768,2900), "S19674C3.s19674c3f4");
    check_field_offset(lv, s19674c3f5, ABISELECT(4772,2904), "S19674C3.s19674c3f5");
    check_field_offset(lv, s19674c3f6, ABISELECT(4776,2908), "S19674C3.s19674c3f6");
    test_class_info(&lv, &cd_S19674C3);
    dp->~S19674C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C3(Test_S19674C3, "S19674C3", ABISELECT(6128,3768));

#else // __cplusplus

extern void _ZN8S19674C3C1Ev();
extern void _ZN8S19674C3D2Ev();
Name_Map name_map_S19674C3[] = {
  NSPAIR(_ZN8S19674C3C1Ev),
  NSPAIR(_ZN8S19674C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C4;
extern VTBL_ENTRY _ZTI8S19674C4[];
extern  VTBL_ENTRY _ZTV8S19674C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C4[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
static Base_Class bases_S19674C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(4904,3000), //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19674C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(6008,3712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(5032,3092), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C8,    ABISELECT(5024,3088), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(5024,3088), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19674C3[];
extern void _ZN8S19674C42v6Ev();
extern void _ZN8S19674C3D1Ev();
extern void _ZN8S19674C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19674C3D1Ev,_ZTv0_n12_N8S19674C3D1Ev)();
extern void ABISELECT(_ZThn4904_N8S19674C3D1Ev,_ZThn3000_N8S19674C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C3D0Ev,_ZTv0_n12_N8S19674C3D0Ev)();
extern void ABISELECT(_ZThn4904_N8S19674C3D0Ev,_ZThn3000_N8S19674C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19674C3D1Ev,_ZTv0_n20_N8S19674C3D1Ev)();
extern void ABISELECT(_ZThn5024_N8S19674C3D1Ev,_ZThn3088_N8S19674C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19674C3D0Ev,_ZTv0_n20_N8S19674C3D0Ev)();
extern void ABISELECT(_ZThn5024_N8S19674C3D0Ev,_ZThn3088_N8S19674C3D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY vtc_S19674C3[] = {
  ABISELECT(6008,3712),
  ABISELECT(5024,3088),
  0,
  0,
  0,
  ABISELECT(4904,3000),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C3[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19674C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C3D0Ev,
  ABISELECT(-4904,-3000),
  ABISELECT(-4904,-3000),
  (VTBL_ENTRY)&(_ZTI8S19674C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C3D1Ev,_ZTv0_n12_N8S19674C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C3D0Ev,_ZTv0_n12_N8S19674C3D0Ev),
  0,
  0,
  ABISELECT(-5024,-3088),
  ABISELECT(984,624),
  ABISELECT(-120,-88),
  ABISELECT(-5024,-3088),
  (VTBL_ENTRY)&(_ZTI8S19674C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C3D1Ev,_ZTv0_n20_N8S19674C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C3D0Ev,_ZTv0_n20_N8S19674C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern VTBL_ENTRY _ZTV8S19674C3[];
extern void _ZN8S19674C42v6Ev();
extern void _ZN8S19674C4D1Ev();
extern void _ZN8S19674C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C4__8S19674C3[] = {
  ABISELECT(4904,3000),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev)();
extern void ABISELECT(_ZThn4904_N8S19674C4D1Ev,_ZThn3000_N8S19674C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev)();
extern void ABISELECT(_ZThn4904_N8S19674C4D0Ev,_ZThn3000_N8S19674C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C4__8S19674C3[] = {
  ABISELECT(-4904,-3000),
  ABISELECT(-4904,-3000),
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__8S19674C3[] = {
  ABISELECT(984,624),
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__8S19674C3[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__8S19674C3[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__8S19674C3[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
static  VTT_ENTRY vtt_S19674C3[] = {
  {&(_ZTV8S19674C3[8]),  8,27},
  {&(_ZTV8S19674C3[8]),  8,27},
  {&(_ZTV8S19674C3[14]),  14,27},
  {&(_ZTV8S19674C3[23]),  23,27},
  {&(_tg__ZTV8S19674C4__8S19674C3[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S19674C4__8S19674C3[3]),  3,5},
  {&(_tg__ZTV8S19674C6__8S19674C3[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__8S19674C3[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__8S19674C3[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__8S19674C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19674C3[];
extern  VTBL_ENTRY _ZTV8S19674C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C3[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4904_N8S19674C4D0Ev,_ZThn3000_N8S19674C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4904_N8S19674C4D1Ev,_ZThn3000_N8S19674C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19674C3D0Ev,_ZTv0_n20_N8S19674C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5024_N8S19674C3D0Ev,_ZThn3088_N8S19674C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19674C3D1Ev,_ZTv0_n20_N8S19674C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5024_N8S19674C3D1Ev,_ZThn3088_N8S19674C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C3D0Ev,_ZTv0_n12_N8S19674C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4904_N8S19674C3D0Ev,_ZThn3000_N8S19674C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C3D1Ev,_ZTv0_n12_N8S19674C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4904_N8S19674C3D1Ev,_ZThn3000_N8S19674C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C3 = {  "S19674C3", // class name
  bases_S19674C3, 6,
  &(vtc_S19674C3[0]), // expected_vtbl_contents
  &(vtt_S19674C3[0]), // expected_vtt_contents
  ABISELECT(6128,3768), // object size
  NSPAIRA(_ZTI8S19674C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19674C3),27, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19674C3),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C2  {
  ::S19674C3 s19674c2f0[5];
  void *s19674c2f1;
  void  mf19674c2(); // _ZN8S19674C29mf19674c2Ev
};
//SIG(-1 S19674C2) C1{ m FC2{ VBC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1} VBC5{ VBC4 VBC6{ m Fp[14]} BC7{ VBC4 BC6 Fs[6] FL[3] FU8{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v2 v3 FC7 FD[7] FC7 FL Fp[5]} vd FC9{ VBC7 BC4 Fc:6 Fc[8] FD FC6 FC6}[5] Fl Fi FC5 Fi Fi FC3}[5] Fp}


void  S19674C2 ::mf19674c2(){}

static void Test_S19674C2()
{
  {
    init_simple_test("S19674C2");
    static S19674C2 lv;
    check2(sizeof(lv), ABISELECT(30656,18844), "sizeof(S19674C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C2)");
    check_field_offset(lv, s19674c2f0, 0, "S19674C2.s19674c2f0");
    check_field_offset(lv, s19674c2f1, ABISELECT(30640,18840), "S19674C2.s19674c2f1");
  }
}
static Arrange_To_Call_Me vS19674C2(Test_S19674C2, "S19674C2", ABISELECT(30656,18844));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19674C2[];
VTBL_ENTRY *P__ZTI8S19674C2 = _ZTI8S19674C2; 
Class_Descriptor cd_S19674C2 = {  "S19674C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(30656,18844), // object size
  NSPAIRA(_ZTI8S19674C2),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  S19674C12  : virtual S19674C6 , S19674C7 , S19674C8 {
  int s19674c12f0;
  int s19674c12f1;
  int s19674c12f2:28;
  int s19674c12f3;
  long s19674c12f4;
  ~S19674C12(); // tgen
  S19674C12(); // tgen
};
//SIG(-1 S19674C12) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} BC4 BC5 Fi Fi Fi:28 Fi Fl}


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

static void Test_S19674C12()
{
  extern Class_Descriptor cd_S19674C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,240)];
    init_test(&cd_S19674C12, buf);
    S19674C12 *dp, &lv = *(dp=new (buf) S19674C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,956), "sizeof(S19674C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C12)");
    check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(1320,812), "S19674C12");
    check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(1320,812), "S19674C12");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(1320,812), "S19674C12");
    /*is_ambiguous_... S19674C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(1440,900), "S19674C12");
    check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(344,192), "S19674C12");
    check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(336,188), "S19674C12");
    check_base_class_offset(lv, (S19674C6*), ABISELECT(336,188), "S19674C12");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(192,112), "S19674C12");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(8,4), "S19674C12");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*), 0, "S19674C12");
    check_field_offset(lv, s19674c12f0, ABISELECT(304,168), "S19674C12.s19674c12f0");
    check_field_offset(lv, s19674c12f1, ABISELECT(308,172), "S19674C12.s19674c12f1");
    set_bf_and_test(lv, s19674c12f2, ABISELECT(312,176), 0, 28, 1, "S19674C12");
    set_bf_and_test(lv, s19674c12f2, ABISELECT(312,176), 0, 28, hide_sll(1LL<<27), "S19674C12");
    check_field_offset(lv, s19674c12f3, ABISELECT(316,180), "S19674C12.s19674c12f3");
    check_field_offset(lv, s19674c12f4, ABISELECT(320,184), "S19674C12.s19674c12f4");
    test_class_info(&lv, &cd_S19674C12);
    dp->~S19674C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C12(Test_S19674C12, "S19674C12", ABISELECT(1552,956));

#else // __cplusplus

extern void _ZN9S19674C12C1Ev();
extern void _ZN9S19674C12D1Ev();
Name_Map name_map_S19674C12[] = {
  NSPAIR(_ZN9S19674C12C1Ev),
  NSPAIR(_ZN9S19674C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
static Base_Class bases_S19674C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(1320,812), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1440,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(344,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
    3, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(336,188), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19674C12[];
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn336_N9S19674C12D1Ev,_ZThn188_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn336_N9S19674C12D0Ev,_ZThn188_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn1320_N9S19674C12D1Ev,_ZThn812_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn1320_N9S19674C12D0Ev,_ZThn812_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19674C12[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19674C12[];
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A1__9S19674C12[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn1320_N8S19674C8D1Ev,_ZThn812_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn1320_N8S19674C8D0Ev,_ZThn812_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__A1__9S19674C12[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C12[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__9S19674C12[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C12[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__9S19674C12[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
static  VTT_ENTRY vtt_S19674C12[] = {
  {&(_ZTV9S19674C12[5]),  5,23},
  {&(_tg__ZTV8S19674C8__A1__9S19674C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__A1__9S19674C12[3]),  3,5},
  {&(_ZTV9S19674C12[14]),  14,23},
  {&(_ZTV9S19674C12[21]),  21,23},
  {&(_tg__ZTV8S19674C6__9S19674C12[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__9S19674C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__9S19674C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S19674C8D0Ev,_ZThn812_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S19674C8D1Ev,_ZThn812_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N9S19674C12D0Ev,_ZThn812_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N9S19674C12D1Ev,_ZThn812_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19674C12D0Ev,_ZThn188_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19674C12D1Ev,_ZThn188_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C12 = {  "S19674C12", // class name
  bases_S19674C12, 8,
  &(vtc_S19674C12[0]), // expected_vtbl_contents
  &(vtt_S19674C12[0]), // expected_vtt_contents
  ABISELECT(1552,956), // object size
  NSPAIRA(_ZTI9S19674C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19674C12),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C12),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C11  : virtual S19674C7 , S19674C12 , S19674C6 , virtual S19674C8 , virtual S19674C4 {
  int s19674c11f0;
  int s19674c11f1;
  int s19674c11f2;
  long double s19674c11f3;
  void *s19674c11f4;
  void *s19674c11f5;
  ::S19674C8 s19674c11f6;
  void *s19674c11f7;
  ::S19674C6 s19674c11f8;
  int s19674c11f9;
  void *s19674c11f10;
  int s19674c11f11;
  ::S19674C5 s19674c11f12[8];
  virtual  ~S19674C11(); // _ZN9S19674C11D2Ev
  S19674C11(); // tgen
};
//SIG(-1 S19674C11) C1{ VBC2{ m Fp[14]} BC3{ VBC4{ VBC5{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC2 BC6{ VBC5 BC2 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC2 BC6 Fi Fi Fi:28 Fi Fl} BC4 VBC6 VBC8{ VBC5 v3} vd Fi Fi Fi FD Fp Fp FC6 Fp FC4 Fi Fp Fi FC5[8]}


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

static void Test_S19674C11()
{
  extern Class_Descriptor cd_S19674C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(334,855)];
    init_test(&cd_S19674C11, buf);
    S19674C11 *dp, &lv = *(dp=new (buf) S19674C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5328,3416), "sizeof(S19674C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C11)");
    /*is_ambiguous_... S19674C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(3896,2532), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(3896,2532), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(3896,2532), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(5000,3212), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(5000,3212), "S19674C11");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*), ABISELECT(5000,3212), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(5000,3212), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(5000,3212), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(5000,3212), "S19674C11");
    check_base_class_offset(lv, (S19674C5*)(S19674C4*), ABISELECT(5000,3212), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(4024,2592), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(4016,2588), "S19674C11");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*), ABISELECT(4016,2588), "S19674C11");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*), ABISELECT(192,112), "S19674C11");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*), ABISELECT(8,4), "S19674C11");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*), 0, "S19674C11");
    check_base_class_offset(lv, (S19674C12*), 0, "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(344,192), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(336,188), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C6*), ABISELECT(336,188), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(5128,3304), "S19674C11");
    /*is_ambiguous_... S19674C11::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*), ABISELECT(5120,3300), "S19674C11");
    check_base_class_offset(lv, (S19674C4*), ABISELECT(5312,3412), "S19674C11");
    check_field_offset(lv, s19674c11f0, ABISELECT(1320,812), "S19674C11.s19674c11f0");
    check_field_offset(lv, s19674c11f1, ABISELECT(1324,816), "S19674C11.s19674c11f1");
    check_field_offset(lv, s19674c11f2, ABISELECT(1328,820), "S19674C11.s19674c11f2");
    check_field_offset(lv, s19674c11f3, ABISELECT(1344,824), "S19674C11.s19674c11f3");
    check_field_offset(lv, s19674c11f4, ABISELECT(1360,836), "S19674C11.s19674c11f4");
    check_field_offset(lv, s19674c11f5, ABISELECT(1368,840), "S19674C11.s19674c11f5");
    check_field_offset(lv, s19674c11f6, ABISELECT(1376,844), "S19674C11.s19674c11f6");
    check_field_offset(lv, s19674c11f7, ABISELECT(1688,1044), "S19674C11.s19674c11f7");
    check_field_offset(lv, s19674c11f8, ABISELECT(1696,1048), "S19674C11.s19674c11f8");
    check_field_offset(lv, s19674c11f9, ABISELECT(2912,1816), "S19674C11.s19674c11f9");
    check_field_offset(lv, s19674c11f10, ABISELECT(2920,1820), "S19674C11.s19674c11f10");
    check_field_offset(lv, s19674c11f11, ABISELECT(2928,1824), "S19674C11.s19674c11f11");
    check_field_offset(lv, s19674c11f12, ABISELECT(2936,1828), "S19674C11.s19674c11f12");
    test_class_info(&lv, &cd_S19674C11);
    dp->~S19674C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C11(Test_S19674C11, "S19674C11", ABISELECT(5328,3416));

#else // __cplusplus

extern void _ZN9S19674C11C1Ev();
extern void _ZN9S19674C11D2Ev();
Name_Map name_map_S19674C11[] = {
  NSPAIR(_ZN9S19674C11C1Ev),
  NSPAIR(_ZN9S19674C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C4;
extern VTBL_ENTRY _ZTI8S19674C4[];
extern  VTBL_ENTRY _ZTV8S19674C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C4[];
static Base_Class bases_S19674C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(3896,2532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(5000,3212), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4024,2592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C8,    ABISELECT(4016,2588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(4016,2588), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(192,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
    8, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19674C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(344,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(336,188), //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
    11, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(336,188), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(5128,3304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(5120,3300), //bcp->offset
    33, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C4,    ABISELECT(5312,3412), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19674C11[];
extern void _ZN9S19674C11D1Ev();
extern void _ZN9S19674C11D0Ev();
extern void ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn4016_N9S19674C11D1Ev,_ZThn2588_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn4016_N9S19674C11D0Ev,_ZThn2588_N9S19674C11D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn5000_N9S19674C11D1Ev,_ZThn3212_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn5000_N9S19674C11D0Ev,_ZThn3212_N9S19674C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn5120_N9S19674C11D1Ev,_ZThn3300_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn5120_N9S19674C11D0Ev,_ZThn3300_N9S19674C11D0Ev)() __attribute__((weak));
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn5312_N9S19674C11D1Ev,_ZThn3412_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn5312_N9S19674C11D0Ev,_ZThn3412_N9S19674C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19674C11[] = {
  ABISELECT(5312,3412),
  ABISELECT(5120,3300),
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN9S19674C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C11D0Ev,
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev),
  ABISELECT(-5120,-3300),
  ABISELECT(-120,-88),
  ABISELECT(-5120,-3300),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev),
  ABISELECT(-5312,-3412),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-5312,-3412),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19674C11[];
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C11[] = {
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C12__A1__9S19674C11[] = {
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn5000_N8S19674C8D1Ev,_ZThn3212_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn5000_N8S19674C8D0Ev,_ZThn3212_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C12__A1__9S19674C11[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn4016_N9S19674C12D1Ev,_ZThn2588_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn4016_N9S19674C12D0Ev,_ZThn2588_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C12__9S19674C11[] = {
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn5000_N9S19674C12D1Ev,_ZThn3212_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn5000_N9S19674C12D0Ev,_ZThn3212_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C12__9S19674C11[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__A__9S19674C11[] = {
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__A2__9S19674C11[] = {
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn4664_N8S19674C8D1Ev,_ZThn3024_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn4664_N8S19674C8D0Ev,_ZThn3024_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__A2__9S19674C11[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZThn4664_N8S19674C6D1Ev,_ZThn3024_N8S19674C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
extern void ABISELECT(_ZThn4664_N8S19674C6D0Ev,_ZThn3024_N8S19674C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__A__9S19674C11[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C11[] = {
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__9S19674C11[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C11[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__9S19674C11[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A3__9S19674C11[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__A3__9S19674C11[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void _ZN8S19674C4D1Ev();
extern void _ZN8S19674C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C11[] = {
  ABISELECT(-312,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C4__9S19674C11[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev),
};
static  VTT_ENTRY vtt_S19674C11[] = {
  {&(_ZTV9S19674C11[7]),  7,47},
  {&(_tg__ZTV9S19674C12__9S19674C11[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C12__A1__9S19674C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C12__A1__9S19674C11[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C12__9S19674C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C12__9S19674C11[3]),  3,5},
  {&(_tg__ZTV8S19674C6__A__9S19674C11[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__A2__9S19674C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__A2__9S19674C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__A__9S19674C11[3]),  3,5},
  {&(_ZTV9S19674C11[24]),  24,47},
  {&(_ZTV9S19674C11[31]),  31,47},
  {&(_ZTV9S19674C11[13]),  13,47},
  {&(_ZTV9S19674C11[37]),  37,47},
  {&(_ZTV9S19674C11[44]),  44,47},
  {&(_tg__ZTV8S19674C6__9S19674C11[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__9S19674C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__9S19674C11[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A3__9S19674C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__A3__9S19674C11[3]),  3,5},
  {&(_tg__ZTV8S19674C4__9S19674C11[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S19674C4__9S19674C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19674C11[];
extern  VTBL_ENTRY _ZTV9S19674C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C11[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S19674C6D0Ev,_ZThn3024_N8S19674C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S19674C6D1Ev,_ZThn3024_N8S19674C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N9S19674C12D0Ev,_ZThn3212_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N9S19674C12D1Ev,_ZThn3212_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N9S19674C12D0Ev,_ZThn2588_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N9S19674C12D1Ev,_ZThn2588_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S19674C8D0Ev,_ZThn3024_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S19674C8D0Ev,_ZThn3212_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S19674C8D1Ev,_ZThn3024_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S19674C8D1Ev,_ZThn3212_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N9S19674C11D0Ev,_ZThn3300_N9S19674C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N9S19674C11D1Ev,_ZThn3300_N9S19674C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N9S19674C11D0Ev,_ZThn3212_N9S19674C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N9S19674C11D1Ev,_ZThn3212_N9S19674C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N9S19674C11D0Ev,_ZThn3412_N9S19674C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N9S19674C11D0Ev,_ZThn2588_N9S19674C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N9S19674C11D1Ev,_ZThn3412_N9S19674C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N9S19674C11D1Ev,_ZThn2588_N9S19674C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C11 = {  "S19674C11", // class name
  bases_S19674C11, 15,
  &(vtc_S19674C11[0]), // expected_vtbl_contents
  &(vtt_S19674C11[0]), // expected_vtt_contents
  ABISELECT(5328,3416), // object size
  NSPAIRA(_ZTI9S19674C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19674C11),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C11),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C14  {
  long double s19674c14f0;
  int s19674c14f1[4];
  void *s19674c14f2;
  short s19674c14f3:13;
  void  mf19674c14(); // _ZN9S19674C1410mf19674c14Ev
};
//SIG(-1 S19674C14) C1{ m FD Fi[4] Fp Fs:13}


void  S19674C14 ::mf19674c14(){}

static void Test_S19674C14()
{
  {
    init_simple_test("S19674C14");
    static S19674C14 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S19674C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C14)");
    check_field_offset(lv, s19674c14f0, 0, "S19674C14.s19674c14f0");
    check_field_offset(lv, s19674c14f1, ABISELECT(16,12), "S19674C14.s19674c14f1");
    check_field_offset(lv, s19674c14f2, ABISELECT(32,28), "S19674C14.s19674c14f2");
    set_bf_and_test(lv, s19674c14f3, ABISELECT(40,32), 0, 13, 1, "S19674C14");
    set_bf_and_test(lv, s19674c14f3, ABISELECT(40,32), 0, 13, hide_sll(1LL<<12), "S19674C14");
  }
}
static Arrange_To_Call_Me vS19674C14(Test_S19674C14, "S19674C14", ABISELECT(48,36));

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S19674C14[];
VTBL_ENTRY *P__ZTI9S19674C14 = _ZTI9S19674C14; 
Class_Descriptor cd_S19674C14 = {  "S19674C14", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI9S19674C14),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  S19674C17  : virtual S19674C5 , virtual S19674C8 , virtual S19674C10 , S19674C7 , virtual S19674C6 {
  int s19674c17f0;
  int s19674c17f1;
  ::S19674C7 s19674c17f2;
  char s19674c17f3;
  char s19674c17f4;
  int s19674c17f5;
  short s19674c17f6;
  __tsi64 s19674c17f7;
  virtual  ~S19674C17(); // _ZN9S19674C17D2Ev
  virtual void  v7(); // _ZN9S19674C172v7Ev
  virtual void  v8(); // _ZN9S19674C172v8Ev
  S19674C17(); // tgen
};
//SIG(-1 S19674C17) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC7{ VBC2 VBC4 BC3 v3 v4 FC3 FD[7] FC3 FL Fp[5]} vd v1 v2 Fi Fi FC4 Fc Fc Fi Fs FL}


 S19674C17 ::~S19674C17(){ note_dtor("S19674C17", this);}
void  S19674C17 ::v7(){vfunc_called(this, "_ZN9S19674C172v7Ev");}
void  S19674C17 ::v8(){vfunc_called(this, "_ZN9S19674C172v8Ev");}
S19674C17 ::S19674C17(){ note_ctor("S19674C17", this);} // tgen

static void Test_S19674C17()
{
  extern Class_Descriptor cd_S19674C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,313)];
    init_test(&cd_S19674C17, buf);
    S19674C17 *dp, &lv = *(dp=new (buf) S19674C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1248), "sizeof(S19674C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C17)");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(264,144), "S19674C17");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(264,144), "S19674C17");
    check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(264,144), "S19674C17");
    check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(264,144), "S19674C17");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(392,236), "S19674C17");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*), ABISELECT(384,232), "S19674C17");
    check_base_class_offset(lv, (S19674C8*)(S19674C10*), ABISELECT(384,232), "S19674C17");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C10*), ABISELECT(576,344), "S19674C17");
    check_base_class_offset(lv, (S19674C10*), ABISELECT(576,344), "S19674C17");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S19674C17");
    /*is_ambiguous_... S19674C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(1944,1192), "S19674C17");
    check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(968,572), "S19674C17");
    check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(960,568), "S19674C17");
    check_base_class_offset(lv, (S19674C6*), ABISELECT(960,568), "S19674C17");
    check_field_offset(lv, s19674c17f0, ABISELECT(120,60), "S19674C17.s19674c17f0");
    check_field_offset(lv, s19674c17f1, ABISELECT(124,64), "S19674C17.s19674c17f1");
    check_field_offset(lv, s19674c17f2, ABISELECT(128,68), "S19674C17.s19674c17f2");
    check_field_offset(lv, s19674c17f3, ABISELECT(240,124), "S19674C17.s19674c17f3");
    check_field_offset(lv, s19674c17f4, ABISELECT(241,125), "S19674C17.s19674c17f4");
    check_field_offset(lv, s19674c17f5, ABISELECT(244,128), "S19674C17.s19674c17f5");
    check_field_offset(lv, s19674c17f6, ABISELECT(248,132), "S19674C17.s19674c17f6");
    check_field_offset(lv, s19674c17f7, ABISELECT(256,136), "S19674C17.s19674c17f7");
    test_class_info(&lv, &cd_S19674C17);
    dp->~S19674C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C17(Test_S19674C17, "S19674C17", ABISELECT(2064,1248));

#else // __cplusplus

extern void _ZN9S19674C17C1Ev();
extern void _ZN9S19674C17D2Ev();
Name_Map name_map_S19674C17[] = {
  NSPAIR(_ZN9S19674C17C1Ev),
  NSPAIR(_ZN9S19674C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C10;
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
static Base_Class bases_S19674C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(264,144), //bcp->offset
    11, //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_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(384,232), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C10,    ABISELECT(576,344), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(1944,1192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(968,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(960,568), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(960,568), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19674C17[];
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C17D1Ev,_ZThn144_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn264_N9S19674C17D0Ev,_ZThn144_N9S19674C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn384_N9S19674C17D1Ev,_ZThn232_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn384_N9S19674C17D0Ev,_ZThn232_N9S19674C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn576_N9S19674C17D1Ev,_ZThn344_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn576_N9S19674C17D0Ev,_ZThn344_N9S19674C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn960_N9S19674C17D1Ev,_ZThn568_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn960_N9S19674C17D0Ev,_ZThn568_N9S19674C17D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY vtc_S19674C17[] = {
  ABISELECT(1944,1192),
  ABISELECT(960,568),
  ABISELECT(576,344),
  ABISELECT(384,232),
  ABISELECT(264,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
  ABISELECT(-384,-232),
  ABISELECT(-120,-88),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
  ABISELECT(-576,-344),
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  ABISELECT(-576,-344),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  0,
  0,
  ABISELECT(-960,-568),
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  ABISELECT(-960,-568),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern VTBL_ENTRY _ZTV9S19674C17[];
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C17[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__9S19674C17[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C17[] = {
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10__9S19674C17[] = {
  ABISELECT(192,112),
  ABISELECT(-120,-88),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C10__9S19674C17[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C17[] = {
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__A1__9S19674C17[] = {
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__A1__9S19674C17[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__9S19674C17[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
static  VTT_ENTRY vtt_S19674C17[] = {
  {&(_ZTV9S19674C17[7]),  7,40},
  {&(_ZTV9S19674C17[14]),  14,40},
  {&(_ZTV9S19674C17[20]),  20,40},
  {&(_ZTV9S19674C17[27]),  27,40},
  {&(_ZTV9S19674C17[36]),  36,40},
  {&(_tg__ZTV8S19674C8__9S19674C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__9S19674C17[3]),  3,5},
  {&(_tg__ZTV9S19674C10__9S19674C17[4]),  4,6},
  {&(_tg__ZTV8S19674C8__9S19674C10__9S19674C17[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S19674C10__9S19674C17[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C17[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__A1__9S19674C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__A1__9S19674C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__9S19674C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S19674C17D0Ev,_ZThn568_N9S19674C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S19674C17D0Ev,_ZThn344_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S19674C17D1Ev,_ZThn568_N9S19674C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S19674C17D1Ev,_ZThn344_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19674C17D0Ev,_ZThn232_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19674C17D1Ev,_ZThn232_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19674C17D0Ev,_ZThn144_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19674C17D1Ev,_ZThn144_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C17 = {  "S19674C17", // class name
  bases_S19674C17, 10,
  &(vtc_S19674C17[0]), // expected_vtbl_contents
  &(vtt_S19674C17[0]), // expected_vtt_contents
  ABISELECT(2064,1248), // object size
  NSPAIRA(_ZTI9S19674C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19674C17),40, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C17),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S19674C18  {
  int s19674c18f0;
  __tsi64 s19674c18f1;
  char s19674c18f2[7];
  long s19674c18f3;
  long s19674c18f4[8];
  void *s19674c18f5[8];
  long double s19674c18f6;
  short s19674c18f7;
  __tsi64 s19674c18f8;
  void  mf19674c18(); // _ZN9S19674C1810mf19674c18Ev
};
//SIG(1 S19674C18) U1{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19674C16  : S19674C17 , S19674C12 {
  ::S19674C18 s19674c16f0;
  int s19674c16f1;
  int s19674c16f2;
  int s19674c16f3;
  short s19674c16f4;
  virtual void  v9(); // _ZN9S19674C162v9Ev
  virtual void  v10(); // _ZN9S19674C163v10Ev
  ~S19674C16(); // tgen
  S19674C16(); // tgen
};
//SIG(-1 S19674C16) C1{ BC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC8{ VBC3 VBC5 BC4 v3 v4 FC4 FD[7] FC4 FL Fp[5]} vd v5 v6 Fi Fi FC5 Fc Fc Fi Fs FL} BC9{ VBC8 BC5 BC4 Fi Fi Fi:28 Fi Fl} v1 v2 FU10{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs}


void  S19674C16 ::v9(){vfunc_called(this, "_ZN9S19674C162v9Ev");}
void  S19674C16 ::v10(){vfunc_called(this, "_ZN9S19674C163v10Ev");}
S19674C16 ::~S19674C16(){ note_dtor("S19674C16", this);} // tgen
S19674C16 ::S19674C16(){ note_ctor("S19674C16", this);} // tgen

static void Test_S19674C16()
{
  extern Class_Descriptor cd_S19674C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(156,372)];
    init_test(&cd_S19674C16, buf);
    S19674C16 *dp, &lv = *(dp=new (buf) S19674C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2480,1484), "sizeof(S19674C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C16)");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*), ABISELECT(672,380), "S19674C16");
    /*is_ambiguous_... S19674C16::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(672,380), "S19674C16");
    check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(672,380), "S19674C16");
    check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(672,380), "S19674C16");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*), ABISELECT(672,380), "S19674C16");
    /*is_ambiguous_... S19674C16::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(800,472), "S19674C16");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*), ABISELECT(792,468), "S19674C16");
    check_base_class_offset(lv, (S19674C8*)(S19674C10*), ABISELECT(792,468), "S19674C16");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C10*), ABISELECT(992,580), "S19674C16");
    check_base_class_offset(lv, (S19674C10*)(S19674C17*), ABISELECT(992,580), "S19674C16");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*), ABISELECT(8,4), "S19674C16");
    /*is_ambiguous_... S19674C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(2360,1428), "S19674C16");
    check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(1384,808), "S19674C16");
    check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(1376,804), "S19674C16");
    check_base_class_offset(lv, (S19674C6*)(S19674C17*), ABISELECT(1376,804), "S19674C16");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*), ABISELECT(1376,804), "S19674C16");
    check_base_class_offset(lv, (S19674C17*), 0, "S19674C16");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*), ABISELECT(456,256), "S19674C16");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*), ABISELECT(272,148), "S19674C16");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*), ABISELECT(264,144), "S19674C16");
    check_base_class_offset(lv, (S19674C12*), ABISELECT(264,144), "S19674C16");
    check_field_offset(lv, s19674c16f0, ABISELECT(592,332), "S19674C16.s19674c16f0");
    check_field_offset(lv, s19674c16f1, ABISELECT(656,364), "S19674C16.s19674c16f1");
    check_field_offset(lv, s19674c16f2, ABISELECT(660,368), "S19674C16.s19674c16f2");
    check_field_offset(lv, s19674c16f3, ABISELECT(664,372), "S19674C16.s19674c16f3");
    check_field_offset(lv, s19674c16f4, ABISELECT(668,376), "S19674C16.s19674c16f4");
    test_class_info(&lv, &cd_S19674C16);
    dp->~S19674C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C16(Test_S19674C16, "S19674C16", ABISELECT(2480,1484));

#else // __cplusplus

extern void _ZN9S19674C16C1Ev();
extern void _ZN9S19674C16D1Ev();
Name_Map name_map_S19674C16[] = {
  NSPAIR(_ZN9S19674C16C1Ev),
  NSPAIR(_ZN9S19674C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C10;
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
static Base_Class bases_S19674C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(800,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
    2, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(792,468), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(992,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C10,    ABISELECT(992,580), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2360,1428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1384,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(1376,804), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(1376,804), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(264,144), //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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(264,144), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //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 _ZTI9S19674C16[];
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C16D1Ev,_ZThn380_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn672_N9S19674C16D0Ev,_ZThn380_N9S19674C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn792_N9S19674C16D1Ev,_ZThn468_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn792_N9S19674C16D0Ev,_ZThn468_N9S19674C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn992_N9S19674C16D1Ev,_ZThn580_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn992_N9S19674C16D0Ev,_ZThn580_N9S19674C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn1376_N9S19674C16D1Ev,_ZThn804_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn1376_N9S19674C16D0Ev,_ZThn804_N9S19674C16D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY vtc_S19674C16[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern VTBL_ENTRY _ZTV9S19674C16[];
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C17__9S19674C16[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C17D1Ev,_ZThn380_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn672_N9S19674C17D0Ev,_ZThn380_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C17__9S19674C16[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn792_N9S19674C17D1Ev,_ZThn468_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn792_N9S19674C17D0Ev,_ZThn468_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C17__9S19674C16[] = {
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn992_N9S19674C17D1Ev,_ZThn580_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn992_N9S19674C17D0Ev,_ZThn580_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C17__9S19674C16[] = {
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn1376_N9S19674C17D1Ev,_ZThn804_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn1376_N9S19674C17D0Ev,_ZThn804_N9S19674C17D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C17__9S19674C16[] = {
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C16[] = {
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C12__A2__9S19674C16[] = {
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn408_N8S19674C8D1Ev,_ZThn236_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn408_N8S19674C8D0Ev,_ZThn236_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C12__A2__9S19674C16[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn1112_N9S19674C12D1Ev,_ZThn660_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn1112_N9S19674C12D0Ev,_ZThn660_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C12__9S19674C16[] = {
  0,
  0,
  ABISELECT(-1112,-660),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1112,-660),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn408_N9S19674C12D1Ev,_ZThn236_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn408_N9S19674C12D0Ev,_ZThn236_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C12__9S19674C16[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C16[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__9S19674C16[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C16[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10__9S19674C16[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C10__9S19674C16[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C16[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__A1__9S19674C16[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__A1__9S19674C16[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__9S19674C16[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
static  VTT_ENTRY vtt_S19674C16[] = {
  {&(_ZTV9S19674C16[7]),  7,49},
  {&(_tg__ZTV9S19674C17__9S19674C16[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C17__9S19674C16[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C17__9S19674C16[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C17__9S19674C16[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C17__9S19674C16[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C16[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C12__A2__9S19674C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C12__A2__9S19674C16[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C12__9S19674C16[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C12__9S19674C16[3]),  3,5},
  {&(_ZTV9S19674C16[23]),  23,49},
  {&(_ZTV9S19674C16[29]),  29,49},
  {&(_ZTV9S19674C16[36]),  36,49},
  {&(_ZTV9S19674C16[45]),  45,49},
  {&(_ZTV9S19674C16[18]),  18,49},
  {&(_tg__ZTV8S19674C8__9S19674C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__9S19674C16[3]),  3,5},
  {&(_tg__ZTV9S19674C10__9S19674C16[4]),  4,6},
  {&(_tg__ZTV8S19674C8__9S19674C10__9S19674C16[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S19674C10__9S19674C16[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C16[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__A1__9S19674C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__A1__9S19674C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__9S19674C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19674C12D0Ev,_ZThn236_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19674C12D1Ev,_ZThn236_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N9S19674C12D0Ev,_ZThn660_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N9S19674C12D1Ev,_ZThn660_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S19674C8D0Ev,_ZThn236_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S19674C8D1Ev,_ZThn236_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S19674C17D0Ev,_ZThn804_N9S19674C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S19674C17D0Ev,_ZThn580_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S19674C17D1Ev,_ZThn804_N9S19674C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S19674C17D1Ev,_ZThn580_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S19674C17D0Ev,_ZThn468_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S19674C17D1Ev,_ZThn468_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19674C17D0Ev,_ZThn380_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19674C17D1Ev,_ZThn380_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S19674C16D0Ev,_ZThn804_N9S19674C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S19674C16D0Ev,_ZThn580_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S19674C16D1Ev,_ZThn804_N9S19674C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S19674C16D1Ev,_ZThn580_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S19674C16D0Ev,_ZThn468_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S19674C16D1Ev,_ZThn468_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19674C16D0Ev,_ZThn380_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19674C16D1Ev,_ZThn380_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C16 = {  "S19674C16", // class name
  bases_S19674C16, 15,
  &(vtc_S19674C16[0]), // expected_vtbl_contents
  &(vtt_S19674C16[0]), // expected_vtt_contents
  ABISELECT(2480,1484), // object size
  NSPAIRA(_ZTI9S19674C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19674C16),49, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C16),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C19  : virtual S19674C5 , S19674C8 , virtual S19674C10 {
  long double s19674c19f0;
  void *s19674c19f1;
  void *s19674c19f2;
  ~S19674C19(); // tgen
  S19674C19(); // tgen
};
//SIG(-1 S19674C19) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} FD Fp Fp}


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

static void Test_S19674C19()
{
  extern Class_Descriptor cd_S19674C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,140)];
    init_test(&cd_S19674C19, buf);
    S19674C19 *dp, &lv = *(dp=new (buf) S19674C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,556), "sizeof(S19674C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C19)");
    /*is_ambiguous_... S19674C19::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(224,132), "S19674C19");
    /*is_ambiguous_... S19674C19::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(224,132), "S19674C19");
    /*is_ambiguous_... S19674C19::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(224,132), "S19674C19");
    /*is_ambiguous_... S19674C19::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(8,4), "S19674C19");
    /*is_ambiguous_... S19674C19::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*), 0, "S19674C19");
    /*is_ambiguous_... S19674C19::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(744,448), "S19674C19");
    check_base_class_offset(lv, (S19674C8*)(S19674C10*), ABISELECT(736,444), "S19674C19");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C10*), ABISELECT(352,220), "S19674C19");
    check_base_class_offset(lv, (S19674C10*), ABISELECT(352,220), "S19674C19");
    check_field_offset(lv, s19674c19f0, ABISELECT(192,112), "S19674C19.s19674c19f0");
    check_field_offset(lv, s19674c19f1, ABISELECT(208,124), "S19674C19.s19674c19f1");
    check_field_offset(lv, s19674c19f2, ABISELECT(216,128), "S19674C19.s19674c19f2");
    test_class_info(&lv, &cd_S19674C19);
    dp->~S19674C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C19(Test_S19674C19, "S19674C19", ABISELECT(928,556));

#else // __cplusplus

extern void _ZN9S19674C19C1Ev();
extern void _ZN9S19674C19D1Ev();
Name_Map name_map_S19674C19[] = {
  NSPAIR(_ZN9S19674C19C1Ev),
  NSPAIR(_ZN9S19674C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C10;
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
static Base_Class bases_S19674C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(224,132), //bcp->offset
    7, //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_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19674C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(744,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(736,444), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(352,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19674C10,    ABISELECT(352,220), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19674C19[];
extern void _ZN9S19674C19D1Ev();
extern void _ZN9S19674C19D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19674C19D1Ev,_ZTv0_n12_N9S19674C19D1Ev)();
extern void ABISELECT(_ZThn224_N9S19674C19D1Ev,_ZThn132_N9S19674C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C19D0Ev,_ZTv0_n12_N9S19674C19D0Ev)();
extern void ABISELECT(_ZThn224_N9S19674C19D0Ev,_ZThn132_N9S19674C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C19D1Ev,_ZTv0_n20_N9S19674C19D1Ev)();
extern void ABISELECT(_ZThn352_N9S19674C19D1Ev,_ZThn220_N9S19674C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C19D0Ev,_ZTv0_n20_N9S19674C19D0Ev)();
extern void ABISELECT(_ZThn352_N9S19674C19D0Ev,_ZThn220_N9S19674C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C19D1Ev,_ZTv0_n16_N9S19674C19D1Ev)();
extern void ABISELECT(_ZThn736_N9S19674C19D1Ev,_ZThn444_N9S19674C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C19D0Ev,_ZTv0_n16_N9S19674C19D0Ev)();
extern void ABISELECT(_ZThn736_N9S19674C19D0Ev,_ZThn444_N9S19674C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19674C19[] = {
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C19[0]),
  (VTBL_ENTRY)&_ZN9S19674C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C19D0Ev,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19674C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C19D1Ev,_ZTv0_n12_N9S19674C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C19D0Ev,_ZTv0_n12_N9S19674C19D0Ev),
  ABISELECT(-352,-220),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI9S19674C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C19D1Ev,_ZTv0_n20_N9S19674C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C19D0Ev,_ZTv0_n20_N9S19674C19D0Ev),
  ABISELECT(-736,-444),
  ABISELECT(-512,-312),
  ABISELECT(-736,-444),
  (VTBL_ENTRY)&(_ZTI9S19674C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C19D1Ev,_ZTv0_n16_N9S19674C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C19D0Ev,_ZTv0_n16_N9S19674C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S19674C19[];
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A__9S19674C19[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn224_N8S19674C8D1Ev,_ZThn132_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn224_N8S19674C8D0Ev,_ZThn132_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__A__9S19674C19[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C19[] = {
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZThn384_N9S19674C10D1Ev,_ZThn224_N9S19674C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
extern void ABISELECT(_ZThn384_N9S19674C10D0Ev,_ZThn224_N9S19674C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10__9S19674C19[] = {
  ABISELECT(-384,-224),
  ABISELECT(-512,-312),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C10__9S19674C19[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A1__9S19674C19[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__A1__9S19674C19[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
static  VTT_ENTRY vtt_S19674C19[] = {
  {&(_ZTV9S19674C19[5]),  5,25},
  {&(_tg__ZTV8S19674C8__A__9S19674C19[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__A__9S19674C19[3]),  3,5},
  {&(_ZTV9S19674C19[10]),  10,25},
  {&(_ZTV9S19674C19[17]),  17,25},
  {&(_ZTV9S19674C19[23]),  23,25},
  {&(_tg__ZTV9S19674C10__9S19674C19[4]),  4,6},
  {&(_tg__ZTV8S19674C8__9S19674C10__9S19674C19[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S19674C10__9S19674C19[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A1__9S19674C19[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__A1__9S19674C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19674C19[];
extern  VTBL_ENTRY _ZTV9S19674C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C19[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19674C10D0Ev,_ZThn224_N9S19674C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19674C10D1Ev,_ZThn224_N9S19674C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19674C8D0Ev,_ZThn132_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19674C8D1Ev,_ZThn132_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C19D0Ev,_ZTv0_n16_N9S19674C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S19674C19D0Ev,_ZThn444_N9S19674C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C19D1Ev,_ZTv0_n16_N9S19674C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S19674C19D1Ev,_ZThn444_N9S19674C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C19D0Ev,_ZTv0_n20_N9S19674C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19674C19D0Ev,_ZThn220_N9S19674C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C19D1Ev,_ZTv0_n20_N9S19674C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19674C19D1Ev,_ZThn220_N9S19674C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C19D0Ev,_ZTv0_n12_N9S19674C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19674C19D0Ev,_ZThn132_N9S19674C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C19D1Ev,_ZTv0_n12_N9S19674C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19674C19D1Ev,_ZThn132_N9S19674C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C19 = {  "S19674C19", // class name
  bases_S19674C19, 7,
  &(vtc_S19674C19[0]), // expected_vtbl_contents
  &(vtt_S19674C19[0]), // expected_vtt_contents
  ABISELECT(928,556), // object size
  NSPAIRA(_ZTI9S19674C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19674C19),25, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C19),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C15  : virtual S19674C16 , virtual S19674C3 , virtual S19674C11 , S19674C12 {
  int s19674c15f0;
  __tsi64 s19674c15f1;
  ::S19674C10 s19674c15f2;
  int s19674c15f3;
  ::S19674C19 s19674c15f4;
  int s19674c15f5;
  __tsi64 s19674c15f6[9];
  void *s19674c15f7;
  int s19674c15f8;
  virtual  ~S19674C15(); // _ZN9S19674C15D2Ev
  virtual void  v15(); // _ZN9S19674C153v15Ev
  S19674C15(); // tgen
};
//SIG(-1 S19674C15) C1{ VBC2{ BC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ VBC4 BC6{ m Fp[14]} Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC8{ VBC5 BC4 Fc:6 Fc[8] FD FC6 FC6} BC6 VBC9{ VBC4 VBC6 BC5 v2 v3 FC5 FD[7] FC5 FL Fp[5]} vd v4 v5 Fi Fi FC6 Fc Fc Fi Fs FL} BC10{ VBC9 BC6 BC5 Fi Fi Fi:28 Fi Fl} v6 v7 FU11{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} VBC12{ VBC13{ VBC4 v8} VBC9 vd FC8[5] Fl Fi FC9 Fi Fi FC13} VBC14{ VBC6 BC10 BC9 VBC5 VBC13 vd Fi Fi Fi FD Fp Fp FC5 Fp FC9 Fi Fp Fi FC4[8]} BC10 vd v1 Fi FL FC8 Fi FC15{ VBC4 BC5 VBC8 FD Fp Fp} Fi FL[9] Fp Fi}


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

static void Test_S19674C15()
{
  extern Class_Descriptor cd_S19674C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(838,2072)];
    init_test(&cd_S19674C15, buf);
    S19674C15 *dp, &lv = *(dp=new (buf) S19674C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(13392,8284), "sizeof(S19674C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C15)");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*), ABISELECT(2768,1648), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(2768,1648), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(2768,1648), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(2768,1648), "S19674C15");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(2768,1648), "S19674C15");
    check_base_class_offset(lv, (S19674C5*)(S19674C4*), ABISELECT(2768,1648), "S19674C15");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(2768,1648), "S19674C15");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*)(S19674C11*), ABISELECT(2768,1648), "S19674C15");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(2768,1648), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*), ABISELECT(2768,1648), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(2896,1740), "S19674C15");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*), ABISELECT(2888,1736), "S19674C15");
    check_base_class_offset(lv, (S19674C8*)(S19674C10*), ABISELECT(2888,1736), "S19674C15");
    /*is_ambiguous_... S19674C11::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C11*), ABISELECT(2888,1736), "S19674C15");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C10*), ABISELECT(3088,1848), "S19674C15");
    check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*), ABISELECT(3088,1848), "S19674C15");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*), ABISELECT(2104,1272), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(4456,2696), "S19674C15");
    /*is_ambiguous_... S19674C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C11*), ABISELECT(4456,2696), "S19674C15");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*)(S19674C11*), ABISELECT(4456,2696), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(3480,2076), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(3472,2072), "S19674C15");
    check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*), ABISELECT(3472,2072), "S19674C15");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*), ABISELECT(3472,2072), "S19674C15");
    check_base_class_offset(lv, (S19674C6*)(S19674C3*), ABISELECT(3472,2072), "S19674C15");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C11*), ABISELECT(3472,2072), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C12*), ABISELECT(3472,2072), "S19674C15");
    check_base_class_offset(lv, (S19674C17*)(S19674C16*), ABISELECT(2096,1268), "S19674C15");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*), ABISELECT(2552,1524), "S19674C15");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(2368,1416), "S19674C15");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(2360,1412), "S19674C15");
    check_base_class_offset(lv, (S19674C12*)(S19674C16*), ABISELECT(2360,1412), "S19674C15");
    check_base_class_offset(lv, (S19674C16*), ABISELECT(2096,1268), "S19674C15");
    check_base_class_offset(lv, (S19674C4*)(S19674C3*), ABISELECT(4576,2752), "S19674C15");
    check_base_class_offset(lv, (S19674C4*)(S19674C11*), ABISELECT(4576,2752), "S19674C15");
    check_base_class_offset(lv, (S19674C3*), ABISELECT(4576,2752), "S19674C15");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C11*), ABISELECT(9680,5864), "S19674C15");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(9496,5756), "S19674C15");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(9488,5752), "S19674C15");
    check_base_class_offset(lv, (S19674C12*)(S19674C11*), ABISELECT(9488,5752), "S19674C15");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(9832,5944), "S19674C15");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(9824,5940), "S19674C15");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C11*), ABISELECT(9824,5940), "S19674C15");
    check_base_class_offset(lv, (S19674C11*), ABISELECT(9488,5752), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*), ABISELECT(192,112), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*), ABISELECT(8,4), "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*), 0, "S19674C15");
    /*is_ambiguous_... S19674C15::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C12*), 0, "S19674C15");
    check_field_offset(lv, s19674c15f0, ABISELECT(328,188), "S19674C15.s19674c15f0");
    check_field_offset(lv, s19674c15f1, ABISELECT(336,192), "S19674C15.s19674c15f1");
    check_field_offset(lv, s19674c15f2, ABISELECT(352,200), "S19674C15.s19674c15f2");
    check_field_offset(lv, s19674c15f3, ABISELECT(1056,624), "S19674C15.s19674c15f3");
    check_field_offset(lv, s19674c15f4, ABISELECT(1072,628), "S19674C15.s19674c15f4");
    check_field_offset(lv, s19674c15f5, ABISELECT(2000,1184), "S19674C15.s19674c15f5");
    check_field_offset(lv, s19674c15f6, ABISELECT(2008,1188), "S19674C15.s19674c15f6");
    check_field_offset(lv, s19674c15f7, ABISELECT(2080,1260), "S19674C15.s19674c15f7");
    check_field_offset(lv, s19674c15f8, ABISELECT(2088,1264), "S19674C15.s19674c15f8");
    test_class_info(&lv, &cd_S19674C15);
    dp->~S19674C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C15(Test_S19674C15, "S19674C15", ABISELECT(13392,8284));

#else // __cplusplus

extern void _ZN9S19674C15C1Ev();
extern void _ZN9S19674C15D2Ev();
Name_Map name_map_S19674C15[] = {
  NSPAIR(_ZN9S19674C15C1Ev),
  NSPAIR(_ZN9S19674C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C10;
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
extern Class_Descriptor cd_S19674C4;
extern VTBL_ENTRY _ZTI8S19674C4[];
extern  VTBL_ENTRY _ZTV8S19674C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C4[];
extern Class_Descriptor cd_S19674C3;
extern VTBL_ENTRY _ZTI8S19674C3[];
extern  VTBL_ENTRY _ZTV8S19674C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C11;
extern VTBL_ENTRY _ZTI9S19674C11[];
extern  VTBL_ENTRY _ZTV9S19674C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C11[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
static Base_Class bases_S19674C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(2768,1648), //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2896,1740), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(2888,1736), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(3088,1848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C10,    ABISELECT(3088,1848), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2104,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(4456,2696), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(3480,2076), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(3472,2072), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(3472,2072), //bcp->offset
    57, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C17,    ABISELECT(2096,1268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(2552,1524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2368,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(2360,1412), //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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(2360,1412), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19674C16,    ABISELECT(2096,1268), //bcp->offset
    14, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C4,    ABISELECT(4576,2752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19674C3,    ABISELECT(4576,2752), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(9680,5864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(9496,5756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(9488,5752), //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
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(9488,5752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(9832,5944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(9824,5940), //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
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(9824,5940), //bcp->offset
    91, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19674C11,    ABISELECT(9488,5752), //bcp->offset
    79, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(192,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
    29, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19674C12,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19674C15[];
extern void _ZN9S19674C15D1Ev();
extern void _ZN9S19674C15D0Ev();
extern void _ZN9S19674C153v15Ev();
extern void ABISELECT(_ZTv0_n64_N9S19674C15D1Ev,_ZTv0_n32_N9S19674C15D1Ev)();
extern void ABISELECT(_ZThn2096_N9S19674C15D1Ev,_ZThn1268_N9S19674C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C15D0Ev,_ZTv0_n32_N9S19674C15D0Ev)();
extern void ABISELECT(_ZThn2096_N9S19674C15D0Ev,_ZThn1268_N9S19674C15D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void ABISELECT(_ZTvn264_n64_N9S19674C15D1Ev,_ZTvn144_n32_N9S19674C15D1Ev)();
extern void ABISELECT(_ZTvn264_n64_N9S19674C15D0Ev,_ZTvn144_n32_N9S19674C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C15D1Ev,_ZTv0_n12_N9S19674C15D1Ev)();
extern void ABISELECT(_ZThn2768_N9S19674C15D1Ev,_ZThn1648_N9S19674C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C15D0Ev,_ZTv0_n12_N9S19674C15D0Ev)();
extern void ABISELECT(_ZThn2768_N9S19674C15D0Ev,_ZThn1648_N9S19674C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C15D1Ev,_ZTv0_n16_N9S19674C15D1Ev)();
extern void ABISELECT(_ZThn2888_N9S19674C15D1Ev,_ZThn1736_N9S19674C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C15D0Ev,_ZTv0_n16_N9S19674C15D0Ev)();
extern void ABISELECT(_ZThn2888_N9S19674C15D0Ev,_ZThn1736_N9S19674C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C15D1Ev,_ZTv0_n20_N9S19674C15D1Ev)();
extern void ABISELECT(_ZThn3088_N9S19674C15D1Ev,_ZThn1848_N9S19674C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C15D0Ev,_ZTv0_n20_N9S19674C15D0Ev)();
extern void ABISELECT(_ZThn3088_N9S19674C15D0Ev,_ZThn1848_N9S19674C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C15D1Ev,_ZTv0_n20_N9S19674C15D1Ev)();
extern void ABISELECT(_ZThn3472_N9S19674C15D1Ev,_ZThn2072_N9S19674C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C15D0Ev,_ZTv0_n20_N9S19674C15D0Ev)();
extern void ABISELECT(_ZThn3472_N9S19674C15D0Ev,_ZThn2072_N9S19674C15D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C15D1Ev,_ZTv0_n20_N9S19674C15D1Ev)();
extern void ABISELECT(_ZThn4576_N9S19674C15D1Ev,_ZThn2752_N9S19674C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C15D0Ev,_ZTv0_n20_N9S19674C15D0Ev)();
extern void ABISELECT(_ZThn4576_N9S19674C15D0Ev,_ZThn2752_N9S19674C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C15D1Ev,_ZTv0_n32_N9S19674C15D1Ev)();
extern void ABISELECT(_ZThn9488_N9S19674C15D1Ev,_ZThn5752_N9S19674C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C15D0Ev,_ZTv0_n32_N9S19674C15D0Ev)();
extern void ABISELECT(_ZThn9488_N9S19674C15D0Ev,_ZThn5752_N9S19674C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N9S19674C15D1Ev,_ZTvn188_n32_N9S19674C15D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S19674C15D0Ev,_ZTvn188_n32_N9S19674C15D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY vtc_S19674C15[] = {
  ABISELECT(9488,5752),
  ABISELECT(4576,2752),
  ABISELECT(4576,2752),
  ABISELECT(3088,1848),
  ABISELECT(2888,1736),
  ABISELECT(2096,1268),
  ABISELECT(4456,2696),
  ABISELECT(3472,2072),
  ABISELECT(2768,1648),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C15[0]),
  (VTBL_ENTRY)&_ZN9S19674C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C15D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C153v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-2096,-1268),
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  ABISELECT(-2096,-1268),
  (VTBL_ENTRY)&(_ZTI9S19674C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C15D1Ev,_ZTv0_n32_N9S19674C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C15D0Ev,_ZTv0_n32_N9S19674C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  ABISELECT(-2360,-1412),
  (VTBL_ENTRY)&(_ZTI9S19674C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n64_N9S19674C15D1Ev,_ZTvn144_n32_N9S19674C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n64_N9S19674C15D0Ev,_ZTvn144_n32_N9S19674C15D0Ev),
  ABISELECT(-2768,-1648),
  ABISELECT(-2768,-1648),
  (VTBL_ENTRY)&(_ZTI9S19674C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C15D1Ev,_ZTv0_n12_N9S19674C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C15D0Ev,_ZTv0_n12_N9S19674C15D0Ev),
  ABISELECT(-2888,-1736),
  ABISELECT(-120,-88),
  ABISELECT(-2888,-1736),
  (VTBL_ENTRY)&(_ZTI9S19674C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C15D1Ev,_ZTv0_n16_N9S19674C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C15D0Ev,_ZTv0_n16_N9S19674C15D0Ev),
  ABISELECT(-3088,-1848),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-3088,-1848),
  (VTBL_ENTRY)&(_ZTI9S19674C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C15D1Ev,_ZTv0_n20_N9S19674C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C15D0Ev,_ZTv0_n20_N9S19674C15D0Ev),
  0,
  0,
  ABISELECT(-3472,-2072),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-3472,-2072),
  (VTBL_ENTRY)&(_ZTI9S19674C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C15D1Ev,_ZTv0_n20_N9S19674C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C15D0Ev,_ZTv0_n20_N9S19674C15D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  0,
  ABISELECT(-4576,-2752),
  0,
  ABISELECT(-1808,-1104),
  ABISELECT(-4576,-2752),
  (VTBL_ENTRY)&(_ZTI9S19674C15[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C15D1Ev,_ZTv0_n20_N9S19674C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C15D0Ev,_ZTv0_n20_N9S19674C15D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-9488,-5752),
  ABISELECT(-4912,-3000),
  ABISELECT(-6600,-4016),
  ABISELECT(-5032,-3056),
  ABISELECT(-6016,-3680),
  ABISELECT(-6720,-4104),
  ABISELECT(-9488,-5752),
  (VTBL_ENTRY)&(_ZTI9S19674C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C15D1Ev,_ZTv0_n32_N9S19674C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C15D0Ev,_ZTv0_n32_N9S19674C15D0Ev),
  ABISELECT(-5368,-3244),
  ABISELECT(-7056,-4292),
  ABISELECT(-9824,-5940),
  (VTBL_ENTRY)&(_ZTI9S19674C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C15D1Ev,_ZTvn188_n32_N9S19674C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C15D0Ev,_ZTvn188_n32_N9S19674C15D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern VTBL_ENTRY _ZTV9S19674C15[];
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C12__A2__9S19674C15[] = {
  ABISELECT(4456,2696),
  ABISELECT(3472,2072),
  ABISELECT(2768,1648),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C12__A5__9S19674C15[] = {
  ABISELECT(2768,1648),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn2768_N8S19674C8D1Ev,_ZThn1648_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn2768_N8S19674C8D0Ev,_ZThn1648_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C12__A5__9S19674C15[] = {
  ABISELECT(-2768,-1648),
  ABISELECT(-2768,-1648),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn3472_N9S19674C12D1Ev,_ZThn2072_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn3472_N9S19674C12D0Ev,_ZThn2072_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C12__A2__9S19674C15[] = {
  0,
  0,
  ABISELECT(-3472,-2072),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-3472,-2072),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn2768_N9S19674C12D1Ev,_ZThn1648_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn2768_N9S19674C12D0Ev,_ZThn1648_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C12__A2__9S19674C15[] = {
  ABISELECT(-2768,-1648),
  ABISELECT(-2768,-1648),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C16__9S19674C15[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C16__9S19674C15[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C17D1Ev,_ZThn380_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn672_N9S19674C17D0Ev,_ZThn380_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C16__9S19674C15[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn792_N9S19674C17D1Ev,_ZThn468_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn792_N9S19674C17D0Ev,_ZThn468_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C16__9S19674C15[] = {
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn992_N9S19674C17D1Ev,_ZThn580_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn992_N9S19674C17D0Ev,_ZThn580_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C16__9S19674C15[] = {
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn1376_N9S19674C17D1Ev,_ZThn804_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn1376_N9S19674C17D0Ev,_ZThn804_N9S19674C17D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C16__9S19674C15[] = {
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__9S19674C15[] = {
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C16__A2__9S19674C15[] = {
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn408_N8S19674C8D1Ev,_ZThn236_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn408_N8S19674C8D0Ev,_ZThn236_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C16__A2__9S19674C15[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn1112_N9S19674C12D1Ev,_ZThn660_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn1112_N9S19674C12D0Ev,_ZThn660_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C16__9S19674C15[] = {
  0,
  0,
  ABISELECT(-1112,-660),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1112,-660),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn408_N9S19674C12D1Ev,_ZThn236_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn408_N9S19674C12D0Ev,_ZThn236_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C16__9S19674C15[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C16D1Ev,_ZThn380_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn672_N9S19674C16D0Ev,_ZThn380_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C16__9S19674C15[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn792_N9S19674C16D1Ev,_ZThn468_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn792_N9S19674C16D0Ev,_ZThn468_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C16__9S19674C15[] = {
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn992_N9S19674C16D1Ev,_ZThn580_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn992_N9S19674C16D0Ev,_ZThn580_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C16__9S19674C15[] = {
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn1376_N9S19674C16D1Ev,_ZThn804_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn1376_N9S19674C16D0Ev,_ZThn804_N9S19674C16D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C16__9S19674C15[] = {
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C16__9S19674C15[] = {
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C15[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__9S19674C15[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C15[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10__9S19674C15[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C10__9S19674C15[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C15[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__A1__9S19674C15[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__A1__9S19674C15[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__9S19674C15[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N8S19674C3D1Ev,_ZTv0_n20_N8S19674C3D1Ev)();
extern void _ZN8S19674C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19674C3D0Ev,_ZTv0_n20_N8S19674C3D0Ev)();
extern void _ZN8S19674C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C3__9S19674C15[] = {
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  0,
  0,
  0,
  ABISELECT(-1808,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C3[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C3D1Ev,_ZTv0_n20_N8S19674C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C3D0Ev,_ZTv0_n20_N8S19674C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C3D1Ev,_ZTv0_n12_N8S19674C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C3D0Ev,_ZTv0_n12_N8S19674C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C3__9S19674C15[] = {
  ABISELECT(1808,1104),
  ABISELECT(1808,1104),
  (VTBL_ENTRY)&(_ZTI8S19674C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C3D1Ev,_ZTv0_n12_N8S19674C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C3D0Ev,_ZTv0_n12_N8S19674C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19674C3D1Ev,_ZTv0_n20_N8S19674C3D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19674C3D0Ev,_ZTv0_n20_N8S19674C3D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__8S19674C3__9S19674C15[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI8S19674C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C3D1Ev,_ZTv0_n20_N8S19674C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C3D0Ev,_ZTv0_n20_N8S19674C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C42v6Ev();
extern void _ZN8S19674C4D1Ev();
extern void _ZN8S19674C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C15[] = {
  ABISELECT(-1808,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C4__9S19674C15[] = {
  ABISELECT(1808,1104),
  ABISELECT(1808,1104),
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev),
};
extern void _ZN9S19674C11D1Ev();
extern void _ZN9S19674C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C11__9S19674C15[] = {
  ABISELECT(-4912,-3000),
  ABISELECT(-6600,-4016),
  ABISELECT(-5032,-3056),
  ABISELECT(-6016,-3680),
  ABISELECT(-6720,-4104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN9S19674C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C11D0Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C11__A1__9S19674C15[] = {
  ABISELECT(-5032,-3056),
  ABISELECT(-6016,-3680),
  ABISELECT(-6720,-4104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C11__A3__9S19674C15[] = {
  ABISELECT(-6720,-4104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A3__9S19674C15[] = {
  ABISELECT(6720,4104),
  ABISELECT(6720,4104),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C11__A1__9S19674C15[] = {
  0,
  0,
  ABISELECT(6016,3680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(6016,3680),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C11__A1__9S19674C15[] = {
  ABISELECT(6720,4104),
  ABISELECT(6720,4104),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__9S19674C15[] = {
  ABISELECT(-5368,-3244),
  ABISELECT(-7056,-4292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C69S19674C11__A4__9S19674C15[] = {
  ABISELECT(-7056,-4292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A4__9S19674C15[] = {
  ABISELECT(7056,4292),
  ABISELECT(7056,4292),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C69S19674C11__A1__9S19674C15[] = {
  ABISELECT(7056,4292),
  ABISELECT(7056,4292),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C11__9S19674C15[] = {
  0,
  0,
  ABISELECT(6016,3680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(6016,3680),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C11__9S19674C15[] = {
  ABISELECT(6720,4104),
  ABISELECT(6720,4104),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev),
};
extern void ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__A__9S19674C11__9S19674C15[] = {
  ABISELECT(-5368,-3244),
  ABISELECT(-7056,-4292),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A3__9S19674C11__9S19674C15[] = {
  ABISELECT(6600,4016),
  ABISELECT(-120,-88),
  ABISELECT(6600,4016),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C11__9S19674C15[] = {
  ABISELECT(4912,3000),
  0,
  ABISELECT(-1808,-1104),
  ABISELECT(4912,3000),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
};
static  VTT_ENTRY vtt_S19674C15[] = {
  {&(_ZTV9S19674C15[11]),  11,99},
  {&(_tg__ZTV9S19674C12__A2__9S19674C15[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C12__A5__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C12__A5__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C12__A2__9S19674C15[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C12__A2__9S19674C15[3]),  3,5},
  {&(_ZTV9S19674C15[26]),  26,99},
  {&(_ZTV9S19674C15[42]),  42,99},
  {&(_ZTV9S19674C15[48]),  48,99},
  {&(_ZTV9S19674C15[55]),  55,99},
  {&(_ZTV9S19674C15[64]),  64,99},
  {&(_ZTV9S19674C15[37]),  37,99},
  {&(_ZTV9S19674C15[76]),  76,99},
  {&(_ZTV9S19674C15[76]),  76,99},
  {&(_ZTV9S19674C15[89]),  89,99},
  {&(_ZTV9S19674C15[95]),  95,99},
  {&(_tg__ZTV9S19674C16__9S19674C15[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C16__9S19674C15[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C16__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C16__9S19674C15[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C16__9S19674C15[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C16__9S19674C15[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C16__9S19674C15[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C16__A2__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C16__A2__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C16__9S19674C15[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C16__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C16__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C16__9S19674C15[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C16__9S19674C15[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C16__9S19674C15[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C16__9S19674C15[5]),  5,7},
  {&(_tg__ZTV8S19674C8__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__9S19674C15[3]),  3,5},
  {&(_tg__ZTV9S19674C10__9S19674C15[4]),  4,6},
  {&(_tg__ZTV8S19674C8__9S19674C10__9S19674C15[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S19674C10__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C15[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__A1__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__A1__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C3__9S19674C15[8]),  8,11},
  {&(_tg__ZTV8S19674C3__9S19674C15[8]),  8,11},
  {&(_tg__ZTV8S19674C5__8S19674C3__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C6__8S19674C3__9S19674C15[7]),  7,11},
  {&(_tg__ZTV8S19674C4__9S19674C15[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S19674C4__9S19674C15[3]),  3,5},
  {&(_tg__ZTV9S19674C11__9S19674C15[7]),  7,9},
  {&(_tg__ZTV9S19674C129S19674C11__A1__9S19674C15[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C11__A3__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A3__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C11__A1__9S19674C15[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C11__A1__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C69S19674C11__A1__9S19674C15[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C69S19674C11__A4__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A4__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C69S19674C11__A1__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C11__9S19674C15[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C11__9S19674C15[3]),  3,5},
  {&(_tg__ZTV8S19674C6__A__9S19674C11__9S19674C15[4]),  4,8},
  {&(_tg__ZTV8S19674C8__A3__9S19674C11__9S19674C15[4]),  4,6},
  {&(_tg__ZTV8S19674C4__9S19674C11__9S19674C15[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19674C15[];
extern  VTBL_ENTRY _ZTV9S19674C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C15[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19674C3D0Ev,_ZTv0_n20_N8S19674C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19674C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19674C3D1Ev,_ZTv0_n20_N8S19674C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19674C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S19674C16D0Ev,_ZThn804_N9S19674C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S19674C16D0Ev,_ZThn580_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S19674C16D1Ev,_ZThn804_N9S19674C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S19674C16D1Ev,_ZThn580_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S19674C16D0Ev,_ZThn468_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S19674C16D1Ev,_ZThn468_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19674C16D0Ev,_ZThn380_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19674C16D1Ev,_ZThn380_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S19674C17D0Ev,_ZThn804_N9S19674C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S19674C17D0Ev,_ZThn580_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S19674C17D1Ev,_ZThn804_N9S19674C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S19674C17D1Ev,_ZThn580_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S19674C17D0Ev,_ZThn468_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S19674C17D1Ev,_ZThn468_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19674C17D0Ev,_ZThn380_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19674C17D1Ev,_ZThn380_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19674C12D0Ev,_ZThn236_N9S19674C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2768_N9S19674C12D0Ev,_ZThn1648_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19674C12D1Ev,_ZThn236_N9S19674C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2768_N9S19674C12D1Ev,_ZThn1648_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N9S19674C12D0Ev,_ZThn660_N9S19674C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3472_N9S19674C12D0Ev,_ZThn2072_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N9S19674C12D1Ev,_ZThn660_N9S19674C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3472_N9S19674C12D1Ev,_ZThn2072_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S19674C8D0Ev,_ZThn236_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2768_N8S19674C8D0Ev,_ZThn1648_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S19674C8D1Ev,_ZThn236_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2768_N8S19674C8D1Ev,_ZThn1648_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C15D0Ev,_ZTv0_n20_N9S19674C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4576_N9S19674C15D0Ev,_ZThn2752_N9S19674C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3472_N9S19674C15D0Ev,_ZThn2072_N9S19674C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N9S19674C15D0Ev,_ZThn1848_N9S19674C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C15D1Ev,_ZTv0_n20_N9S19674C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4576_N9S19674C15D1Ev,_ZThn2752_N9S19674C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3472_N9S19674C15D1Ev,_ZThn2072_N9S19674C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N9S19674C15D1Ev,_ZThn1848_N9S19674C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C15D0Ev,_ZTv0_n16_N9S19674C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2888_N9S19674C15D0Ev,_ZThn1736_N9S19674C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C15D1Ev,_ZTv0_n16_N9S19674C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2888_N9S19674C15D1Ev,_ZThn1736_N9S19674C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C15D0Ev,_ZTv0_n12_N9S19674C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2768_N9S19674C15D0Ev,_ZThn1648_N9S19674C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C15D1Ev,_ZTv0_n12_N9S19674C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2768_N9S19674C15D1Ev,_ZThn1648_N9S19674C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C15D0Ev,_ZTv0_n32_N9S19674C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9488_N9S19674C15D0Ev,_ZThn5752_N9S19674C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2096_N9S19674C15D0Ev,_ZThn1268_N9S19674C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C15D1Ev,_ZTv0_n32_N9S19674C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9488_N9S19674C15D1Ev,_ZThn5752_N9S19674C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2096_N9S19674C15D1Ev,_ZThn1268_N9S19674C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C15 = {  "S19674C15", // class name
  bases_S19674C15, 30,
  &(vtc_S19674C15[0]), // expected_vtbl_contents
  &(vtt_S19674C15[0]), // expected_vtt_contents
  ABISELECT(13392,8284), // object size
  NSPAIRA(_ZTI9S19674C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19674C15),99, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C15),62, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C13  : virtual S19674C14 {
  int s19674c13f0;
  int s19674c13f1;
  int s19674c13f2;
  ::S19674C12 s19674c13f3;
  __tsi64 s19674c13f4;
  int s19674c13f5[2];
  ::S19674C15 s19674c13f6;
  int s19674c13f7[8];
  int  :0;
  ~S19674C13(); // tgen
  S19674C13(); // tgen
};
//SIG(-1 S19674C13) C1{ VBC2{ m FD Fi[4] Fp Fs:13} Fi[3] FC3{ VBC4{ VBC5{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC6{ m Fp[14]} BC7{ VBC5 BC6 Fs[6] FL[3] FU8{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC7 FD[7] FC7 FL Fp[5]} BC6 BC7 Fi Fi Fi:28 Fi Fl} FL Fi[2] FC9{ VBC10{ BC11{ VBC5 VBC7 VBC12{ VBC7 BC5 Fc:6 Fc[8] FD FC6 FC6} BC6 VBC4 vd v4 v5 Fi Fi FC6 Fc Fc Fi Fs FL} BC3 v6 v7 FU13{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} VBC14{ VBC15{ VBC5 v8} VBC4 vd FC12[5] Fl Fi FC4 Fi Fi FC15} VBC16{ VBC6 BC3 BC4 VBC7 VBC15 vd Fi Fi Fi FD Fp Fp FC7 Fp FC4 Fi Fp Fi FC5[8]} BC3 vd v3 Fi FL FC12 Fi FC17{ VBC5 BC7 VBC12 FD Fp Fp} Fi FL[9] Fp Fi} Fi[8] Fi:0}


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

static void Test_S19674C13()
{
  extern Class_Descriptor cd_S19674C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(943,2336)];
    init_test(&cd_S19674C13, buf);
    S19674C13 *dp, &lv = *(dp=new (buf) S19674C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(15072,9340), "sizeof(S19674C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C13)");
    check_base_class_offset(lv, (S19674C14*), ABISELECT(15024,9304), "S19674C13");
    check_field_offset(lv, s19674c13f0, ABISELECT(8,4), "S19674C13.s19674c13f0");
    check_field_offset(lv, s19674c13f1, ABISELECT(12,8), "S19674C13.s19674c13f1");
    check_field_offset(lv, s19674c13f2, ABISELECT(16,12), "S19674C13.s19674c13f2");
    check_field_offset(lv, s19674c13f3, ABISELECT(32,16), "S19674C13.s19674c13f3");
    check_field_offset(lv, s19674c13f4, ABISELECT(1584,972), "S19674C13.s19674c13f4");
    check_field_offset(lv, s19674c13f5, ABISELECT(1592,980), "S19674C13.s19674c13f5");
    check_field_offset(lv, s19674c13f6, ABISELECT(1600,988), "S19674C13.s19674c13f6");
    check_field_offset(lv, s19674c13f7, ABISELECT(14992,9272), "S19674C13.s19674c13f7");
    test_class_info(&lv, &cd_S19674C13);
    dp->~S19674C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C13(Test_S19674C13, "S19674C13", ABISELECT(15072,9340));

#else // __cplusplus

extern void _ZN9S19674C13C1Ev();
extern void _ZN9S19674C13D1Ev();
Name_Map name_map_S19674C13[] = {
  NSPAIR(_ZN9S19674C13C1Ev),
  NSPAIR(_ZN9S19674C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C14;
extern VTBL_ENTRY _ZTI9S19674C14[];
static Base_Class bases_S19674C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C14,    ABISELECT(15024,9304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19674C13[];
static  VTBL_ENTRY vtc_S19674C13[] = {
  ABISELECT(15024,9304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C13[0]),
};
extern VTBL_ENTRY _ZTV9S19674C13[];
static  VTT_ENTRY vtt_S19674C13[] = {
  {&(_ZTV9S19674C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19674C13[];
extern  VTBL_ENTRY _ZTV9S19674C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C13[];
Class_Descriptor cd_S19674C13 = {  "S19674C13", // class name
  bases_S19674C13, 1,
  &(vtc_S19674C13[0]), // expected_vtbl_contents
  &(vtt_S19674C13[0]), // expected_vtt_contents
  ABISELECT(15072,9340), // object size
  NSPAIRA(_ZTI9S19674C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19674C13),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C13),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  S19674C23  : virtual S19674C6 , virtual S19674C12 , S19674C16 , S19674C5 {
  ::S19674C7 s19674c23f0;
  int s19674c23f1[10];
  int s19674c23f2;
  ::S19674C4 s19674c23f3;
  short s19674c23f4;
  int s19674c23f5;
  __tsi64 s19674c23f6;
  virtual  ~S19674C23(); // _ZN9S19674C23D2Ev
  S19674C23(); // tgen
};
//SIG(-1 S19674C23) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} VBC7{ VBC2 BC4 BC5 Fi Fi Fi:28 Fi Fl} BC8{ BC9{ VBC3 VBC5 VBC10{ VBC5 BC3 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC2 vd v3 v4 Fi Fi FC4 Fc Fc Fi Fs FL} BC7 v5 v6 FU11{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC3 vd FC4 Fi[10] Fi FC12{ VBC3 v7} Fs Fi FL}


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

static void Test_S19674C23()
{
  extern Class_Descriptor cd_S19674C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(203,493)];
    init_test(&cd_S19674C23, buf);
    S19674C23 *dp, &lv = *(dp=new (buf) S19674C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3232,1968), "sizeof(S19674C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C23)");
    check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(2088,1300), "S19674C23");
    check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(2088,1300), "S19674C23");
    /*is_ambiguous_... S19674C23::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*), ABISELECT(2088,1300), "S19674C23");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*), ABISELECT(2088,1300), "S19674C23");
    /*is_ambiguous_... S19674C23::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(2088,1300), "S19674C23");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(2088,1300), "S19674C23");
    /*is_ambiguous_... S19674C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(2208,1388), "S19674C23");
    check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(1112,680), "S19674C23");
    check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(1104,676), "S19674C23");
    check_base_class_offset(lv, (S19674C6*), ABISELECT(1104,676), "S19674C23");
    /*is_ambiguous_... S19674C23::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C12*), ABISELECT(1104,676), "S19674C23");
    check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*), ABISELECT(1104,676), "S19674C23");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*), ABISELECT(1104,676), "S19674C23");
    /*is_ambiguous_... S19674C23::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*), ABISELECT(2512,1556), "S19674C23");
    /*is_ambiguous_... S19674C23::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*), ABISELECT(2328,1448), "S19674C23");
    /*is_ambiguous_... S19674C23::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*), ABISELECT(2320,1444), "S19674C23");
    /*is_ambiguous_... S19674C23::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C12*), ABISELECT(2320,1444), "S19674C23");
    /*is_ambiguous_... S19674C23::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(2656,1636), "S19674C23");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*), ABISELECT(2648,1632), "S19674C23");
    check_base_class_offset(lv, (S19674C8*)(S19674C10*), ABISELECT(2648,1632), "S19674C23");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C10*), ABISELECT(2848,1744), "S19674C23");
    check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*), ABISELECT(2848,1744), "S19674C23");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*), ABISELECT(8,4), "S19674C23");
    check_base_class_offset(lv, (S19674C17*)(S19674C16*), 0, "S19674C23");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*), ABISELECT(456,256), "S19674C23");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(272,148), "S19674C23");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(264,144), "S19674C23");
    check_base_class_offset(lv, (S19674C12*)(S19674C16*), ABISELECT(264,144), "S19674C23");
    check_base_class_offset(lv, (S19674C16*), 0, "S19674C23");
    /*is_ambiguous_... S19674C23::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(672,380), "S19674C23");
    check_field_offset(lv, s19674c23f0, ABISELECT(792,468), "S19674C23.s19674c23f0");
    check_field_offset(lv, s19674c23f1, ABISELECT(904,524), "S19674C23.s19674c23f1");
    check_field_offset(lv, s19674c23f2, ABISELECT(944,564), "S19674C23.s19674c23f2");
    check_field_offset(lv, s19674c23f3, ABISELECT(952,568), "S19674C23.s19674c23f3");
    check_field_offset(lv, s19674c23f4, ABISELECT(1080,660), "S19674C23.s19674c23f4");
    check_field_offset(lv, s19674c23f5, ABISELECT(1084,664), "S19674C23.s19674c23f5");
    check_field_offset(lv, s19674c23f6, ABISELECT(1088,668), "S19674C23.s19674c23f6");
    test_class_info(&lv, &cd_S19674C23);
    dp->~S19674C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C23(Test_S19674C23, "S19674C23", ABISELECT(3232,1968));

#else // __cplusplus

extern void _ZN9S19674C23C1Ev();
extern void _ZN9S19674C23D2Ev();
Name_Map name_map_S19674C23[] = {
  NSPAIR(_ZN9S19674C23C1Ev),
  NSPAIR(_ZN9S19674C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C10;
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S19674C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(2088,1300), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2208,1388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(1112,680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(1104,676), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(1104,676), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(2512,1556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2328,1448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(2320,1444), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(2320,1444), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(2656,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C8,    ABISELECT(2648,1632), //bcp->offset
    49, //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
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(2848,1744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19674C10,    ABISELECT(2848,1744), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(264,144), //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
    18, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(264,144), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C16,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19674C23[];
extern void _ZN9S19674C23D1Ev();
extern void _ZN9S19674C23D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void ABISELECT(_ZThn264_N9S19674C23D1Ev,_ZThn144_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C23D0Ev,_ZThn144_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn672_N9S19674C23D1Ev,_ZThn380_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C23D0Ev,_ZThn380_N9S19674C23D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn1104_N9S19674C23D1Ev,_ZThn676_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn1104_N9S19674C23D0Ev,_ZThn676_N9S19674C23D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn2088_N9S19674C23D1Ev,_ZThn1300_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn2088_N9S19674C23D0Ev,_ZThn1300_N9S19674C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn2320_N9S19674C23D1Ev,_ZThn1444_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn2320_N9S19674C23D0Ev,_ZThn1444_N9S19674C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn2648_N9S19674C23D1Ev,_ZThn1632_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn2648_N9S19674C23D0Ev,_ZThn1632_N9S19674C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19674C23D1Ev,_ZThn1744_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19674C23D0Ev,_ZThn1744_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19674C23[] = {
  ABISELECT(2320,1444),
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&_ZN9S19674C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C23D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C23D1Ev,_ZThn144_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C23D0Ev,_ZThn144_N9S19674C23D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C23D1Ev,_ZThn380_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C23D0Ev,_ZThn380_N9S19674C23D0Ev),
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev),
  ABISELECT(-2320,-1444),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(-2320,-1444),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev),
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev),
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S19674C23[];
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C16__9S19674C23[] = {
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C16__9S19674C23[] = {
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn2088_N9S19674C17D1Ev,_ZThn1300_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn2088_N9S19674C17D0Ev,_ZThn1300_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C16__9S19674C23[] = {
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn2648_N9S19674C17D1Ev,_ZThn1632_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn2648_N9S19674C17D0Ev,_ZThn1632_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C16__9S19674C23[] = {
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19674C17D1Ev,_ZThn1744_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19674C17D0Ev,_ZThn1744_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C16__9S19674C23[] = {
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn1104_N9S19674C17D1Ev,_ZThn676_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn1104_N9S19674C17D0Ev,_ZThn676_N9S19674C17D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C16__9S19674C23[] = {
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__A1__9S19674C23[] = {
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C16__A3__9S19674C23[] = {
  ABISELECT(1824,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn1824_N8S19674C8D1Ev,_ZThn1156_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn1824_N8S19674C8D0Ev,_ZThn1156_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C16__A3__9S19674C23[] = {
  ABISELECT(-1824,-1156),
  ABISELECT(-1824,-1156),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn840_N9S19674C12D1Ev,_ZThn532_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn840_N9S19674C12D0Ev,_ZThn532_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C16__A1__9S19674C23[] = {
  0,
  0,
  ABISELECT(-840,-532),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn1824_N9S19674C12D1Ev,_ZThn1156_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn1824_N9S19674C12D0Ev,_ZThn1156_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C16__A1__9S19674C23[] = {
  ABISELECT(-1824,-1156),
  ABISELECT(-1824,-1156),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn2088_N9S19674C16D1Ev,_ZThn1300_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn2088_N9S19674C16D0Ev,_ZThn1300_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C16__9S19674C23[] = {
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn2648_N9S19674C16D1Ev,_ZThn1632_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn2648_N9S19674C16D0Ev,_ZThn1632_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C16__9S19674C23[] = {
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19674C16D1Ev,_ZThn1744_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19674C16D0Ev,_ZThn1744_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C16__9S19674C23[] = {
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn1104_N9S19674C16D1Ev,_ZThn676_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn1104_N9S19674C16D0Ev,_ZThn676_N9S19674C16D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C16__9S19674C23[] = {
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C16__9S19674C23[] = {
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C23[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__9S19674C23[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C23[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__9S19674C23[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C12__A1__9S19674C23[] = {
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C12__A1__9S19674C23[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C12__9S19674C23[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C12__9S19674C23[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C23[] = {
  ABISELECT(-560,-332),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__A2__9S19674C23[] = {
  ABISELECT(560,332),
  ABISELECT(560,332),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C23[] = {
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10__9S19674C23[] = {
  ABISELECT(200,112),
  ABISELECT(-560,-332),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C10__9S19674C23[] = {
  ABISELECT(760,444),
  ABISELECT(760,444),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
static  VTT_ENTRY vtt_S19674C23[] = {
  {&(_ZTV9S19674C23[8]),  8,62},
  {&(_tg__ZTV9S19674C16__9S19674C23[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C16__9S19674C23[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C16__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C16__9S19674C23[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C16__9S19674C23[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C16__9S19674C23[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C16__A1__9S19674C23[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C16__A3__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C16__A3__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C16__A1__9S19674C23[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C16__A1__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C16__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C16__9S19674C23[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C16__9S19674C23[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C16__9S19674C23[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C16__9S19674C23[5]),  5,7},
  {&(_ZTV9S19674C23[32]),  32,62},
  {&(_ZTV9S19674C23[39]),  39,62},
  {&(_ZTV9S19674C23[47]),  47,62},
  {&(_ZTV9S19674C23[53]),  53,62},
  {&(_ZTV9S19674C23[60]),  60,62},
  {&(_ZTV9S19674C23[19]),  19,62},
  {&(_tg__ZTV8S19674C6__9S19674C23[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__9S19674C23[3]),  3,5},
  {&(_tg__ZTV9S19674C12__9S19674C23[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C12__A1__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C12__A1__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C12__9S19674C23[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C12__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A2__9S19674C23[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__A2__9S19674C23[3]),  3,5},
  {&(_tg__ZTV9S19674C10__9S19674C23[4]),  4,6},
  {&(_tg__ZTV8S19674C8__9S19674C10__9S19674C23[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S19674C10__9S19674C23[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19674C23[];
extern  VTBL_ENTRY _ZTV9S19674C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C23[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19674C16D0Ev,_ZThn676_N9S19674C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19674C16D0Ev,_ZThn1744_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19674C16D1Ev,_ZThn676_N9S19674C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19674C16D1Ev,_ZThn1744_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S19674C16D0Ev,_ZThn1632_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S19674C16D1Ev,_ZThn1632_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S19674C16D0Ev,_ZThn1300_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S19674C16D1Ev,_ZThn1300_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N9S19674C12D0Ev,_ZThn1156_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N9S19674C12D1Ev,_ZThn1156_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn840_N9S19674C12D0Ev,_ZThn532_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn840_N9S19674C12D1Ev,_ZThn532_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S19674C8D0Ev,_ZThn1156_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S19674C8D1Ev,_ZThn1156_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19674C17D0Ev,_ZThn676_N9S19674C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19674C17D0Ev,_ZThn1744_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19674C17D1Ev,_ZThn676_N9S19674C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19674C17D1Ev,_ZThn1744_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S19674C17D0Ev,_ZThn1632_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S19674C17D1Ev,_ZThn1632_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S19674C17D0Ev,_ZThn1300_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S19674C17D1Ev,_ZThn1300_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S19674C23D0Ev,_ZThn1632_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S19674C23D1Ev,_ZThn1632_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2320_N9S19674C23D0Ev,_ZThn1444_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2320_N9S19674C23D1Ev,_ZThn1444_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S19674C23D0Ev,_ZThn1300_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S19674C23D1Ev,_ZThn1300_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19674C23D0Ev,_ZThn1744_N9S19674C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19674C23D0Ev,_ZThn676_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19674C23D1Ev,_ZThn1744_N9S19674C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19674C23D1Ev,_ZThn676_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C23 = {  "S19674C23", // class name
  bases_S19674C23, 21,
  &(vtc_S19674C23[0]), // expected_vtbl_contents
  &(vtt_S19674C23[0]), // expected_vtt_contents
  ABISELECT(3232,1968), // object size
  NSPAIRA(_ZTI9S19674C23),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19674C23),62, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C23),37, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C22  : virtual S19674C12 , virtual S19674C2 , S19674C23 , virtual S19674C11 {
  ::S19674C10 s19674c22f0;
  int s19674c22f1;
  ::S19674C19 s19674c22f2;
  long double s19674c22f3;
  short s19674c22f4[3];
  int  :0;
  int s19674c22f6;
  ~S19674C22(); // tgen
  S19674C22(); // tgen
};
//SIG(-1 S19674C22) C1{ VBC2{ VBC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ m Fp[14]} BC6{ VBC4 BC5 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC5 BC6 Fi Fi Fi:28 Fi Fl} VBC8{ m FC9{ VBC10{ VBC4 v7} VBC3 vd FC11{ VBC6 BC4 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC3 Fi Fi FC10}[5] Fp} BC12{ VBC3 VBC2 BC13{ BC14{ VBC4 VBC6 VBC11 BC5 VBC3 vd v3 v4 Fi Fi FC5 Fc Fc Fi Fs FL} BC2 v5 v6 FU15{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC4 vd FC5 Fi[10] Fi FC10 Fs Fi FL} VBC16{ VBC5 BC2 BC3 VBC6 VBC10 vd Fi Fi Fi FD Fp Fp FC6 Fp FC3 Fi Fp Fi FC4[8]} FC11 Fi FC17{ VBC4 BC6 VBC11 FD Fp Fp} FD Fs[3] Fi:0 Fi}


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

static void Test_S19674C22()
{
  extern Class_Descriptor cd_S19674C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2468,6090)];
    init_test(&cd_S19674C22, buf);
    S19674C22 *dp, &lv = *(dp=new (buf) S19674C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39472,24356), "sizeof(S19674C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C22)");
    /*is_ambiguous_... S19674C22::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(4104,2496), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(4104,2496), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*), ABISELECT(4104,2496), "S19674C22");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*)(S19674C23*), ABISELECT(4104,2496), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(4104,2496), "S19674C22");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*), ABISELECT(4104,2496), "S19674C22");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(4104,2496), "S19674C22");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*)(S19674C11*), ABISELECT(4104,2496), "S19674C22");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(4104,2496), "S19674C22");
    check_base_class_offset(lv, (S19674C5*)(S19674C4*), ABISELECT(4104,2496), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(4224,2584), "S19674C22");
    /*is_ambiguous_... S19674C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C11*), ABISELECT(4224,2584), "S19674C22");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*)(S19674C11*), ABISELECT(4224,2584), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(3128,1876), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(3120,1872), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C12*), ABISELECT(3120,1872), "S19674C22");
    check_base_class_offset(lv, (S19674C6*)(S19674C23*), ABISELECT(3120,1872), "S19674C22");
    check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*)(S19674C23*), ABISELECT(3120,1872), "S19674C22");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*)(S19674C23*), ABISELECT(3120,1872), "S19674C22");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C11*), ABISELECT(3120,1872), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*), ABISELECT(2976,1796), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*), ABISELECT(2792,1688), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*), ABISELECT(2784,1684), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C12*), ABISELECT(2784,1684), "S19674C22");
    /*is_ambiguous_... S19674C23::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C23*), ABISELECT(2784,1684), "S19674C22");
    check_base_class_offset(lv, (S19674C2*), ABISELECT(4336,2640), "S19674C22");
    /*is_ambiguous_... S19674C22::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(34992,21488), "S19674C22");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*)(S19674C23*), ABISELECT(34984,21484), "S19674C22");
    check_base_class_offset(lv, (S19674C8*)(S19674C10*), ABISELECT(34984,21484), "S19674C22");
    /*is_ambiguous_... S19674C11::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C11*), ABISELECT(34984,21484), "S19674C22");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C10*), ABISELECT(35184,21596), "S19674C22");
    check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*)(S19674C23*), ABISELECT(35184,21596), "S19674C22");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*)(S19674C23*), ABISELECT(8,4), "S19674C22");
    check_base_class_offset(lv, (S19674C17*)(S19674C16*)(S19674C23*), 0, "S19674C22");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*)(S19674C23*), ABISELECT(456,256), "S19674C22");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*), ABISELECT(272,148), "S19674C22");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*), ABISELECT(264,144), "S19674C22");
    check_base_class_offset(lv, (S19674C12*)(S19674C16*)(S19674C23*), ABISELECT(264,144), "S19674C22");
    check_base_class_offset(lv, (S19674C16*)(S19674C23*), 0, "S19674C22");
    /*is_ambiguous_... S19674C23::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C23*), ABISELECT(672,380), "S19674C22");
    check_base_class_offset(lv, (S19674C23*), 0, "S19674C22");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C11*), ABISELECT(35760,21932), "S19674C22");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(35576,21824), "S19674C22");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(35568,21820), "S19674C22");
    check_base_class_offset(lv, (S19674C12*)(S19674C11*), ABISELECT(35568,21820), "S19674C22");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(35912,22012), "S19674C22");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(35904,22008), "S19674C22");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C11*), ABISELECT(35904,22008), "S19674C22");
    check_base_class_offset(lv, (S19674C4*)(S19674C11*), ABISELECT(39464,24352), "S19674C22");
    check_base_class_offset(lv, (S19674C11*), ABISELECT(35568,21820), "S19674C22");
    check_field_offset(lv, s19674c22f0, ABISELECT(1104,676), "S19674C22.s19674c22f0");
    check_field_offset(lv, s19674c22f1, ABISELECT(1808,1100), "S19674C22.s19674c22f1");
    check_field_offset(lv, s19674c22f2, ABISELECT(1824,1104), "S19674C22.s19674c22f2");
    check_field_offset(lv, s19674c22f3, ABISELECT(2752,1660), "S19674C22.s19674c22f3");
    check_field_offset(lv, s19674c22f4, ABISELECT(2768,1672), "S19674C22.s19674c22f4");
    check_field_offset(lv, s19674c22f6, ABISELECT(2776,1680), "S19674C22.s19674c22f6");
    test_class_info(&lv, &cd_S19674C22);
    dp->~S19674C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C22(Test_S19674C22, "S19674C22", ABISELECT(39472,24356));

#else // __cplusplus

extern void _ZN9S19674C22C1Ev();
extern void _ZN9S19674C22D1Ev();
Name_Map name_map_S19674C22[] = {
  NSPAIR(_ZN9S19674C22C1Ev),
  NSPAIR(_ZN9S19674C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C10;
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C23;
extern VTBL_ENTRY _ZTI9S19674C23[];
extern  VTBL_ENTRY _ZTV9S19674C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C23[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C4;
extern VTBL_ENTRY _ZTI8S19674C4[];
extern  VTBL_ENTRY _ZTV8S19674C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C4[];
extern Class_Descriptor cd_S19674C11;
extern VTBL_ENTRY _ZTI9S19674C11[];
extern  VTBL_ENTRY _ZTV9S19674C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C11[];
static Base_Class bases_S19674C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(4104,2496), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4224,2584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(3128,1876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C8,    ABISELECT(3120,1872), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(3120,1872), //bcp->offset
    36, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2976,1796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2792,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(2784,1684), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(2784,1684), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C2,    ABISELECT(4336,2640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(34992,21488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(34984,21484), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(35184,21596), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19674C10,    ABISELECT(35184,21596), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(264,144), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(264,144), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C23,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(35760,21932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(35576,21824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(35568,21820), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(35568,21820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35912,22012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(35904,22008), //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
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(35904,22008), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C4,    ABISELECT(39464,24352), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19674C11,    ABISELECT(35568,21820), //bcp->offset
    65, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19674C22[];
extern void _ZN9S19674C22D1Ev();
extern void _ZN9S19674C22D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void ABISELECT(_ZThn264_N9S19674C22D1Ev,_ZThn144_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C22D0Ev,_ZThn144_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn672_N9S19674C22D1Ev,_ZThn380_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C22D0Ev,_ZThn380_N9S19674C22D0Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn2784_N9S19674C22D1Ev,_ZThn1684_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn2784_N9S19674C22D0Ev,_ZThn1684_N9S19674C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn3120_N9S19674C22D1Ev,_ZThn1872_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn3120_N9S19674C22D0Ev,_ZThn1872_N9S19674C22D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn4104_N9S19674C22D1Ev,_ZThn2496_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn4104_N9S19674C22D0Ev,_ZThn2496_N9S19674C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C22D1Ev,_ZThn21484_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C22D0Ev,_ZThn21484_N9S19674C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C22D1Ev,_ZThn21596_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C22D0Ev,_ZThn21596_N9S19674C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn35568_N9S19674C22D1Ev,_ZThn21820_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn35568_N9S19674C22D0Ev,_ZThn21820_N9S19674C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N9S19674C22D1Ev,_ZTvn188_n32_N9S19674C22D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S19674C22D0Ev,_ZTvn188_n32_N9S19674C22D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn39464_N9S19674C22D1Ev,_ZThn24352_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn39464_N9S19674C22D0Ev,_ZThn24352_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19674C22[] = {
  ABISELECT(39464,24352),
  ABISELECT(35568,21820),
  ABISELECT(4336,2640),
  ABISELECT(2784,1684),
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&_ZN9S19674C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C22D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C22D1Ev,_ZThn144_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C22D0Ev,_ZThn144_N9S19674C22D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C22D1Ev,_ZThn380_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C22D0Ev,_ZThn380_N9S19674C22D0Ev),
  ABISELECT(-2784,-1684),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev),
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev),
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev),
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21820),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  ABISELECT(-35568,-21820),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev),
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  ABISELECT(-35904,-22008),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C22D1Ev,_ZTvn188_n32_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C22D0Ev,_ZTvn188_n32_N9S19674C22D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-39464,-24352),
  0,
  ABISELECT(-35360,-21856),
  ABISELECT(-39464,-24352),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
};
extern VTBL_ENTRY _ZTV9S19674C22[];
extern void _ZN9S19674C23D1Ev();
extern void _ZN9S19674C23D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C23__9S19674C22[] = {
  ABISELECT(2784,1684),
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&_ZN9S19674C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C23D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C169S19674C23__9S19674C22[] = {
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C169S19674C23__9S19674C22[] = {
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn4104_N9S19674C17D1Ev,_ZThn2496_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn4104_N9S19674C17D0Ev,_ZThn2496_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C169S19674C23__9S19674C22[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C17D1Ev,_ZThn21484_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C17D0Ev,_ZThn21484_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C169S19674C23__9S19674C22[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C17D1Ev,_ZThn21596_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C17D0Ev,_ZThn21596_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C169S19674C23__9S19674C22[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn3120_N9S19674C17D1Ev,_ZThn1872_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn3120_N9S19674C17D0Ev,_ZThn1872_N9S19674C17D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C169S19674C23__9S19674C22[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C23__A1__9S19674C22[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C169S19674C23__A3__9S19674C22[] = {
  ABISELECT(3840,2352),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn3840_N8S19674C8D1Ev,_ZThn2352_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn3840_N8S19674C8D0Ev,_ZThn2352_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C23__A3__9S19674C22[] = {
  ABISELECT(-3840,-2352),
  ABISELECT(-3840,-2352),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn2856_N9S19674C12D1Ev,_ZThn1728_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn2856_N9S19674C12D0Ev,_ZThn1728_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C169S19674C23__A1__9S19674C22[] = {
  0,
  0,
  ABISELECT(-2856,-1728),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-2856,-1728),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn3840_N9S19674C12D1Ev,_ZThn2352_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn3840_N9S19674C12D0Ev,_ZThn2352_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C169S19674C23__A1__9S19674C22[] = {
  ABISELECT(-3840,-2352),
  ABISELECT(-3840,-2352),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn4104_N9S19674C16D1Ev,_ZThn2496_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn4104_N9S19674C16D0Ev,_ZThn2496_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C169S19674C23__9S19674C22[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C16D1Ev,_ZThn21484_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C16D0Ev,_ZThn21484_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C169S19674C23__9S19674C22[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C16D1Ev,_ZThn21596_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C16D0Ev,_ZThn21596_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C169S19674C23__9S19674C22[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn3120_N9S19674C16D1Ev,_ZThn1872_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn3120_N9S19674C16D0Ev,_ZThn1872_N9S19674C16D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C169S19674C23__9S19674C22[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C169S19674C23__9S19674C22[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn3120_N9S19674C23D1Ev,_ZThn1872_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn3120_N9S19674C23D0Ev,_ZThn1872_N9S19674C23D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C23__9S19674C22[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn4104_N9S19674C23D1Ev,_ZThn2496_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn4104_N9S19674C23D0Ev,_ZThn2496_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C23__9S19674C22[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn2784_N9S19674C23D1Ev,_ZThn1684_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn2784_N9S19674C23D0Ev,_ZThn1684_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C23__9S19674C22[] = {
  ABISELECT(-2784,-1684),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C23D1Ev,_ZThn21484_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C23D0Ev,_ZThn21484_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C23__9S19674C22[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C23D1Ev,_ZThn21596_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C23D0Ev,_ZThn21596_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C23__9S19674C22[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZThn264_N9S19674C23D1Ev,_ZThn144_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C23D0Ev,_ZThn144_N9S19674C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__A1__9S19674C23__9S19674C22[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C23D1Ev,_ZThn144_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C23D0Ev,_ZThn144_N9S19674C23D0Ev),
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C22[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C12__A1__9S19674C22[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn1320_N8S19674C8D1Ev,_ZThn812_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn1320_N8S19674C8D0Ev,_ZThn812_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C12__A1__9S19674C22[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn336_N9S19674C12D1Ev,_ZThn188_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn336_N9S19674C12D0Ev,_ZThn188_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C12__9S19674C22[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn1320_N9S19674C12D1Ev,_ZThn812_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn1320_N9S19674C12D0Ev,_ZThn812_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C12__9S19674C22[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C22[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__9S19674C22[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C22[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__9S19674C22[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C22[] = {
  ABISELECT(-30880,-18988),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__A2__9S19674C22[] = {
  ABISELECT(30880,18988),
  ABISELECT(30880,18988),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C22[] = {
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10__9S19674C22[] = {
  ABISELECT(200,112),
  ABISELECT(-30880,-18988),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C10__9S19674C22[] = {
  ABISELECT(31080,19100),
  ABISELECT(31080,19100),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
extern void _ZN9S19674C11D1Ev();
extern void _ZN9S19674C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C11__9S19674C22[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN9S19674C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C11D0Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C11__A2__9S19674C22[] = {
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C11__A4__9S19674C22[] = {
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A4__9S19674C22[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C11__A2__9S19674C22[] = {
  0,
  0,
  ABISELECT(32448,19948),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(32448,19948),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C11__A2__9S19674C22[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__9S19674C22[] = {
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C69S19674C11__A5__9S19674C22[] = {
  ABISELECT(-31800,-19512),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A5__9S19674C22[] = {
  ABISELECT(31800,19512),
  ABISELECT(31800,19512),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C69S19674C11__A1__9S19674C22[] = {
  ABISELECT(31800,19512),
  ABISELECT(31800,19512),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C11__9S19674C22[] = {
  0,
  0,
  ABISELECT(32448,19948),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(32448,19948),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C11__9S19674C22[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev),
};
extern void ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__A__9S19674C11__9S19674C22[] = {
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A3__9S19674C11__9S19674C22[] = {
  ABISELECT(584,336),
  ABISELECT(-30880,-18988),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn3896_N9S19674C11D1Ev,_ZThn2532_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn3896_N9S19674C11D0Ev,_ZThn2532_N9S19674C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C11__9S19674C22[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35360,-21856),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void _ZN8S19674C4D1Ev();
extern void _ZN8S19674C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C22[] = {
  ABISELECT(-35360,-21856),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C4__9S19674C22[] = {
  ABISELECT(35360,21856),
  ABISELECT(35360,21856),
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev),
};
static  VTT_ENTRY vtt_S19674C22[] = {
  {&(_ZTV9S19674C22[11]),  11,93},
  {&(_tg__ZTV9S19674C23__9S19674C22[8]),  8,14},
  {&(_tg__ZTV9S19674C169S19674C23__9S19674C22[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C169S19674C23__9S19674C22[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C169S19674C23__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C169S19674C23__9S19674C22[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C169S19674C23__9S19674C22[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C169S19674C23__9S19674C22[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C169S19674C23__A1__9S19674C22[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C169S19674C23__A3__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C23__A3__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C169S19674C23__A1__9S19674C22[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C169S19674C23__A1__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C169S19674C23__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C169S19674C23__9S19674C22[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C169S19674C23__9S19674C22[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C169S19674C23__9S19674C22[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C169S19674C23__9S19674C22[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C23__9S19674C22[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C23__9S19674C22[3]),  3,5},
  {&(_tg__ZTV9S19674C12__9S19674C23__9S19674C22[6]),  6,8},
  {&(_tg__ZTV8S19674C8__A2__9S19674C23__9S19674C22[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C23__9S19674C22[5]),  5,7},
  {&(_tg__ZTV9S19674C129S19674C16__A1__9S19674C23__9S19674C22[5]),  5,7},
  {&(_ZTV9S19674C22[34]),  34,93},
  {&(_ZTV9S19674C22[43]),  43,93},
  {&(_ZTV9S19674C22[50]),  50,93},
  {&(_ZTV9S19674C22[56]),  56,93},
  {&(_ZTV9S19674C22[63]),  63,93},
  {&(_ZTV9S19674C22[22]),  22,93},
  {&(_ZTV9S19674C22[75]),  75,93},
  {&(_ZTV9S19674C22[81]),  81,93},
  {&(_ZTV9S19674C22[90]),  90,93},
  {&(_tg__ZTV9S19674C12__9S19674C22[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C12__A1__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C12__A1__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C12__9S19674C22[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C12__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C22[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A2__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__A2__9S19674C22[3]),  3,5},
  {&(_tg__ZTV9S19674C10__9S19674C22[4]),  4,6},
  {&(_tg__ZTV8S19674C8__9S19674C10__9S19674C22[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S19674C10__9S19674C22[3]),  3,5},
  {&(_tg__ZTV9S19674C11__9S19674C22[7]),  7,9},
  {&(_tg__ZTV9S19674C129S19674C11__A2__9S19674C22[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C11__A4__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A4__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C11__A2__9S19674C22[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C11__A2__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C69S19674C11__A1__9S19674C22[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C69S19674C11__A5__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A5__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C69S19674C11__A1__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C11__9S19674C22[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C11__9S19674C22[3]),  3,5},
  {&(_tg__ZTV8S19674C6__A__9S19674C11__9S19674C22[4]),  4,8},
  {&(_tg__ZTV8S19674C8__A3__9S19674C11__9S19674C22[4]),  4,6},
  {&(_tg__ZTV8S19674C4__9S19674C11__9S19674C22[5]),  5,8},
  {&(_tg__ZTV8S19674C4__9S19674C22[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S19674C4__9S19674C22[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19674C22[];
extern  VTBL_ENTRY _ZTV9S19674C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C22[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N9S19674C11D0Ev,_ZThn2532_N9S19674C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N9S19674C11D1Ev,_ZThn2532_N9S19674C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C23D0Ev,_ZThn21484_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C23D1Ev,_ZThn21484_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19674C23D0Ev,_ZThn1684_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19674C23D1Ev,_ZThn1684_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S19674C23D0Ev,_ZThn2496_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S19674C23D1Ev,_ZThn2496_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C23D0Ev,_ZThn21596_N9S19674C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S19674C23D0Ev,_ZThn1872_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C23D1Ev,_ZThn21596_N9S19674C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S19674C23D1Ev,_ZThn1872_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S19674C16D0Ev,_ZThn1872_N9S19674C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C16D0Ev,_ZThn21596_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S19674C16D1Ev,_ZThn1872_N9S19674C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C16D1Ev,_ZThn21596_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C16D0Ev,_ZThn21484_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C16D1Ev,_ZThn21484_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S19674C16D0Ev,_ZThn2496_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S19674C16D1Ev,_ZThn2496_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N9S19674C12D0Ev,_ZThn812_N9S19674C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N9S19674C12D0Ev,_ZThn2352_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N9S19674C12D1Ev,_ZThn812_N9S19674C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N9S19674C12D1Ev,_ZThn2352_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19674C12D0Ev,_ZThn188_N9S19674C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S19674C12D0Ev,_ZThn1728_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19674C12D1Ev,_ZThn188_N9S19674C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S19674C12D1Ev,_ZThn1728_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S19674C8D0Ev,_ZThn812_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S19674C8D0Ev,_ZThn2352_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S19674C8D1Ev,_ZThn812_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S19674C8D1Ev,_ZThn2352_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S19674C17D0Ev,_ZThn1872_N9S19674C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C17D0Ev,_ZThn21596_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S19674C17D1Ev,_ZThn1872_N9S19674C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C17D1Ev,_ZThn21596_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C17D0Ev,_ZThn21484_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C17D1Ev,_ZThn21484_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S19674C17D0Ev,_ZThn2496_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S19674C17D1Ev,_ZThn2496_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S19674C22D0Ev,_ZThn21820_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S19674C22D1Ev,_ZThn21820_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C22D0Ev,_ZThn21484_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C22D1Ev,_ZThn21484_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S19674C22D0Ev,_ZThn2496_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S19674C22D1Ev,_ZThn2496_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S19674C22D0Ev,_ZThn24352_N9S19674C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C22D0Ev,_ZThn21596_N9S19674C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S19674C22D0Ev,_ZThn1872_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S19674C22D1Ev,_ZThn24352_N9S19674C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C22D1Ev,_ZThn21596_N9S19674C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S19674C22D1Ev,_ZThn1872_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19674C22D0Ev,_ZThn1684_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19674C22D1Ev,_ZThn1684_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C22 = {  "S19674C22", // class name
  bases_S19674C22, 32,
  &(vtc_S19674C22[0]), // expected_vtbl_contents
  &(vtt_S19674C22[0]), // expected_vtt_contents
  ABISELECT(39472,24356), // object size
  NSPAIRA(_ZTI9S19674C22),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19674C22),93, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C22),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C21  : virtual S19674C7 , S19674C22 {
  int s19674c21f0;
  int s19674c21f1;
  virtual  ~S19674C21(); // _ZN9S19674C21D2Ev
  virtual void  v11(); // _ZN9S19674C213v11Ev
  S19674C21(); // tgen
};
//SIG(-1 S19674C21) C1{ VBC2{ m Fp[14]} BC3{ VBC4{ VBC5{ VBC6{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC2 BC7{ VBC6 BC2 Fs[6] FL[3] FU8{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v2 v3 FC7 FD[7] FC7 FL Fp[5]} BC2 BC7 Fi Fi Fi:28 Fi Fl} VBC9{ m FC10{ VBC11{ VBC6 v8} VBC5 vd FC12{ VBC7 BC6 Fc:6 Fc[8] FD FC2 FC2}[5] Fl Fi FC5 Fi Fi FC11}[5] Fp} BC13{ VBC5 VBC4 BC14{ BC15{ VBC6 VBC7 VBC12 BC2 VBC5 vd v4 v5 Fi Fi FC2 Fc Fc Fi Fs FL} BC4 v6 v7 FU16{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC6 vd FC2 Fi[10] Fi FC11 Fs Fi FL} VBC17{ VBC2 BC4 BC5 VBC7 VBC11 vd Fi Fi Fi FD Fp Fp FC7 Fp FC5 Fi Fp Fi FC6[8]} FC12 Fi FC18{ VBC6 BC7 VBC12 FD Fp Fp} FD Fs[3] Fi:0 Fi} vd v1 Fi Fi}


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

static void Test_S19674C21()
{
  extern Class_Descriptor cd_S19674C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2468,6092)];
    init_test(&cd_S19674C21, buf);
    S19674C21 *dp, &lv = *(dp=new (buf) S19674C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39472,24364), "sizeof(S19674C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C21)");
    /*is_ambiguous_... S19674C21::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(2792,1692), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(2792,1692), "S19674C21");
    /*is_ambiguous_... S19674C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C11*), ABISELECT(2792,1692), "S19674C21");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*)(S19674C11*), ABISELECT(2792,1692), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(4216,2560), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(4216,2560), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*), ABISELECT(4216,2560), "S19674C21");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(4216,2560), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(4216,2560), "S19674C21");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(4216,2560), "S19674C21");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(4216,2560), "S19674C21");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*)(S19674C11*), ABISELECT(4216,2560), "S19674C21");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(4216,2560), "S19674C21");
    check_base_class_offset(lv, (S19674C5*)(S19674C4*), ABISELECT(4216,2560), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(3240,1940), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(3232,1936), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C12*), ABISELECT(3232,1936), "S19674C21");
    check_base_class_offset(lv, (S19674C6*)(S19674C23*)(S19674C22*), ABISELECT(3232,1936), "S19674C21");
    check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(3232,1936), "S19674C21");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(3232,1936), "S19674C21");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C11*), ABISELECT(3232,1936), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*), ABISELECT(3096,1860), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*), ABISELECT(2912,1752), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*), ABISELECT(2904,1748), "S19674C21");
    /*is_ambiguous_... S19674C22::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C22*), ABISELECT(2904,1748), "S19674C21");
    /*is_ambiguous_... S19674C23::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C23*)(S19674C22*), ABISELECT(2904,1748), "S19674C21");
    check_base_class_offset(lv, (S19674C2*)(S19674C22*), ABISELECT(4336,2648), "S19674C21");
    /*is_ambiguous_... S19674C21::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(34992,21496), "S19674C21");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(34984,21492), "S19674C21");
    check_base_class_offset(lv, (S19674C8*)(S19674C10*), ABISELECT(34984,21492), "S19674C21");
    /*is_ambiguous_... S19674C11::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C11*), ABISELECT(34984,21492), "S19674C21");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C10*), ABISELECT(35184,21604), "S19674C21");
    check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(35184,21604), "S19674C21");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(8,4), "S19674C21");
    check_base_class_offset(lv, (S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*), 0, "S19674C21");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(456,256), "S19674C21");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(272,148), "S19674C21");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(264,144), "S19674C21");
    check_base_class_offset(lv, (S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*), ABISELECT(264,144), "S19674C21");
    check_base_class_offset(lv, (S19674C16*)(S19674C23*)(S19674C22*), 0, "S19674C21");
    /*is_ambiguous_... S19674C23::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C23*)(S19674C22*), ABISELECT(672,380), "S19674C21");
    check_base_class_offset(lv, (S19674C23*)(S19674C22*), 0, "S19674C21");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C11*), ABISELECT(35760,21940), "S19674C21");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(35576,21832), "S19674C21");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(35568,21828), "S19674C21");
    check_base_class_offset(lv, (S19674C12*)(S19674C11*), ABISELECT(35568,21828), "S19674C21");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(35912,22020), "S19674C21");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(35904,22016), "S19674C21");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C11*), ABISELECT(35904,22016), "S19674C21");
    check_base_class_offset(lv, (S19674C4*)(S19674C11*), ABISELECT(39464,24360), "S19674C21");
    check_base_class_offset(lv, (S19674C11*)(S19674C22*), ABISELECT(35568,21828), "S19674C21");
    check_base_class_offset(lv, (S19674C22*), 0, "S19674C21");
    check_field_offset(lv, s19674c21f0, ABISELECT(2780,1684), "S19674C21.s19674c21f0");
    check_field_offset(lv, s19674c21f1, ABISELECT(2784,1688), "S19674C21.s19674c21f1");
    test_class_info(&lv, &cd_S19674C21);
    dp->~S19674C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C21(Test_S19674C21, "S19674C21", ABISELECT(39472,24364));

#else // __cplusplus

extern void _ZN9S19674C21C1Ev();
extern void _ZN9S19674C21D2Ev();
Name_Map name_map_S19674C21[] = {
  NSPAIR(_ZN9S19674C21C1Ev),
  NSPAIR(_ZN9S19674C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C10;
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C23;
extern VTBL_ENTRY _ZTI9S19674C23[];
extern  VTBL_ENTRY _ZTV9S19674C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C23[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C4;
extern VTBL_ENTRY _ZTI8S19674C4[];
extern  VTBL_ENTRY _ZTV8S19674C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C4[];
extern Class_Descriptor cd_S19674C11;
extern VTBL_ENTRY _ZTI9S19674C11[];
extern  VTBL_ENTRY _ZTV9S19674C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C11[];
extern Class_Descriptor cd_S19674C22;
extern VTBL_ENTRY _ZTI9S19674C22[];
extern  VTBL_ENTRY _ZTV9S19674C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C22[];
static Base_Class bases_S19674C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(2792,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(4216,2560), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(3240,1940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C8,    ABISELECT(3232,1936), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(3232,1936), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(3096,1860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2912,1752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(2904,1748), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(2904,1748), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19674C2,    ABISELECT(4336,2648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(34992,21496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(34984,21492), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(35184,21604), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19674C10,    ABISELECT(35184,21604), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(264,144), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(264,144), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //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
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35760,21940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(35576,21832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(35568,21828), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(35568,21828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35912,22020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(35904,22016), //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
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(35904,22016), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C4,    ABISELECT(39464,24360), //bcp->offset
    86, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19674C11,    ABISELECT(35568,21828), //bcp->offset
    66, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C22,    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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19674C21[];
extern void _ZN9S19674C21D1Ev();
extern void _ZN9S19674C21D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C213v11Ev();
extern void ABISELECT(_ZThn264_N9S19674C21D1Ev,_ZThn144_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C21D0Ev,_ZThn144_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn672_N9S19674C21D1Ev,_ZThn380_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C21D0Ev,_ZThn380_N9S19674C21D0Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19674C21D1Ev,_ZTv0_n24_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn2904_N9S19674C21D1Ev,_ZThn1748_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C21D0Ev,_ZTv0_n24_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn2904_N9S19674C21D0Ev,_ZThn1748_N9S19674C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn3232_N9S19674C21D1Ev,_ZThn1936_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn3232_N9S19674C21D0Ev,_ZThn1936_N9S19674C21D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n24_N9S19674C21D1Ev,_ZTv0_n12_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn4216_N9S19674C21D1Ev,_ZThn2560_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C21D0Ev,_ZTv0_n12_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn4216_N9S19674C21D0Ev,_ZThn2560_N9S19674C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C21D1Ev,_ZTv0_n16_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C21D1Ev,_ZThn21492_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C21D0Ev,_ZTv0_n16_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C21D0Ev,_ZThn21492_N9S19674C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C21D1Ev,_ZThn21604_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C21D0Ev,_ZThn21604_N9S19674C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C21D1Ev,_ZTv0_n32_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn35568_N9S19674C21D1Ev,_ZThn21828_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C21D0Ev,_ZTv0_n32_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn35568_N9S19674C21D0Ev,_ZThn21828_N9S19674C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N9S19674C21D1Ev,_ZTvn188_n32_N9S19674C21D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S19674C21D0Ev,_ZTvn188_n32_N9S19674C21D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn39464_N9S19674C21D1Ev,_ZThn24360_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn39464_N9S19674C21D0Ev,_ZThn24360_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19674C21[] = {
  ABISELECT(39464,24360),
  ABISELECT(35568,21828),
  ABISELECT(4336,2648),
  ABISELECT(2904,1748),
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&_ZN9S19674C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C213v11Ev,
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C21D1Ev,_ZThn144_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C21D0Ev,_ZThn144_N9S19674C21D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C21D1Ev,_ZThn380_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C21D0Ev,_ZThn380_N9S19674C21D0Ev),
  ABISELECT(-2904,-1748),
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  ABISELECT(-2904,-1748),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C21D1Ev,_ZTv0_n24_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C21D0Ev,_ZTv0_n24_N9S19674C21D0Ev),
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C21D1Ev,_ZTv0_n12_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C21D0Ev,_ZTv0_n12_N9S19674C21D0Ev),
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C21D1Ev,_ZTv0_n16_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C21D0Ev,_ZTv0_n16_N9S19674C21D0Ev),
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21828),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-35568,-21828),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C21D1Ev,_ZTv0_n32_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C21D0Ev,_ZTv0_n32_N9S19674C21D0Ev),
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-35904,-22016),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C21D1Ev,_ZTvn188_n32_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C21D0Ev,_ZTvn188_n32_N9S19674C21D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-39464,-24360),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-39464,-24360),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev),
};
extern VTBL_ENTRY _ZTV9S19674C21[];
extern void _ZN9S19674C22D1Ev();
extern void _ZN9S19674C22D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C22__9S19674C21[] = {
  ABISELECT(39464,24360),
  ABISELECT(35568,21828),
  ABISELECT(4336,2648),
  ABISELECT(2904,1748),
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&_ZN9S19674C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C22D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C23D1Ev();
extern void _ZN9S19674C23D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(2904,1748),
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&_ZN9S19674C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C23D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C169S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C169S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn4216_N9S19674C17D1Ev,_ZThn2560_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn4216_N9S19674C17D0Ev,_ZThn2560_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C169S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C17D1Ev,_ZThn21492_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C17D0Ev,_ZThn21492_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C169S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C17D1Ev,_ZThn21604_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C17D0Ev,_ZThn21604_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C169S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn3232_N9S19674C17D1Ev,_ZThn1936_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn3232_N9S19674C17D0Ev,_ZThn1936_N9S19674C17D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C169S19674C239S19674C22__9S19674C21[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C239S19674C22__A1__9S19674C21[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C169S19674C239S19674C22__A3__9S19674C21[] = {
  ABISELECT(3952,2416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn3952_N8S19674C8D1Ev,_ZThn2416_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn3952_N8S19674C8D0Ev,_ZThn2416_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C239S19674C22__A3__9S19674C21[] = {
  ABISELECT(-3952,-2416),
  ABISELECT(-3952,-2416),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn2968_N9S19674C12D1Ev,_ZThn1792_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn2968_N9S19674C12D0Ev,_ZThn1792_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C169S19674C239S19674C22__A1__9S19674C21[] = {
  0,
  0,
  ABISELECT(-2968,-1792),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-2968,-1792),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn3952_N9S19674C12D1Ev,_ZThn2416_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn3952_N9S19674C12D0Ev,_ZThn2416_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C169S19674C239S19674C22__A1__9S19674C21[] = {
  ABISELECT(-3952,-2416),
  ABISELECT(-3952,-2416),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn4216_N9S19674C16D1Ev,_ZThn2560_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn4216_N9S19674C16D0Ev,_ZThn2560_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C169S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C16D1Ev,_ZThn21492_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C16D0Ev,_ZThn21492_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C169S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C16D1Ev,_ZThn21604_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C16D0Ev,_ZThn21604_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C169S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn3232_N9S19674C16D1Ev,_ZThn1936_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn3232_N9S19674C16D0Ev,_ZThn1936_N9S19674C16D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C169S19674C239S19674C22__9S19674C21[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C169S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn3232_N9S19674C23D1Ev,_ZThn1936_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn3232_N9S19674C23D0Ev,_ZThn1936_N9S19674C23D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C239S19674C22__9S19674C21[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn4216_N9S19674C23D1Ev,_ZThn2560_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn4216_N9S19674C23D0Ev,_ZThn2560_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn2904_N9S19674C23D1Ev,_ZThn1748_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn2904_N9S19674C23D0Ev,_ZThn1748_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(-2904,-1748),
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  ABISELECT(-2904,-1748),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C23D1Ev,_ZThn21492_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C23D0Ev,_ZThn21492_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C23D1Ev,_ZThn21604_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C23D0Ev,_ZThn21604_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZThn264_N9S19674C23D1Ev,_ZThn144_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C23D0Ev,_ZThn144_N9S19674C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__A1__9S19674C239S19674C22__9S19674C21[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C23D1Ev,_ZThn144_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C23D0Ev,_ZThn144_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn2904_N9S19674C22D1Ev,_ZThn1748_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn2904_N9S19674C22D0Ev,_ZThn1748_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C22__9S19674C21[] = {
  ABISELECT(-2904,-1748),
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  ABISELECT(-2904,-1748),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn3232_N9S19674C22D1Ev,_ZThn1936_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn3232_N9S19674C22D0Ev,_ZThn1936_N9S19674C22D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C22__9S19674C21[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn4216_N9S19674C22D1Ev,_ZThn2560_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn4216_N9S19674C22D0Ev,_ZThn2560_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C22__9S19674C21[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C22D1Ev,_ZThn21492_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn34984_N9S19674C22D0Ev,_ZThn21492_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C22__9S19674C21[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C22D1Ev,_ZThn21604_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn35184_N9S19674C22D0Ev,_ZThn21604_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C22__9S19674C21[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZThn264_N9S19674C22D1Ev,_ZThn144_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C22D0Ev,_ZThn144_N9S19674C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C23__A1__9S19674C22__9S19674C21[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C22D1Ev,_ZThn144_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C22D0Ev,_ZThn144_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn35568_N9S19674C22D1Ev,_ZThn21828_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn35568_N9S19674C22D0Ev,_ZThn21828_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C11__9S19674C22__9S19674C21[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21828),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-35568,-21828),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S19674C22D1Ev,_ZTvn188_n32_N9S19674C22D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S19674C22D0Ev,_ZTvn188_n32_N9S19674C22D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__9S19674C22__9S19674C21[] = {
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-35904,-22016),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C22D1Ev,_ZTvn188_n32_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C22D0Ev,_ZTvn188_n32_N9S19674C22D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn39464_N9S19674C22D1Ev,_ZThn24360_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn39464_N9S19674C22D0Ev,_ZThn24360_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C22__9S19674C21[] = {
  ABISELECT(-39464,-24360),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-39464,-24360),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C21[] = {
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C12__A1__9S19674C21[] = {
  ABISELECT(1312,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn1312_N8S19674C8D1Ev,_ZThn812_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn1312_N8S19674C8D0Ev,_ZThn812_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C12__A1__9S19674C21[] = {
  ABISELECT(-1312,-812),
  ABISELECT(-1312,-812),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn328_N9S19674C12D1Ev,_ZThn188_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn328_N9S19674C12D0Ev,_ZThn188_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C12__9S19674C21[] = {
  0,
  0,
  ABISELECT(-328,-188),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-328,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn1312_N9S19674C12D1Ev,_ZThn812_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn1312_N9S19674C12D0Ev,_ZThn812_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C12__9S19674C21[] = {
  ABISELECT(-1312,-812),
  ABISELECT(-1312,-812),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C21[] = {
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__9S19674C21[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C21[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__9S19674C21[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C21[] = {
  ABISELECT(-30768,-18932),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__A2__9S19674C21[] = {
  ABISELECT(30768,18932),
  ABISELECT(30768,18932),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C21[] = {
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10__9S19674C21[] = {
  ABISELECT(200,112),
  ABISELECT(-30768,-18932),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C10__9S19674C21[] = {
  ABISELECT(30968,19044),
  ABISELECT(30968,19044),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
extern void _ZN9S19674C11D1Ev();
extern void _ZN9S19674C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C11__9S19674C21[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN9S19674C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C11D0Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C11__A2__9S19674C21[] = {
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C11__A4__9S19674C21[] = {
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A4__9S19674C21[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C11__A2__9S19674C21[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C11__A2__9S19674C21[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__9S19674C21[] = {
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C69S19674C11__A5__9S19674C21[] = {
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A5__9S19674C21[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C69S19674C11__A1__9S19674C21[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C11__9S19674C21[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C11__9S19674C21[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev),
};
extern void ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__A__9S19674C11__9S19674C21[] = {
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A3__9S19674C11__9S19674C21[] = {
  ABISELECT(584,336),
  ABISELECT(-30768,-18932),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn3896_N9S19674C11D1Ev,_ZThn2532_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn3896_N9S19674C11D0Ev,_ZThn2532_N9S19674C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C11__9S19674C21[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void _ZN8S19674C4D1Ev();
extern void _ZN8S19674C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C21[] = {
  ABISELECT(-35248,-21800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C4__9S19674C21[] = {
  ABISELECT(35248,21800),
  ABISELECT(35248,21800),
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev),
};
static  VTT_ENTRY vtt_S19674C21[] = {
  {&(_ZTV9S19674C21[11]),  11,94},
  {&(_tg__ZTV9S19674C22__9S19674C21[11]),  11,17},
  {&(_tg__ZTV9S19674C239S19674C22__9S19674C21[8]),  8,14},
  {&(_tg__ZTV9S19674C169S19674C239S19674C22__9S19674C21[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C169S19674C239S19674C22__9S19674C21[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C169S19674C239S19674C22__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C169S19674C239S19674C22__9S19674C21[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C169S19674C239S19674C22__9S19674C21[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C169S19674C239S19674C22__9S19674C21[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C169S19674C239S19674C22__A1__9S19674C21[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C169S19674C239S19674C22__A3__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C239S19674C22__A3__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C169S19674C239S19674C22__A1__9S19674C21[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C169S19674C239S19674C22__A1__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C169S19674C239S19674C22__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C169S19674C239S19674C22__9S19674C21[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C169S19674C239S19674C22__9S19674C21[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C169S19674C239S19674C22__9S19674C21[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C169S19674C239S19674C22__9S19674C21[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C239S19674C22__9S19674C21[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C239S19674C22__9S19674C21[3]),  3,5},
  {&(_tg__ZTV9S19674C12__9S19674C239S19674C22__9S19674C21[6]),  6,8},
  {&(_tg__ZTV8S19674C8__A2__9S19674C239S19674C22__9S19674C21[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C239S19674C22__9S19674C21[5]),  5,7},
  {&(_tg__ZTV9S19674C129S19674C16__A1__9S19674C239S19674C22__9S19674C21[5]),  5,7},
  {&(_tg__ZTV9S19674C12__9S19674C22__9S19674C21[6]),  6,8},
  {&(_tg__ZTV8S19674C6__9S19674C22__9S19674C21[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C22__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A2__9S19674C22__9S19674C21[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C22__9S19674C21[5]),  5,7},
  {&(_tg__ZTV9S19674C129S19674C169S19674C23__A1__9S19674C22__9S19674C21[5]),  5,7},
  {&(_tg__ZTV9S19674C11__9S19674C22__9S19674C21[10]),  10,12},
  {&(_tg__ZTV8S19674C69S19674C11__A1__9S19674C22__9S19674C21[4]),  4,8},
  {&(_tg__ZTV8S19674C4__9S19674C22__9S19674C21[5]),  5,8},
  {&(_ZTV9S19674C21[35]),  35,94},
  {&(_ZTV9S19674C21[44]),  44,94},
  {&(_ZTV9S19674C21[51]),  51,94},
  {&(_ZTV9S19674C21[57]),  57,94},
  {&(_ZTV9S19674C21[64]),  64,94},
  {&(_ZTV9S19674C21[23]),  23,94},
  {&(_ZTV9S19674C21[76]),  76,94},
  {&(_ZTV9S19674C21[82]),  82,94},
  {&(_ZTV9S19674C21[91]),  91,94},
  {&(_tg__ZTV9S19674C12__9S19674C21[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C12__A1__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C12__A1__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C12__9S19674C21[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C12__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C21[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A2__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__A2__9S19674C21[3]),  3,5},
  {&(_tg__ZTV9S19674C10__9S19674C21[4]),  4,6},
  {&(_tg__ZTV8S19674C8__9S19674C10__9S19674C21[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S19674C10__9S19674C21[3]),  3,5},
  {&(_tg__ZTV9S19674C11__9S19674C21[7]),  7,9},
  {&(_tg__ZTV9S19674C129S19674C11__A2__9S19674C21[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C11__A4__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A4__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C11__A2__9S19674C21[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C11__A2__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C69S19674C11__A1__9S19674C21[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C69S19674C11__A5__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A5__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C69S19674C11__A1__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C11__9S19674C21[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C11__9S19674C21[3]),  3,5},
  {&(_tg__ZTV8S19674C6__A__9S19674C11__9S19674C21[4]),  4,8},
  {&(_tg__ZTV8S19674C8__A3__9S19674C11__9S19674C21[4]),  4,6},
  {&(_tg__ZTV8S19674C4__9S19674C11__9S19674C21[5]),  5,8},
  {&(_tg__ZTV8S19674C4__9S19674C21[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S19674C4__9S19674C21[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19674C21[];
extern  VTBL_ENTRY _ZTV9S19674C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C21[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N9S19674C11D0Ev,_ZThn2532_N9S19674C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N9S19674C11D1Ev,_ZThn2532_N9S19674C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S19674C22D0Ev,_ZThn21828_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S19674C22D1Ev,_ZThn21828_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C22D0Ev,_ZThn21492_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C22D1Ev,_ZThn21492_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S19674C22D0Ev,_ZThn2560_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S19674C22D1Ev,_ZThn2560_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S19674C22D0Ev,_ZThn24360_N9S19674C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C22D0Ev,_ZThn21604_N9S19674C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S19674C22D0Ev,_ZThn1936_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S19674C22D1Ev,_ZThn24360_N9S19674C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C22D1Ev,_ZThn21604_N9S19674C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S19674C22D1Ev,_ZThn1936_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S19674C22D0Ev,_ZThn1748_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S19674C22D1Ev,_ZThn1748_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C23D0Ev,_ZThn21492_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C23D1Ev,_ZThn21492_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S19674C23D0Ev,_ZThn1748_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S19674C23D1Ev,_ZThn1748_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S19674C23D0Ev,_ZThn2560_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S19674C23D1Ev,_ZThn2560_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C23D0Ev,_ZThn21604_N9S19674C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S19674C23D0Ev,_ZThn1936_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C23D1Ev,_ZThn21604_N9S19674C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S19674C23D1Ev,_ZThn1936_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S19674C16D0Ev,_ZThn1936_N9S19674C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C16D0Ev,_ZThn21604_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S19674C16D1Ev,_ZThn1936_N9S19674C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C16D1Ev,_ZThn21604_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C16D0Ev,_ZThn21492_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C16D1Ev,_ZThn21492_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S19674C16D0Ev,_ZThn2560_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S19674C16D1Ev,_ZThn2560_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N9S19674C12D0Ev,_ZThn812_N9S19674C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N9S19674C12D0Ev,_ZThn2416_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N9S19674C12D1Ev,_ZThn812_N9S19674C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N9S19674C12D1Ev,_ZThn2416_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19674C12D0Ev,_ZThn188_N9S19674C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2968_N9S19674C12D0Ev,_ZThn1792_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19674C12D1Ev,_ZThn188_N9S19674C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2968_N9S19674C12D1Ev,_ZThn1792_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19674C8D0Ev,_ZThn812_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N8S19674C8D0Ev,_ZThn2416_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19674C8D1Ev,_ZThn812_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N8S19674C8D1Ev,_ZThn2416_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S19674C17D0Ev,_ZThn1936_N9S19674C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C17D0Ev,_ZThn21604_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S19674C17D1Ev,_ZThn1936_N9S19674C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C17D1Ev,_ZThn21604_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C17D0Ev,_ZThn21492_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C17D1Ev,_ZThn21492_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S19674C17D0Ev,_ZThn2560_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S19674C17D1Ev,_ZThn2560_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C21D0Ev,_ZTv0_n32_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S19674C21D0Ev,_ZThn21828_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C21D1Ev,_ZTv0_n32_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S19674C21D1Ev,_ZThn21828_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C21D0Ev,_ZTv0_n16_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C21D0Ev,_ZThn21492_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C21D1Ev,_ZTv0_n16_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S19674C21D1Ev,_ZThn21492_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C21D0Ev,_ZTv0_n12_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S19674C21D0Ev,_ZThn2560_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C21D1Ev,_ZTv0_n12_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S19674C21D1Ev,_ZThn2560_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S19674C21D0Ev,_ZThn24360_N9S19674C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C21D0Ev,_ZThn21604_N9S19674C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S19674C21D0Ev,_ZThn1936_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S19674C21D1Ev,_ZThn24360_N9S19674C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S19674C21D1Ev,_ZThn21604_N9S19674C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S19674C21D1Ev,_ZThn1936_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C21D0Ev,_ZTv0_n24_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S19674C21D0Ev,_ZThn1748_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C21D1Ev,_ZTv0_n24_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S19674C21D1Ev,_ZThn1748_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C21 = {  "S19674C21", // class name
  bases_S19674C21, 33,
  &(vtc_S19674C21[0]), // expected_vtbl_contents
  &(vtt_S19674C21[0]), // expected_vtt_contents
  ABISELECT(39472,24364), // object size
  NSPAIRA(_ZTI9S19674C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19674C21),94, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C21),74, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C24  : S19674C16 , virtual S19674C17 , S19674C8 {
  virtual void  v12(); // _ZN9S19674C243v12Ev
  ~S19674C24(); // tgen
  S19674C24(); // tgen
};
//SIG(-1 S19674C24) C1{ BC2{ BC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ VBC4 BC6{ m Fp[14]} Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC8{ VBC5 BC4 Fc:6 Fc[8] FD FC6 FC6} BC6 VBC9{ VBC4 VBC6 BC5 v2 v3 FC5 FD[7] FC5 FL Fp[5]} vd v4 v5 Fi Fi FC6 Fc Fc Fi Fs FL} BC10{ VBC9 BC6 BC5 Fi Fi Fi:28 Fi Fl} v6 v7 FU11{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} VBC3 BC5 v1}


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

static void Test_S19674C24()
{
  extern Class_Descriptor cd_S19674C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(184,436)];
    init_test(&cd_S19674C24, buf);
    S19674C24 *dp, &lv = *(dp=new (buf) S19674C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2928,1740), "sizeof(S19674C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C24)");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*), ABISELECT(864,492), "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(864,492), "S19674C24");
    check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(864,492), "S19674C24");
    check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(864,492), "S19674C24");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(864,492), "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*), ABISELECT(864,492), "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(864,492), "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(992,584), "S19674C24");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*), ABISELECT(984,580), "S19674C24");
    check_base_class_offset(lv, (S19674C8*)(S19674C10*), ABISELECT(984,580), "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*), ABISELECT(984,580), "S19674C24");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C10*), ABISELECT(1184,692), "S19674C24");
    check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*), ABISELECT(1184,692), "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C10*)(S19674C17*), ABISELECT(1184,692), "S19674C24");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*), ABISELECT(8,4), "S19674C24");
    /*is_ambiguous_... S19674C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(2552,1540), "S19674C24");
    check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(1576,920), "S19674C24");
    check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(1568,916), "S19674C24");
    check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*), ABISELECT(1568,916), "S19674C24");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*), ABISELECT(1568,916), "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C17*), ABISELECT(1568,916), "S19674C24");
    check_base_class_offset(lv, (S19674C17*)(S19674C16*), 0, "S19674C24");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*), ABISELECT(456,256), "S19674C24");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(272,148), "S19674C24");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(264,144), "S19674C24");
    check_base_class_offset(lv, (S19674C12*)(S19674C16*), ABISELECT(264,144), "S19674C24");
    check_base_class_offset(lv, (S19674C16*), 0, "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*), ABISELECT(2672,1600), "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C17*), ABISELECT(2664,1596), "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(680,384), "S19674C24");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*), ABISELECT(672,380), "S19674C24");
    test_class_info(&lv, &cd_S19674C24);
    dp->~S19674C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C24(Test_S19674C24, "S19674C24", ABISELECT(2928,1740));

#else // __cplusplus

extern void _ZN9S19674C24C1Ev();
extern void _ZN9S19674C24D1Ev();
Name_Map name_map_S19674C24[] = {
  NSPAIR(_ZN9S19674C24C1Ev),
  NSPAIR(_ZN9S19674C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C10;
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
static Base_Class bases_S19674C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(864,492), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(992,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
    2, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(984,580), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(1184,692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C10,    ABISELECT(1184,692), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2552,1540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1576,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(1568,916), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(1568,916), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(264,144), //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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(264,144), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19674C16,    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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(2672,1600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    ABISELECT(2664,1596), //bcp->offset
    56, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(680,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(672,380), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19674C24[];
extern void _ZN9S19674C24D1Ev();
extern void _ZN9S19674C24D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C243v12Ev();
extern void ABISELECT(_ZThn264_N9S19674C24D1Ev,_ZThn144_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C24D0Ev,_ZThn144_N9S19674C24D0Ev)();
extern void ABISELECT(_ZThn672_N9S19674C24D1Ev,_ZThn380_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C24D0Ev,_ZThn380_N9S19674C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C24D1Ev,_ZTv0_n12_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn864_N9S19674C24D1Ev,_ZThn492_N9S19674C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C24D0Ev,_ZTv0_n12_N9S19674C24D0Ev)();
extern void ABISELECT(_ZThn864_N9S19674C24D0Ev,_ZThn492_N9S19674C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C24D1Ev,_ZTv0_n16_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn984_N9S19674C24D1Ev,_ZThn580_N9S19674C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C24D0Ev,_ZTv0_n16_N9S19674C24D0Ev)();
extern void ABISELECT(_ZThn984_N9S19674C24D0Ev,_ZThn580_N9S19674C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn1184_N9S19674C24D1Ev,_ZThn692_N9S19674C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev)();
extern void ABISELECT(_ZThn1184_N9S19674C24D0Ev,_ZThn692_N9S19674C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn1568_N9S19674C24D1Ev,_ZThn916_N9S19674C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev)();
extern void ABISELECT(_ZThn1568_N9S19674C24D0Ev,_ZThn916_N9S19674C24D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n64_N9S19674C24D1Ev,_ZTv0_n32_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn2664_N9S19674C24D1Ev,_ZThn1596_N9S19674C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C24D0Ev,_ZTv0_n32_N9S19674C24D0Ev)();
extern void ABISELECT(_ZThn2664_N9S19674C24D0Ev,_ZThn1596_N9S19674C24D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY vtc_S19674C24[] = {
  ABISELECT(2664,1596),
  ABISELECT(2552,1540),
  ABISELECT(1568,916),
  ABISELECT(1184,692),
  ABISELECT(984,580),
  ABISELECT(864,492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&_ZN9S19674C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C24D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C243v12Ev,
  ABISELECT(2288,1396),
  ABISELECT(1304,772),
  ABISELECT(600,348),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C24D1Ev,_ZThn144_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C24D0Ev,_ZThn144_N9S19674C24D0Ev),
  ABISELECT(192,112),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C24D1Ev,_ZThn380_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C24D0Ev,_ZThn380_N9S19674C24D0Ev),
  ABISELECT(-864,-492),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C24D1Ev,_ZTv0_n12_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C24D0Ev,_ZTv0_n12_N9S19674C24D0Ev),
  ABISELECT(-984,-580),
  ABISELECT(-120,-88),
  ABISELECT(-984,-580),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C24D1Ev,_ZTv0_n16_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C24D0Ev,_ZTv0_n16_N9S19674C24D0Ev),
  ABISELECT(-1184,-692),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-1184,-692),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev),
  0,
  0,
  ABISELECT(-1568,-916),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1568,-916),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  0,
  0,
  ABISELECT(-2664,-1596),
  ABISELECT(-112,-56),
  ABISELECT(-1096,-680),
  ABISELECT(-1480,-904),
  ABISELECT(-1680,-1016),
  ABISELECT(-1800,-1104),
  ABISELECT(-2664,-1596),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C24D1Ev,_ZTv0_n32_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C24D0Ev,_ZTv0_n32_N9S19674C24D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern VTBL_ENTRY _ZTV9S19674C24[];
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C16__9S19674C24[] = {
  ABISELECT(2552,1540),
  ABISELECT(1568,916),
  ABISELECT(1184,692),
  ABISELECT(984,580),
  ABISELECT(864,492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C16__9S19674C24[] = {
  ABISELECT(2552,1540),
  ABISELECT(1568,916),
  ABISELECT(1184,692),
  ABISELECT(984,580),
  ABISELECT(864,492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn864_N9S19674C17D1Ev,_ZThn492_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn864_N9S19674C17D0Ev,_ZThn492_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C16__9S19674C24[] = {
  ABISELECT(-864,-492),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn984_N9S19674C17D1Ev,_ZThn580_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn984_N9S19674C17D0Ev,_ZThn580_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C16__9S19674C24[] = {
  ABISELECT(-984,-580),
  ABISELECT(-120,-88),
  ABISELECT(-984,-580),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn1184_N9S19674C17D1Ev,_ZThn692_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn1184_N9S19674C17D0Ev,_ZThn692_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C16__9S19674C24[] = {
  ABISELECT(-1184,-692),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-1184,-692),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn1568_N9S19674C17D1Ev,_ZThn916_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn1568_N9S19674C17D0Ev,_ZThn916_N9S19674C17D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C16__9S19674C24[] = {
  0,
  0,
  ABISELECT(-1568,-916),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1568,-916),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__9S19674C24[] = {
  ABISELECT(2288,1396),
  ABISELECT(1304,772),
  ABISELECT(600,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C16__A2__9S19674C24[] = {
  ABISELECT(600,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn600_N8S19674C8D1Ev,_ZThn348_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn600_N8S19674C8D0Ev,_ZThn348_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C16__A2__9S19674C24[] = {
  ABISELECT(-600,-348),
  ABISELECT(-600,-348),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn1304_N9S19674C12D1Ev,_ZThn772_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn1304_N9S19674C12D0Ev,_ZThn772_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C16__9S19674C24[] = {
  0,
  0,
  ABISELECT(-1304,-772),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1304,-772),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn600_N9S19674C12D1Ev,_ZThn348_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn600_N9S19674C12D0Ev,_ZThn348_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C16__9S19674C24[] = {
  ABISELECT(-600,-348),
  ABISELECT(-600,-348),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn864_N9S19674C16D1Ev,_ZThn492_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn864_N9S19674C16D0Ev,_ZThn492_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C16__9S19674C24[] = {
  ABISELECT(-864,-492),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn984_N9S19674C16D1Ev,_ZThn580_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn984_N9S19674C16D0Ev,_ZThn580_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C16__9S19674C24[] = {
  ABISELECT(-984,-580),
  ABISELECT(-120,-88),
  ABISELECT(-984,-580),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn1184_N9S19674C16D1Ev,_ZThn692_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn1184_N9S19674C16D0Ev,_ZThn692_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C16__9S19674C24[] = {
  ABISELECT(-1184,-692),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-1184,-692),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn1568_N9S19674C16D1Ev,_ZThn916_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn1568_N9S19674C16D0Ev,_ZThn916_N9S19674C16D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C16__9S19674C24[] = {
  0,
  0,
  ABISELECT(-1568,-916),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1568,-916),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C16__9S19674C24[] = {
  ABISELECT(2288,1396),
  ABISELECT(1304,772),
  ABISELECT(600,348),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A__9S19674C24[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn192_N8S19674C8D1Ev,_ZThn112_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn192_N8S19674C8D0Ev,_ZThn112_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__A__9S19674C24[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C24[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__9S19674C24[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C24[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10__9S19674C24[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C10__9S19674C24[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C24[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__A1__9S19674C24[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__A1__9S19674C24[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__9S19674C24[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C17__A1__9S19674C24[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1096,-680),
  ABISELECT(-1480,-904),
  ABISELECT(-1680,-1016),
  ABISELECT(-1800,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C17__A1__9S19674C24[] = {
  ABISELECT(1800,1104),
  ABISELECT(1800,1104),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C17__A1__9S19674C24[] = {
  ABISELECT(1680,1016),
  ABISELECT(-120,-88),
  ABISELECT(1680,1016),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C17__A1__9S19674C24[] = {
  ABISELECT(1480,904),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(1480,904),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C17__A1__9S19674C24[] = {
  0,
  0,
  ABISELECT(1096,680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1096,680),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
static  VTT_ENTRY vtt_S19674C24[] = {
  {&(_ZTV9S19674C24[8]),  8,70},
  {&(_tg__ZTV9S19674C16__9S19674C24[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C16__9S19674C24[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C16__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C16__9S19674C24[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C16__9S19674C24[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C16__9S19674C24[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C16__9S19674C24[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C16__A2__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C16__A2__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C16__9S19674C24[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C16__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C16__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C16__9S19674C24[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C16__9S19674C24[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C16__9S19674C24[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C16__9S19674C24[5]),  5,7},
  {&(_tg__ZTV8S19674C8__A__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__A__9S19674C24[3]),  3,5},
  {&(_ZTV9S19674C24[30]),  30,70},
  {&(_ZTV9S19674C24[36]),  36,70},
  {&(_ZTV9S19674C24[43]),  43,70},
  {&(_ZTV9S19674C24[52]),  52,70},
  {&(_ZTV9S19674C24[20]),  20,70},
  {&(_ZTV9S19674C24[66]),  66,70},
  {&(_ZTV9S19674C24[25]),  25,70},
  {&(_tg__ZTV8S19674C8__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__9S19674C24[3]),  3,5},
  {&(_tg__ZTV9S19674C10__9S19674C24[4]),  4,6},
  {&(_tg__ZTV8S19674C8__9S19674C10__9S19674C24[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S19674C10__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C24[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__A1__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__A1__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__9S19674C24[3]),  3,5},
  {&(_tg__ZTV9S19674C17__A1__9S19674C24[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C17__A1__9S19674C24[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C17__A1__9S19674C24[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C17__A1__9S19674C24[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C17__A1__9S19674C24[7]),  7,11},
};
extern VTBL_ENTRY _ZTI9S19674C24[];
extern  VTBL_ENTRY _ZTV9S19674C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C24[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S19674C16D0Ev,_ZThn916_N9S19674C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S19674C16D0Ev,_ZThn692_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S19674C16D1Ev,_ZThn916_N9S19674C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S19674C16D1Ev,_ZThn692_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S19674C16D0Ev,_ZThn580_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S19674C16D1Ev,_ZThn580_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19674C16D0Ev,_ZThn492_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19674C16D1Ev,_ZThn492_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn600_N9S19674C12D0Ev,_ZThn348_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn600_N9S19674C12D1Ev,_ZThn348_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1304_N9S19674C12D0Ev,_ZThn772_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1304_N9S19674C12D1Ev,_ZThn772_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19674C8D0Ev,_ZThn112_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn600_N8S19674C8D0Ev,_ZThn348_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19674C8D1Ev,_ZThn112_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn600_N8S19674C8D1Ev,_ZThn348_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S19674C17D0Ev,_ZThn916_N9S19674C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S19674C17D0Ev,_ZThn692_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S19674C17D1Ev,_ZThn916_N9S19674C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S19674C17D1Ev,_ZThn692_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S19674C17D0Ev,_ZThn580_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S19674C17D1Ev,_ZThn580_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19674C17D0Ev,_ZThn492_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19674C17D1Ev,_ZThn492_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C24D0Ev,_ZTv0_n32_N9S19674C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2664_N9S19674C24D0Ev,_ZThn1596_N9S19674C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C24D1Ev,_ZTv0_n32_N9S19674C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2664_N9S19674C24D1Ev,_ZThn1596_N9S19674C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S19674C24D0Ev,_ZThn916_N9S19674C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S19674C24D0Ev,_ZThn692_N9S19674C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S19674C24D1Ev,_ZThn916_N9S19674C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S19674C24D1Ev,_ZThn692_N9S19674C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C24D0Ev,_ZTv0_n16_N9S19674C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S19674C24D0Ev,_ZThn580_N9S19674C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C24D1Ev,_ZTv0_n16_N9S19674C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S19674C24D1Ev,_ZThn580_N9S19674C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C24D0Ev,_ZTv0_n12_N9S19674C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19674C24D0Ev,_ZThn492_N9S19674C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C24D1Ev,_ZTv0_n12_N9S19674C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19674C24D1Ev,_ZThn492_N9S19674C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C24 = {  "S19674C24", // class name
  bases_S19674C24, 20,
  &(vtc_S19674C24[0]), // expected_vtbl_contents
  &(vtt_S19674C24[0]), // expected_vtt_contents
  ABISELECT(2928,1740), // object size
  NSPAIRA(_ZTI9S19674C24),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19674C24),70, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C24),40, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S19674C25  {
  int s19674c25f0;
  int s19674c25f1;
  short s19674c25f2[2];
  int s19674c25f3;
  void *s19674c25f4;
  void *s19674c25f5[6];
  void *s19674c25f6[10];
  short s19674c25f7[7];
  __tsi64 s19674c25f8;
  void  mf19674c25(); // _ZN9S19674C2510mf19674c25Ev
};
//SIG(1 S19674C25) U1{ m Fi Fi Fs[2] Fi Fp Fp[6] Fp[10] Fs[7] FL}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19674C20  : S19674C21 , virtual S19674C24 , virtual S19674C16 {
  ::S19674C25 s19674c20f0[3];
  short s19674c20f1;
  virtual void  v13(); // _ZN9S19674C203v13Ev
  virtual void  v14(); // _ZN9S19674C203v14Ev
  ~S19674C20(); // tgen
  S19674C20(); // tgen
};
//SIG(-1 S19674C20) C1{ BC2{ VBC3{ m Fp[14]} BC4{ VBC5{ VBC6{ VBC7{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3 BC8{ VBC7 BC3 Fs[6] FL[3] FU9{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v3 v4 FC8 FD[7] FC8 FL Fp[5]} BC3 BC8 Fi Fi Fi:28 Fi Fl} VBC10{ m FC11{ VBC12{ VBC7 v9} VBC6 vd FC13{ VBC8 BC7 Fc:6 Fc[8] FD FC3 FC3}[5] Fl Fi FC6 Fi Fi FC12}[5] Fp} BC14{ VBC6 VBC5 BC15{ BC16{ VBC7 VBC8 VBC13 BC3 VBC6 vd v5 v6 Fi Fi FC3 Fc Fc Fi Fs FL} BC5 v7 v8 FU17{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC7 vd FC3 Fi[10] Fi FC12 Fs Fi FL} VBC18{ VBC3 BC5 BC6 VBC8 VBC12 vd Fi Fi Fi FD Fp Fp FC8 Fp FC6 Fi Fp Fi FC7[8]} FC13 Fi FC19{ VBC7 BC8 VBC13 FD Fp Fp} FD Fs[3] Fi:0 Fi} vd v10 Fi Fi} VBC20{ BC15 VBC16 BC8 v11} VBC15 v1 v2 FU21{ m Fi Fi Fs[2] Fi Fp Fp[6] Fp[10] Fs[7] FL}[3] Fs}


void  S19674C20 ::v13(){vfunc_called(this, "_ZN9S19674C203v13Ev");}
void  S19674C20 ::v14(){vfunc_called(this, "_ZN9S19674C203v14Ev");}
S19674C20 ::~S19674C20(){ note_dtor("S19674C20", this);} // tgen
S19674C20 ::S19674C20(){ note_ctor("S19674C20", this);} // tgen

static void Test_S19674C20()
{
  extern Class_Descriptor cd_S19674C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2597,6377)];
    init_test(&cd_S19674C20, buf);
    S19674C20 *dp, &lv = *(dp=new (buf) S19674C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(41536,25504), "sizeof(S19674C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C20)");
    /*is_ambiguous_... S19674C21::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C21*), ABISELECT(3040,1816), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(3040,1816), "S19674C20");
    /*is_ambiguous_... S19674C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C11*), ABISELECT(3040,1816), "S19674C20");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*)(S19674C11*), ABISELECT(3040,1816), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*)(S19674C11*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(4472,2684), "S19674C20");
    check_base_class_offset(lv, (S19674C5*)(S19674C4*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C24*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(4472,2684), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(3496,2064), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(3488,2060), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C12*), ABISELECT(3488,2060), "S19674C20");
    check_base_class_offset(lv, (S19674C6*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(3488,2060), "S19674C20");
    check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(3488,2060), "S19674C20");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(3488,2060), "S19674C20");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C11*), ABISELECT(3488,2060), "S19674C20");
    check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(3488,2060), "S19674C20");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(3488,2060), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C17*), ABISELECT(3488,2060), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*), ABISELECT(3488,2060), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*), ABISELECT(3488,2060), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*), ABISELECT(3344,1984), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*), ABISELECT(3160,1876), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*), ABISELECT(3152,1872), "S19674C20");
    /*is_ambiguous_... S19674C22::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C22*)(S19674C21*), ABISELECT(3152,1872), "S19674C20");
    /*is_ambiguous_... S19674C23::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(3152,1872), "S19674C20");
    check_base_class_offset(lv, (S19674C2*)(S19674C22*)(S19674C21*), ABISELECT(4592,2772), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(35248,21620), "S19674C20");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(35240,21616), "S19674C20");
    check_base_class_offset(lv, (S19674C8*)(S19674C10*), ABISELECT(35240,21616), "S19674C20");
    /*is_ambiguous_... S19674C11::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C11*), ABISELECT(35240,21616), "S19674C20");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(35240,21616), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*), ABISELECT(35240,21616), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*), ABISELECT(35240,21616), "S19674C20");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C10*), ABISELECT(35440,21728), "S19674C20");
    check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(35440,21728), "S19674C20");
    check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(35440,21728), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C10*)(S19674C17*), ABISELECT(35440,21728), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*), ABISELECT(35440,21728), "S19674C20");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(8,4), "S19674C20");
    check_base_class_offset(lv, (S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), 0, "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(456,256), "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(272,148), "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(264,144), "S19674C20");
    check_base_class_offset(lv, (S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(264,144), "S19674C20");
    check_base_class_offset(lv, (S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*), 0, "S19674C20");
    /*is_ambiguous_... S19674C23::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C23*)(S19674C22*)(S19674C21*), ABISELECT(672,380), "S19674C20");
    check_base_class_offset(lv, (S19674C23*)(S19674C22*)(S19674C21*), 0, "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C11*), ABISELECT(36016,22064), "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(35832,21956), "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(35824,21952), "S19674C20");
    check_base_class_offset(lv, (S19674C12*)(S19674C11*), ABISELECT(35824,21952), "S19674C20");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(36168,22144), "S19674C20");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(36160,22140), "S19674C20");
    /*is_ambiguous_... S19674C11::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C11*), ABISELECT(36160,22140), "S19674C20");
    check_base_class_offset(lv, (S19674C4*)(S19674C11*), ABISELECT(39720,24484), "S19674C20");
    check_base_class_offset(lv, (S19674C11*)(S19674C22*)(S19674C21*), ABISELECT(35824,21952), "S19674C20");
    check_base_class_offset(lv, (S19674C22*)(S19674C21*), 0, "S19674C20");
    check_base_class_offset(lv, (S19674C21*), 0, "S19674C20");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(39736,24492), "S19674C20");
    check_base_class_offset(lv, (S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(39728,24488), "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(40184,24744), "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(40000,24636), "S19674C20");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(39992,24632), "S19674C20");
    check_base_class_offset(lv, (S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(39992,24632), "S19674C20");
    check_base_class_offset(lv, (S19674C16*)(S19674C24*), ABISELECT(39728,24488), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*), ABISELECT(40600,24984), "S19674C20");
    /*is_ambiguous_... S19674C24::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C17*)(S19674C24*), ABISELECT(40592,24980), "S19674C20");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C24*), ABISELECT(40408,24872), "S19674C20");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C24*), ABISELECT(40400,24868), "S19674C20");
    check_base_class_offset(lv, (S19674C24*), ABISELECT(39728,24488), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*), ABISELECT(40872,25128), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C17*)(S19674C16*), ABISELECT(40864,25124), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*), ABISELECT(41320,25380), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(41136,25272), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(41128,25268), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C16*), ABISELECT(41128,25268), "S19674C20");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C16*), ABISELECT(40864,25124), "S19674C20");
    check_field_offset(lv, s19674c20f0, ABISELECT(2792,1692), "S19674C20.s19674c20f0");
    check_field_offset(lv, s19674c20f1, ABISELECT(3032,1812), "S19674C20.s19674c20f1");
    test_class_info(&lv, &cd_S19674C20);
    dp->~S19674C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C20(Test_S19674C20, "S19674C20", ABISELECT(41536,25504));

#else // __cplusplus

extern void _ZN9S19674C20C1Ev();
extern void _ZN9S19674C20D1Ev();
Name_Map name_map_S19674C20[] = {
  NSPAIR(_ZN9S19674C20C1Ev),
  NSPAIR(_ZN9S19674C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C10;
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C23;
extern VTBL_ENTRY _ZTI9S19674C23[];
extern  VTBL_ENTRY _ZTV9S19674C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C23[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C4;
extern VTBL_ENTRY _ZTI8S19674C4[];
extern  VTBL_ENTRY _ZTV8S19674C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C4[];
extern Class_Descriptor cd_S19674C11;
extern VTBL_ENTRY _ZTI9S19674C11[];
extern  VTBL_ENTRY _ZTV9S19674C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C11[];
extern Class_Descriptor cd_S19674C22;
extern VTBL_ENTRY _ZTI9S19674C22[];
extern  VTBL_ENTRY _ZTV9S19674C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C22[];
extern Class_Descriptor cd_S19674C21;
extern VTBL_ENTRY _ZTI9S19674C21[];
extern  VTBL_ENTRY _ZTV9S19674C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C21[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C24;
extern VTBL_ENTRY _ZTI9S19674C24[];
extern  VTBL_ENTRY _ZTV9S19674C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C24[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
static Base_Class bases_S19674C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(3040,1816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C5,    ABISELECT(4472,2684), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(3496,2064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C8,    ABISELECT(3488,2060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(3488,2060), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(3344,1984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(3160,1876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(3152,1872), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(3152,1872), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19674C2,    ABISELECT(4592,2772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(35248,21620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(35240,21616), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(35440,21728), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19674C10,    ABISELECT(35440,21728), //bcp->offset
    64, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(264,144), //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
    27, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(264,144), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //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
    30, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(36016,22064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(35832,21956), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(35824,21952), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(35824,21952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(36168,22144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(36160,22140), //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
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(36160,22140), //bcp->offset
    83, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C4,    ABISELECT(39720,24484), //bcp->offset
    91, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19674C11,    ABISELECT(35824,21952), //bcp->offset
    71, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19674C21,    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
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(39736,24492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    ABISELECT(39728,24488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(40184,24744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(40000,24636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(39992,24632), //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
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(39992,24632), //bcp->offset
    120, //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
    18, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19674C16,    ABISELECT(39728,24488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(40600,24984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    ABISELECT(40592,24980), //bcp->offset
    132, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(40408,24872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(40400,24868), //bcp->offset
    127, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19674C24,    ABISELECT(39728,24488), //bcp->offset
    99, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(40872,25128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    ABISELECT(40864,25124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(41320,25380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(41136,25272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(41128,25268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(41128,25268), //bcp->offset
    164, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19674C16,    ABISELECT(40864,25124), //bcp->offset
    146, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19674C20[];
extern void _ZN9S19674C20D1Ev();
extern void _ZN9S19674C20D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C213v11Ev();
extern void _ZN9S19674C203v13Ev();
extern void _ZN9S19674C203v14Ev();
extern void ABISELECT(_ZThn264_N9S19674C20D1Ev,_ZThn144_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C20D0Ev,_ZThn144_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn672_N9S19674C20D1Ev,_ZThn380_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C20D0Ev,_ZThn380_N9S19674C20D0Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19674C20D1Ev,_ZTv0_n24_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn3152_N9S19674C20D1Ev,_ZThn1872_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C20D0Ev,_ZTv0_n24_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn3152_N9S19674C20D0Ev,_ZThn1872_N9S19674C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C20D1Ev,_ZThn2060_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C20D0Ev,_ZThn2060_N9S19674C20D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n24_N9S19674C20D1Ev,_ZTv0_n12_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C20D1Ev,_ZThn2684_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C20D0Ev,_ZTv0_n12_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C20D0Ev,_ZThn2684_N9S19674C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C20D1Ev,_ZTv0_n16_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C20D1Ev,_ZThn21616_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C20D0Ev,_ZTv0_n16_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C20D0Ev,_ZThn21616_N9S19674C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C20D1Ev,_ZThn21728_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C20D0Ev,_ZThn21728_N9S19674C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn35824_N9S19674C20D1Ev,_ZThn21952_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn35824_N9S19674C20D0Ev,_ZThn21952_N9S19674C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N9S19674C20D1Ev,_ZTvn188_n32_N9S19674C20D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S19674C20D0Ev,_ZTvn188_n32_N9S19674C20D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn39720_N9S19674C20D1Ev,_ZThn24484_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn39720_N9S19674C20D0Ev,_ZThn24484_N9S19674C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19674C20D1Ev,_ZTv0_n36_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn39728_N9S19674C20D1Ev,_ZThn24488_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19674C20D0Ev,_ZTv0_n36_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn39728_N9S19674C20D0Ev,_ZThn24488_N9S19674C20D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C243v12Ev();
extern void ABISELECT(_ZTvn264_n72_N9S19674C20D1Ev,_ZTvn144_n36_N9S19674C20D1Ev)();
extern void ABISELECT(_ZTvn264_n72_N9S19674C20D0Ev,_ZTvn144_n36_N9S19674C20D0Ev)();
extern void ABISELECT(_ZTvn672_n72_N9S19674C20D1Ev,_ZTvn380_n36_N9S19674C20D1Ev)();
extern void ABISELECT(_ZTvn672_n72_N9S19674C20D0Ev,_ZTvn380_n36_N9S19674C20D0Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn40592_N9S19674C20D1Ev,_ZThn24980_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn40592_N9S19674C20D0Ev,_ZThn24980_N9S19674C20D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn40864_N9S19674C20D1Ev,_ZThn25124_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn40864_N9S19674C20D0Ev,_ZThn25124_N9S19674C20D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void ABISELECT(_ZTvn264_n64_N9S19674C20D1Ev,_ZTvn144_n32_N9S19674C20D1Ev)();
extern void ABISELECT(_ZTvn264_n64_N9S19674C20D0Ev,_ZTvn144_n32_N9S19674C20D0Ev)();
static  VTBL_ENTRY vtc_S19674C20[] = {
  ABISELECT(40864,25124),
  ABISELECT(40592,24980),
  ABISELECT(39728,24488),
  ABISELECT(39720,24484),
  ABISELECT(35824,21952),
  ABISELECT(4592,2772),
  ABISELECT(3152,1872),
  ABISELECT(3040,1816),
  ABISELECT(3488,2060),
  ABISELECT(35440,21728),
  ABISELECT(35240,21616),
  ABISELECT(4472,2684),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&_ZN9S19674C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C213v11Ev,
  (VTBL_ENTRY)&_ZN9S19674C203v13Ev,
  (VTBL_ENTRY)&_ZN9S19674C203v14Ev,
  ABISELECT(2776,1672),
  ABISELECT(3224,1916),
  ABISELECT(4208,2540),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C20D1Ev,_ZThn144_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C20D0Ev,_ZThn144_N9S19674C20D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C20D1Ev,_ZThn380_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C20D0Ev,_ZThn380_N9S19674C20D0Ev),
  ABISELECT(-3152,-1872),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-3152,-1872),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C20D1Ev,_ZTv0_n24_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C20D0Ev,_ZTv0_n24_N9S19674C20D0Ev),
  0,
  0,
  ABISELECT(-3488,-2060),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-3488,-2060),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-4472,-2684),
  ABISELECT(-4472,-2684),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C20D1Ev,_ZTv0_n12_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C20D0Ev,_ZTv0_n12_N9S19674C20D0Ev),
  ABISELECT(-35240,-21616),
  ABISELECT(-30768,-18932),
  ABISELECT(-35240,-21616),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C20D1Ev,_ZTv0_n16_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C20D0Ev,_ZTv0_n16_N9S19674C20D0Ev),
  ABISELECT(-35440,-21728),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35440,-21728),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35824,-21952),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-35824,-21952),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev),
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-36160,-22140),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C20D1Ev,_ZTvn188_n32_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C20D0Ev,_ZTvn188_n32_N9S19674C20D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-39720,-24484),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-39720,-24484),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-39728,-24488),
  ABISELECT(864,492),
  ABISELECT(-36688,-22672),
  ABISELECT(-36240,-22428),
  ABISELECT(-4288,-2760),
  ABISELECT(-4488,-2872),
  ABISELECT(-35256,-21804),
  ABISELECT(-39728,-24488),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19674C20D1Ev,_ZTv0_n36_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19674C20D0Ev,_ZTv0_n36_N9S19674C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C243v12Ev,
  ABISELECT(-36952,-22816),
  ABISELECT(-36504,-22572),
  ABISELECT(-35520,-21948),
  ABISELECT(-39992,-24632),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S19674C20D1Ev,_ZTvn144_n36_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S19674C20D0Ev,_ZTvn144_n36_N9S19674C20D0Ev),
  ABISELECT(-35928,-22184),
  ABISELECT(-40400,-24868),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S19674C20D1Ev,_ZTvn380_n36_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S19674C20D0Ev,_ZTvn380_n36_N9S19674C20D0Ev),
  0,
  0,
  ABISELECT(-40592,-24980),
  ABISELECT(-37552,-23164),
  ABISELECT(-37104,-22920),
  ABISELECT(-5152,-3252),
  ABISELECT(-5352,-3364),
  ABISELECT(-36120,-22296),
  ABISELECT(-40592,-24980),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-40864,-25124),
  ABISELECT(-37824,-23308),
  ABISELECT(-37376,-23064),
  ABISELECT(-5424,-3396),
  ABISELECT(-5624,-3508),
  ABISELECT(-36392,-22440),
  ABISELECT(-40864,-25124),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  ABISELECT(-38088,-23452),
  ABISELECT(-37640,-23208),
  ABISELECT(-36656,-22584),
  ABISELECT(-41128,-25268),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n64_N9S19674C20D1Ev,_ZTvn144_n32_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n64_N9S19674C20D0Ev,_ZTvn144_n32_N9S19674C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S19674C20[];
extern void _ZN9S19674C21D1Ev();
extern void _ZN9S19674C21D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C213v11Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C21__9S19674C20[] = {
  ABISELECT(39720,24484),
  ABISELECT(35824,21952),
  ABISELECT(4592,2772),
  ABISELECT(3152,1872),
  ABISELECT(3040,1816),
  ABISELECT(3488,2060),
  ABISELECT(35440,21728),
  ABISELECT(35240,21616),
  ABISELECT(4472,2684),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&_ZN9S19674C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C213v11Ev,
};
extern void _ZN9S19674C22D1Ev();
extern void _ZN9S19674C22D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(39720,24484),
  ABISELECT(35824,21952),
  ABISELECT(4592,2772),
  ABISELECT(3152,1872),
  ABISELECT(3040,1816),
  ABISELECT(3488,2060),
  ABISELECT(35440,21728),
  ABISELECT(35240,21616),
  ABISELECT(4472,2684),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&_ZN9S19674C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C22D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C23D1Ev();
extern void _ZN9S19674C23D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(3152,1872),
  ABISELECT(3040,1816),
  ABISELECT(3488,2060),
  ABISELECT(35440,21728),
  ABISELECT(35240,21616),
  ABISELECT(4472,2684),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&_ZN9S19674C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C23D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(3040,1816),
  ABISELECT(3488,2060),
  ABISELECT(35440,21728),
  ABISELECT(35240,21616),
  ABISELECT(4472,2684),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(3040,1816),
  ABISELECT(3488,2060),
  ABISELECT(35440,21728),
  ABISELECT(35240,21616),
  ABISELECT(4472,2684),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C17D1Ev,_ZThn2684_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C17D0Ev,_ZThn2684_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-4472,-2684),
  ABISELECT(-4472,-2684),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C17D1Ev,_ZThn21616_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C17D0Ev,_ZThn21616_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-35240,-21616),
  ABISELECT(-30768,-18932),
  ABISELECT(-35240,-21616),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C17D1Ev,_ZThn21728_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C17D0Ev,_ZThn21728_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-35440,-21728),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35440,-21728),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C17D1Ev,_ZThn2060_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C17D0Ev,_ZThn2060_N9S19674C17D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  0,
  0,
  ABISELECT(-3488,-2060),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-3488,-2060),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C239S19674C229S19674C21__A1__9S19674C20[] = {
  ABISELECT(2776,1672),
  ABISELECT(3224,1916),
  ABISELECT(4208,2540),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C169S19674C239S19674C229S19674C21__A3__9S19674C20[] = {
  ABISELECT(4208,2540),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn4208_N8S19674C8D1Ev,_ZThn2540_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn4208_N8S19674C8D0Ev,_ZThn2540_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C239S19674C229S19674C21__A3__9S19674C20[] = {
  ABISELECT(-4208,-2540),
  ABISELECT(-4208,-2540),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn3224_N9S19674C12D1Ev,_ZThn1916_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn3224_N9S19674C12D0Ev,_ZThn1916_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C169S19674C239S19674C229S19674C21__A1__9S19674C20[] = {
  0,
  0,
  ABISELECT(-3224,-1916),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-3224,-1916),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn4208_N9S19674C12D1Ev,_ZThn2540_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn4208_N9S19674C12D0Ev,_ZThn2540_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C169S19674C239S19674C229S19674C21__A1__9S19674C20[] = {
  ABISELECT(-4208,-2540),
  ABISELECT(-4208,-2540),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C16D1Ev,_ZThn2684_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C16D0Ev,_ZThn2684_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-4472,-2684),
  ABISELECT(-4472,-2684),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C16D1Ev,_ZThn21616_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C16D0Ev,_ZThn21616_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-35240,-21616),
  ABISELECT(-30768,-18932),
  ABISELECT(-35240,-21616),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C16D1Ev,_ZThn21728_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C16D0Ev,_ZThn21728_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-35440,-21728),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35440,-21728),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C16D1Ev,_ZThn2060_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C16D0Ev,_ZThn2060_N9S19674C16D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  0,
  0,
  ABISELECT(-3488,-2060),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-3488,-2060),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C169S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(2776,1672),
  ABISELECT(3224,1916),
  ABISELECT(4208,2540),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C23D1Ev,_ZThn2060_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C23D0Ev,_ZThn2060_N9S19674C23D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C239S19674C229S19674C21__9S19674C20[] = {
  0,
  0,
  ABISELECT(-3488,-2060),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-3488,-2060),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C23D1Ev,_ZThn2684_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C23D0Ev,_ZThn2684_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-4472,-2684),
  ABISELECT(-4472,-2684),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn3152_N9S19674C23D1Ev,_ZThn1872_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn3152_N9S19674C23D0Ev,_ZThn1872_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-3152,-1872),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-3152,-1872),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C23D1Ev,_ZThn21616_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C23D0Ev,_ZThn21616_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-35240,-21616),
  ABISELECT(-30768,-18932),
  ABISELECT(-35240,-21616),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C23D1Ev,_ZThn21728_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C23D0Ev,_ZThn21728_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-35440,-21728),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35440,-21728),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZThn264_N9S19674C23D1Ev,_ZThn144_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C23D0Ev,_ZThn144_N9S19674C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__A1__9S19674C239S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(2776,1672),
  ABISELECT(3224,1916),
  ABISELECT(4208,2540),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C23D1Ev,_ZThn144_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C23D0Ev,_ZThn144_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn3152_N9S19674C22D1Ev,_ZThn1872_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn3152_N9S19674C22D0Ev,_ZThn1872_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-3152,-1872),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-3152,-1872),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C22D1Ev,_ZThn2060_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C22D0Ev,_ZThn2060_N9S19674C22D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C229S19674C21__9S19674C20[] = {
  0,
  0,
  ABISELECT(-3488,-2060),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-3488,-2060),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C22D1Ev,_ZThn2684_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C22D0Ev,_ZThn2684_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-4472,-2684),
  ABISELECT(-4472,-2684),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C22D1Ev,_ZThn21616_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C22D0Ev,_ZThn21616_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-35240,-21616),
  ABISELECT(-30768,-18932),
  ABISELECT(-35240,-21616),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C22D1Ev,_ZThn21728_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C22D0Ev,_ZThn21728_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-35440,-21728),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35440,-21728),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZThn264_N9S19674C22D1Ev,_ZThn144_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C22D0Ev,_ZThn144_N9S19674C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C23__A1__9S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(2776,1672),
  ABISELECT(3224,1916),
  ABISELECT(4208,2540),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C22D1Ev,_ZThn144_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C22D0Ev,_ZThn144_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn35824_N9S19674C22D1Ev,_ZThn21952_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn35824_N9S19674C22D0Ev,_ZThn21952_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C11__9S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35824,-21952),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-35824,-21952),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S19674C22D1Ev,_ZTvn188_n32_N9S19674C22D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S19674C22D0Ev,_ZTvn188_n32_N9S19674C22D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__9S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-36160,-22140),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C22D1Ev,_ZTvn188_n32_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C22D0Ev,_ZTvn188_n32_N9S19674C22D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn39720_N9S19674C22D1Ev,_ZThn24484_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn39720_N9S19674C22D0Ev,_ZThn24484_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C229S19674C21__9S19674C20[] = {
  ABISELECT(-39720,-24484),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-39720,-24484),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19674C21D1Ev,_ZTv0_n24_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn3152_N9S19674C21D1Ev,_ZThn1872_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C21D0Ev,_ZTv0_n24_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn3152_N9S19674C21D0Ev,_ZThn1872_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C21__9S19674C20[] = {
  ABISELECT(-3152,-1872),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-3152,-1872),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C21D1Ev,_ZTv0_n24_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C21D0Ev,_ZTv0_n24_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C21D1Ev,_ZThn2060_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn3488_N9S19674C21D0Ev,_ZThn2060_N9S19674C21D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C21__9S19674C20[] = {
  0,
  0,
  ABISELECT(-3488,-2060),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-3488,-2060),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C21D1Ev,_ZTv0_n12_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C21D1Ev,_ZThn2684_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C21D0Ev,_ZTv0_n12_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn4472_N9S19674C21D0Ev,_ZThn2684_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C21__9S19674C20[] = {
  ABISELECT(-4472,-2684),
  ABISELECT(-4472,-2684),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C21D1Ev,_ZTv0_n12_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C21D0Ev,_ZTv0_n12_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C21D1Ev,_ZTv0_n16_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C21D1Ev,_ZThn21616_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C21D0Ev,_ZTv0_n16_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn35240_N9S19674C21D0Ev,_ZThn21616_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C21__9S19674C20[] = {
  ABISELECT(-35240,-21616),
  ABISELECT(-30768,-18932),
  ABISELECT(-35240,-21616),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C21D1Ev,_ZTv0_n16_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C21D0Ev,_ZTv0_n16_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C21D1Ev,_ZThn21728_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn35440_N9S19674C21D0Ev,_ZThn21728_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C21__9S19674C20[] = {
  ABISELECT(-35440,-21728),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35440,-21728),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZThn264_N9S19674C21D1Ev,_ZThn144_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C21D0Ev,_ZThn144_N9S19674C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C239S19674C22__A1__9S19674C21__9S19674C20[] = {
  ABISELECT(2776,1672),
  ABISELECT(3224,1916),
  ABISELECT(4208,2540),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C21D1Ev,_ZThn144_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C21D0Ev,_ZThn144_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19674C21D1Ev,_ZTv0_n32_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn35824_N9S19674C21D1Ev,_ZThn21952_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C21D0Ev,_ZTv0_n32_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn35824_N9S19674C21D0Ev,_ZThn21952_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C11__9S19674C21__9S19674C20[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35824,-21952),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-35824,-21952),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C21D1Ev,_ZTv0_n32_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C21D0Ev,_ZTv0_n32_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S19674C21D1Ev,_ZTvn188_n32_N9S19674C21D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S19674C21D0Ev,_ZTvn188_n32_N9S19674C21D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__9S19674C21__9S19674C20[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-36160,-22140),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C21D1Ev,_ZTvn188_n32_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C21D0Ev,_ZTvn188_n32_N9S19674C21D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn39720_N9S19674C21D1Ev,_ZThn24484_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn39720_N9S19674C21D0Ev,_ZThn24484_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C21__9S19674C20[] = {
  ABISELECT(-39720,-24484),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-39720,-24484),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev),
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C12__A1__9S19674C20[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn1320_N8S19674C8D1Ev,_ZThn812_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn1320_N8S19674C8D0Ev,_ZThn812_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C12__A1__9S19674C20[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn336_N9S19674C12D1Ev,_ZThn188_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn336_N9S19674C12D0Ev,_ZThn188_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C12__9S19674C20[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn1320_N9S19674C12D1Ev,_ZThn812_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn1320_N9S19674C12D0Ev,_ZThn812_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C12__9S19674C20[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C20[] = {
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__9S19674C20[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C20[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__9S19674C20[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C20[] = {
  ABISELECT(-30768,-18932),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__A2__9S19674C20[] = {
  ABISELECT(30768,18932),
  ABISELECT(30768,18932),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C20[] = {
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10__9S19674C20[] = {
  ABISELECT(200,112),
  ABISELECT(-30768,-18932),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C10__9S19674C20[] = {
  ABISELECT(30968,19044),
  ABISELECT(30968,19044),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
extern void _ZN9S19674C11D1Ev();
extern void _ZN9S19674C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C11__9S19674C20[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN9S19674C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C11D0Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C11__A2__9S19674C20[] = {
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C11__A4__9S19674C20[] = {
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A4__9S19674C20[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C11__A2__9S19674C20[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C11__A2__9S19674C20[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__9S19674C20[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C69S19674C11__A5__9S19674C20[] = {
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A5__9S19674C20[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C69S19674C11__A1__9S19674C20[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C11__9S19674C20[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C11__9S19674C20[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev),
};
extern void ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__A__9S19674C11__9S19674C20[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A3__9S19674C11__9S19674C20[] = {
  ABISELECT(584,336),
  ABISELECT(-30768,-18932),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn3896_N9S19674C11D1Ev,_ZThn2532_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn3896_N9S19674C11D0Ev,_ZThn2532_N9S19674C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C11__9S19674C20[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void _ZN8S19674C4D1Ev();
extern void _ZN8S19674C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C20[] = {
  ABISELECT(-35248,-21800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C4__9S19674C20[] = {
  ABISELECT(35248,21800),
  ABISELECT(35248,21800),
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev),
};
extern void _ZN9S19674C24D1Ev();
extern void _ZN9S19674C24D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C243v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C24__9S19674C20[] = {
  ABISELECT(864,492),
  ABISELECT(-36688,-22672),
  ABISELECT(-36240,-22428),
  ABISELECT(-4288,-2760),
  ABISELECT(-4488,-2872),
  ABISELECT(-35256,-21804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&_ZN9S19674C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C24D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C243v12Ev,
};
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C169S19674C24__A1__9S19674C20[] = {
  ABISELECT(-36688,-22672),
  ABISELECT(-36240,-22428),
  ABISELECT(-4288,-2760),
  ABISELECT(-4488,-2872),
  ABISELECT(-35256,-21804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C169S19674C24__A1__9S19674C20[] = {
  ABISELECT(-36688,-22672),
  ABISELECT(-36240,-22428),
  ABISELECT(-4288,-2760),
  ABISELECT(-4488,-2872),
  ABISELECT(-35256,-21804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C169S19674C24__A1__9S19674C20[] = {
  ABISELECT(35256,21804),
  ABISELECT(35256,21804),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C169S19674C24__A1__9S19674C20[] = {
  ABISELECT(4488,2872),
  ABISELECT(-30768,-18932),
  ABISELECT(4488,2872),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C169S19674C24__A1__9S19674C20[] = {
  ABISELECT(4288,2760),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(4288,2760),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C169S19674C24__A1__9S19674C20[] = {
  0,
  0,
  ABISELECT(36240,22428),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(36240,22428),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C24__A3__9S19674C20[] = {
  ABISELECT(-36952,-22816),
  ABISELECT(-36504,-22572),
  ABISELECT(-35520,-21948),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C169S19674C24__A6__9S19674C20[] = {
  ABISELECT(-35520,-21948),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C24__A6__9S19674C20[] = {
  ABISELECT(35520,21948),
  ABISELECT(35520,21948),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C169S19674C24__A3__9S19674C20[] = {
  0,
  0,
  ABISELECT(36504,22572),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(36504,22572),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C169S19674C24__A3__9S19674C20[] = {
  ABISELECT(35520,21948),
  ABISELECT(35520,21948),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C169S19674C24__A1__9S19674C20[] = {
  ABISELECT(35256,21804),
  ABISELECT(35256,21804),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C169S19674C24__A1__9S19674C20[] = {
  ABISELECT(4488,2872),
  ABISELECT(-30768,-18932),
  ABISELECT(4488,2872),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C169S19674C24__A1__9S19674C20[] = {
  ABISELECT(4288,2760),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(4288,2760),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C169S19674C24__A1__9S19674C20[] = {
  0,
  0,
  ABISELECT(36240,22428),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(36240,22428),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C169S19674C24__A1__9S19674C20[] = {
  ABISELECT(-36952,-22816),
  ABISELECT(-36504,-22572),
  ABISELECT(-35520,-21948),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C24__A7__9S19674C20[] = {
  ABISELECT(-35928,-22184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C24__A7__9S19674C20[] = {
  ABISELECT(35928,22184),
  ABISELECT(35928,22184),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C24D1Ev,_ZTv0_n12_N9S19674C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C24D0Ev,_ZTv0_n12_N9S19674C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C24__9S19674C20[] = {
  ABISELECT(35256,21804),
  ABISELECT(35256,21804),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C24D1Ev,_ZTv0_n12_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C24D0Ev,_ZTv0_n12_N9S19674C24D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C24D1Ev,_ZTv0_n16_N9S19674C24D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C24D0Ev,_ZTv0_n16_N9S19674C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C24__9S19674C20[] = {
  ABISELECT(4488,2872),
  ABISELECT(-30768,-18932),
  ABISELECT(4488,2872),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C24D1Ev,_ZTv0_n16_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C24D0Ev,_ZTv0_n16_N9S19674C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C24__9S19674C20[] = {
  ABISELECT(4288,2760),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(4288,2760),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C24__9S19674C20[] = {
  0,
  0,
  ABISELECT(36240,22428),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(36240,22428),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C24D1Ev,_ZThn144_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C24D0Ev,_ZThn144_N9S19674C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__9S19674C24__9S19674C20[] = {
  ABISELECT(-36952,-22816),
  ABISELECT(-36504,-22572),
  ABISELECT(-35520,-21948),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C24D1Ev,_ZThn144_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C24D0Ev,_ZThn144_N9S19674C24D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19674C24D1Ev,_ZTv0_n32_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn864_N9S19674C24D1Ev,_ZThn492_N9S19674C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C24D0Ev,_ZTv0_n32_N9S19674C24D0Ev)();
extern void ABISELECT(_ZThn864_N9S19674C24D0Ev,_ZThn492_N9S19674C24D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C17__A1__9S19674C24__9S19674C20[] = {
  0,
  0,
  ABISELECT(-864,-492),
  ABISELECT(-37552,-23164),
  ABISELECT(-37104,-22920),
  ABISELECT(-5152,-3252),
  ABISELECT(-5352,-3364),
  ABISELECT(-36120,-22296),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C24D1Ev,_ZTv0_n32_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C24D0Ev,_ZTv0_n32_N9S19674C24D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZThn672_N9S19674C24D1Ev,_ZThn380_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C24D0Ev,_ZThn380_N9S19674C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A__9S19674C24__9S19674C20[] = {
  ABISELECT(-35928,-22184),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C24D1Ev,_ZThn380_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C24D0Ev,_ZThn380_N9S19674C24D0Ev),
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C17__A2__9S19674C20[] = {
  ABISELECT(-37552,-23164),
  ABISELECT(-37104,-22920),
  ABISELECT(-5152,-3252),
  ABISELECT(-5352,-3364),
  ABISELECT(-36120,-22296),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C17__A2__9S19674C20[] = {
  ABISELECT(36120,22296),
  ABISELECT(36120,22296),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C17__A2__9S19674C20[] = {
  ABISELECT(5352,3364),
  ABISELECT(-30768,-18932),
  ABISELECT(5352,3364),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C17__A2__9S19674C20[] = {
  ABISELECT(5152,3252),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(5152,3252),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C17__A2__9S19674C20[] = {
  0,
  0,
  ABISELECT(37104,22920),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(37104,22920),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C16__A2__9S19674C20[] = {
  ABISELECT(-37824,-23308),
  ABISELECT(-37376,-23064),
  ABISELECT(-5424,-3396),
  ABISELECT(-5624,-3508),
  ABISELECT(-36392,-22440),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C16__A3__9S19674C20[] = {
  ABISELECT(-37824,-23308),
  ABISELECT(-37376,-23064),
  ABISELECT(-5424,-3396),
  ABISELECT(-5624,-3508),
  ABISELECT(-36392,-22440),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C16__A3__9S19674C20[] = {
  ABISELECT(36392,22440),
  ABISELECT(36392,22440),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C16__A3__9S19674C20[] = {
  ABISELECT(5624,3508),
  ABISELECT(-30768,-18932),
  ABISELECT(5624,3508),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C16__A3__9S19674C20[] = {
  ABISELECT(5424,3396),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(5424,3396),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C16__A3__9S19674C20[] = {
  0,
  0,
  ABISELECT(37376,23064),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(37376,23064),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__A4__9S19674C20[] = {
  ABISELECT(-38088,-23452),
  ABISELECT(-37640,-23208),
  ABISELECT(-36656,-22584),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C16__A8__9S19674C20[] = {
  ABISELECT(-36656,-22584),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C16__A8__9S19674C20[] = {
  ABISELECT(36656,22584),
  ABISELECT(36656,22584),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C16__A4__9S19674C20[] = {
  0,
  0,
  ABISELECT(37640,23208),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(37640,23208),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C16__A4__9S19674C20[] = {
  ABISELECT(36656,22584),
  ABISELECT(36656,22584),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C16__A2__9S19674C20[] = {
  ABISELECT(36392,22440),
  ABISELECT(36392,22440),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C16__A2__9S19674C20[] = {
  ABISELECT(5624,3508),
  ABISELECT(-30768,-18932),
  ABISELECT(5624,3508),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C16__A2__9S19674C20[] = {
  ABISELECT(5424,3396),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(5424,3396),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C16__A2__9S19674C20[] = {
  0,
  0,
  ABISELECT(37376,23064),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(37376,23064),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C16__A2__9S19674C20[] = {
  ABISELECT(-38088,-23452),
  ABISELECT(-37640,-23208),
  ABISELECT(-36656,-22584),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
static  VTT_ENTRY vtt_S19674C20[] = {
  {&(_ZTV9S19674C20[14]),  14,171},
  {&(_tg__ZTV9S19674C21__9S19674C20[11]),  11,18},
  {&(_tg__ZTV9S19674C229S19674C21__9S19674C20[11]),  11,17},
  {&(_tg__ZTV9S19674C239S19674C229S19674C21__9S19674C20[8]),  8,14},
  {&(_tg__ZTV9S19674C169S19674C239S19674C229S19674C21__9S19674C20[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C169S19674C239S19674C229S19674C21__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C169S19674C239S19674C229S19674C21__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C169S19674C239S19674C229S19674C21__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C169S19674C239S19674C229S19674C21__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C169S19674C239S19674C229S19674C21__9S19674C20[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C169S19674C239S19674C229S19674C21__A1__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C169S19674C239S19674C229S19674C21__A3__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C239S19674C229S19674C21__A3__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C169S19674C239S19674C229S19674C21__A1__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C169S19674C239S19674C229S19674C21__A1__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C169S19674C239S19674C229S19674C21__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C169S19674C239S19674C229S19674C21__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C169S19674C239S19674C229S19674C21__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C169S19674C239S19674C229S19674C21__9S19674C20[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C169S19674C239S19674C229S19674C21__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C239S19674C229S19674C21__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C239S19674C229S19674C21__9S19674C20[3]),  3,5},
  {&(_tg__ZTV9S19674C12__9S19674C239S19674C229S19674C21__9S19674C20[6]),  6,8},
  {&(_tg__ZTV8S19674C8__A2__9S19674C239S19674C229S19674C21__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C239S19674C229S19674C21__9S19674C20[5]),  5,7},
  {&(_tg__ZTV9S19674C129S19674C16__A1__9S19674C239S19674C229S19674C21__9S19674C20[5]),  5,7},
  {&(_tg__ZTV9S19674C12__9S19674C229S19674C21__9S19674C20[6]),  6,8},
  {&(_tg__ZTV8S19674C6__9S19674C229S19674C21__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C229S19674C21__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A2__9S19674C229S19674C21__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C229S19674C21__9S19674C20[5]),  5,7},
  {&(_tg__ZTV9S19674C129S19674C169S19674C23__A1__9S19674C229S19674C21__9S19674C20[5]),  5,7},
  {&(_tg__ZTV9S19674C11__9S19674C229S19674C21__9S19674C20[10]),  10,12},
  {&(_tg__ZTV8S19674C69S19674C11__A1__9S19674C229S19674C21__9S19674C20[4]),  4,8},
  {&(_tg__ZTV8S19674C4__9S19674C229S19674C21__9S19674C20[5]),  5,8},
  {&(_tg__ZTV9S19674C12__9S19674C21__9S19674C20[6]),  6,8},
  {&(_tg__ZTV8S19674C6__9S19674C21__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C21__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A2__9S19674C21__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C21__9S19674C20[5]),  5,7},
  {&(_tg__ZTV9S19674C129S19674C169S19674C239S19674C22__A1__9S19674C21__9S19674C20[5]),  5,7},
  {&(_tg__ZTV9S19674C11__9S19674C21__9S19674C20[10]),  10,12},
  {&(_tg__ZTV8S19674C69S19674C11__A1__9S19674C21__9S19674C20[4]),  4,8},
  {&(_tg__ZTV8S19674C4__9S19674C21__9S19674C20[5]),  5,8},
  {&(_ZTV9S19674C20[40]),  40,171},
  {&(_ZTV9S19674C20[49]),  49,171},
  {&(_ZTV9S19674C20[56]),  56,171},
  {&(_ZTV9S19674C20[62]),  62,171},
  {&(_ZTV9S19674C20[69]),  69,171},
  {&(_ZTV9S19674C20[28]),  28,171},
  {&(_ZTV9S19674C20[81]),  81,171},
  {&(_ZTV9S19674C20[87]),  87,171},
  {&(_ZTV9S19674C20[96]),  96,171},
  {&(_ZTV9S19674C20[113]),  113,171},
  {&(_ZTV9S19674C20[125]),  125,171},
  {&(_ZTV9S19674C20[142]),  142,171},
  {&(_ZTV9S19674C20[130]),  130,171},
  {&(_ZTV9S19674C20[158]),  158,171},
  {&(_ZTV9S19674C20[169]),  169,171},
  {&(_tg__ZTV9S19674C12__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C12__A1__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C12__A1__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C12__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C12__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C20[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A2__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__A2__9S19674C20[3]),  3,5},
  {&(_tg__ZTV9S19674C10__9S19674C20[4]),  4,6},
  {&(_tg__ZTV8S19674C8__9S19674C10__9S19674C20[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S19674C10__9S19674C20[3]),  3,5},
  {&(_tg__ZTV9S19674C11__9S19674C20[7]),  7,9},
  {&(_tg__ZTV9S19674C129S19674C11__A2__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C11__A4__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A4__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C11__A2__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C11__A2__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C69S19674C11__A1__9S19674C20[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C69S19674C11__A5__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A5__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C69S19674C11__A1__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C11__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C11__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C6__A__9S19674C11__9S19674C20[4]),  4,8},
  {&(_tg__ZTV8S19674C8__A3__9S19674C11__9S19674C20[4]),  4,6},
  {&(_tg__ZTV8S19674C4__9S19674C11__9S19674C20[5]),  5,8},
  {&(_tg__ZTV8S19674C4__9S19674C20[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S19674C4__9S19674C20[3]),  3,5},
  {&(_tg__ZTV9S19674C24__9S19674C20[8]),  8,15},
  {&(_tg__ZTV9S19674C169S19674C24__A1__9S19674C20[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C169S19674C24__A1__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C169S19674C24__A1__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C169S19674C24__A1__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C169S19674C24__A1__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C169S19674C24__A1__9S19674C20[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C169S19674C24__A3__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C169S19674C24__A6__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C24__A6__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C169S19674C24__A3__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C169S19674C24__A3__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C169S19674C24__A1__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C169S19674C24__A1__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C169S19674C24__A1__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C169S19674C24__A1__9S19674C20[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C169S19674C24__A1__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C24__A7__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C24__A7__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C24__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C24__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C24__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C24__9S19674C20[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C16__9S19674C24__9S19674C20[5]),  5,7},
  {&(_tg__ZTV9S19674C17__A1__9S19674C24__9S19674C20[10]),  10,14},
  {&(_tg__ZTV8S19674C8__A__9S19674C24__9S19674C20[3]),  3,5},
  {&(_tg__ZTV9S19674C17__A2__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C17__A2__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C17__A2__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C17__A2__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C17__A2__9S19674C20[7]),  7,11},
  {&(_tg__ZTV9S19674C16__A2__9S19674C20[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C16__A3__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C16__A3__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C16__A3__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C16__A3__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C16__A3__9S19674C20[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C16__A4__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C16__A8__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C16__A8__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C16__A4__9S19674C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C16__A4__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C16__A2__9S19674C20[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C16__A2__9S19674C20[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C16__A2__9S19674C20[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C16__A2__9S19674C20[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C16__A2__9S19674C20[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19674C20[];
extern  VTBL_ENTRY _ZTV9S19674C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C20[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C24D0Ev,_ZTv0_n32_N9S19674C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19674C24D0Ev,_ZThn492_N9S19674C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C24D1Ev,_ZTv0_n32_N9S19674C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19674C24D1Ev,_ZThn492_N9S19674C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N9S19674C11D0Ev,_ZThn2532_N9S19674C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N9S19674C11D1Ev,_ZThn2532_N9S19674C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C21D0Ev,_ZTv0_n32_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35824_N9S19674C21D0Ev,_ZThn21952_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C21D1Ev,_ZTv0_n32_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35824_N9S19674C21D1Ev,_ZThn21952_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C21D0Ev,_ZTv0_n16_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C21D0Ev,_ZThn21616_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C21D1Ev,_ZTv0_n16_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C21D1Ev,_ZThn21616_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C21D0Ev,_ZTv0_n12_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C21D0Ev,_ZThn2684_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C21D1Ev,_ZTv0_n12_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C21D1Ev,_ZThn2684_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39720_N9S19674C21D0Ev,_ZThn24484_N9S19674C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C21D0Ev,_ZThn21728_N9S19674C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C21D0Ev,_ZThn2060_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39720_N9S19674C21D1Ev,_ZThn24484_N9S19674C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C21D1Ev,_ZThn21728_N9S19674C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C21D1Ev,_ZThn2060_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C21D0Ev,_ZTv0_n24_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N9S19674C21D0Ev,_ZThn1872_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C21D1Ev,_ZTv0_n24_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N9S19674C21D1Ev,_ZThn1872_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35824_N9S19674C22D0Ev,_ZThn21952_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35824_N9S19674C22D1Ev,_ZThn21952_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C22D0Ev,_ZThn21616_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C22D1Ev,_ZThn21616_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C22D0Ev,_ZThn2684_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C22D1Ev,_ZThn2684_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39720_N9S19674C22D0Ev,_ZThn24484_N9S19674C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C22D0Ev,_ZThn21728_N9S19674C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C22D0Ev,_ZThn2060_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39720_N9S19674C22D1Ev,_ZThn24484_N9S19674C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C22D1Ev,_ZThn21728_N9S19674C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C22D1Ev,_ZThn2060_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N9S19674C22D0Ev,_ZThn1872_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N9S19674C22D1Ev,_ZThn1872_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C23D0Ev,_ZThn21616_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C23D1Ev,_ZThn21616_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N9S19674C23D0Ev,_ZThn1872_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N9S19674C23D1Ev,_ZThn1872_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C23D0Ev,_ZThn2684_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C23D1Ev,_ZThn2684_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C23D0Ev,_ZThn21728_N9S19674C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C23D0Ev,_ZThn2060_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C23D1Ev,_ZThn21728_N9S19674C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C23D1Ev,_ZThn2060_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C16D0Ev,_ZThn2060_N9S19674C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C16D0Ev,_ZThn21728_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C16D1Ev,_ZThn2060_N9S19674C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C16D1Ev,_ZThn21728_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C16D0Ev,_ZThn21616_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C16D1Ev,_ZThn21616_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C16D0Ev,_ZThn2684_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C16D1Ev,_ZThn2684_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N9S19674C12D0Ev,_ZThn812_N9S19674C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4208_N9S19674C12D0Ev,_ZThn2540_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N9S19674C12D1Ev,_ZThn812_N9S19674C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4208_N9S19674C12D1Ev,_ZThn2540_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19674C12D0Ev,_ZThn188_N9S19674C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3224_N9S19674C12D0Ev,_ZThn1916_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19674C12D1Ev,_ZThn188_N9S19674C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3224_N9S19674C12D1Ev,_ZThn1916_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S19674C8D0Ev,_ZThn812_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4208_N8S19674C8D0Ev,_ZThn2540_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S19674C8D1Ev,_ZThn812_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4208_N8S19674C8D1Ev,_ZThn2540_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C17D0Ev,_ZThn2060_N9S19674C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C17D0Ev,_ZThn21728_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C17D1Ev,_ZThn2060_N9S19674C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C17D1Ev,_ZThn21728_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C17D0Ev,_ZThn21616_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C17D1Ev,_ZThn21616_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C17D0Ev,_ZThn2684_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C17D1Ev,_ZThn2684_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19674C20D0Ev,_ZTv0_n36_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39728_N9S19674C20D0Ev,_ZThn24488_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19674C20D1Ev,_ZTv0_n36_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39728_N9S19674C20D1Ev,_ZThn24488_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40864_N9S19674C20D0Ev,_ZThn25124_N9S19674C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40592_N9S19674C20D0Ev,_ZThn24980_N9S19674C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35824_N9S19674C20D0Ev,_ZThn21952_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40864_N9S19674C20D1Ev,_ZThn25124_N9S19674C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40592_N9S19674C20D1Ev,_ZThn24980_N9S19674C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35824_N9S19674C20D1Ev,_ZThn21952_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C20D0Ev,_ZTv0_n16_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C20D0Ev,_ZThn21616_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C20D1Ev,_ZTv0_n16_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35240_N9S19674C20D1Ev,_ZThn21616_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C20D0Ev,_ZTv0_n12_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C20D0Ev,_ZThn2684_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C20D1Ev,_ZTv0_n12_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4472_N9S19674C20D1Ev,_ZThn2684_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39720_N9S19674C20D0Ev,_ZThn24484_N9S19674C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C20D0Ev,_ZThn21728_N9S19674C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C20D0Ev,_ZThn2060_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39720_N9S19674C20D1Ev,_ZThn24484_N9S19674C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35440_N9S19674C20D1Ev,_ZThn21728_N9S19674C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3488_N9S19674C20D1Ev,_ZThn2060_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C20D0Ev,_ZTv0_n24_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N9S19674C20D0Ev,_ZThn1872_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C20D1Ev,_ZTv0_n24_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N9S19674C20D1Ev,_ZThn1872_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C20 = {  "S19674C20", // class name
  bases_S19674C20, 53,
  &(vtc_S19674C20[0]), // expected_vtbl_contents
  &(vtt_S19674C20[0]), // expected_vtt_contents
  ABISELECT(41536,25504), // object size
  NSPAIRA(_ZTI9S19674C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19674C20),171, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19674C20),137, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19674C1  : virtual S19674C2 , S19674C11 , S19674C13 , S19674C20 {
  void *s19674c1f0;
  int s19674c1f1;
  ::S19674C9 s19674c1f2;
  unsigned char s19674c1f3:1;
  ::S19674C17 s19674c1f4;
  int s19674c1f5;
  int s19674c1f6;
  int s19674c1f7;
  void *s19674c1f8[5];
  virtual  ~S19674C1(); // _ZN8S19674C1D2Ev
  virtual void  v1(); // _ZN8S19674C12v1Ev
  virtual void  v2(); // _ZN8S19674C12v2Ev
  virtual void  v3(); // _ZN8S19674C12v3Ev
  S19674C1(); // tgen
};
//SIG(1 S19674C1) C1{ VBC2{ m FC3{ VBC4{ VBC5{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v6} VBC6{ VBC5 VBC7{ m Fp[14]} BC8{ VBC5 BC7 Fs[6] FL[3] FU9{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v4 v5 FC8 FD[7] FC8 FL Fp[5]} vd FC10{ VBC8 BC5 Fc:6 Fc[8] FD FC7 FC7}[5] Fl Fi FC6 Fi Fi FC4}[5] Fp} BC11{ VBC7 BC12{ VBC6 BC7 BC8 Fi Fi Fi:28 Fi Fl} BC6 VBC8 VBC4 vd Fi Fi Fi FD Fp Fp FC8 Fp FC6 Fi Fp Fi FC5[8]} BC13{ VBC14{ m FD Fi[4] Fp Fs:13} Fi Fi Fi FC12 FL Fi[2] FC15{ VBC16{ BC17{ VBC5 VBC8 VBC10 BC7 VBC6 vd v7 v8 Fi Fi FC7 Fc Fc Fi Fs FL} BC12 v9 v10 FU18{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} VBC3 VBC11 BC12 vd v15 Fi FL FC10 Fi FC19{ VBC5 BC8 VBC10 FD Fp Fp} Fi FL[9] Fp Fi} Fi[8] Fi:0} BC20{ BC21{ VBC7 BC22{ VBC12 VBC2 BC23{ VBC6 VBC12 BC16 BC5 vd FC7 Fi[10] Fi FC4 Fs Fi FL} VBC11 FC10 Fi FC19 FD Fs[3] Fi:0 Fi} vd v11 Fi Fi} VBC24{ BC16 VBC17 BC8 v12} VBC16 v13 v14 FU25{ m Fi Fi Fs[2] Fi Fp Fp[6] Fp[10] Fs[7] FL}[3] Fs} vd v1 v2 v3 Fp Fi FU9 Fc:1 FC17 Fi Fi Fi Fp[5]}


 S19674C1 ::~S19674C1(){ note_dtor("S19674C1", this);}
void  S19674C1 ::v1(){vfunc_called(this, "_ZN8S19674C12v1Ev");}
void  S19674C1 ::v2(){vfunc_called(this, "_ZN8S19674C12v2Ev");}
void  S19674C1 ::v3(){vfunc_called(this, "_ZN8S19674C12v3Ev");}
S19674C1 ::S19674C1(){ note_ctor("S19674C1", this);} // tgen

static void Test_S19674C1()
{
  extern Class_Descriptor cd_S19674C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3921,9672)];
    init_test(&cd_S19674C1, buf);
    S19674C1 *dp, &lv = *(dp=new (buf) S19674C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(62720,38684), "sizeof(S19674C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19674C1)");
    check_base_class_offset(lv, (S19674C2*), ABISELECT(24160,14960), "S19674C1");
    check_base_class_offset(lv, (S19674C2*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(24160,14960), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C11*), ABISELECT(54808,33804), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*), ABISELECT(54808,33804), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*)(S19674C11*), ABISELECT(54808,33804), "S19674C1");
    /*is_ambiguous_... S19674C21::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C21*)(S19674C20*), ABISELECT(54808,33804), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C11*), ABISELECT(54808,33804), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C6*)(S19674C11*), ABISELECT(54808,33804), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*)(S19674C11*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*), ABISELECT(55912,34484), "S19674C1");
    check_base_class_offset(lv, (S19674C5*)(S19674C4*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C6*)(S19674C11*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C17::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C24*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C17*)(S19674C16*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(55912,34484), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*), ABISELECT(54936,33864), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C6 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*), ABISELECT(54928,33860), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C11*), ABISELECT(54928,33860), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C12*), ABISELECT(54928,33860), "S19674C1");
    check_base_class_offset(lv, (S19674C6*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(54928,33860), "S19674C1");
    check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(54928,33860), "S19674C1");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(54928,33860), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C11*), ABISELECT(54928,33860), "S19674C1");
    check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(54928,33860), "S19674C1");
    check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(54928,33860), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C17*), ABISELECT(54928,33860), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C17*)(S19674C16*), ABISELECT(54928,33860), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C12*)(S19674C16*), ABISELECT(54928,33860), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C11*), ABISELECT(192,112), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(8,4), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C11*), 0, "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C11*), 0, "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(344,192), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(336,188), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C11*), ABISELECT(336,188), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*), ABISELECT(56040,34576), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C11*), ABISELECT(56032,34572), "S19674C1");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(56032,34572), "S19674C1");
    check_base_class_offset(lv, (S19674C8*)(S19674C10*), ABISELECT(56032,34572), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C11*), ABISELECT(56032,34572), "S19674C1");
    /*is_ambiguous_... S19674C17::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(56032,34572), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*), ABISELECT(56032,34572), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C17*)(S19674C16*), ABISELECT(56032,34572), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C4*)(S19674C11*), ABISELECT(56224,34684), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C4*)(S19674C11*), ABISELECT(56224,34684), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C11*), 0, "S19674C1");
    check_base_class_offset(lv, (S19674C14*)(S19674C13*), ABISELECT(56240,34688), "S19674C1");
    check_base_class_offset(lv, (S19674C13*), ABISELECT(3904,2532), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*), ABISELECT(56480,34836), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*), ABISELECT(56296,34728), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*), ABISELECT(56288,34724), "S19674C1");
    /*is_ambiguous_... S19674C22::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(56288,34724), "S19674C1");
    /*is_ambiguous_... S19674C23::S19674C12 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(56288,34724), "S19674C1");
    /*is_ambiguous_... S19674C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C10*), ABISELECT(56624,34912), "S19674C1");
    check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(56624,34912), "S19674C1");
    check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(56624,34912), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C10*)(S19674C17*), ABISELECT(56624,34912), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C10*)(S19674C17*)(S19674C16*), ABISELECT(56624,34912), "S19674C1");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(18936,11840), "S19674C1");
    check_base_class_offset(lv, (S19674C17*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(18928,11836), "S19674C1");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(19384,12092), "S19674C1");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(19200,11984), "S19674C1");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(19192,11980), "S19674C1");
    check_base_class_offset(lv, (S19674C12*)(S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(19192,11980), "S19674C1");
    check_base_class_offset(lv, (S19674C16*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(18928,11836), "S19674C1");
    /*is_ambiguous_... S19674C23::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(19600,12216), "S19674C1");
    check_base_class_offset(lv, (S19674C23*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(18928,11836), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C11*), ABISELECT(57200,35248), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(57016,35140), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C11*), ABISELECT(57008,35136), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C11*), ABISELECT(57008,35136), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(57352,35328), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C6*)(S19674C11*), ABISELECT(57344,35324), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C11 */ AMB_check_base_class_offset(lv, (S19674C6*)(S19674C11*), ABISELECT(57344,35324), "S19674C1");
    check_base_class_offset(lv, (S19674C11*)(S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(57008,35136), "S19674C1");
    check_base_class_offset(lv, (S19674C22*)(S19674C21*)(S19674C20*), ABISELECT(18928,11836), "S19674C1");
    check_base_class_offset(lv, (S19674C21*)(S19674C20*), ABISELECT(18928,11836), "S19674C1");
    /*is_ambiguous_... S19674C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(60920,37672), "S19674C1");
    check_base_class_offset(lv, (S19674C17*)(S19674C16*)(S19674C24*), ABISELECT(60912,37668), "S19674C1");
    /*is_ambiguous_... S19674C12::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(61368,37924), "S19674C1");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(61184,37816), "S19674C1");
    /*is_ambiguous_... S19674C12::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(61176,37812), "S19674C1");
    check_base_class_offset(lv, (S19674C12*)(S19674C16*)(S19674C24*), ABISELECT(61176,37812), "S19674C1");
    check_base_class_offset(lv, (S19674C16*)(S19674C24*), ABISELECT(60912,37668), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*), ABISELECT(61784,38164), "S19674C1");
    /*is_ambiguous_... S19674C24::S19674C17 */ AMB_check_base_class_offset(lv, (S19674C17*)(S19674C24*), ABISELECT(61776,38160), "S19674C1");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C24*), ABISELECT(61592,38052), "S19674C1");
    /*is_ambiguous_... S19674C24::S19674C8 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C24*), ABISELECT(61584,38048), "S19674C1");
    check_base_class_offset(lv, (S19674C24*)(S19674C20*), ABISELECT(60912,37668), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C17*)(S19674C16*), ABISELECT(62056,38308), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C17*)(S19674C16*), ABISELECT(62048,38304), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C12*)(S19674C16*), ABISELECT(62504,38560), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C7*)(S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(62320,38452), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C8*)(S19674C12*)(S19674C16*), ABISELECT(62312,38448), "S19674C1");
    /*is_ambiguous_... S19674C1::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C12*)(S19674C16*), ABISELECT(62312,38448), "S19674C1");
    /*is_ambiguous_... S19674C20::S19674C16 */ AMB_check_base_class_offset(lv, (S19674C16*)(S19674C20*), ABISELECT(62048,38304), "S19674C1");
    check_base_class_offset(lv, (S19674C20*), ABISELECT(18928,11836), "S19674C1");
    check_field_offset(lv, s19674c1f0, ABISELECT(21968,13652), "S19674C1.s19674c1f0");
    check_field_offset(lv, s19674c1f1, ABISELECT(21976,13656), "S19674C1.s19674c1f1");
    check_field_offset(lv, s19674c1f2, ABISELECT(21984,13660), "S19674C1.s19674c1f2");
    set_bf_and_test(lv, s19674c1f3, ABISELECT(22016,13676), 0, 1, 1, "S19674C1");
    check_field_offset(lv, s19674c1f4, ABISELECT(22032,13680), "S19674C1.s19674c1f4");
    check_field_offset(lv, s19674c1f5, ABISELECT(24096,14928), "S19674C1.s19674c1f5");
    check_field_offset(lv, s19674c1f6, ABISELECT(24100,14932), "S19674C1.s19674c1f6");
    check_field_offset(lv, s19674c1f7, ABISELECT(24104,14936), "S19674C1.s19674c1f7");
    check_field_offset(lv, s19674c1f8, ABISELECT(24112,14940), "S19674C1.s19674c1f8");
    test_class_info(&lv, &cd_S19674C1);
    dp->~S19674C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19674C1(Test_S19674C1, "S19674C1", ABISELECT(62720,38684));

#else // __cplusplus

extern void _ZN8S19674C1C1Ev();
extern void _ZN8S19674C1D2Ev();
Name_Map name_map_S19674C1[] = {
  NSPAIR(_ZN8S19674C1C1Ev),
  NSPAIR(_ZN8S19674C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C4;
extern VTBL_ENTRY _ZTI8S19674C4[];
extern  VTBL_ENTRY _ZTV8S19674C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C4[];
extern Class_Descriptor cd_S19674C11;
extern VTBL_ENTRY _ZTI9S19674C11[];
extern  VTBL_ENTRY _ZTV9S19674C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C11[];
extern Class_Descriptor cd_S19674C14;
extern VTBL_ENTRY _ZTI9S19674C14[];
extern Class_Descriptor cd_S19674C13;
extern VTBL_ENTRY _ZTI9S19674C13[];
extern  VTBL_ENTRY _ZTV9S19674C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C10;
extern VTBL_ENTRY _ZTI9S19674C10[];
extern  VTBL_ENTRY _ZTV9S19674C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C10[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C23;
extern VTBL_ENTRY _ZTI9S19674C23[];
extern  VTBL_ENTRY _ZTV9S19674C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C23[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C6;
extern VTBL_ENTRY _ZTI8S19674C6[];
extern  VTBL_ENTRY _ZTV8S19674C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C6[];
extern Class_Descriptor cd_S19674C11;
extern VTBL_ENTRY _ZTI9S19674C11[];
extern  VTBL_ENTRY _ZTV9S19674C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C11[];
extern Class_Descriptor cd_S19674C22;
extern VTBL_ENTRY _ZTI9S19674C22[];
extern  VTBL_ENTRY _ZTV9S19674C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C22[];
extern Class_Descriptor cd_S19674C21;
extern VTBL_ENTRY _ZTI9S19674C21[];
extern  VTBL_ENTRY _ZTV9S19674C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C21[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C24;
extern VTBL_ENTRY _ZTI9S19674C24[];
extern  VTBL_ENTRY _ZTV9S19674C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C24[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C17;
extern VTBL_ENTRY _ZTI9S19674C17[];
extern  VTBL_ENTRY _ZTV9S19674C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C17[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C8;
extern VTBL_ENTRY _ZTI8S19674C8[];
extern  VTBL_ENTRY _ZTV8S19674C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C8[];
extern Class_Descriptor cd_S19674C12;
extern VTBL_ENTRY _ZTI9S19674C12[];
extern  VTBL_ENTRY _ZTV9S19674C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C12[];
extern Class_Descriptor cd_S19674C16;
extern VTBL_ENTRY _ZTI9S19674C16[];
extern  VTBL_ENTRY _ZTV9S19674C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C16[];
extern Class_Descriptor cd_S19674C20;
extern VTBL_ENTRY _ZTI9S19674C20[];
extern  VTBL_ENTRY _ZTV9S19674C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19674C20[];
static Base_Class bases_S19674C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C2,    ABISELECT(24160,14960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(54808,33804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C5,    ABISELECT(55912,34484), //bcp->offset
    76, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(54936,33864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C8,    ABISELECT(54928,33860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(54928,33860), //bcp->offset
    65, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(192,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
    9, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19674C12,    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
    27, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(344,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
    11, //immediately_derived
  0, 0},
  {&cd_S19674C8,    ABISELECT(336,188), //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
    28, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(336,188), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(56040,34576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(56032,34572), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19674C4,    ABISELECT(56224,34684), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19674C11,    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
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C14,    ABISELECT(56240,34688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19674C13,    ABISELECT(3904,2532), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(56480,34836), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(56296,34728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(56288,34724), //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
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(56288,34724), //bcp->offset
    95, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(56624,34912), //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S19674C10,    ABISELECT(56624,34912), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(18936,11840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    ABISELECT(18928,11836), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(19384,12092), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(19200,11984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(19192,11980), //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
    33, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(19192,11980), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C16,    ABISELECT(18928,11836), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(19600,12216), //bcp->offset
    61, //bcp->virtual_function_table_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
    33, //immediately_derived
  0, 0},
  {&cd_S19674C23,    ABISELECT(18928,11836), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(57200,35248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(57016,35140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(57008,35136), //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
    10, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(57008,35136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(57352,35328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(57344,35324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19674C6,    ABISELECT(57344,35324), //bcp->offset
    122, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19674C11,    ABISELECT(57008,35136), //bcp->offset
    110, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19674C22,    ABISELECT(18928,11836), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19674C21,    ABISELECT(18928,11836), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(60920,37672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    ABISELECT(60912,37668), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(61368,37924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(61184,37816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(61176,37812), //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
    17, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(61176,37812), //bcp->offset
    151, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19674C16,    ABISELECT(60912,37668), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(61784,38164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    ABISELECT(61776,38160), //bcp->offset
    163, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    55, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(61592,38052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(61584,38048), //bcp->offset
    158, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19674C24,    ABISELECT(60912,37668), //bcp->offset
    130, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(62056,38308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C17,    ABISELECT(62048,38304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(62504,38560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(62320,38452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C8,    ABISELECT(62312,38448), //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
    23, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S19674C12,    ABISELECT(62312,38448), //bcp->offset
    195, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S19674C16,    ABISELECT(62048,38304), //bcp->offset
    177, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S19674C20,    ABISELECT(18928,11836), //bcp->offset
    31, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19674C1[];
extern void _ZN8S19674C1D1Ev();
extern void _ZN8S19674C1D0Ev();
extern void _ZN8S19674C12v1Ev();
extern void _ZN8S19674C12v2Ev();
extern void _ZN8S19674C12v3Ev();
extern void ABISELECT(_ZThn336_N8S19674C1D1Ev,_ZThn188_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19674C1D0Ev,_ZThn188_N8S19674C1D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZThn18928_N8S19674C1D1Ev,_ZThn11836_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn18928_N8S19674C1D0Ev,_ZThn11836_N8S19674C1D0Ev)();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C213v11Ev();
extern void _ZN9S19674C203v13Ev();
extern void _ZN9S19674C203v14Ev();
extern void ABISELECT(_ZThn19192_N8S19674C1D1Ev,_ZThn11980_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn19192_N8S19674C1D0Ev,_ZThn11980_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn19600_N8S19674C1D1Ev,_ZThn12216_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn19600_N8S19674C1D0Ev,_ZThn12216_N8S19674C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19674C1D1Ev,_ZTv0_n20_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn54928_N8S19674C1D1Ev,_ZThn33860_N8S19674C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19674C1D0Ev,_ZTv0_n20_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn54928_N8S19674C1D0Ev,_ZThn33860_N8S19674C1D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n24_N8S19674C1D1Ev,_ZTv0_n12_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn55912_N8S19674C1D1Ev,_ZThn34484_N8S19674C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C1D0Ev,_ZTv0_n12_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn55912_N8S19674C1D0Ev,_ZThn34484_N8S19674C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19674C1D1Ev,_ZTv0_n16_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn56032_N8S19674C1D1Ev,_ZThn34572_N8S19674C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19674C1D0Ev,_ZTv0_n16_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn56032_N8S19674C1D0Ev,_ZThn34572_N8S19674C1D0Ev)() __attribute__((weak));
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N8S19674C1D1Ev,_ZTv0_n20_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn56224_N8S19674C1D1Ev,_ZThn34684_N8S19674C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19674C1D0Ev,_ZTv0_n20_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn56224_N8S19674C1D0Ev,_ZThn34684_N8S19674C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19674C1D1Ev,_ZTv0_n24_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn56288_N8S19674C1D1Ev,_ZThn34724_N8S19674C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19674C1D0Ev,_ZTv0_n24_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn56288_N8S19674C1D0Ev,_ZThn34724_N8S19674C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19674C1D1Ev,_ZTv0_n20_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn56624_N8S19674C1D1Ev,_ZThn34912_N8S19674C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19674C1D0Ev,_ZTv0_n20_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn56624_N8S19674C1D0Ev,_ZThn34912_N8S19674C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19674C1D1Ev,_ZTv0_n32_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn57008_N8S19674C1D1Ev,_ZThn35136_N8S19674C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19674C1D0Ev,_ZTv0_n32_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn57008_N8S19674C1D0Ev,_ZThn35136_N8S19674C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N8S19674C1D1Ev,_ZTvn188_n32_N8S19674C1D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N8S19674C1D0Ev,_ZTvn188_n32_N8S19674C1D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
extern void ABISELECT(_ZTv0_n72_N8S19674C1D1Ev,_ZTv0_n36_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn60912_N8S19674C1D1Ev,_ZThn37668_N8S19674C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19674C1D0Ev,_ZTv0_n36_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn60912_N8S19674C1D0Ev,_ZThn37668_N8S19674C1D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C243v12Ev();
extern void ABISELECT(_ZTvn264_n72_N8S19674C1D1Ev,_ZTvn144_n36_N8S19674C1D1Ev)();
extern void ABISELECT(_ZTvn264_n72_N8S19674C1D0Ev,_ZTvn144_n36_N8S19674C1D0Ev)();
extern void ABISELECT(_ZTvn672_n72_N8S19674C1D1Ev,_ZTvn380_n36_N8S19674C1D1Ev)();
extern void ABISELECT(_ZTvn672_n72_N8S19674C1D0Ev,_ZTvn380_n36_N8S19674C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19674C1D1Ev,_ZTv0_n32_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn61776_N8S19674C1D1Ev,_ZThn38160_N8S19674C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19674C1D0Ev,_ZTv0_n32_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn61776_N8S19674C1D0Ev,_ZThn38160_N8S19674C1D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void ABISELECT(_ZTv0_n64_N8S19674C1D1Ev,_ZTv0_n32_N8S19674C1D1Ev)();
extern void ABISELECT(_ZThn62048_N8S19674C1D1Ev,_ZThn38304_N8S19674C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19674C1D0Ev,_ZTv0_n32_N8S19674C1D0Ev)();
extern void ABISELECT(_ZThn62048_N8S19674C1D0Ev,_ZThn38304_N8S19674C1D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void ABISELECT(_ZTvn264_n64_N8S19674C1D1Ev,_ZTvn144_n32_N8S19674C1D1Ev)();
extern void ABISELECT(_ZTvn264_n64_N8S19674C1D0Ev,_ZTvn144_n32_N8S19674C1D0Ev)();
static  VTBL_ENTRY vtc_S19674C1[] = {
  ABISELECT(62048,38304),
  ABISELECT(61776,38160),
  ABISELECT(60912,37668),
  ABISELECT(57008,35136),
  ABISELECT(56624,34912),
  ABISELECT(56288,34724),
  ABISELECT(56240,34688),
  ABISELECT(24160,14960),
  ABISELECT(56224,34684),
  ABISELECT(56032,34572),
  ABISELECT(54808,33804),
  ABISELECT(54928,33860),
  ABISELECT(55912,34484),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&_ZN8S19674C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19674C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19674C12v3Ev,
  ABISELECT(54472,33616),
  ABISELECT(55576,34296),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S19674C1D1Ev,_ZThn188_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S19674C1D0Ev,_ZThn188_N8S19674C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(52336,32156),
  ABISELECT(-3904,-2532),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  ABISELECT(43120,26468),
  ABISELECT(42848,26324),
  ABISELECT(41984,25832),
  ABISELECT(37296,22848),
  ABISELECT(38080,23300),
  ABISELECT(5232,3124),
  ABISELECT(37360,22888),
  ABISELECT(35880,21968),
  ABISELECT(36000,22024),
  ABISELECT(37696,23076),
  ABISELECT(37104,22736),
  ABISELECT(36984,22648),
  ABISELECT(-18928,-11836),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn18928_N8S19674C1D1Ev,_ZThn11836_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn18928_N8S19674C1D0Ev,_ZThn11836_N8S19674C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C213v11Ev,
  (VTBL_ENTRY)&_ZN9S19674C203v13Ev,
  (VTBL_ENTRY)&_ZN9S19674C203v14Ev,
  ABISELECT(35616,21824),
  ABISELECT(35736,21880),
  ABISELECT(36720,22504),
  ABISELECT(-19192,-11980),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn19192_N8S19674C1D1Ev,_ZThn11980_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn19192_N8S19674C1D0Ev,_ZThn11980_N8S19674C1D0Ev),
  ABISELECT(-19600,-12216),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn19600_N8S19674C1D1Ev,_ZThn12216_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn19600_N8S19674C1D0Ev,_ZThn12216_N8S19674C1D0Ev),
  0,
  0,
  ABISELECT(-54928,-33860),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-54928,-33860),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C1D1Ev,_ZTv0_n20_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C1D0Ev,_ZTv0_n20_N8S19674C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  ABISELECT(-55912,-34484),
  ABISELECT(-55912,-34484),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C1D1Ev,_ZTv0_n12_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C1D0Ev,_ZTv0_n12_N8S19674C1D0Ev),
  ABISELECT(-56032,-34572),
  ABISELECT(-120,-88),
  ABISELECT(-56032,-34572),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19674C1D1Ev,_ZTv0_n16_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19674C1D0Ev,_ZTv0_n16_N8S19674C1D0Ev),
  ABISELECT(-56224,-34684),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-56224,-34684),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C1D1Ev,_ZTv0_n20_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C1D0Ev,_ZTv0_n20_N8S19674C1D0Ev),
  ABISELECT(-56288,-34724),
  ABISELECT(-1480,-920),
  ABISELECT(-1360,-864),
  ABISELECT(-376,-240),
  ABISELECT(-56288,-34724),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19674C1D1Ev,_ZTv0_n24_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19674C1D0Ev,_ZTv0_n24_N8S19674C1D0Ev),
  ABISELECT(-56624,-34912),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(-56624,-34912),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C1D1Ev,_ZTv0_n20_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19674C1D0Ev,_ZTv0_n20_N8S19674C1D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-57008,-35136),
  ABISELECT(-784,-452),
  ABISELECT(-976,-564),
  ABISELECT(-2200,-1332),
  ABISELECT(-2080,-1276),
  ABISELECT(-1096,-652),
  ABISELECT(-57008,-35136),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19674C1D1Ev,_ZTv0_n32_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19674C1D0Ev,_ZTv0_n32_N8S19674C1D0Ev),
  ABISELECT(-2536,-1520),
  ABISELECT(-1432,-840),
  ABISELECT(-57344,-35324),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S19674C1D1Ev,_ZTvn188_n32_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S19674C1D0Ev,_ZTvn188_n32_N8S19674C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-60912,-37668),
  ABISELECT(864,492),
  ABISELECT(-6104,-3864),
  ABISELECT(-5984,-3808),
  ABISELECT(-4288,-2756),
  ABISELECT(-4880,-3096),
  ABISELECT(-5000,-3184),
  ABISELECT(-60912,-37668),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19674C1D1Ev,_ZTv0_n36_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19674C1D0Ev,_ZTv0_n36_N8S19674C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C243v12Ev,
  ABISELECT(-6368,-4008),
  ABISELECT(-6248,-3952),
  ABISELECT(-5264,-3328),
  ABISELECT(-61176,-37812),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N8S19674C1D1Ev,_ZTvn144_n36_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N8S19674C1D0Ev,_ZTvn144_n36_N8S19674C1D0Ev),
  ABISELECT(-5672,-3564),
  ABISELECT(-61584,-38048),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N8S19674C1D1Ev,_ZTvn380_n36_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N8S19674C1D0Ev,_ZTvn380_n36_N8S19674C1D0Ev),
  0,
  0,
  ABISELECT(-61776,-38160),
  ABISELECT(-6968,-4356),
  ABISELECT(-6848,-4300),
  ABISELECT(-5152,-3248),
  ABISELECT(-5744,-3588),
  ABISELECT(-5864,-3676),
  ABISELECT(-61776,-38160),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19674C1D1Ev,_ZTv0_n32_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19674C1D0Ev,_ZTv0_n32_N8S19674C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-62048,-38304),
  ABISELECT(-7240,-4500),
  ABISELECT(-7120,-4444),
  ABISELECT(-5424,-3392),
  ABISELECT(-6016,-3732),
  ABISELECT(-6136,-3820),
  ABISELECT(-62048,-38304),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19674C1D1Ev,_ZTv0_n32_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19674C1D0Ev,_ZTv0_n32_N8S19674C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  ABISELECT(-7504,-4644),
  ABISELECT(-7384,-4588),
  ABISELECT(-6400,-3964),
  ABISELECT(-62312,-38448),
  (VTBL_ENTRY)&(_ZTI8S19674C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n64_N8S19674C1D1Ev,_ZTvn144_n32_N8S19674C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n64_N8S19674C1D0Ev,_ZTvn144_n32_N8S19674C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19674C1[];
extern void _ZN9S19674C11D1Ev();
extern void _ZN9S19674C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C11__A__8S19674C1[] = {
  ABISELECT(56224,34684),
  ABISELECT(56032,34572),
  ABISELECT(54808,33804),
  ABISELECT(54928,33860),
  ABISELECT(55912,34484),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN9S19674C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C11D0Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C11__8S19674C1[] = {
  ABISELECT(54808,33804),
  ABISELECT(54928,33860),
  ABISELECT(55912,34484),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C11__A1__8S19674C1[] = {
  ABISELECT(55912,34484),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn55912_N8S19674C8D1Ev,_ZThn34484_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn55912_N8S19674C8D0Ev,_ZThn34484_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A1__8S19674C1[] = {
  ABISELECT(-55912,-34484),
  ABISELECT(-55912,-34484),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn54928_N9S19674C12D1Ev,_ZThn33860_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn54928_N9S19674C12D0Ev,_ZThn33860_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C11__8S19674C1[] = {
  0,
  0,
  ABISELECT(-54928,-33860),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-54928,-33860),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn55912_N9S19674C12D1Ev,_ZThn34484_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn55912_N9S19674C12D0Ev,_ZThn34484_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C11__8S19674C1[] = {
  ABISELECT(-55912,-34484),
  ABISELECT(-55912,-34484),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__8S19674C1[] = {
  ABISELECT(54472,33616),
  ABISELECT(55576,34296),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C69S19674C11__A2__8S19674C1[] = {
  ABISELECT(55576,34296),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn55576_N8S19674C8D1Ev,_ZThn34296_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn55576_N8S19674C8D0Ev,_ZThn34296_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A2__8S19674C1[] = {
  ABISELECT(-55576,-34296),
  ABISELECT(-55576,-34296),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZThn55576_N8S19674C6D1Ev,_ZThn34296_N8S19674C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
extern void ABISELECT(_ZThn55576_N8S19674C6D0Ev,_ZThn34296_N8S19674C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C69S19674C11__A1__8S19674C1[] = {
  ABISELECT(-55576,-34296),
  ABISELECT(-55576,-34296),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn54928_N9S19674C11D1Ev,_ZThn33860_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn54928_N9S19674C11D0Ev,_ZThn33860_N9S19674C11D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C11__A__8S19674C1[] = {
  0,
  0,
  ABISELECT(-54928,-33860),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-54928,-33860),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn55912_N9S19674C11D1Ev,_ZThn34484_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn55912_N9S19674C11D0Ev,_ZThn34484_N9S19674C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C11__A__8S19674C1[] = {
  ABISELECT(-55912,-34484),
  ABISELECT(-55912,-34484),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev),
};
extern void ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__A__9S19674C11__A__8S19674C1[] = {
  ABISELECT(54472,33616),
  ABISELECT(55576,34296),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn56032_N9S19674C11D1Ev,_ZThn34572_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn56032_N9S19674C11D0Ev,_ZThn34572_N9S19674C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A3__9S19674C11__A__8S19674C1[] = {
  ABISELECT(-56032,-34572),
  ABISELECT(-120,-88),
  ABISELECT(-56032,-34572),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn56224_N9S19674C11D1Ev,_ZThn34684_N9S19674C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void ABISELECT(_ZThn56224_N9S19674C11D0Ev,_ZThn34684_N9S19674C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C11__A__8S19674C1[] = {
  ABISELECT(-56224,-34684),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-56224,-34684),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19674C13__8S19674C1[] = {
  ABISELECT(52336,32156),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C13[0]),
};
extern void _ZN9S19674C20D1Ev();
extern void _ZN9S19674C20D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C213v11Ev();
extern void _ZN9S19674C203v13Ev();
extern void _ZN9S19674C203v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C20__8S19674C1[] = {
  ABISELECT(43120,26468),
  ABISELECT(42848,26324),
  ABISELECT(41984,25832),
  ABISELECT(37296,22848),
  ABISELECT(38080,23300),
  ABISELECT(5232,3124),
  ABISELECT(37360,22888),
  ABISELECT(35880,21968),
  ABISELECT(36000,22024),
  ABISELECT(37696,23076),
  ABISELECT(37104,22736),
  ABISELECT(36984,22648),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&_ZN9S19674C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C213v11Ev,
  (VTBL_ENTRY)&_ZN9S19674C203v13Ev,
  (VTBL_ENTRY)&_ZN9S19674C203v14Ev,
};
extern void _ZN9S19674C21D1Ev();
extern void _ZN9S19674C21D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C213v11Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(37296,22848),
  ABISELECT(38080,23300),
  ABISELECT(5232,3124),
  ABISELECT(37360,22888),
  ABISELECT(35880,21968),
  ABISELECT(36000,22024),
  ABISELECT(37696,23076),
  ABISELECT(37104,22736),
  ABISELECT(36984,22648),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&_ZN9S19674C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C213v11Ev,
};
extern void _ZN9S19674C22D1Ev();
extern void _ZN9S19674C22D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(37296,22848),
  ABISELECT(38080,23300),
  ABISELECT(5232,3124),
  ABISELECT(37360,22888),
  ABISELECT(35880,21968),
  ABISELECT(36000,22024),
  ABISELECT(37696,23076),
  ABISELECT(37104,22736),
  ABISELECT(36984,22648),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&_ZN9S19674C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C22D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C23D1Ev();
extern void _ZN9S19674C23D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(37360,22888),
  ABISELECT(35880,21968),
  ABISELECT(36000,22024),
  ABISELECT(37696,23076),
  ABISELECT(37104,22736),
  ABISELECT(36984,22648),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&_ZN9S19674C23D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C23D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(35880,21968),
  ABISELECT(36000,22024),
  ABISELECT(37696,23076),
  ABISELECT(37104,22736),
  ABISELECT(36984,22648),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(35880,21968),
  ABISELECT(36000,22024),
  ABISELECT(37696,23076),
  ABISELECT(37104,22736),
  ABISELECT(36984,22648),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C17D1Ev,_ZThn22648_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C17D0Ev,_ZThn22648_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-36984,-22648),
  ABISELECT(-36984,-22648),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C17D1Ev,_ZThn22736_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C17D0Ev,_ZThn22736_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37104,-22736),
  ABISELECT(-120,-88),
  ABISELECT(-37104,-22736),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C17D1Ev,_ZThn23076_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C17D0Ev,_ZThn23076_N9S19674C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37696,-23076),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(-37696,-23076),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C17D1Ev,_ZThn22024_N9S19674C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C17D0Ev,_ZThn22024_N9S19674C17D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  0,
  0,
  ABISELECT(-36000,-22024),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-36000,-22024),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C239S19674C229S19674C219S19674C20__A2__8S19674C1[] = {
  ABISELECT(35616,21824),
  ABISELECT(35736,21880),
  ABISELECT(36720,22504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C169S19674C239S19674C229S19674C219S19674C20__A5__8S19674C1[] = {
  ABISELECT(36720,22504),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn36720_N8S19674C8D1Ev,_ZThn22504_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn36720_N8S19674C8D0Ev,_ZThn22504_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C239S19674C229S19674C219S19674C20__A5__8S19674C1[] = {
  ABISELECT(-36720,-22504),
  ABISELECT(-36720,-22504),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn35736_N9S19674C12D1Ev,_ZThn21880_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn35736_N9S19674C12D0Ev,_ZThn21880_N9S19674C12D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C169S19674C239S19674C229S19674C219S19674C20__A2__8S19674C1[] = {
  0,
  0,
  ABISELECT(-35736,-21880),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-35736,-21880),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZThn36720_N9S19674C12D1Ev,_ZThn22504_N9S19674C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
extern void ABISELECT(_ZThn36720_N9S19674C12D0Ev,_ZThn22504_N9S19674C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C169S19674C239S19674C229S19674C219S19674C20__A2__8S19674C1[] = {
  ABISELECT(-36720,-22504),
  ABISELECT(-36720,-22504),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C16D1Ev,_ZThn22648_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C16D0Ev,_ZThn22648_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-36984,-22648),
  ABISELECT(-36984,-22648),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C16D1Ev,_ZThn22736_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C16D0Ev,_ZThn22736_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37104,-22736),
  ABISELECT(-120,-88),
  ABISELECT(-37104,-22736),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C16D1Ev,_ZThn23076_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C16D0Ev,_ZThn23076_N9S19674C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37696,-23076),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(-37696,-23076),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C16D1Ev,_ZThn22024_N9S19674C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C16D0Ev,_ZThn22024_N9S19674C16D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  0,
  0,
  ABISELECT(-36000,-22024),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-36000,-22024),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(35616,21824),
  ABISELECT(35736,21880),
  ABISELECT(36720,22504),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C23D1Ev,_ZThn22024_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C23D0Ev,_ZThn22024_N9S19674C23D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  0,
  0,
  ABISELECT(-36000,-22024),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-36000,-22024),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C23D1Ev,_ZThn22648_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C23D0Ev,_ZThn22648_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-36984,-22648),
  ABISELECT(-36984,-22648),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn37360_N9S19674C23D1Ev,_ZThn22888_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn37360_N9S19674C23D0Ev,_ZThn22888_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37360,-22888),
  ABISELECT(-1480,-920),
  ABISELECT(-1360,-864),
  ABISELECT(-376,-240),
  ABISELECT(-37360,-22888),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C23D1Ev,_ZThn22736_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C23D0Ev,_ZThn22736_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37104,-22736),
  ABISELECT(-120,-88),
  ABISELECT(-37104,-22736),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C23D1Ev,_ZThn23076_N9S19674C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C23D0Ev,_ZThn23076_N9S19674C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37696,-23076),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(-37696,-23076),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZThn264_N9S19674C23D1Ev,_ZThn144_N9S19674C23D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C23D0Ev,_ZThn144_N9S19674C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__A1__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(35616,21824),
  ABISELECT(35736,21880),
  ABISELECT(36720,22504),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C23D1Ev,_ZThn144_N9S19674C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C23D0Ev,_ZThn144_N9S19674C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn37360_N9S19674C22D1Ev,_ZThn22888_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn37360_N9S19674C22D0Ev,_ZThn22888_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37360,-22888),
  ABISELECT(-1480,-920),
  ABISELECT(-1360,-864),
  ABISELECT(-376,-240),
  ABISELECT(-37360,-22888),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C22D1Ev,_ZThn22024_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C22D0Ev,_ZThn22024_N9S19674C22D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C229S19674C219S19674C20__8S19674C1[] = {
  0,
  0,
  ABISELECT(-36000,-22024),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-36000,-22024),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C22D1Ev,_ZThn22648_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C22D0Ev,_ZThn22648_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-36984,-22648),
  ABISELECT(-36984,-22648),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C22D1Ev,_ZThn22736_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C22D0Ev,_ZThn22736_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37104,-22736),
  ABISELECT(-120,-88),
  ABISELECT(-37104,-22736),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C22D1Ev,_ZThn23076_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C22D0Ev,_ZThn23076_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37696,-23076),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(-37696,-23076),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZThn264_N9S19674C22D1Ev,_ZThn144_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C22D0Ev,_ZThn144_N9S19674C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C23__A1__9S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(35616,21824),
  ABISELECT(35736,21880),
  ABISELECT(36720,22504),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C22D1Ev,_ZThn144_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C22D0Ev,_ZThn144_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn38080_N9S19674C22D1Ev,_ZThn23300_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn38080_N9S19674C22D0Ev,_ZThn23300_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C11__9S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-38080,-23300),
  ABISELECT(-784,-452),
  ABISELECT(-976,-564),
  ABISELECT(-2200,-1332),
  ABISELECT(-2080,-1276),
  ABISELECT(-1096,-652),
  ABISELECT(-38080,-23300),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S19674C22D1Ev,_ZTvn188_n32_N9S19674C22D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S19674C22D0Ev,_ZTvn188_n32_N9S19674C22D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__9S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-2536,-1520),
  ABISELECT(-1432,-840),
  ABISELECT(-38416,-23488),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C22D1Ev,_ZTvn188_n32_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C22D0Ev,_ZTvn188_n32_N9S19674C22D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev)();
extern void ABISELECT(_ZThn37296_N9S19674C22D1Ev,_ZThn22848_N9S19674C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev)();
extern void ABISELECT(_ZThn37296_N9S19674C22D0Ev,_ZThn22848_N9S19674C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C229S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37296,-22848),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-37296,-22848),
  (VTBL_ENTRY)&(_ZTI9S19674C22[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19674C21D1Ev,_ZTv0_n24_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn37360_N9S19674C21D1Ev,_ZThn22888_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C21D0Ev,_ZTv0_n24_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn37360_N9S19674C21D0Ev,_ZThn22888_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37360,-22888),
  ABISELECT(-1480,-920),
  ABISELECT(-1360,-864),
  ABISELECT(-376,-240),
  ABISELECT(-37360,-22888),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C21D1Ev,_ZTv0_n24_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C21D0Ev,_ZTv0_n24_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C21D1Ev,_ZThn22024_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C21D0Ev,_ZThn22024_N9S19674C21D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C219S19674C20__8S19674C1[] = {
  0,
  0,
  ABISELECT(-36000,-22024),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-36000,-22024),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C21D1Ev,_ZTv0_n12_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C21D1Ev,_ZThn22648_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C21D0Ev,_ZTv0_n12_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C21D0Ev,_ZThn22648_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-36984,-22648),
  ABISELECT(-36984,-22648),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C21D1Ev,_ZTv0_n12_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C21D0Ev,_ZTv0_n12_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C21D1Ev,_ZTv0_n16_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C21D1Ev,_ZThn22736_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C21D0Ev,_ZTv0_n16_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C21D0Ev,_ZThn22736_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37104,-22736),
  ABISELECT(-120,-88),
  ABISELECT(-37104,-22736),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C21D1Ev,_ZTv0_n16_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C21D0Ev,_ZTv0_n16_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C21D1Ev,_ZThn23076_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C21D0Ev,_ZThn23076_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37696,-23076),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(-37696,-23076),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZThn264_N9S19674C21D1Ev,_ZThn144_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C21D0Ev,_ZThn144_N9S19674C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C239S19674C22__A1__9S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(35616,21824),
  ABISELECT(35736,21880),
  ABISELECT(36720,22504),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C21D1Ev,_ZThn144_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C21D0Ev,_ZThn144_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19674C21D1Ev,_ZTv0_n32_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn38080_N9S19674C21D1Ev,_ZThn23300_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C21D0Ev,_ZTv0_n32_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn38080_N9S19674C21D0Ev,_ZThn23300_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C11__9S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-38080,-23300),
  ABISELECT(-784,-452),
  ABISELECT(-976,-564),
  ABISELECT(-2200,-1332),
  ABISELECT(-2080,-1276),
  ABISELECT(-1096,-652),
  ABISELECT(-38080,-23300),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C21D1Ev,_ZTv0_n32_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C21D0Ev,_ZTv0_n32_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S19674C21D1Ev,_ZTvn188_n32_N9S19674C21D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S19674C21D0Ev,_ZTvn188_n32_N9S19674C21D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__9S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-2536,-1520),
  ABISELECT(-1432,-840),
  ABISELECT(-38416,-23488),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C21D1Ev,_ZTvn188_n32_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C21D0Ev,_ZTvn188_n32_N9S19674C21D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev)();
extern void ABISELECT(_ZThn37296_N9S19674C21D1Ev,_ZThn22848_N9S19674C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev)();
extern void ABISELECT(_ZThn37296_N9S19674C21D0Ev,_ZThn22848_N9S19674C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C219S19674C20__8S19674C1[] = {
  ABISELECT(-37296,-22848),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-37296,-22848),
  (VTBL_ENTRY)&(_ZTI9S19674C21[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19674C20D1Ev,_ZTv0_n24_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn37360_N9S19674C20D1Ev,_ZThn22888_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19674C20D0Ev,_ZTv0_n24_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn37360_N9S19674C20D0Ev,_ZThn22888_N9S19674C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C20__8S19674C1[] = {
  ABISELECT(-37360,-22888),
  ABISELECT(-1480,-920),
  ABISELECT(-1360,-864),
  ABISELECT(-376,-240),
  ABISELECT(-37360,-22888),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C20D1Ev,_ZTv0_n24_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19674C20D0Ev,_ZTv0_n24_N9S19674C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C20D1Ev,_ZThn22024_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn36000_N9S19674C20D0Ev,_ZThn22024_N9S19674C20D0Ev)() __attribute__((weak));
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C20__8S19674C1[] = {
  0,
  0,
  ABISELECT(-36000,-22024),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-36000,-22024),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C20D1Ev,_ZTv0_n12_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C20D1Ev,_ZThn22648_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19674C20D0Ev,_ZTv0_n12_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn36984_N9S19674C20D0Ev,_ZThn22648_N9S19674C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C20__8S19674C1[] = {
  ABISELECT(-36984,-22648),
  ABISELECT(-36984,-22648),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C20D1Ev,_ZTv0_n12_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C20D0Ev,_ZTv0_n12_N9S19674C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C20D1Ev,_ZTv0_n16_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C20D1Ev,_ZThn22736_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19674C20D0Ev,_ZTv0_n16_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn37104_N9S19674C20D0Ev,_ZThn22736_N9S19674C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C8__A2__9S19674C20__8S19674C1[] = {
  ABISELECT(-37104,-22736),
  ABISELECT(-120,-88),
  ABISELECT(-37104,-22736),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C20D1Ev,_ZTv0_n16_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C20D0Ev,_ZTv0_n16_N9S19674C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C20D1Ev,_ZThn23076_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn37696_N9S19674C20D0Ev,_ZThn23076_N9S19674C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C20__8S19674C1[] = {
  ABISELECT(-37696,-23076),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(-37696,-23076),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev),
};
extern void ABISELECT(_ZThn264_N9S19674C20D1Ev,_ZThn144_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C20D0Ev,_ZThn144_N9S19674C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C239S19674C229S19674C21__A1__9S19674C20__8S19674C1[] = {
  ABISELECT(35616,21824),
  ABISELECT(35736,21880),
  ABISELECT(36720,22504),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C20D1Ev,_ZThn144_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C20D0Ev,_ZThn144_N9S19674C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn38080_N9S19674C20D1Ev,_ZThn23300_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn38080_N9S19674C20D0Ev,_ZThn23300_N9S19674C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19674C11__9S19674C20__8S19674C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-38080,-23300),
  ABISELECT(-784,-452),
  ABISELECT(-976,-564),
  ABISELECT(-2200,-1332),
  ABISELECT(-2080,-1276),
  ABISELECT(-1096,-652),
  ABISELECT(-38080,-23300),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S19674C20D1Ev,_ZTvn188_n32_N9S19674C20D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S19674C20D0Ev,_ZTvn188_n32_N9S19674C20D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A1__9S19674C20__8S19674C1[] = {
  ABISELECT(-2536,-1520),
  ABISELECT(-1432,-840),
  ABISELECT(-38416,-23488),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C20D1Ev,_ZTvn188_n32_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S19674C20D0Ev,_ZTvn188_n32_N9S19674C20D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn37296_N9S19674C20D1Ev,_ZThn22848_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn37296_N9S19674C20D0Ev,_ZThn22848_N9S19674C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C20__8S19674C1[] = {
  ABISELECT(-37296,-22848),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-37296,-22848),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N9S19674C20D1Ev,_ZTv0_n36_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn41984_N9S19674C20D1Ev,_ZThn25832_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19674C20D0Ev,_ZTv0_n36_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn41984_N9S19674C20D0Ev,_ZThn25832_N9S19674C20D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C243v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C24__9S19674C20__8S19674C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-41984,-25832),
  ABISELECT(864,492),
  ABISELECT(-6104,-3864),
  ABISELECT(-5984,-3808),
  ABISELECT(-4288,-2756),
  ABISELECT(-4880,-3096),
  ABISELECT(-5000,-3184),
  ABISELECT(-41984,-25832),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19674C20D1Ev,_ZTv0_n36_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19674C20D0Ev,_ZTv0_n36_N9S19674C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C243v12Ev,
};
extern void ABISELECT(_ZTvn264_n72_N9S19674C20D1Ev,_ZTvn144_n36_N9S19674C20D1Ev)();
extern void ABISELECT(_ZTvn264_n72_N9S19674C20D0Ev,_ZTvn144_n36_N9S19674C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C24__A3__9S19674C20__8S19674C1[] = {
  ABISELECT(-6368,-4008),
  ABISELECT(-6248,-3952),
  ABISELECT(-5264,-3328),
  ABISELECT(-42248,-25976),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S19674C20D1Ev,_ZTvn144_n36_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S19674C20D0Ev,_ZTvn144_n36_N9S19674C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn42848_N9S19674C20D1Ev,_ZThn26324_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn42848_N9S19674C20D0Ev,_ZThn26324_N9S19674C20D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C17__A2__9S19674C20__8S19674C1[] = {
  0,
  0,
  ABISELECT(-42848,-26324),
  ABISELECT(-6968,-4356),
  ABISELECT(-6848,-4300),
  ABISELECT(-5152,-3248),
  ABISELECT(-5744,-3588),
  ABISELECT(-5864,-3676),
  ABISELECT(-42848,-26324),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTvn672_n72_N9S19674C20D1Ev,_ZTvn380_n36_N9S19674C20D1Ev)();
extern void ABISELECT(_ZTvn672_n72_N9S19674C20D0Ev,_ZTvn380_n36_N9S19674C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C24__A7__9S19674C20__8S19674C1[] = {
  ABISELECT(-5672,-3564),
  ABISELECT(-42656,-26212),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S19674C20D1Ev,_ZTvn380_n36_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S19674C20D0Ev,_ZTvn380_n36_N9S19674C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev)();
extern void ABISELECT(_ZThn43120_N9S19674C20D1Ev,_ZThn26468_N9S19674C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev)();
extern void ABISELECT(_ZThn43120_N9S19674C20D0Ev,_ZThn26468_N9S19674C20D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C16__A2__9S19674C20__8S19674C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-43120,-26468),
  ABISELECT(-7240,-4500),
  ABISELECT(-7120,-4444),
  ABISELECT(-5424,-3392),
  ABISELECT(-6016,-3732),
  ABISELECT(-6136,-3820),
  ABISELECT(-43120,-26468),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void ABISELECT(_ZTvn264_n64_N9S19674C20D1Ev,_ZTvn144_n32_N9S19674C20D1Ev)();
extern void ABISELECT(_ZTvn264_n64_N9S19674C20D0Ev,_ZTvn144_n32_N9S19674C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__A4__9S19674C20__8S19674C1[] = {
  ABISELECT(-7504,-4644),
  ABISELECT(-7384,-4588),
  ABISELECT(-6400,-3964),
  ABISELECT(-43384,-26612),
  (VTBL_ENTRY)&(_ZTI9S19674C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n64_N9S19674C20D1Ev,_ZTvn144_n32_N9S19674C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n64_N9S19674C20D0Ev,_ZTvn144_n32_N9S19674C20D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__8S19674C1[] = {
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C6__8S19674C1[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C6__8S19674C1[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C6__8S19674C1[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A3__8S19674C1[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C8__A3__8S19674C1[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void _ZN8S19674C4D1Ev();
extern void _ZN8S19674C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C4__8S19674C1[] = {
  ABISELECT(-312,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C4__8S19674C1[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI8S19674C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D1Ev,_ZTv0_n12_N8S19674C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C4D0Ev,_ZTv0_n12_N8S19674C4D0Ev),
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C12__A1__8S19674C1[] = {
  ABISELECT(-1480,-920),
  ABISELECT(-1360,-864),
  ABISELECT(-376,-240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C12__A4__8S19674C1[] = {
  ABISELECT(-376,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C12__A4__8S19674C1[] = {
  ABISELECT(376,240),
  ABISELECT(376,240),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C12__A1__8S19674C1[] = {
  0,
  0,
  ABISELECT(1360,864),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(1360,864),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C12__A1__8S19674C1[] = {
  ABISELECT(376,240),
  ABISELECT(376,240),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN9S19674C10D1Ev();
extern void _ZN9S19674C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C10__8S19674C1[] = {
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&_ZN9S19674C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C10__8S19674C1[] = {
  ABISELECT(592,340),
  ABISELECT(-120,-88),
  ABISELECT(592,340),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D1Ev,_ZTv0_n16_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C10D0Ev,_ZTv0_n16_N9S19674C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C10__8S19674C1[] = {
  ABISELECT(712,428),
  ABISELECT(712,428),
  (VTBL_ENTRY)&(_ZTI9S19674C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D1Ev,_ZTv0_n12_N9S19674C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C10D0Ev,_ZTv0_n12_N9S19674C10D0Ev),
};
extern void _ZN9S19674C11D1Ev();
extern void _ZN9S19674C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C11__A1__8S19674C1[] = {
  ABISELECT(-784,-452),
  ABISELECT(-976,-564),
  ABISELECT(-2200,-1332),
  ABISELECT(-2080,-1276),
  ABISELECT(-1096,-652),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN9S19674C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C11D0Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C11__A3__8S19674C1[] = {
  ABISELECT(-2200,-1332),
  ABISELECT(-2080,-1276),
  ABISELECT(-1096,-652),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C11__A6__8S19674C1[] = {
  ABISELECT(-1096,-652),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A6__8S19674C1[] = {
  ABISELECT(1096,652),
  ABISELECT(1096,652),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C11__A3__8S19674C1[] = {
  0,
  0,
  ABISELECT(2080,1276),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(2080,1276),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C11__A3__8S19674C1[] = {
  ABISELECT(1096,652),
  ABISELECT(1096,652),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void _ZN8S19674C6D1Ev();
extern void _ZN8S19674C6D0Ev();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C69S19674C11__A2__8S19674C1[] = {
  ABISELECT(-2536,-1520),
  ABISELECT(-1432,-840),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&_ZN8S19674C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C88S19674C69S19674C11__A7__8S19674C1[] = {
  ABISELECT(-1432,-840),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A7__8S19674C1[] = {
  ABISELECT(1432,840),
  ABISELECT(1432,840),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C69S19674C11__A2__8S19674C1[] = {
  ABISELECT(1432,840),
  ABISELECT(1432,840),
  (VTBL_ENTRY)&(_ZTI8S19674C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C11__A1__8S19674C1[] = {
  0,
  0,
  ABISELECT(2080,1276),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(2080,1276),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C11__A1__8S19674C1[] = {
  ABISELECT(1096,652),
  ABISELECT(1096,652),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev),
};
extern void ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev)();
extern void ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__A__9S19674C11__A1__8S19674C1[] = {
  ABISELECT(-2536,-1520),
  ABISELECT(-1432,-840),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D1Ev,_ZThn188_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S19674C11D0Ev,_ZThn188_N9S19674C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A3__9S19674C11__A1__8S19674C1[] = {
  ABISELECT(976,564),
  ABISELECT(-120,-88),
  ABISELECT(976,564),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev),
};
extern void _ZN8S19674C42v6Ev();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C4__9S19674C11__A1__8S19674C1[] = {
  ABISELECT(784,452),
  0,
  ABISELECT(-312,-200),
  ABISELECT(784,452),
  (VTBL_ENTRY)&(_ZTI9S19674C11[0]),
  (VTBL_ENTRY)&_ZN8S19674C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev),
};
extern void _ZN9S19674C24D1Ev();
extern void _ZN9S19674C24D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
extern void _ZN9S19674C243v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C24__8S19674C1[] = {
  ABISELECT(864,492),
  ABISELECT(-6104,-3864),
  ABISELECT(-5984,-3808),
  ABISELECT(-4288,-2756),
  ABISELECT(-4880,-3096),
  ABISELECT(-5000,-3184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&_ZN9S19674C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C24D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
  (VTBL_ENTRY)&_ZN9S19674C243v12Ev,
};
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C169S19674C24__A1__8S19674C1[] = {
  ABISELECT(-6104,-3864),
  ABISELECT(-5984,-3808),
  ABISELECT(-4288,-2756),
  ABISELECT(-4880,-3096),
  ABISELECT(-5000,-3184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C169S19674C24__A1__8S19674C1[] = {
  ABISELECT(-6104,-3864),
  ABISELECT(-5984,-3808),
  ABISELECT(-4288,-2756),
  ABISELECT(-4880,-3096),
  ABISELECT(-5000,-3184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C169S19674C24__A1__8S19674C1[] = {
  ABISELECT(5000,3184),
  ABISELECT(5000,3184),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C169S19674C24__A1__8S19674C1[] = {
  ABISELECT(4880,3096),
  ABISELECT(-120,-88),
  ABISELECT(4880,3096),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C169S19674C24__A1__8S19674C1[] = {
  ABISELECT(4288,2756),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(4288,2756),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C169S19674C24__A1__8S19674C1[] = {
  0,
  0,
  ABISELECT(5984,3808),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(5984,3808),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C169S19674C24__A4__8S19674C1[] = {
  ABISELECT(-6368,-4008),
  ABISELECT(-6248,-3952),
  ABISELECT(-5264,-3328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C169S19674C24__A8__8S19674C1[] = {
  ABISELECT(-5264,-3328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C24__A8__8S19674C1[] = {
  ABISELECT(5264,3328),
  ABISELECT(5264,3328),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C169S19674C24__A4__8S19674C1[] = {
  0,
  0,
  ABISELECT(6248,3952),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(6248,3952),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C169S19674C24__A4__8S19674C1[] = {
  ABISELECT(5264,3328),
  ABISELECT(5264,3328),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C169S19674C24__A1__8S19674C1[] = {
  ABISELECT(5000,3184),
  ABISELECT(5000,3184),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C169S19674C24__A1__8S19674C1[] = {
  ABISELECT(4880,3096),
  ABISELECT(-120,-88),
  ABISELECT(4880,3096),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C169S19674C24__A1__8S19674C1[] = {
  ABISELECT(4288,2756),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(4288,2756),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C169S19674C24__A1__8S19674C1[] = {
  0,
  0,
  ABISELECT(5984,3808),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(5984,3808),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C169S19674C24__A1__8S19674C1[] = {
  ABISELECT(-6368,-4008),
  ABISELECT(-6248,-3952),
  ABISELECT(-5264,-3328),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C24__A9__8S19674C1[] = {
  ABISELECT(-5672,-3564),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C24__A9__8S19674C1[] = {
  ABISELECT(5672,3564),
  ABISELECT(5672,3564),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C24D1Ev,_ZTv0_n12_N9S19674C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C24D0Ev,_ZTv0_n12_N9S19674C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C24__8S19674C1[] = {
  ABISELECT(5000,3184),
  ABISELECT(5000,3184),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C24D1Ev,_ZTv0_n12_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C24D0Ev,_ZTv0_n12_N9S19674C24D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C24D1Ev,_ZTv0_n16_N9S19674C24D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C24D0Ev,_ZTv0_n16_N9S19674C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C24__8S19674C1[] = {
  ABISELECT(4880,3096),
  ABISELECT(-120,-88),
  ABISELECT(4880,3096),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C24D1Ev,_ZTv0_n16_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C24D0Ev,_ZTv0_n16_N9S19674C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C24__8S19674C1[] = {
  ABISELECT(4288,2756),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(4288,2756),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C24__8S19674C1[] = {
  0,
  0,
  ABISELECT(5984,3808),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(5984,3808),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D1Ev,_ZTv0_n20_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C24D0Ev,_ZTv0_n20_N9S19674C24D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C24D1Ev,_ZThn144_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C24D0Ev,_ZThn144_N9S19674C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__9S19674C24__8S19674C1[] = {
  ABISELECT(-6368,-4008),
  ABISELECT(-6248,-3952),
  ABISELECT(-5264,-3328),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C24D1Ev,_ZThn144_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C24D0Ev,_ZThn144_N9S19674C24D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19674C24D1Ev,_ZTv0_n32_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn864_N9S19674C24D1Ev,_ZThn492_N9S19674C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19674C24D0Ev,_ZTv0_n32_N9S19674C24D0Ev)();
extern void ABISELECT(_ZThn864_N9S19674C24D0Ev,_ZThn492_N9S19674C24D0Ev)() __attribute__((weak));
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C17__A1__9S19674C24__8S19674C1[] = {
  0,
  0,
  ABISELECT(-864,-492),
  ABISELECT(-6968,-4356),
  ABISELECT(-6848,-4300),
  ABISELECT(-5152,-3248),
  ABISELECT(-5744,-3588),
  ABISELECT(-5864,-3676),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C24D1Ev,_ZTv0_n32_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19674C24D0Ev,_ZTv0_n32_N9S19674C24D0Ev),
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZThn672_N9S19674C24D1Ev,_ZThn380_N9S19674C24D1Ev)();
extern void ABISELECT(_ZThn672_N9S19674C24D0Ev,_ZThn380_N9S19674C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__A__9S19674C24__8S19674C1[] = {
  ABISELECT(-5672,-3564),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19674C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C24D1Ev,_ZThn380_N9S19674C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S19674C24D0Ev,_ZThn380_N9S19674C24D0Ev),
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C17__A2__8S19674C1[] = {
  ABISELECT(-6968,-4356),
  ABISELECT(-6848,-4300),
  ABISELECT(-5152,-3248),
  ABISELECT(-5744,-3588),
  ABISELECT(-5864,-3676),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C17__A2__8S19674C1[] = {
  ABISELECT(5864,3676),
  ABISELECT(5864,3676),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C17__A2__8S19674C1[] = {
  ABISELECT(5744,3588),
  ABISELECT(-120,-88),
  ABISELECT(5744,3588),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C17__A2__8S19674C1[] = {
  ABISELECT(5152,3248),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(5152,3248),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C17__A2__8S19674C1[] = {
  0,
  0,
  ABISELECT(6848,4300),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(6848,4300),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C16D1Ev();
extern void _ZN9S19674C16D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
extern void _ZN9S19674C162v9Ev();
extern void _ZN9S19674C163v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C16__A2__8S19674C1[] = {
  ABISELECT(-7240,-4500),
  ABISELECT(-7120,-4444),
  ABISELECT(-5424,-3392),
  ABISELECT(-6016,-3732),
  ABISELECT(-6136,-3820),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&_ZN9S19674C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
  (VTBL_ENTRY)&_ZN9S19674C162v9Ev,
  (VTBL_ENTRY)&_ZN9S19674C163v10Ev,
};
extern void _ZN9S19674C17D1Ev();
extern void _ZN9S19674C17D0Ev();
extern void _ZN9S19674C172v7Ev();
extern void _ZN9S19674C172v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C179S19674C16__A3__8S19674C1[] = {
  ABISELECT(-7240,-4500),
  ABISELECT(-7120,-4444),
  ABISELECT(-5424,-3392),
  ABISELECT(-6016,-3732),
  ABISELECT(-6136,-3820),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&_ZN9S19674C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v7Ev,
  (VTBL_ENTRY)&_ZN9S19674C172v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C179S19674C16__A3__8S19674C1[] = {
  ABISELECT(6136,3820),
  ABISELECT(6136,3820),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C179S19674C16__A3__8S19674C1[] = {
  ABISELECT(6016,3732),
  ABISELECT(-120,-88),
  ABISELECT(6016,3732),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C179S19674C16__A3__8S19674C1[] = {
  ABISELECT(5424,3392),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(5424,3392),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C179S19674C16__A3__8S19674C1[] = {
  0,
  0,
  ABISELECT(7120,4444),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(7120,4444),
  (VTBL_ENTRY)&(_ZTI9S19674C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void _ZN9S19674C12D1Ev();
extern void _ZN9S19674C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19674C129S19674C16__A5__8S19674C1[] = {
  ABISELECT(-7504,-4644),
  ABISELECT(-7384,-4588),
  ABISELECT(-6400,-3964),
  0,
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&_ZN9S19674C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19674C12D0Ev,
};
extern void _ZN8S19674C8D1Ev();
extern void _ZN8S19674C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C89S19674C129S19674C16__A10__8S19674C1[] = {
  ABISELECT(-6400,-3964),
  0,
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&_ZN8S19674C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19674C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S19674C89S19674C129S19674C16__A10__8S19674C1[] = {
  ABISELECT(6400,3964),
  ABISELECT(6400,3964),
  (VTBL_ENTRY)&(_ZTI8S19674C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C129S19674C16__A5__8S19674C1[] = {
  0,
  0,
  ABISELECT(7384,4588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(7384,4588),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C129S19674C16__A5__8S19674C1[] = {
  ABISELECT(6400,3964),
  ABISELECT(6400,3964),
  (VTBL_ENTRY)&(_ZTI9S19674C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S19674C16__A2__8S19674C1[] = {
  ABISELECT(6136,3820),
  ABISELECT(6136,3820),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C8__9S19674C16__A2__8S19674C1[] = {
  ABISELECT(6016,3732),
  ABISELECT(-120,-88),
  ABISELECT(6016,3732),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C10__9S19674C16__A2__8S19674C1[] = {
  ABISELECT(5424,3392),
  ABISELECT(-712,-428),
  ABISELECT(-592,-340),
  ABISELECT(5424,3392),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev)();
extern void _ZN8S19674C62v4Ev();
extern void _ZN8S19674C62v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19674C6__9S19674C16__A2__8S19674C1[] = {
  0,
  0,
  ABISELECT(7120,4444),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(7120,4444),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19674C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19674C62v5Ev,
};
extern void ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19674C12__9S19674C16__A2__8S19674C1[] = {
  ABISELECT(-7504,-4644),
  ABISELECT(-7384,-4588),
  ABISELECT(-6400,-3964),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S19674C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D1Ev,_ZThn144_N9S19674C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S19674C16D0Ev,_ZThn144_N9S19674C16D0Ev),
};
static  VTT_ENTRY vtt_S19674C1[] = {
  {&(_ZTV8S19674C1[15]),  15,202},
  {&(_tg__ZTV9S19674C11__A__8S19674C1[7]),  7,9},
  {&(_tg__ZTV9S19674C129S19674C11__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C11__A1__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A1__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C11__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C11__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C69S19674C11__A1__8S19674C1[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C69S19674C11__A2__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A2__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C69S19674C11__A1__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C11__A__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C11__A__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C6__A__9S19674C11__A__8S19674C1[4]),  4,8},
  {&(_tg__ZTV8S19674C8__A3__9S19674C11__A__8S19674C1[4]),  4,6},
  {&(_tg__ZTV8S19674C4__9S19674C11__A__8S19674C1[5]),  5,8},
  {&(_tg__ZTV9S19674C13__8S19674C1[3]),  3,3},
  {&(_tg__ZTV9S19674C20__8S19674C1[14]),  14,23},
  {&(_tg__ZTV9S19674C219S19674C20__8S19674C1[11]),  11,18},
  {&(_tg__ZTV9S19674C229S19674C219S19674C20__8S19674C1[11]),  11,17},
  {&(_tg__ZTV9S19674C239S19674C229S19674C219S19674C20__8S19674C1[8]),  8,14},
  {&(_tg__ZTV9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C169S19674C239S19674C229S19674C219S19674C20__A2__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C169S19674C239S19674C229S19674C219S19674C20__A5__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C239S19674C229S19674C219S19674C20__A5__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C169S19674C239S19674C229S19674C219S19674C20__A2__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C169S19674C239S19674C229S19674C219S19674C20__A2__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C169S19674C239S19674C229S19674C219S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[3]),  3,5},
  {&(_tg__ZTV9S19674C12__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[6]),  6,8},
  {&(_tg__ZTV8S19674C8__A2__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV9S19674C129S19674C16__A1__9S19674C239S19674C229S19674C219S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV9S19674C12__9S19674C229S19674C219S19674C20__8S19674C1[6]),  6,8},
  {&(_tg__ZTV8S19674C6__9S19674C229S19674C219S19674C20__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C229S19674C219S19674C20__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A2__9S19674C229S19674C219S19674C20__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C229S19674C219S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV9S19674C129S19674C169S19674C23__A1__9S19674C229S19674C219S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV9S19674C11__9S19674C229S19674C219S19674C20__8S19674C1[10]),  10,12},
  {&(_tg__ZTV8S19674C69S19674C11__A1__9S19674C229S19674C219S19674C20__8S19674C1[4]),  4,8},
  {&(_tg__ZTV8S19674C4__9S19674C229S19674C219S19674C20__8S19674C1[5]),  5,8},
  {&(_tg__ZTV9S19674C12__9S19674C219S19674C20__8S19674C1[6]),  6,8},
  {&(_tg__ZTV8S19674C6__9S19674C219S19674C20__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C219S19674C20__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A2__9S19674C219S19674C20__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C219S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV9S19674C129S19674C169S19674C239S19674C22__A1__9S19674C219S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV9S19674C11__9S19674C219S19674C20__8S19674C1[10]),  10,12},
  {&(_tg__ZTV8S19674C69S19674C11__A1__9S19674C219S19674C20__8S19674C1[4]),  4,8},
  {&(_tg__ZTV8S19674C4__9S19674C219S19674C20__8S19674C1[5]),  5,8},
  {&(_tg__ZTV9S19674C12__9S19674C20__8S19674C1[6]),  6,8},
  {&(_tg__ZTV8S19674C6__9S19674C20__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C20__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A2__9S19674C20__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV9S19674C129S19674C169S19674C239S19674C229S19674C21__A1__9S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV9S19674C11__9S19674C20__8S19674C1[10]),  10,12},
  {&(_tg__ZTV8S19674C69S19674C11__A1__9S19674C20__8S19674C1[4]),  4,8},
  {&(_tg__ZTV8S19674C4__9S19674C20__8S19674C1[5]),  5,8},
  {&(_tg__ZTV9S19674C24__9S19674C20__8S19674C1[14]),  14,21},
  {&(_tg__ZTV9S19674C129S19674C169S19674C24__A3__9S19674C20__8S19674C1[5]),  5,7},
  {&(_tg__ZTV9S19674C17__A2__9S19674C20__8S19674C1[10]),  10,14},
  {&(_tg__ZTV8S19674C89S19674C24__A7__9S19674C20__8S19674C1[3]),  3,5},
  {&(_tg__ZTV9S19674C16__A2__9S19674C20__8S19674C1[12]),  12,18},
  {&(_tg__ZTV9S19674C129S19674C16__A4__9S19674C20__8S19674C1[5]),  5,7},
  {&(_ZTV8S19674C1[72]),  72,202},
  {&(_ZTV8S19674C1[79]),  79,202},
  {&(_ZTV8S19674C1[24]),  24,202},
  {&(_ZTV8S19674C1[85]),  85,202},
  {&(_ZTV8S19674C1[92]),  92,202},
  {&(_ZTV8S19674C1[31]),  31,202},
  {&(_ZTV8S19674C1[45]),  45,202},
  {&(_ZTV8S19674C1[101]),  101,202},
  {&(_ZTV8S19674C1[108]),  108,202},
  {&(_ZTV8S19674C1[59]),  59,202},
  {&(_ZTV8S19674C1[120]),  120,202},
  {&(_ZTV8S19674C1[126]),  126,202},
  {&(_ZTV8S19674C1[144]),  144,202},
  {&(_ZTV8S19674C1[156]),  156,202},
  {&(_ZTV8S19674C1[173]),  173,202},
  {&(_ZTV8S19674C1[161]),  161,202},
  {&(_ZTV8S19674C1[189]),  189,202},
  {&(_ZTV8S19674C1[200]),  200,202},
  {&(_tg__ZTV8S19674C6__8S19674C1[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C6__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C6__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C6__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__A3__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C8__A3__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C4__8S19674C1[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S19674C4__8S19674C1[3]),  3,5},
  {&(_tg__ZTV9S19674C12__A1__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C12__A4__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C12__A4__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C12__A1__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C12__A1__8S19674C1[3]),  3,5},
  {&(_tg__ZTV9S19674C10__8S19674C1[4]),  4,6},
  {&(_tg__ZTV8S19674C8__9S19674C10__8S19674C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S19674C10__8S19674C1[3]),  3,5},
  {&(_tg__ZTV9S19674C11__A1__8S19674C1[7]),  7,9},
  {&(_tg__ZTV9S19674C129S19674C11__A3__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C11__A6__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C11__A6__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C11__A3__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C11__A3__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C69S19674C11__A2__8S19674C1[4]),  4,8},
  {&(_tg__ZTV8S19674C88S19674C69S19674C11__A7__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C88S19674C69S19674C11__A7__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C69S19674C11__A2__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C11__A1__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C11__A1__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C6__A__9S19674C11__A1__8S19674C1[4]),  4,8},
  {&(_tg__ZTV8S19674C8__A3__9S19674C11__A1__8S19674C1[4]),  4,6},
  {&(_tg__ZTV8S19674C4__9S19674C11__A1__8S19674C1[5]),  5,8},
  {&(_tg__ZTV9S19674C24__8S19674C1[8]),  8,15},
  {&(_tg__ZTV9S19674C169S19674C24__A1__8S19674C1[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C169S19674C24__A1__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C169S19674C24__A1__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C169S19674C24__A1__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C169S19674C24__A1__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C169S19674C24__A1__8S19674C1[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C169S19674C24__A4__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C169S19674C24__A8__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C169S19674C24__A8__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C169S19674C24__A4__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C169S19674C24__A4__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C169S19674C24__A1__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C169S19674C24__A1__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C169S19674C24__A1__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C169S19674C24__A1__8S19674C1[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C169S19674C24__A1__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C24__A9__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C24__A9__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C24__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C24__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C24__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C24__8S19674C1[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C16__9S19674C24__8S19674C1[5]),  5,7},
  {&(_tg__ZTV9S19674C17__A1__9S19674C24__8S19674C1[10]),  10,14},
  {&(_tg__ZTV8S19674C8__A__9S19674C24__8S19674C1[3]),  3,5},
  {&(_tg__ZTV9S19674C17__A2__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C17__A2__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C17__A2__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C17__A2__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C17__A2__8S19674C1[7]),  7,11},
  {&(_tg__ZTV9S19674C16__A2__8S19674C1[7]),  7,13},
  {&(_tg__ZTV9S19674C179S19674C16__A3__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C179S19674C16__A3__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C179S19674C16__A3__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C179S19674C16__A3__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C179S19674C16__A3__8S19674C1[7]),  7,11},
  {&(_tg__ZTV9S19674C129S19674C16__A5__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C89S19674C129S19674C16__A10__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S19674C89S19674C129S19674C16__A10__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C6__9S19674C129S19674C16__A5__8S19674C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S19674C129S19674C16__A5__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S19674C16__A2__8S19674C1[3]),  3,5},
  {&(_tg__ZTV8S19674C8__9S19674C16__A2__8S19674C1[4]),  4,6},
  {&(_tg__ZTV9S19674C10__9S19674C16__A2__8S19674C1[5]),  5,7},
  {&(_tg__ZTV8S19674C6__9S19674C16__A2__8S19674C1[7]),  7,11},
  {&(_tg__ZTV9S19674C12__9S19674C16__A2__8S19674C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19674C1[];
extern  VTBL_ENTRY _ZTV8S19674C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19674C1[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C24D0Ev,_ZTv0_n32_N9S19674C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19674C24D0Ev,_ZThn492_N9S19674C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C24D1Ev,_ZTv0_n32_N9S19674C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19674C24D1Ev,_ZThn492_N9S19674C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19674C20D0Ev,_ZTv0_n36_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn41984_N9S19674C20D0Ev,_ZThn25832_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19674C20D1Ev,_ZTv0_n36_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn41984_N9S19674C20D1Ev,_ZThn25832_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C20D0Ev,_ZTv0_n32_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43120_N9S19674C20D0Ev,_ZThn26468_N9S19674C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn42848_N9S19674C20D0Ev,_ZThn26324_N9S19674C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn38080_N9S19674C20D0Ev,_ZThn23300_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C20D1Ev,_ZTv0_n32_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43120_N9S19674C20D1Ev,_ZThn26468_N9S19674C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn42848_N9S19674C20D1Ev,_ZThn26324_N9S19674C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn38080_N9S19674C20D1Ev,_ZThn23300_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C20D0Ev,_ZTv0_n16_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C20D0Ev,_ZThn22736_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C20D1Ev,_ZTv0_n16_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C20D1Ev,_ZThn22736_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C20D0Ev,_ZTv0_n12_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C20D0Ev,_ZThn22648_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C20D1Ev,_ZTv0_n12_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C20D1Ev,_ZThn22648_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C20D0Ev,_ZTv0_n20_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37296_N9S19674C20D0Ev,_ZThn22848_N9S19674C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C20D0Ev,_ZThn23076_N9S19674C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C20D0Ev,_ZThn22024_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C20D1Ev,_ZTv0_n20_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37296_N9S19674C20D1Ev,_ZThn22848_N9S19674C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C20D1Ev,_ZThn23076_N9S19674C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C20D1Ev,_ZThn22024_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C20D0Ev,_ZTv0_n24_N9S19674C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37360_N9S19674C20D0Ev,_ZThn22888_N9S19674C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C20D1Ev,_ZTv0_n24_N9S19674C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37360_N9S19674C20D1Ev,_ZThn22888_N9S19674C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C21D0Ev,_ZTv0_n32_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38080_N9S19674C21D0Ev,_ZThn23300_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C21D1Ev,_ZTv0_n32_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38080_N9S19674C21D1Ev,_ZThn23300_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C21D0Ev,_ZTv0_n16_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C21D0Ev,_ZThn22736_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C21D1Ev,_ZTv0_n16_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C21D1Ev,_ZThn22736_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C21D0Ev,_ZTv0_n12_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C21D0Ev,_ZThn22648_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C21D1Ev,_ZTv0_n12_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C21D1Ev,_ZThn22648_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C21D0Ev,_ZTv0_n20_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37296_N9S19674C21D0Ev,_ZThn22848_N9S19674C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C21D0Ev,_ZThn23076_N9S19674C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C21D0Ev,_ZThn22024_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C21D1Ev,_ZTv0_n20_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37296_N9S19674C21D1Ev,_ZThn22848_N9S19674C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C21D1Ev,_ZThn23076_N9S19674C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C21D1Ev,_ZThn22024_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C21D0Ev,_ZTv0_n24_N9S19674C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37360_N9S19674C21D0Ev,_ZThn22888_N9S19674C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C21D1Ev,_ZTv0_n24_N9S19674C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37360_N9S19674C21D1Ev,_ZThn22888_N9S19674C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C22D0Ev,_ZTv0_n32_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38080_N9S19674C22D0Ev,_ZThn23300_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19674C22D1Ev,_ZTv0_n32_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38080_N9S19674C22D1Ev,_ZThn23300_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C22D0Ev,_ZTv0_n16_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C22D0Ev,_ZThn22736_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C22D1Ev,_ZTv0_n16_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C22D1Ev,_ZThn22736_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C22D0Ev,_ZTv0_n12_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C22D0Ev,_ZThn22648_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C22D1Ev,_ZTv0_n12_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C22D1Ev,_ZThn22648_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C22D0Ev,_ZTv0_n20_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37296_N9S19674C22D0Ev,_ZThn22848_N9S19674C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C22D0Ev,_ZThn23076_N9S19674C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C22D0Ev,_ZThn22024_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C22D1Ev,_ZTv0_n20_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37296_N9S19674C22D1Ev,_ZThn22848_N9S19674C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C22D1Ev,_ZThn23076_N9S19674C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C22D1Ev,_ZThn22024_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C22D0Ev,_ZTv0_n24_N9S19674C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37360_N9S19674C22D0Ev,_ZThn22888_N9S19674C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C22D1Ev,_ZTv0_n24_N9S19674C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37360_N9S19674C22D1Ev,_ZThn22888_N9S19674C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C23D0Ev,_ZTv0_n16_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C23D0Ev,_ZThn22736_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C23D1Ev,_ZTv0_n16_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C23D1Ev,_ZThn22736_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C23D0Ev,_ZTv0_n24_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37360_N9S19674C23D0Ev,_ZThn22888_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19674C23D1Ev,_ZTv0_n24_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37360_N9S19674C23D1Ev,_ZThn22888_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C23D0Ev,_ZTv0_n12_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C23D0Ev,_ZThn22648_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C23D1Ev,_ZTv0_n12_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C23D1Ev,_ZThn22648_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C23D0Ev,_ZTv0_n20_N9S19674C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C23D0Ev,_ZThn23076_N9S19674C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C23D0Ev,_ZThn22024_N9S19674C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C23D1Ev,_ZTv0_n20_N9S19674C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C23D1Ev,_ZThn23076_N9S19674C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C23D1Ev,_ZThn22024_N9S19674C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D0Ev,_ZTv0_n20_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C16D0Ev,_ZThn22024_N9S19674C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C16D0Ev,_ZThn23076_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C16D1Ev,_ZTv0_n20_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C16D1Ev,_ZThn22024_N9S19674C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C16D1Ev,_ZThn23076_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D0Ev,_ZTv0_n16_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C16D0Ev,_ZThn22736_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C16D1Ev,_ZTv0_n16_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C16D1Ev,_ZThn22736_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D0Ev,_ZTv0_n12_N9S19674C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C16D0Ev,_ZThn22648_N9S19674C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C16D1Ev,_ZTv0_n12_N9S19674C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C16D1Ev,_ZThn22648_N9S19674C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D0Ev,_ZTv0_n20_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C17D0Ev,_ZThn22024_N9S19674C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C17D0Ev,_ZThn23076_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C17D1Ev,_ZTv0_n20_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36000_N9S19674C17D1Ev,_ZThn22024_N9S19674C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn37696_N9S19674C17D1Ev,_ZThn23076_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D0Ev,_ZTv0_n16_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C17D0Ev,_ZThn22736_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C17D1Ev,_ZTv0_n16_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37104_N9S19674C17D1Ev,_ZThn22736_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D0Ev,_ZTv0_n12_N9S19674C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C17D0Ev,_ZThn22648_N9S19674C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C17D1Ev,_ZTv0_n12_N9S19674C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36984_N9S19674C17D1Ev,_ZThn22648_N9S19674C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C11D0Ev,_ZTv0_n16_N9S19674C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56032_N9S19674C11D0Ev,_ZThn34572_N9S19674C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19674C11D1Ev,_ZTv0_n16_N9S19674C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56032_N9S19674C11D1Ev,_ZThn34572_N9S19674C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C11D0Ev,_ZTv0_n12_N9S19674C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55912_N9S19674C11D0Ev,_ZThn34484_N9S19674C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C11D1Ev,_ZTv0_n12_N9S19674C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55912_N9S19674C11D1Ev,_ZThn34484_N9S19674C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C11D0Ev,_ZTv0_n20_N9S19674C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56224_N9S19674C11D0Ev,_ZThn34684_N9S19674C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn54928_N9S19674C11D0Ev,_ZThn33860_N9S19674C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C11D1Ev,_ZTv0_n20_N9S19674C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56224_N9S19674C11D1Ev,_ZThn34684_N9S19674C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn54928_N9S19674C11D1Ev,_ZThn33860_N9S19674C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D0Ev,_ZTv0_n12_N8S19674C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D0Ev,_ZThn624_N8S19674C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn55576_N8S19674C6D0Ev,_ZThn34296_N8S19674C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C6D1Ev,_ZTv0_n12_N8S19674C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C6D1Ev,_ZThn624_N8S19674C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn55576_N8S19674C6D1Ev,_ZThn34296_N8S19674C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D0Ev,_ZTv0_n12_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36720_N9S19674C12D0Ev,_ZThn22504_N9S19674C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn55912_N9S19674C12D0Ev,_ZThn34484_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19674C12D1Ev,_ZTv0_n12_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36720_N9S19674C12D1Ev,_ZThn22504_N9S19674C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn55912_N9S19674C12D1Ev,_ZThn34484_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D0Ev,_ZTv0_n20_N9S19674C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35736_N9S19674C12D0Ev,_ZThn21880_N9S19674C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn54928_N9S19674C12D0Ev,_ZThn33860_N9S19674C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19674C12D1Ev,_ZTv0_n20_N9S19674C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35736_N9S19674C12D1Ev,_ZThn21880_N9S19674C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn54928_N9S19674C12D1Ev,_ZThn33860_N9S19674C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D0Ev,_ZTv0_n12_N8S19674C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D0Ev,_ZThn624_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn36720_N8S19674C8D0Ev,_ZThn22504_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn55576_N8S19674C8D0Ev,_ZThn34296_N8S19674C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn55912_N8S19674C8D0Ev,_ZThn34484_N8S19674C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C8D1Ev,_ZTv0_n12_N8S19674C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S19674C8D1Ev,_ZThn624_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn36720_N8S19674C8D1Ev,_ZThn22504_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn55576_N8S19674C8D1Ev,_ZThn34296_N8S19674C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn55912_N8S19674C8D1Ev,_ZThn34484_N8S19674C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19674C1D0Ev,_ZTv0_n36_N8S19674C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60912_N8S19674C1D0Ev,_ZThn37668_N8S19674C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19674C1D1Ev,_ZTv0_n36_N8S19674C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60912_N8S19674C1D1Ev,_ZThn37668_N8S19674C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19674C1D0Ev,_ZTv0_n32_N8S19674C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62048_N8S19674C1D0Ev,_ZThn38304_N8S19674C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn61776_N8S19674C1D0Ev,_ZThn38160_N8S19674C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn57008_N8S19674C1D0Ev,_ZThn35136_N8S19674C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19674C1D1Ev,_ZTv0_n32_N8S19674C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62048_N8S19674C1D1Ev,_ZThn38304_N8S19674C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn61776_N8S19674C1D1Ev,_ZThn38160_N8S19674C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn57008_N8S19674C1D1Ev,_ZThn35136_N8S19674C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19674C1D0Ev,_ZTv0_n24_N8S19674C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56288_N8S19674C1D0Ev,_ZThn34724_N8S19674C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19674C1D1Ev,_ZTv0_n24_N8S19674C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56288_N8S19674C1D1Ev,_ZThn34724_N8S19674C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19674C1D0Ev,_ZTv0_n16_N8S19674C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56032_N8S19674C1D0Ev,_ZThn34572_N8S19674C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19674C1D1Ev,_ZTv0_n16_N8S19674C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56032_N8S19674C1D1Ev,_ZThn34572_N8S19674C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C1D0Ev,_ZTv0_n12_N8S19674C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55912_N8S19674C1D0Ev,_ZThn34484_N8S19674C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19674C1D1Ev,_ZTv0_n12_N8S19674C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55912_N8S19674C1D1Ev,_ZThn34484_N8S19674C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19674C1D0Ev,_ZTv0_n20_N8S19674C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56624_N8S19674C1D0Ev,_ZThn34912_N8S19674C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56224_N8S19674C1D0Ev,_ZThn34684_N8S19674C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn54928_N8S19674C1D0Ev,_ZThn33860_N8S19674C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19674C1D1Ev,_ZTv0_n20_N8S19674C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56624_N8S19674C1D1Ev,_ZThn34912_N8S19674C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56224_N8S19674C1D1Ev,_ZThn34684_N8S19674C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn54928_N8S19674C1D1Ev,_ZThn33860_N8S19674C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19674C1 = {  "S19674C1", // class name
  bases_S19674C1, 64,
  &(vtc_S19674C1[0]), // expected_vtbl_contents
  &(vtt_S19674C1[0]), // expected_vtt_contents
  ABISELECT(62720,38684), // object size
  NSPAIRA(_ZTI8S19674C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19674C1),202, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19674C1),172, //virtual table table var
  40, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C2  : virtual S19674C5 {
  virtual void  v1(); // _ZN8S21161C22v1Ev
  ~S21161C2(); // tgen
  S21161C2(); // tgen
};
//SIG(-1 S21161C2) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1}


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

static void Test_S21161C2()
{
  extern Class_Descriptor cd_S21161C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S21161C2, buf);
    S21161C2 *dp, &lv = *(dp=new (buf) S21161C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S21161C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21161C2)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(8,4), "S21161C2");
    test_class_info(&lv, &cd_S21161C2);
    dp->~S21161C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C2(Test_S21161C2, "S21161C2", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S21161C2C1Ev();
extern void _ZN8S21161C2D1Ev();
Name_Map name_map_S21161C2[] = {
  NSPAIR(_ZN8S21161C2C1Ev),
  NSPAIR(_ZN8S21161C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21161C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21161C2[];
extern void _ZN8S21161C22v1Ev();
extern void _ZN8S21161C2D1Ev();
extern void _ZN8S21161C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21161C2D1Ev,_ZTv0_n12_N8S21161C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21161C2D1Ev,_ZThn4_N8S21161C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C2D0Ev,_ZTv0_n12_N8S21161C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21161C2D0Ev,_ZThn4_N8S21161C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21161C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C2[0]),
  (VTBL_ENTRY)&_ZN8S21161C22v1Ev,
  (VTBL_ENTRY)&_ZN8S21161C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21161C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C2D1Ev,_ZTv0_n12_N8S21161C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C2D0Ev,_ZTv0_n12_N8S21161C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21161C2[];
static  VTT_ENTRY vtt_S21161C2[] = {
  {&(_ZTV8S21161C2[3]),  3,11},
  {&(_ZTV8S21161C2[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21161C2[];
extern  VTBL_ENTRY _ZTV8S21161C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C2[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C2D0Ev,_ZTv0_n12_N8S21161C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21161C2D0Ev,_ZThn4_N8S21161C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C2D1Ev,_ZTv0_n12_N8S21161C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21161C2D1Ev,_ZThn4_N8S21161C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C2 = {  "S21161C2", // class name
  bases_S21161C2, 1,
  &(vtc_S21161C2[0]), // expected_vtbl_contents
  &(vtt_S21161C2[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S21161C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21161C2),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21161C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C8  : virtual S19674C5 , S19674C7 {
  short s21161c8f0[6];
  __tsi64 s21161c8f1[3];
  ::S19674C9 s21161c8f2;
  ~S21161C8(); // tgen
  S21161C8(); // tgen
};
//SIG(-1 S21161C8) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ m Fp[14]} Fs[6] FL[3] FU4{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}}


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

static void Test_S21161C8()
{
  extern Class_Descriptor cd_S21161C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,51)];
    init_test(&cd_S21161C8, buf);
    S21161C8 *dp, &lv = *(dp=new (buf) S21161C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,200), "sizeof(S21161C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21161C8)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(192,112), "S21161C8");
    check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21161C8");
    check_field_offset(lv, s21161c8f0, ABISELECT(120,60), "S21161C8.s21161c8f0");
    check_field_offset(lv, s21161c8f1, ABISELECT(136,72), "S21161C8.s21161c8f1");
    check_field_offset(lv, s21161c8f2, ABISELECT(160,96), "S21161C8.s21161c8f2");
    test_class_info(&lv, &cd_S21161C8);
    dp->~S21161C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C8(Test_S21161C8, "S21161C8", ABISELECT(312,200));

#else // __cplusplus

extern void _ZN8S21161C8C1Ev();
extern void _ZN8S21161C8D1Ev();
Name_Map name_map_S21161C8[] = {
  NSPAIR(_ZN8S21161C8C1Ev),
  NSPAIR(_ZN8S21161C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
static Base_Class bases_S21161C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(192,112), //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},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21161C8[];
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn192_N8S21161C8D1Ev,_ZThn112_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn192_N8S21161C8D0Ev,_ZThn112_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21161C8[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21161C8[];
static  VTT_ENTRY vtt_S21161C8[] = {
  {&(_ZTV8S21161C8[3]),  3,10},
  {&(_ZTV8S21161C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21161C8D0Ev,_ZThn112_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21161C8D1Ev,_ZThn112_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C8 = {  "S21161C8", // class name
  bases_S21161C8, 2,
  &(vtc_S21161C8[0]), // expected_vtbl_contents
  &(vtt_S21161C8[0]), // expected_vtt_contents
  ABISELECT(312,200), // object size
  NSPAIRA(_ZTI8S21161C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21161C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21161C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C6  : virtual S19674C5 , virtual S19674C7 , S21161C8 {
  ::S21161C8 s21161c6f0;
  long double s21161c6f1[7];
  ::S21161C8 s21161c6f2;
  __tsi64 s21161c6f3;
  void *s21161c6f4[5];
  virtual void  v2(); // _ZN8S21161C62v2Ev
  virtual void  v3(); // _ZN8S21161C62v3Ev
  ~S21161C6(); // tgen
  S21161C6(); // tgen
};
//SIG(-1 S21161C6) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ m Fp[14]} BC4{ VBC2 BC3 Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC4 FD[7] FC4 FL Fp[5]}


void  S21161C6 ::v2(){vfunc_called(this, "_ZN8S21161C62v2Ev");}
void  S21161C6 ::v3(){vfunc_called(this, "_ZN8S21161C62v3Ev");}
S21161C6 ::~S21161C6(){ note_dtor("S21161C6", this);} // tgen
S21161C6 ::S21161C6(){ note_ctor("S21161C6", this);} // tgen

static void Test_S21161C6()
{
  extern Class_Descriptor cd_S21161C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,193)];
    init_test(&cd_S21161C6, buf);
    S21161C6 *dp, &lv = *(dp=new (buf) S21161C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,768), "sizeof(S21161C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C6)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(984,624), "S21161C6");
    check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(984,624), "S21161C6");
    /*is_ambiguous_... S21161C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(1104,712), "S21161C6");
    check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(8,4), "S21161C6");
    check_base_class_offset(lv, (S21161C8*), 0, "S21161C6");
    check_field_offset(lv, s21161c6f0, ABISELECT(192,112), "S21161C6.s21161c6f0");
    check_field_offset(lv, s21161c6f1, ABISELECT(512,312), "S21161C6.s21161c6f1");
    check_field_offset(lv, s21161c6f2, ABISELECT(624,396), "S21161C6.s21161c6f2");
    check_field_offset(lv, s21161c6f3, ABISELECT(936,596), "S21161C6.s21161c6f3");
    check_field_offset(lv, s21161c6f4, ABISELECT(944,604), "S21161C6.s21161c6f4");
    test_class_info(&lv, &cd_S21161C6);
    dp->~S21161C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C6(Test_S21161C6, "S21161C6", ABISELECT(1216,768));

#else // __cplusplus

extern void _ZN8S21161C6C1Ev();
extern void _ZN8S21161C6D1Ev();
Name_Map name_map_S21161C6[] = {
  NSPAIR(_ZN8S21161C6C1Ev),
  NSPAIR(_ZN8S21161C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
static Base_Class bases_S21161C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(984,624), //bcp->offset
    8, //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_S19674C7,    ABISELECT(1104,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21161C8,    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 _ZTI8S21161C6[];
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21161C6D1Ev,_ZThn624_N8S21161C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21161C6D0Ev,_ZThn624_N8S21161C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21161C6[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21161C6[];
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__8S21161C6[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S21161C8D1Ev,_ZThn624_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S21161C8D0Ev,_ZThn624_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__8S21161C6[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
static  VTT_ENTRY vtt_S21161C6[] = {
  {&(_ZTV8S21161C6[4]),  4,13},
  {&(_tg__ZTV8S21161C8__8S21161C6[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__8S21161C6[3]),  3,5},
  {&(_ZTV8S21161C6[11]),  11,13},
};
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C8D0Ev,_ZThn624_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C8D1Ev,_ZThn624_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C6D0Ev,_ZThn624_N8S21161C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C6D1Ev,_ZThn624_N8S21161C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C6 = {  "S21161C6", // class name
  bases_S21161C6, 4,
  &(vtc_S21161C6[0]), // expected_vtbl_contents
  &(vtt_S21161C6[0]), // expected_vtt_contents
  ABISELECT(1216,768), // object size
  NSPAIRA(_ZTI8S21161C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21161C6),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21161C6),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C5  : virtual S21161C6 , S19674C7 , S21161C8 {
  int s21161c5f0;
  int s21161c5f1;
  int s21161c5f2:28;
  int s21161c5f3;
  long s21161c5f4;
  ~S21161C5(); // tgen
  S21161C5(); // tgen
};
//SIG(-1 S21161C5) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} BC4 BC5 Fi Fi Fi:28 Fi Fl}


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

static void Test_S21161C5()
{
  extern Class_Descriptor cd_S21161C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,240)];
    init_test(&cd_S21161C5, buf);
    S21161C5 *dp, &lv = *(dp=new (buf) S21161C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,956), "sizeof(S21161C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C5)");
    check_base_class_offset(lv, (S19674C5*)(S21161C6*), ABISELECT(1320,812), "S21161C5");
    check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*), ABISELECT(1320,812), "S21161C5");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(1320,812), "S21161C5");
    /*is_ambiguous_... S21161C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*), ABISELECT(1440,900), "S21161C5");
    check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*), ABISELECT(344,192), "S21161C5");
    check_base_class_offset(lv, (S21161C8*)(S21161C6*), ABISELECT(336,188), "S21161C5");
    check_base_class_offset(lv, (S21161C6*), ABISELECT(336,188), "S21161C5");
    /*is_ambiguous_... S21161C5::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(192,112), "S21161C5");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(8,4), "S21161C5");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*), 0, "S21161C5");
    check_field_offset(lv, s21161c5f0, ABISELECT(304,168), "S21161C5.s21161c5f0");
    check_field_offset(lv, s21161c5f1, ABISELECT(308,172), "S21161C5.s21161c5f1");
    set_bf_and_test(lv, s21161c5f2, ABISELECT(312,176), 0, 28, 1, "S21161C5");
    set_bf_and_test(lv, s21161c5f2, ABISELECT(312,176), 0, 28, hide_sll(1LL<<27), "S21161C5");
    check_field_offset(lv, s21161c5f3, ABISELECT(316,180), "S21161C5.s21161c5f3");
    check_field_offset(lv, s21161c5f4, ABISELECT(320,184), "S21161C5.s21161c5f4");
    test_class_info(&lv, &cd_S21161C5);
    dp->~S21161C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C5(Test_S21161C5, "S21161C5", ABISELECT(1552,956));

#else // __cplusplus

extern void _ZN8S21161C5C1Ev();
extern void _ZN8S21161C5D1Ev();
Name_Map name_map_S21161C5[] = {
  NSPAIR(_ZN8S21161C5C1Ev),
  NSPAIR(_ZN8S21161C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
static Base_Class bases_S21161C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(1320,812), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1440,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(344,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
    3, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(336,188), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21161C5[];
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn336_N8S21161C5D1Ev,_ZThn188_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn336_N8S21161C5D0Ev,_ZThn188_N8S21161C5D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21161C5D1Ev,_ZThn812_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21161C5D0Ev,_ZThn812_N8S21161C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21161C5[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21161C5[];
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__A1__8S21161C5[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21161C8D1Ev,_ZThn812_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21161C8D0Ev,_ZThn812_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__A1__8S21161C5[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C5[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C6__8S21161C5[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S21161C8D1Ev,_ZThn624_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S21161C8D0Ev,_ZThn624_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C6__8S21161C5[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21161C6D1Ev,_ZThn624_N8S21161C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21161C6D0Ev,_ZThn624_N8S21161C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C6__8S21161C5[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
static  VTT_ENTRY vtt_S21161C5[] = {
  {&(_ZTV8S21161C5[5]),  5,23},
  {&(_tg__ZTV8S21161C8__A1__8S21161C5[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__A1__8S21161C5[3]),  3,5},
  {&(_ZTV8S21161C5[14]),  14,23},
  {&(_ZTV8S21161C5[21]),  21,23},
  {&(_tg__ZTV8S21161C6__8S21161C5[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C6__8S21161C5[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C6__8S21161C5[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C6__8S21161C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C6D0Ev,_ZThn624_N8S21161C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C6D1Ev,_ZThn624_N8S21161C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C8D0Ev,_ZThn624_N8S21161C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21161C8D0Ev,_ZThn812_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C8D1Ev,_ZThn624_N8S21161C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21161C8D1Ev,_ZThn812_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21161C5D0Ev,_ZThn812_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21161C5D1Ev,_ZThn812_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21161C5D0Ev,_ZThn188_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21161C5D1Ev,_ZThn188_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C5 = {  "S21161C5", // class name
  bases_S21161C5, 8,
  &(vtc_S21161C5[0]), // expected_vtbl_contents
  &(vtt_S21161C5[0]), // expected_vtt_contents
  ABISELECT(1552,956), // object size
  NSPAIRA(_ZTI8S21161C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21161C5),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21161C5),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C12  : virtual S21161C8 , S19674C5 {
  char s21161c12f0:6;
  char s21161c12f1[8];
  long double s21161c12f2;
  ::S19674C7 s21161c12f3;
  ::S19674C7 s21161c12f4;
  ~S21161C12(); // tgen
  S21161C12(); // tgen
};
//SIG(-1 S21161C12) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC3 Fc:6 Fc[8] FD FC4 FC4}


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

static void Test_S21161C12()
{
  extern Class_Descriptor cd_S21161C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,107)];
    init_test(&cd_S21161C12, buf);
    S21161C12 *dp, &lv = *(dp=new (buf) S21161C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,424), "sizeof(S21161C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C12)");
    check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(576,336), "S21161C12");
    check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(392,228), "S21161C12");
    check_base_class_offset(lv, (S21161C8*), ABISELECT(384,224), "S21161C12");
    /*is_ambiguous_... S21161C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), 0, "S21161C12");
    set_bf_and_test(lv, s21161c12f0, ABISELECT(120,88), 0, 6, 1, "S21161C12");
    set_bf_and_test(lv, s21161c12f0, ABISELECT(120,88), 0, 6, hide_sll(1LL<<5), "S21161C12");
    check_field_offset(lv, s21161c12f1, ABISELECT(121,89), "S21161C12.s21161c12f1");
    check_field_offset(lv, s21161c12f2, ABISELECT(144,100), "S21161C12.s21161c12f2");
    check_field_offset(lv, s21161c12f3, ABISELECT(160,112), "S21161C12.s21161c12f3");
    check_field_offset(lv, s21161c12f4, ABISELECT(272,168), "S21161C12.s21161c12f4");
    test_class_info(&lv, &cd_S21161C12);
    dp->~S21161C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C12(Test_S21161C12, "S21161C12", ABISELECT(704,424));

#else // __cplusplus

extern void _ZN9S21161C12C1Ev();
extern void _ZN9S21161C12D1Ev();
Name_Map name_map_S21161C12[] = {
  NSPAIR(_ZN9S21161C12C1Ev),
  NSPAIR(_ZN9S21161C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21161C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(576,336), //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(384,224), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S21161C12[];
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn384_N9S21161C12D1Ev,_ZThn224_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn384_N9S21161C12D0Ev,_ZThn224_N9S21161C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn576_N9S21161C12D1Ev,_ZThn336_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn576_N9S21161C12D0Ev,_ZThn336_N9S21161C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21161C12[] = {
  ABISELECT(576,336),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
  ABISELECT(-384,-224),
  ABISELECT(192,112),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
  ABISELECT(-576,-336),
  ABISELECT(-576,-336),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S21161C12[];
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C12[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn192_N8S21161C8D1Ev,_ZThn112_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn192_N8S21161C8D0Ev,_ZThn112_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__9S21161C12[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
static  VTT_ENTRY vtt_S21161C12[] = {
  {&(_ZTV9S21161C12[4]),  4,17},
  {&(_ZTV9S21161C12[10]),  10,17},
  {&(_ZTV9S21161C12[15]),  15,17},
  {&(_tg__ZTV8S21161C8__9S21161C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__9S21161C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21161C8D0Ev,_ZThn112_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21161C8D1Ev,_ZThn112_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21161C12D0Ev,_ZThn336_N9S21161C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21161C12D1Ev,_ZThn336_N9S21161C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21161C12D0Ev,_ZThn224_N9S21161C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21161C12D1Ev,_ZThn224_N9S21161C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C12 = {  "S21161C12", // class name
  bases_S21161C12, 4,
  &(vtc_S21161C12[0]), // expected_vtbl_contents
  &(vtt_S21161C12[0]), // expected_vtt_contents
  ABISELECT(704,424), // object size
  NSPAIRA(_ZTI9S21161C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21161C12),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21161C12),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C15  : virtual S19674C5 , virtual S21161C8 , virtual S21161C12 , S19674C7 , virtual S21161C6 {
  int s21161c15f0;
  int s21161c15f1;
  ::S19674C7 s21161c15f2;
  char s21161c15f3;
  char s21161c15f4;
  int s21161c15f5;
  short s21161c15f6;
  __tsi64 s21161c15f7;
  virtual  ~S21161C15(); // _ZN9S21161C15D2Ev
  virtual void  v4(); // _ZN9S21161C152v4Ev
  virtual void  v5(); // _ZN9S21161C152v5Ev
  S21161C15(); // tgen
};
//SIG(-1 S21161C15) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC7{ VBC2 VBC4 BC3 v3 v4 FC3 FD[7] FC3 FL Fp[5]} vd v1 v2 Fi Fi FC4 Fc Fc Fi Fs FL}


 S21161C15 ::~S21161C15(){ note_dtor("S21161C15", this);}
void  S21161C15 ::v4(){vfunc_called(this, "_ZN9S21161C152v4Ev");}
void  S21161C15 ::v5(){vfunc_called(this, "_ZN9S21161C152v5Ev");}
S21161C15 ::S21161C15(){ note_ctor("S21161C15", this);} // tgen

static void Test_S21161C15()
{
  extern Class_Descriptor cd_S21161C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,313)];
    init_test(&cd_S21161C15, buf);
    S21161C15 *dp, &lv = *(dp=new (buf) S21161C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1248), "sizeof(S21161C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C15)");
    /*is_ambiguous_... S21161C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(264,144), "S21161C15");
    /*is_ambiguous_... S21161C15::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(264,144), "S21161C15");
    check_base_class_offset(lv, (S19674C5*)(S21161C6*), ABISELECT(264,144), "S21161C15");
    check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*), ABISELECT(264,144), "S21161C15");
    /*is_ambiguous_... S21161C15::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(392,236), "S21161C15");
    /*is_ambiguous_... S21161C15::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*), ABISELECT(384,232), "S21161C15");
    check_base_class_offset(lv, (S21161C8*)(S21161C12*), ABISELECT(384,232), "S21161C15");
    /*is_ambiguous_... S21161C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*), ABISELECT(576,344), "S21161C15");
    check_base_class_offset(lv, (S21161C12*), ABISELECT(576,344), "S21161C15");
    /*is_ambiguous_... S21161C15::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21161C15");
    /*is_ambiguous_... S21161C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*), ABISELECT(1944,1192), "S21161C15");
    check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*), ABISELECT(968,572), "S21161C15");
    check_base_class_offset(lv, (S21161C8*)(S21161C6*), ABISELECT(960,568), "S21161C15");
    check_base_class_offset(lv, (S21161C6*), ABISELECT(960,568), "S21161C15");
    check_field_offset(lv, s21161c15f0, ABISELECT(120,60), "S21161C15.s21161c15f0");
    check_field_offset(lv, s21161c15f1, ABISELECT(124,64), "S21161C15.s21161c15f1");
    check_field_offset(lv, s21161c15f2, ABISELECT(128,68), "S21161C15.s21161c15f2");
    check_field_offset(lv, s21161c15f3, ABISELECT(240,124), "S21161C15.s21161c15f3");
    check_field_offset(lv, s21161c15f4, ABISELECT(241,125), "S21161C15.s21161c15f4");
    check_field_offset(lv, s21161c15f5, ABISELECT(244,128), "S21161C15.s21161c15f5");
    check_field_offset(lv, s21161c15f6, ABISELECT(248,132), "S21161C15.s21161c15f6");
    check_field_offset(lv, s21161c15f7, ABISELECT(256,136), "S21161C15.s21161c15f7");
    test_class_info(&lv, &cd_S21161C15);
    dp->~S21161C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C15(Test_S21161C15, "S21161C15", ABISELECT(2064,1248));

#else // __cplusplus

extern void _ZN9S21161C15C1Ev();
extern void _ZN9S21161C15D2Ev();
Name_Map name_map_S21161C15[] = {
  NSPAIR(_ZN9S21161C15C1Ev),
  NSPAIR(_ZN9S21161C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
static Base_Class bases_S21161C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(264,144), //bcp->offset
    11, //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_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(384,232), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21161C12,    ABISELECT(576,344), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(1944,1192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(968,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(960,568), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(960,568), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21161C15[];
extern void _ZN9S21161C15D1Ev();
extern void _ZN9S21161C15D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn264_N9S21161C15D1Ev,_ZThn144_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn264_N9S21161C15D0Ev,_ZThn144_N9S21161C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn384_N9S21161C15D1Ev,_ZThn232_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn384_N9S21161C15D0Ev,_ZThn232_N9S21161C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn576_N9S21161C15D1Ev,_ZThn344_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn576_N9S21161C15D0Ev,_ZThn344_N9S21161C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn960_N9S21161C15D1Ev,_ZThn568_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn960_N9S21161C15D0Ev,_ZThn568_N9S21161C15D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY vtc_S21161C15[] = {
  ABISELECT(1944,1192),
  ABISELECT(960,568),
  ABISELECT(576,344),
  ABISELECT(384,232),
  ABISELECT(264,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&_ZN9S21161C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C15D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev),
  ABISELECT(-384,-232),
  ABISELECT(-120,-88),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev),
  ABISELECT(-576,-344),
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  ABISELECT(-576,-344),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev),
  0,
  0,
  ABISELECT(-960,-568),
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  ABISELECT(-960,-568),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S21161C15[];
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C15[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__9S21161C15[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C15[] = {
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C12__9S21161C15[] = {
  ABISELECT(192,112),
  ABISELECT(-120,-88),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C12__9S21161C15[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C15[] = {
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C6__A1__9S21161C15[] = {
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C6__A1__9S21161C15[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C6__9S21161C15[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
static  VTT_ENTRY vtt_S21161C15[] = {
  {&(_ZTV9S21161C15[7]),  7,40},
  {&(_ZTV9S21161C15[14]),  14,40},
  {&(_ZTV9S21161C15[20]),  20,40},
  {&(_ZTV9S21161C15[27]),  27,40},
  {&(_ZTV9S21161C15[36]),  36,40},
  {&(_tg__ZTV8S21161C8__9S21161C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__9S21161C15[3]),  3,5},
  {&(_tg__ZTV9S21161C12__9S21161C15[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C12__9S21161C15[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C12__9S21161C15[3]),  3,5},
  {&(_tg__ZTV8S21161C6__9S21161C15[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C6__A1__9S21161C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C6__A1__9S21161C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C6__9S21161C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21161C15[];
extern  VTBL_ENTRY _ZTV9S21161C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C15[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S21161C15D0Ev,_ZThn568_N9S21161C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21161C15D0Ev,_ZThn344_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S21161C15D1Ev,_ZThn568_N9S21161C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21161C15D1Ev,_ZThn344_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21161C15D0Ev,_ZThn232_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21161C15D1Ev,_ZThn232_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21161C15D0Ev,_ZThn144_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21161C15D1Ev,_ZThn144_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C15 = {  "S21161C15", // class name
  bases_S21161C15, 10,
  &(vtc_S21161C15[0]), // expected_vtbl_contents
  &(vtt_S21161C15[0]), // expected_vtt_contents
  ABISELECT(2064,1248), // object size
  NSPAIRA(_ZTI9S21161C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21161C15),40, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21161C15),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C14  : S21161C15 , S21161C5 {
  ::S19674C18 s21161c14f0;
  int s21161c14f1;
  int s21161c14f2;
  int s21161c14f3;
  short s21161c14f4;
  virtual void  v6(); // _ZN9S21161C142v6Ev
  virtual void  v7(); // _ZN9S21161C142v7Ev
  ~S21161C14(); // tgen
  S21161C14(); // tgen
};
//SIG(-1 S21161C14) C1{ BC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC8{ VBC3 VBC5 BC4 v3 v4 FC4 FD[7] FC4 FL Fp[5]} vd v5 v6 Fi Fi FC5 Fc Fc Fi Fs FL} BC9{ VBC8 BC5 BC4 Fi Fi Fi:28 Fi Fl} v1 v2 FU10{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs}


void  S21161C14 ::v6(){vfunc_called(this, "_ZN9S21161C142v6Ev");}
void  S21161C14 ::v7(){vfunc_called(this, "_ZN9S21161C142v7Ev");}
S21161C14 ::~S21161C14(){ note_dtor("S21161C14", this);} // tgen
S21161C14 ::S21161C14(){ note_ctor("S21161C14", this);} // tgen

static void Test_S21161C14()
{
  extern Class_Descriptor cd_S21161C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(156,372)];
    init_test(&cd_S21161C14, buf);
    S21161C14 *dp, &lv = *(dp=new (buf) S21161C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2480,1484), "sizeof(S21161C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C14)");
    /*is_ambiguous_... S21161C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C15*), ABISELECT(672,380), "S21161C14");
    /*is_ambiguous_... S21161C14::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(672,380), "S21161C14");
    check_base_class_offset(lv, (S19674C5*)(S21161C6*), ABISELECT(672,380), "S21161C14");
    check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*), ABISELECT(672,380), "S21161C14");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*), ABISELECT(672,380), "S21161C14");
    /*is_ambiguous_... S21161C14::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(800,472), "S21161C14");
    /*is_ambiguous_... S21161C15::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C15*), ABISELECT(792,468), "S21161C14");
    check_base_class_offset(lv, (S21161C8*)(S21161C12*), ABISELECT(792,468), "S21161C14");
    /*is_ambiguous_... S21161C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*), ABISELECT(992,580), "S21161C14");
    check_base_class_offset(lv, (S21161C12*)(S21161C15*), ABISELECT(992,580), "S21161C14");
    /*is_ambiguous_... S21161C15::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C15*), ABISELECT(8,4), "S21161C14");
    /*is_ambiguous_... S21161C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*), ABISELECT(2360,1428), "S21161C14");
    check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*), ABISELECT(1384,808), "S21161C14");
    check_base_class_offset(lv, (S21161C8*)(S21161C6*), ABISELECT(1376,804), "S21161C14");
    check_base_class_offset(lv, (S21161C6*)(S21161C15*), ABISELECT(1376,804), "S21161C14");
    check_base_class_offset(lv, (S21161C6*)(S21161C5*), ABISELECT(1376,804), "S21161C14");
    check_base_class_offset(lv, (S21161C15*), 0, "S21161C14");
    /*is_ambiguous_... S21161C5::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*), ABISELECT(456,256), "S21161C14");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*), ABISELECT(272,148), "S21161C14");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*), ABISELECT(264,144), "S21161C14");
    check_base_class_offset(lv, (S21161C5*), ABISELECT(264,144), "S21161C14");
    check_field_offset(lv, s21161c14f0, ABISELECT(592,332), "S21161C14.s21161c14f0");
    check_field_offset(lv, s21161c14f1, ABISELECT(656,364), "S21161C14.s21161c14f1");
    check_field_offset(lv, s21161c14f2, ABISELECT(660,368), "S21161C14.s21161c14f2");
    check_field_offset(lv, s21161c14f3, ABISELECT(664,372), "S21161C14.s21161c14f3");
    check_field_offset(lv, s21161c14f4, ABISELECT(668,376), "S21161C14.s21161c14f4");
    test_class_info(&lv, &cd_S21161C14);
    dp->~S21161C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C14(Test_S21161C14, "S21161C14", ABISELECT(2480,1484));

#else // __cplusplus

extern void _ZN9S21161C14C1Ev();
extern void _ZN9S21161C14D1Ev();
Name_Map name_map_S21161C14[] = {
  NSPAIR(_ZN9S21161C14C1Ev),
  NSPAIR(_ZN9S21161C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
extern Class_Descriptor cd_S21161C15;
extern VTBL_ENTRY _ZTI9S21161C15[];
extern  VTBL_ENTRY _ZTV9S21161C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
static Base_Class bases_S21161C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(800,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
    2, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(792,468), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(992,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21161C12,    ABISELECT(992,580), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2360,1428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1384,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(1376,804), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(1376,804), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21161C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(264,144), //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
    14, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(264,144), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //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 _ZTI9S21161C14[];
extern void _ZN9S21161C14D1Ev();
extern void _ZN9S21161C14D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void _ZN9S21161C142v6Ev();
extern void _ZN9S21161C142v7Ev();
extern void ABISELECT(_ZThn264_N9S21161C14D1Ev,_ZThn144_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn264_N9S21161C14D0Ev,_ZThn144_N9S21161C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn672_N9S21161C14D1Ev,_ZThn380_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn672_N9S21161C14D0Ev,_ZThn380_N9S21161C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn792_N9S21161C14D1Ev,_ZThn468_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn792_N9S21161C14D0Ev,_ZThn468_N9S21161C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn992_N9S21161C14D1Ev,_ZThn580_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn992_N9S21161C14D0Ev,_ZThn580_N9S21161C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn1376_N9S21161C14D1Ev,_ZThn804_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn1376_N9S21161C14D0Ev,_ZThn804_N9S21161C14D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY vtc_S21161C14[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&_ZN9S21161C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C14D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v6Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v7Ev,
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C14D1Ev,_ZThn144_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C14D0Ev,_ZThn144_N9S21161C14D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev),
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev),
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev),
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S21161C14[];
extern void _ZN9S21161C15D1Ev();
extern void _ZN9S21161C15D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C15__9S21161C14[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&_ZN9S21161C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C15D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn672_N9S21161C15D1Ev,_ZThn380_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn672_N9S21161C15D0Ev,_ZThn380_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C15__9S21161C14[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn792_N9S21161C15D1Ev,_ZThn468_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn792_N9S21161C15D0Ev,_ZThn468_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C15__9S21161C14[] = {
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn992_N9S21161C15D1Ev,_ZThn580_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn992_N9S21161C15D0Ev,_ZThn580_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C15__9S21161C14[] = {
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn1376_N9S21161C15D1Ev,_ZThn804_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn1376_N9S21161C15D0Ev,_ZThn804_N9S21161C15D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C15__9S21161C14[] = {
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C5__9S21161C14[] = {
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C5__A2__9S21161C14[] = {
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn408_N8S21161C8D1Ev,_ZThn236_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn408_N8S21161C8D0Ev,_ZThn236_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C5__A2__9S21161C14[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn1112_N8S21161C5D1Ev,_ZThn660_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn1112_N8S21161C5D0Ev,_ZThn660_N8S21161C5D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C5__9S21161C14[] = {
  0,
  0,
  ABISELECT(-1112,-660),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1112,-660),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn408_N8S21161C5D1Ev,_ZThn236_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn408_N8S21161C5D0Ev,_ZThn236_N8S21161C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C5__9S21161C14[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C14[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__9S21161C14[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C14[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C12__9S21161C14[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C12__9S21161C14[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C14[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C6__A1__9S21161C14[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C6__A1__9S21161C14[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C6__9S21161C14[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
static  VTT_ENTRY vtt_S21161C14[] = {
  {&(_ZTV9S21161C14[7]),  7,49},
  {&(_tg__ZTV9S21161C15__9S21161C14[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21161C15__9S21161C14[3]),  3,5},
  {&(_tg__ZTV8S21161C8__9S21161C15__9S21161C14[4]),  4,6},
  {&(_tg__ZTV9S21161C12__9S21161C15__9S21161C14[5]),  5,7},
  {&(_tg__ZTV8S21161C6__9S21161C15__9S21161C14[7]),  7,11},
  {&(_tg__ZTV8S21161C5__9S21161C14[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C5__A2__9S21161C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C5__A2__9S21161C14[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C5__9S21161C14[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C5__9S21161C14[3]),  3,5},
  {&(_ZTV9S21161C14[23]),  23,49},
  {&(_ZTV9S21161C14[29]),  29,49},
  {&(_ZTV9S21161C14[36]),  36,49},
  {&(_ZTV9S21161C14[45]),  45,49},
  {&(_ZTV9S21161C14[18]),  18,49},
  {&(_tg__ZTV8S21161C8__9S21161C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__9S21161C14[3]),  3,5},
  {&(_tg__ZTV9S21161C12__9S21161C14[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C12__9S21161C14[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C12__9S21161C14[3]),  3,5},
  {&(_tg__ZTV8S21161C6__9S21161C14[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C6__A1__9S21161C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C6__A1__9S21161C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C6__9S21161C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21161C14[];
extern  VTBL_ENTRY _ZTV9S21161C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C14[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21161C5D0Ev,_ZThn236_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21161C5D1Ev,_ZThn236_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N8S21161C5D0Ev,_ZThn660_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N8S21161C5D1Ev,_ZThn660_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21161C8D0Ev,_ZThn236_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21161C8D1Ev,_ZThn236_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21161C15D0Ev,_ZThn804_N9S21161C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21161C15D0Ev,_ZThn580_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21161C15D1Ev,_ZThn804_N9S21161C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21161C15D1Ev,_ZThn580_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21161C15D0Ev,_ZThn468_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21161C15D1Ev,_ZThn468_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21161C15D0Ev,_ZThn380_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21161C15D1Ev,_ZThn380_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21161C14D0Ev,_ZThn804_N9S21161C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21161C14D0Ev,_ZThn580_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21161C14D1Ev,_ZThn804_N9S21161C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21161C14D1Ev,_ZThn580_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21161C14D0Ev,_ZThn468_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21161C14D1Ev,_ZThn468_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21161C14D0Ev,_ZThn380_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21161C14D1Ev,_ZThn380_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C14 = {  "S21161C14", // class name
  bases_S21161C14, 15,
  &(vtc_S21161C14[0]), // expected_vtbl_contents
  &(vtt_S21161C14[0]), // expected_vtt_contents
  ABISELECT(2480,1484), // object size
  NSPAIRA(_ZTI9S21161C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21161C14),49, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21161C14),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C13  : virtual S21161C6 , virtual S21161C5 , S21161C14 , S19674C5 {
  ::S19674C7 s21161c13f0;
  int s21161c13f1[10];
  int s21161c13f2;
  ::S21161C2 s21161c13f3;
  short s21161c13f4;
  int s21161c13f5;
  __tsi64 s21161c13f6;
  virtual  ~S21161C13(); // _ZN9S21161C13D2Ev
  S21161C13(); // tgen
};
//SIG(-1 S21161C13) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} VBC7{ VBC2 BC4 BC5 Fi Fi Fi:28 Fi Fl} BC8{ BC9{ VBC3 VBC5 VBC10{ VBC5 BC3 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC2 vd v3 v4 Fi Fi FC4 Fc Fc Fi Fs FL} BC7 v5 v6 FU11{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC3 vd FC4 Fi[10] Fi FC12{ VBC3 v7} Fs Fi FL}


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

static void Test_S21161C13()
{
  extern Class_Descriptor cd_S21161C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(203,493)];
    init_test(&cd_S21161C13, buf);
    S21161C13 *dp, &lv = *(dp=new (buf) S21161C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3232,1968), "sizeof(S21161C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C13)");
    check_base_class_offset(lv, (S19674C5*)(S21161C6*), ABISELECT(2088,1300), "S21161C13");
    check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*), ABISELECT(2088,1300), "S21161C13");
    /*is_ambiguous_... S21161C13::S21161C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*), ABISELECT(2088,1300), "S21161C13");
    /*is_ambiguous_... S21161C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C15*)(S21161C14*), ABISELECT(2088,1300), "S21161C13");
    /*is_ambiguous_... S21161C13::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(2088,1300), "S21161C13");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*)(S21161C14*), ABISELECT(2088,1300), "S21161C13");
    /*is_ambiguous_... S21161C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*), ABISELECT(2208,1388), "S21161C13");
    check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*), ABISELECT(1112,680), "S21161C13");
    check_base_class_offset(lv, (S21161C8*)(S21161C6*), ABISELECT(1104,676), "S21161C13");
    check_base_class_offset(lv, (S21161C6*), ABISELECT(1104,676), "S21161C13");
    /*is_ambiguous_... S21161C13::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C6*)(S21161C5*), ABISELECT(1104,676), "S21161C13");
    check_base_class_offset(lv, (S21161C6*)(S21161C15*)(S21161C14*), ABISELECT(1104,676), "S21161C13");
    check_base_class_offset(lv, (S21161C6*)(S21161C5*)(S21161C14*), ABISELECT(1104,676), "S21161C13");
    /*is_ambiguous_... S21161C13::S21161C5 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*), ABISELECT(2512,1556), "S21161C13");
    /*is_ambiguous_... S21161C13::S21161C5 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*), ABISELECT(2328,1448), "S21161C13");
    /*is_ambiguous_... S21161C13::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*), ABISELECT(2320,1444), "S21161C13");
    /*is_ambiguous_... S21161C13::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C5*), ABISELECT(2320,1444), "S21161C13");
    /*is_ambiguous_... S21161C13::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(2656,1636), "S21161C13");
    /*is_ambiguous_... S21161C15::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C15*)(S21161C14*), ABISELECT(2648,1632), "S21161C13");
    check_base_class_offset(lv, (S21161C8*)(S21161C12*), ABISELECT(2648,1632), "S21161C13");
    /*is_ambiguous_... S21161C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*), ABISELECT(2848,1744), "S21161C13");
    check_base_class_offset(lv, (S21161C12*)(S21161C15*)(S21161C14*), ABISELECT(2848,1744), "S21161C13");
    /*is_ambiguous_... S21161C15::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C15*)(S21161C14*), ABISELECT(8,4), "S21161C13");
    check_base_class_offset(lv, (S21161C15*)(S21161C14*), 0, "S21161C13");
    /*is_ambiguous_... S21161C5::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*)(S21161C14*), ABISELECT(456,256), "S21161C13");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*)(S21161C14*), ABISELECT(272,148), "S21161C13");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*)(S21161C14*), ABISELECT(264,144), "S21161C13");
    check_base_class_offset(lv, (S21161C5*)(S21161C14*), ABISELECT(264,144), "S21161C13");
    check_base_class_offset(lv, (S21161C14*), 0, "S21161C13");
    /*is_ambiguous_... S21161C13::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(672,380), "S21161C13");
    check_field_offset(lv, s21161c13f0, ABISELECT(792,468), "S21161C13.s21161c13f0");
    check_field_offset(lv, s21161c13f1, ABISELECT(904,524), "S21161C13.s21161c13f1");
    check_field_offset(lv, s21161c13f2, ABISELECT(944,564), "S21161C13.s21161c13f2");
    check_field_offset(lv, s21161c13f3, ABISELECT(952,568), "S21161C13.s21161c13f3");
    check_field_offset(lv, s21161c13f4, ABISELECT(1080,660), "S21161C13.s21161c13f4");
    check_field_offset(lv, s21161c13f5, ABISELECT(1084,664), "S21161C13.s21161c13f5");
    check_field_offset(lv, s21161c13f6, ABISELECT(1088,668), "S21161C13.s21161c13f6");
    test_class_info(&lv, &cd_S21161C13);
    dp->~S21161C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C13(Test_S21161C13, "S21161C13", ABISELECT(3232,1968));

#else // __cplusplus

extern void _ZN9S21161C13C1Ev();
extern void _ZN9S21161C13D2Ev();
Name_Map name_map_S21161C13[] = {
  NSPAIR(_ZN9S21161C13C1Ev),
  NSPAIR(_ZN9S21161C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C15;
extern VTBL_ENTRY _ZTI9S21161C15[];
extern  VTBL_ENTRY _ZTV9S21161C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
extern Class_Descriptor cd_S21161C14;
extern VTBL_ENTRY _ZTI9S21161C14[];
extern  VTBL_ENTRY _ZTV9S21161C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C14[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21161C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(2088,1300), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2208,1388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(1112,680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(1104,676), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(1104,676), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(2512,1556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2328,1448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(2320,1444), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(2320,1444), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(2656,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21161C8,    ABISELECT(2648,1632), //bcp->offset
    49, //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
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(2848,1744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21161C12,    ABISELECT(2848,1744), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(264,144), //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
    18, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(264,144), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21161C14,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21161C13[];
extern void _ZN9S21161C13D1Ev();
extern void _ZN9S21161C13D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void _ZN9S21161C142v6Ev();
extern void _ZN9S21161C142v7Ev();
extern void ABISELECT(_ZThn264_N9S21161C13D1Ev,_ZThn144_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21161C13D0Ev,_ZThn144_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn672_N9S21161C13D1Ev,_ZThn380_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn672_N9S21161C13D0Ev,_ZThn380_N9S21161C13D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn1104_N9S21161C13D1Ev,_ZThn676_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn1104_N9S21161C13D0Ev,_ZThn676_N9S21161C13D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
extern void ABISELECT(_ZTv0_n24_N9S21161C13D1Ev,_ZTv0_n12_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn2088_N9S21161C13D1Ev,_ZThn1300_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C13D0Ev,_ZTv0_n12_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn2088_N9S21161C13D0Ev,_ZThn1300_N9S21161C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21161C13D1Ev,_ZTv0_n24_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn2320_N9S21161C13D1Ev,_ZThn1444_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21161C13D0Ev,_ZTv0_n24_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn2320_N9S21161C13D0Ev,_ZThn1444_N9S21161C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C13D1Ev,_ZTv0_n16_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn2648_N9S21161C13D1Ev,_ZThn1632_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C13D0Ev,_ZTv0_n16_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn2648_N9S21161C13D0Ev,_ZThn1632_N9S21161C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn2848_N9S21161C13D1Ev,_ZThn1744_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn2848_N9S21161C13D0Ev,_ZThn1744_N9S21161C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21161C13[] = {
  ABISELECT(2320,1444),
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&_ZN9S21161C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C13D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v6Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v7Ev,
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C13D1Ev,_ZThn144_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C13D0Ev,_ZThn144_N9S21161C13D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21161C13D1Ev,_ZThn380_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21161C13D0Ev,_ZThn380_N9S21161C13D0Ev),
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C13D1Ev,_ZTv0_n12_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C13D0Ev,_ZTv0_n12_N9S21161C13D0Ev),
  ABISELECT(-2320,-1444),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(-2320,-1444),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21161C13D1Ev,_ZTv0_n24_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21161C13D0Ev,_ZTv0_n24_N9S21161C13D0Ev),
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C13D1Ev,_ZTv0_n16_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C13D0Ev,_ZTv0_n16_N9S21161C13D0Ev),
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21161C13[];
extern void _ZN9S21161C14D1Ev();
extern void _ZN9S21161C14D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void _ZN9S21161C142v6Ev();
extern void _ZN9S21161C142v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C14__9S21161C13[] = {
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&_ZN9S21161C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C14D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v6Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v7Ev,
};
extern void _ZN9S21161C15D1Ev();
extern void _ZN9S21161C15D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C159S21161C14__9S21161C13[] = {
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&_ZN9S21161C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C15D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn2088_N9S21161C15D1Ev,_ZThn1300_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn2088_N9S21161C15D0Ev,_ZThn1300_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C159S21161C14__9S21161C13[] = {
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn2648_N9S21161C15D1Ev,_ZThn1632_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn2648_N9S21161C15D0Ev,_ZThn1632_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C159S21161C14__9S21161C13[] = {
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn2848_N9S21161C15D1Ev,_ZThn1744_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn2848_N9S21161C15D0Ev,_ZThn1744_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C159S21161C14__9S21161C13[] = {
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn1104_N9S21161C15D1Ev,_ZThn676_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn1104_N9S21161C15D0Ev,_ZThn676_N9S21161C15D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C159S21161C14__9S21161C13[] = {
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C59S21161C14__A1__9S21161C13[] = {
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C59S21161C14__A3__9S21161C13[] = {
  ABISELECT(1824,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn1824_N8S21161C8D1Ev,_ZThn1156_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn1824_N8S21161C8D0Ev,_ZThn1156_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C59S21161C14__A3__9S21161C13[] = {
  ABISELECT(-1824,-1156),
  ABISELECT(-1824,-1156),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn840_N8S21161C5D1Ev,_ZThn532_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn840_N8S21161C5D0Ev,_ZThn532_N8S21161C5D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C59S21161C14__A1__9S21161C13[] = {
  0,
  0,
  ABISELECT(-840,-532),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn1824_N8S21161C5D1Ev,_ZThn1156_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn1824_N8S21161C5D0Ev,_ZThn1156_N8S21161C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C59S21161C14__A1__9S21161C13[] = {
  ABISELECT(-1824,-1156),
  ABISELECT(-1824,-1156),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn2088_N9S21161C14D1Ev,_ZThn1300_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn2088_N9S21161C14D0Ev,_ZThn1300_N9S21161C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C14__9S21161C13[] = {
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn2648_N9S21161C14D1Ev,_ZThn1632_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn2648_N9S21161C14D0Ev,_ZThn1632_N9S21161C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C14__9S21161C13[] = {
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn2848_N9S21161C14D1Ev,_ZThn1744_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn2848_N9S21161C14D0Ev,_ZThn1744_N9S21161C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C14__9S21161C13[] = {
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn1104_N9S21161C14D1Ev,_ZThn676_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn1104_N9S21161C14D0Ev,_ZThn676_N9S21161C14D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C14__9S21161C13[] = {
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZThn264_N9S21161C14D1Ev,_ZThn144_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn264_N9S21161C14D0Ev,_ZThn144_N9S21161C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C5__9S21161C14__9S21161C13[] = {
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C14D1Ev,_ZThn144_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C14D0Ev,_ZThn144_N9S21161C14D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C13[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C6__9S21161C13[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S21161C8D1Ev,_ZThn624_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S21161C8D0Ev,_ZThn624_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C6__9S21161C13[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21161C6D1Ev,_ZThn624_N8S21161C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21161C6D0Ev,_ZThn624_N8S21161C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C6__9S21161C13[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C5__9S21161C13[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C5__A1__9S21161C13[] = {
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C5__A1__9S21161C13[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C5__9S21161C13[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C5__9S21161C13[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__A2__9S21161C13[] = {
  ABISELECT(-560,-332),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__A2__9S21161C13[] = {
  ABISELECT(560,332),
  ABISELECT(560,332),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C13[] = {
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C12__9S21161C13[] = {
  ABISELECT(200,112),
  ABISELECT(-560,-332),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C12__9S21161C13[] = {
  ABISELECT(760,444),
  ABISELECT(760,444),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
static  VTT_ENTRY vtt_S21161C13[] = {
  {&(_ZTV9S21161C13[8]),  8,62},
  {&(_tg__ZTV9S21161C14__9S21161C13[7]),  7,13},
  {&(_tg__ZTV9S21161C159S21161C14__9S21161C13[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21161C159S21161C14__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S21161C8__9S21161C159S21161C14__9S21161C13[4]),  4,6},
  {&(_tg__ZTV9S21161C12__9S21161C159S21161C14__9S21161C13[5]),  5,7},
  {&(_tg__ZTV8S21161C6__9S21161C159S21161C14__9S21161C13[7]),  7,11},
  {&(_tg__ZTV8S21161C59S21161C14__A1__9S21161C13[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C59S21161C14__A3__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C59S21161C14__A3__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C59S21161C14__A1__9S21161C13[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C59S21161C14__A1__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21161C14__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S21161C8__9S21161C14__9S21161C13[4]),  4,6},
  {&(_tg__ZTV9S21161C12__9S21161C14__9S21161C13[5]),  5,7},
  {&(_tg__ZTV8S21161C6__9S21161C14__9S21161C13[7]),  7,11},
  {&(_tg__ZTV8S21161C5__9S21161C14__9S21161C13[5]),  5,7},
  {&(_ZTV9S21161C13[32]),  32,62},
  {&(_ZTV9S21161C13[39]),  39,62},
  {&(_ZTV9S21161C13[47]),  47,62},
  {&(_ZTV9S21161C13[53]),  53,62},
  {&(_ZTV9S21161C13[60]),  60,62},
  {&(_ZTV9S21161C13[19]),  19,62},
  {&(_tg__ZTV8S21161C6__9S21161C13[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C6__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C6__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C6__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S21161C5__9S21161C13[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C5__A1__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C5__A1__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C5__9S21161C13[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C5__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S21161C8__A2__9S21161C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__A2__9S21161C13[3]),  3,5},
  {&(_tg__ZTV9S21161C12__9S21161C13[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C12__9S21161C13[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C12__9S21161C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21161C13[];
extern  VTBL_ENTRY _ZTV9S21161C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C13[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C6D0Ev,_ZThn624_N8S21161C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C6D1Ev,_ZThn624_N8S21161C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21161C14D0Ev,_ZThn676_N9S21161C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21161C14D0Ev,_ZThn1744_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21161C14D1Ev,_ZThn676_N9S21161C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21161C14D1Ev,_ZThn1744_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21161C14D0Ev,_ZThn1632_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21161C14D1Ev,_ZThn1632_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21161C14D0Ev,_ZThn1300_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21161C14D1Ev,_ZThn1300_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21161C5D0Ev,_ZThn1156_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21161C5D1Ev,_ZThn1156_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn840_N8S21161C5D0Ev,_ZThn532_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn840_N8S21161C5D1Ev,_ZThn532_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C8D0Ev,_ZThn624_N8S21161C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21161C8D0Ev,_ZThn1156_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C8D1Ev,_ZThn624_N8S21161C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21161C8D1Ev,_ZThn1156_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21161C15D0Ev,_ZThn676_N9S21161C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21161C15D0Ev,_ZThn1744_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21161C15D1Ev,_ZThn676_N9S21161C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21161C15D1Ev,_ZThn1744_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21161C15D0Ev,_ZThn1632_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21161C15D1Ev,_ZThn1632_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21161C15D0Ev,_ZThn1300_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21161C15D1Ev,_ZThn1300_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C13D0Ev,_ZTv0_n16_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21161C13D0Ev,_ZThn1632_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C13D1Ev,_ZTv0_n16_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21161C13D1Ev,_ZThn1632_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21161C13D0Ev,_ZTv0_n24_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2320_N9S21161C13D0Ev,_ZThn1444_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21161C13D1Ev,_ZTv0_n24_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2320_N9S21161C13D1Ev,_ZThn1444_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C13D0Ev,_ZTv0_n12_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21161C13D0Ev,_ZThn1300_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C13D1Ev,_ZTv0_n12_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21161C13D1Ev,_ZThn1300_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21161C13D0Ev,_ZThn1744_N9S21161C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21161C13D0Ev,_ZThn676_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21161C13D1Ev,_ZThn1744_N9S21161C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21161C13D1Ev,_ZThn676_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C13 = {  "S21161C13", // class name
  bases_S21161C13, 21,
  &(vtc_S21161C13[0]), // expected_vtbl_contents
  &(vtt_S21161C13[0]), // expected_vtt_contents
  ABISELECT(3232,1968), // object size
  NSPAIRA(_ZTI9S21161C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21161C13),62, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21161C13),37, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C17  : virtual S19674C7 , S21161C5 , S21161C6 , virtual S21161C8 , virtual S21161C2 {
  int s21161c17f0;
  int s21161c17f1;
  int s21161c17f2;
  long double s21161c17f3;
  void *s21161c17f4;
  void *s21161c17f5;
  ::S21161C8 s21161c17f6;
  void *s21161c17f7;
  ::S21161C6 s21161c17f8;
  int s21161c17f9;
  void *s21161c17f10;
  int s21161c17f11;
  ::S19674C5 s21161c17f12[8];
  virtual  ~S21161C17(); // _ZN9S21161C17D2Ev
  S21161C17(); // tgen
};
//SIG(-1 S21161C17) C1{ VBC2{ m Fp[14]} BC3{ VBC4{ VBC5{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC2 BC6{ VBC5 BC2 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC2 BC6 Fi Fi Fi:28 Fi Fl} BC4 VBC6 VBC8{ VBC5 v3} vd Fi Fi Fi FD Fp Fp FC6 Fp FC4 Fi Fp Fi FC5[8]}


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

static void Test_S21161C17()
{
  extern Class_Descriptor cd_S21161C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(334,855)];
    init_test(&cd_S21161C17, buf);
    S21161C17 *dp, &lv = *(dp=new (buf) S21161C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5328,3416), "sizeof(S21161C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C17)");
    /*is_ambiguous_... S21161C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(3896,2532), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*), ABISELECT(3896,2532), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*), ABISELECT(3896,2532), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C6*), ABISELECT(5000,3212), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*), ABISELECT(5000,3212), "S21161C17");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*), ABISELECT(5000,3212), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C6*), ABISELECT(5000,3212), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*), ABISELECT(5000,3212), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(5000,3212), "S21161C17");
    check_base_class_offset(lv, (S19674C5*)(S21161C2*), ABISELECT(5000,3212), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*), ABISELECT(4024,2592), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C6*), ABISELECT(4016,2588), "S21161C17");
    check_base_class_offset(lv, (S21161C6*)(S21161C5*), ABISELECT(4016,2588), "S21161C17");
    /*is_ambiguous_... S21161C5::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*), ABISELECT(192,112), "S21161C17");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*), ABISELECT(8,4), "S21161C17");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*), 0, "S21161C17");
    check_base_class_offset(lv, (S21161C5*), 0, "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*), ABISELECT(344,192), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C6*), ABISELECT(336,188), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S21161C6*), ABISELECT(336,188), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(5128,3304), "S21161C17");
    /*is_ambiguous_... S21161C17::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*), ABISELECT(5120,3300), "S21161C17");
    check_base_class_offset(lv, (S21161C2*), ABISELECT(5312,3412), "S21161C17");
    check_field_offset(lv, s21161c17f0, ABISELECT(1320,812), "S21161C17.s21161c17f0");
    check_field_offset(lv, s21161c17f1, ABISELECT(1324,816), "S21161C17.s21161c17f1");
    check_field_offset(lv, s21161c17f2, ABISELECT(1328,820), "S21161C17.s21161c17f2");
    check_field_offset(lv, s21161c17f3, ABISELECT(1344,824), "S21161C17.s21161c17f3");
    check_field_offset(lv, s21161c17f4, ABISELECT(1360,836), "S21161C17.s21161c17f4");
    check_field_offset(lv, s21161c17f5, ABISELECT(1368,840), "S21161C17.s21161c17f5");
    check_field_offset(lv, s21161c17f6, ABISELECT(1376,844), "S21161C17.s21161c17f6");
    check_field_offset(lv, s21161c17f7, ABISELECT(1688,1044), "S21161C17.s21161c17f7");
    check_field_offset(lv, s21161c17f8, ABISELECT(1696,1048), "S21161C17.s21161c17f8");
    check_field_offset(lv, s21161c17f9, ABISELECT(2912,1816), "S21161C17.s21161c17f9");
    check_field_offset(lv, s21161c17f10, ABISELECT(2920,1820), "S21161C17.s21161c17f10");
    check_field_offset(lv, s21161c17f11, ABISELECT(2928,1824), "S21161C17.s21161c17f11");
    check_field_offset(lv, s21161c17f12, ABISELECT(2936,1828), "S21161C17.s21161c17f12");
    test_class_info(&lv, &cd_S21161C17);
    dp->~S21161C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C17(Test_S21161C17, "S21161C17", ABISELECT(5328,3416));

#else // __cplusplus

extern void _ZN9S21161C17C1Ev();
extern void _ZN9S21161C17D2Ev();
Name_Map name_map_S21161C17[] = {
  NSPAIR(_ZN9S21161C17C1Ev),
  NSPAIR(_ZN9S21161C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C2;
extern VTBL_ENTRY _ZTI8S21161C2[];
extern  VTBL_ENTRY _ZTV8S21161C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C2[];
static Base_Class bases_S21161C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(3896,2532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(5000,3212), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4024,2592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21161C8,    ABISELECT(4016,2588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(4016,2588), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(192,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
    8, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21161C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(344,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(336,188), //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
    11, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(336,188), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(5128,3304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(5120,3300), //bcp->offset
    33, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21161C2,    ABISELECT(5312,3412), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21161C17[];
extern void _ZN9S21161C17D1Ev();
extern void _ZN9S21161C17D0Ev();
extern void ABISELECT(_ZThn336_N9S21161C17D1Ev,_ZThn188_N9S21161C17D1Ev)();
extern void ABISELECT(_ZThn336_N9S21161C17D0Ev,_ZThn188_N9S21161C17D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev)();
extern void ABISELECT(_ZThn4016_N9S21161C17D1Ev,_ZThn2588_N9S21161C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev)();
extern void ABISELECT(_ZThn4016_N9S21161C17D0Ev,_ZThn2588_N9S21161C17D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
extern void ABISELECT(_ZTv0_n24_N9S21161C17D1Ev,_ZTv0_n12_N9S21161C17D1Ev)();
extern void ABISELECT(_ZThn5000_N9S21161C17D1Ev,_ZThn3212_N9S21161C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C17D0Ev,_ZTv0_n12_N9S21161C17D0Ev)();
extern void ABISELECT(_ZThn5000_N9S21161C17D0Ev,_ZThn3212_N9S21161C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C17D1Ev,_ZTv0_n16_N9S21161C17D1Ev)();
extern void ABISELECT(_ZThn5120_N9S21161C17D1Ev,_ZThn3300_N9S21161C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C17D0Ev,_ZTv0_n16_N9S21161C17D0Ev)();
extern void ABISELECT(_ZThn5120_N9S21161C17D0Ev,_ZThn3300_N9S21161C17D0Ev)() __attribute__((weak));
extern void _ZN8S21161C22v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev)();
extern void ABISELECT(_ZThn5312_N9S21161C17D1Ev,_ZThn3412_N9S21161C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev)();
extern void ABISELECT(_ZThn5312_N9S21161C17D0Ev,_ZThn3412_N9S21161C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21161C17[] = {
  ABISELECT(5312,3412),
  ABISELECT(5120,3300),
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&_ZN9S21161C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C17D0Ev,
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S21161C17D1Ev,_ZThn188_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S21161C17D0Ev,_ZThn188_N9S21161C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C17D1Ev,_ZTv0_n12_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C17D0Ev,_ZTv0_n12_N9S21161C17D0Ev),
  ABISELECT(-5120,-3300),
  ABISELECT(-120,-88),
  ABISELECT(-5120,-3300),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C17D1Ev,_ZTv0_n16_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C17D0Ev,_ZTv0_n16_N9S21161C17D0Ev),
  ABISELECT(-5312,-3412),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-5312,-3412),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&_ZN8S21161C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S21161C17[];
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C5__9S21161C17[] = {
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C5__A1__9S21161C17[] = {
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21161C8D1Ev,_ZThn3212_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21161C8D0Ev,_ZThn3212_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C5__A1__9S21161C17[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn4016_N8S21161C5D1Ev,_ZThn2588_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn4016_N8S21161C5D0Ev,_ZThn2588_N8S21161C5D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C5__9S21161C17[] = {
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21161C5D1Ev,_ZThn3212_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21161C5D0Ev,_ZThn3212_N8S21161C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C5__9S21161C17[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__A__9S21161C17[] = {
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C6__A2__9S21161C17[] = {
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn4664_N8S21161C8D1Ev,_ZThn3024_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn4664_N8S21161C8D0Ev,_ZThn3024_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C6__A2__9S21161C17[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZThn4664_N8S21161C6D1Ev,_ZThn3024_N8S21161C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
extern void ABISELECT(_ZThn4664_N8S21161C6D0Ev,_ZThn3024_N8S21161C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C6__A__9S21161C17[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C17[] = {
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C6__9S21161C17[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S21161C8D1Ev,_ZThn624_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S21161C8D0Ev,_ZThn624_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C6__9S21161C17[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21161C6D1Ev,_ZThn624_N8S21161C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21161C6D0Ev,_ZThn624_N8S21161C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C6__9S21161C17[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__A3__9S21161C17[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__A3__9S21161C17[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void _ZN8S21161C22v1Ev();
extern void _ZN8S21161C2D1Ev();
extern void _ZN8S21161C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C2__9S21161C17[] = {
  ABISELECT(-312,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C2[0]),
  (VTBL_ENTRY)&_ZN8S21161C22v1Ev,
  (VTBL_ENTRY)&_ZN8S21161C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C2D1Ev,_ZTv0_n12_N8S21161C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C2D0Ev,_ZTv0_n12_N8S21161C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C2__9S21161C17[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI8S21161C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C2D1Ev,_ZTv0_n12_N8S21161C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C2D0Ev,_ZTv0_n12_N8S21161C2D0Ev),
};
static  VTT_ENTRY vtt_S21161C17[] = {
  {&(_ZTV9S21161C17[7]),  7,47},
  {&(_tg__ZTV8S21161C5__9S21161C17[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C5__A1__9S21161C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C5__A1__9S21161C17[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C5__9S21161C17[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C5__9S21161C17[3]),  3,5},
  {&(_tg__ZTV8S21161C6__A__9S21161C17[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C6__A2__9S21161C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C6__A2__9S21161C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C6__A__9S21161C17[3]),  3,5},
  {&(_ZTV9S21161C17[24]),  24,47},
  {&(_ZTV9S21161C17[31]),  31,47},
  {&(_ZTV9S21161C17[13]),  13,47},
  {&(_ZTV9S21161C17[37]),  37,47},
  {&(_ZTV9S21161C17[44]),  44,47},
  {&(_tg__ZTV8S21161C6__9S21161C17[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C6__9S21161C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C6__9S21161C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C6__9S21161C17[3]),  3,5},
  {&(_tg__ZTV8S21161C8__A3__9S21161C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__A3__9S21161C17[3]),  3,5},
  {&(_tg__ZTV8S21161C2__9S21161C17[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21161C2__9S21161C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21161C17[];
extern  VTBL_ENTRY _ZTV9S21161C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C17[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C6D0Ev,_ZThn624_N8S21161C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21161C6D0Ev,_ZThn3024_N8S21161C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C6D1Ev,_ZThn624_N8S21161C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21161C6D1Ev,_ZThn3024_N8S21161C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21161C5D0Ev,_ZThn3212_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21161C5D1Ev,_ZThn3212_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21161C5D0Ev,_ZThn2588_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21161C5D1Ev,_ZThn2588_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C8D0Ev,_ZThn624_N8S21161C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21161C8D0Ev,_ZThn3024_N8S21161C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21161C8D0Ev,_ZThn3212_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C8D1Ev,_ZThn624_N8S21161C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21161C8D1Ev,_ZThn3024_N8S21161C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21161C8D1Ev,_ZThn3212_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C17D0Ev,_ZTv0_n16_N9S21161C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N9S21161C17D0Ev,_ZThn3300_N9S21161C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C17D1Ev,_ZTv0_n16_N9S21161C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N9S21161C17D1Ev,_ZThn3300_N9S21161C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C17D0Ev,_ZTv0_n12_N9S21161C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N9S21161C17D0Ev,_ZThn3212_N9S21161C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C17D1Ev,_ZTv0_n12_N9S21161C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N9S21161C17D1Ev,_ZThn3212_N9S21161C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N9S21161C17D0Ev,_ZThn3412_N9S21161C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N9S21161C17D0Ev,_ZThn2588_N9S21161C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N9S21161C17D1Ev,_ZThn3412_N9S21161C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N9S21161C17D1Ev,_ZThn2588_N9S21161C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C17 = {  "S21161C17", // class name
  bases_S21161C17, 15,
  &(vtc_S21161C17[0]), // expected_vtbl_contents
  &(vtt_S21161C17[0]), // expected_vtt_contents
  ABISELECT(5328,3416), // object size
  NSPAIRA(_ZTI9S21161C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21161C17),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21161C17),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C18  : virtual S19674C5 , S21161C8 , virtual S21161C12 {
  long double s21161c18f0;
  void *s21161c18f1;
  void *s21161c18f2;
  ~S21161C18(); // tgen
  S21161C18(); // tgen
};
//SIG(-1 S21161C18) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} FD Fp Fp}


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

static void Test_S21161C18()
{
  extern Class_Descriptor cd_S21161C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,140)];
    init_test(&cd_S21161C18, buf);
    S21161C18 *dp, &lv = *(dp=new (buf) S21161C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,556), "sizeof(S21161C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C18)");
    /*is_ambiguous_... S21161C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(224,132), "S21161C18");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(224,132), "S21161C18");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(224,132), "S21161C18");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(8,4), "S21161C18");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*), 0, "S21161C18");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(744,448), "S21161C18");
    check_base_class_offset(lv, (S21161C8*)(S21161C12*), ABISELECT(736,444), "S21161C18");
    /*is_ambiguous_... S21161C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*), ABISELECT(352,220), "S21161C18");
    check_base_class_offset(lv, (S21161C12*), ABISELECT(352,220), "S21161C18");
    check_field_offset(lv, s21161c18f0, ABISELECT(192,112), "S21161C18.s21161c18f0");
    check_field_offset(lv, s21161c18f1, ABISELECT(208,124), "S21161C18.s21161c18f1");
    check_field_offset(lv, s21161c18f2, ABISELECT(216,128), "S21161C18.s21161c18f2");
    test_class_info(&lv, &cd_S21161C18);
    dp->~S21161C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C18(Test_S21161C18, "S21161C18", ABISELECT(928,556));

#else // __cplusplus

extern void _ZN9S21161C18C1Ev();
extern void _ZN9S21161C18D1Ev();
Name_Map name_map_S21161C18[] = {
  NSPAIR(_ZN9S21161C18C1Ev),
  NSPAIR(_ZN9S21161C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
static Base_Class bases_S21161C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(224,132), //bcp->offset
    7, //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_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21161C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(744,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(736,444), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(352,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21161C12,    ABISELECT(352,220), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21161C18[];
extern void _ZN9S21161C18D1Ev();
extern void _ZN9S21161C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21161C18D1Ev,_ZTv0_n12_N9S21161C18D1Ev)();
extern void ABISELECT(_ZThn224_N9S21161C18D1Ev,_ZThn132_N9S21161C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C18D0Ev,_ZTv0_n12_N9S21161C18D0Ev)();
extern void ABISELECT(_ZThn224_N9S21161C18D0Ev,_ZThn132_N9S21161C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C18D1Ev,_ZTv0_n20_N9S21161C18D1Ev)();
extern void ABISELECT(_ZThn352_N9S21161C18D1Ev,_ZThn220_N9S21161C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C18D0Ev,_ZTv0_n20_N9S21161C18D0Ev)();
extern void ABISELECT(_ZThn352_N9S21161C18D0Ev,_ZThn220_N9S21161C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C18D1Ev,_ZTv0_n16_N9S21161C18D1Ev)();
extern void ABISELECT(_ZThn736_N9S21161C18D1Ev,_ZThn444_N9S21161C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C18D0Ev,_ZTv0_n16_N9S21161C18D0Ev)();
extern void ABISELECT(_ZThn736_N9S21161C18D0Ev,_ZThn444_N9S21161C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21161C18[] = {
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&_ZN9S21161C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C18D0Ev,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C18D1Ev,_ZTv0_n12_N9S21161C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C18D0Ev,_ZTv0_n12_N9S21161C18D0Ev),
  ABISELECT(-352,-220),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C18D1Ev,_ZTv0_n20_N9S21161C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C18D0Ev,_ZTv0_n20_N9S21161C18D0Ev),
  ABISELECT(-736,-444),
  ABISELECT(-512,-312),
  ABISELECT(-736,-444),
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C18D1Ev,_ZTv0_n16_N9S21161C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C18D0Ev,_ZTv0_n16_N9S21161C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S21161C18[];
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__A__9S21161C18[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn224_N8S21161C8D1Ev,_ZThn132_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn224_N8S21161C8D0Ev,_ZThn132_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__A__9S21161C18[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C18[] = {
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn384_N9S21161C12D1Ev,_ZThn224_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn384_N9S21161C12D0Ev,_ZThn224_N9S21161C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C12__9S21161C18[] = {
  ABISELECT(-384,-224),
  ABISELECT(-512,-312),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C12__9S21161C18[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__A1__9S21161C18[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__A1__9S21161C18[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
static  VTT_ENTRY vtt_S21161C18[] = {
  {&(_ZTV9S21161C18[5]),  5,25},
  {&(_tg__ZTV8S21161C8__A__9S21161C18[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__A__9S21161C18[3]),  3,5},
  {&(_ZTV9S21161C18[10]),  10,25},
  {&(_ZTV9S21161C18[17]),  17,25},
  {&(_ZTV9S21161C18[23]),  23,25},
  {&(_tg__ZTV9S21161C12__9S21161C18[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C12__9S21161C18[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C12__9S21161C18[3]),  3,5},
  {&(_tg__ZTV8S21161C8__A1__9S21161C18[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__A1__9S21161C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21161C18[];
extern  VTBL_ENTRY _ZTV9S21161C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C18[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21161C12D0Ev,_ZThn224_N9S21161C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21161C12D1Ev,_ZThn224_N9S21161C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21161C8D0Ev,_ZThn132_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21161C8D1Ev,_ZThn132_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C18D0Ev,_ZTv0_n16_N9S21161C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S21161C18D0Ev,_ZThn444_N9S21161C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C18D1Ev,_ZTv0_n16_N9S21161C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S21161C18D1Ev,_ZThn444_N9S21161C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C18D0Ev,_ZTv0_n20_N9S21161C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S21161C18D0Ev,_ZThn220_N9S21161C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C18D1Ev,_ZTv0_n20_N9S21161C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S21161C18D1Ev,_ZThn220_N9S21161C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C18D0Ev,_ZTv0_n12_N9S21161C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21161C18D0Ev,_ZThn132_N9S21161C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C18D1Ev,_ZTv0_n12_N9S21161C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21161C18D1Ev,_ZThn132_N9S21161C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C18 = {  "S21161C18", // class name
  bases_S21161C18, 7,
  &(vtc_S21161C18[0]), // expected_vtbl_contents
  &(vtt_S21161C18[0]), // expected_vtt_contents
  ABISELECT(928,556), // object size
  NSPAIRA(_ZTI9S21161C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21161C18),25, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21161C18),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C4  : virtual S21161C5 , virtual S19674C2 , S21161C13 , virtual S21161C17 {
  ::S21161C12 s21161c4f0;
  int s21161c4f1;
  ::S21161C18 s21161c4f2;
  long double s21161c4f3;
  short s21161c4f4[3];
  int  :0;
  int s21161c4f6;
  ~S21161C4(); // tgen
  S21161C4(); // tgen
};
//SIG(-1 S21161C4) C1{ VBC2{ VBC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ m Fp[14]} BC6{ VBC4 BC5 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC5 BC6 Fi Fi Fi:28 Fi Fl} VBC8{ m FC9{ VBC10{ VBC4 v8} VBC11{ VBC4 VBC5 BC12{ VBC4 BC5 Fs[6] FL[3] FU7} v9 v10 FC12 FD[7] FC12 FL Fp[5]} vd FC13{ VBC12 BC4 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC11 Fi Fi FC10}[5] Fp} BC14{ VBC3 VBC2 BC15{ BC16{ VBC4 VBC6 VBC17{ VBC6 BC4 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC3 vd v3 v4 Fi Fi FC5 Fc Fc Fi Fs FL} BC2 v5 v6 FU18{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC4 vd FC5 Fi[10] Fi FC19{ VBC4 v7} Fs Fi FL} VBC20{ VBC5 BC2 BC3 VBC6 VBC19 vd Fi Fi Fi FD Fp Fp FC6 Fp FC3 Fi Fp Fi FC4[8]} FC17 Fi FC21{ VBC4 BC6 VBC17 FD Fp Fp} FD Fs[3] Fi:0 Fi}


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

static void Test_S21161C4()
{
  extern Class_Descriptor cd_S21161C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2468,6090)];
    init_test(&cd_S21161C4, buf);
    S21161C4 *dp, &lv = *(dp=new (buf) S21161C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39472,24356), "sizeof(S21161C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C4)");
    /*is_ambiguous_... S21161C4::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C6*), ABISELECT(4104,2496), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*), ABISELECT(4104,2496), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*), ABISELECT(4104,2496), "S21161C4");
    /*is_ambiguous_... S21161C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C15*)(S21161C14*)(S21161C13*), ABISELECT(4104,2496), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(4104,2496), "S21161C4");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*)(S21161C14*)(S21161C13*), ABISELECT(4104,2496), "S21161C4");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*)(S21161C17*), ABISELECT(4104,2496), "S21161C4");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C6*)(S21161C17*), ABISELECT(4104,2496), "S21161C4");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*)(S21161C17*), ABISELECT(4104,2496), "S21161C4");
    check_base_class_offset(lv, (S19674C5*)(S21161C2*), ABISELECT(4104,2496), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*), ABISELECT(4224,2584), "S21161C4");
    /*is_ambiguous_... S21161C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C17*), ABISELECT(4224,2584), "S21161C4");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*)(S21161C17*), ABISELECT(4224,2584), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*), ABISELECT(3128,1876), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C6 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C6*), ABISELECT(3120,1872), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C6*)(S21161C5*), ABISELECT(3120,1872), "S21161C4");
    check_base_class_offset(lv, (S21161C6*)(S21161C13*), ABISELECT(3120,1872), "S21161C4");
    check_base_class_offset(lv, (S21161C6*)(S21161C15*)(S21161C14*)(S21161C13*), ABISELECT(3120,1872), "S21161C4");
    check_base_class_offset(lv, (S21161C6*)(S21161C5*)(S21161C14*)(S21161C13*), ABISELECT(3120,1872), "S21161C4");
    check_base_class_offset(lv, (S21161C6*)(S21161C5*)(S21161C17*), ABISELECT(3120,1872), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C5 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*), ABISELECT(2976,1796), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C5 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*), ABISELECT(2792,1688), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*), ABISELECT(2784,1684), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C5*), ABISELECT(2784,1684), "S21161C4");
    /*is_ambiguous_... S21161C13::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C5*)(S21161C13*), ABISELECT(2784,1684), "S21161C4");
    check_base_class_offset(lv, (S19674C2*), ABISELECT(4336,2640), "S21161C4");
    /*is_ambiguous_... S21161C4::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(34992,21488), "S21161C4");
    /*is_ambiguous_... S21161C15::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C15*)(S21161C14*)(S21161C13*), ABISELECT(34984,21484), "S21161C4");
    check_base_class_offset(lv, (S21161C8*)(S21161C12*), ABISELECT(34984,21484), "S21161C4");
    /*is_ambiguous_... S21161C17::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C17*), ABISELECT(34984,21484), "S21161C4");
    /*is_ambiguous_... S21161C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*), ABISELECT(35184,21596), "S21161C4");
    check_base_class_offset(lv, (S21161C12*)(S21161C15*)(S21161C14*)(S21161C13*), ABISELECT(35184,21596), "S21161C4");
    /*is_ambiguous_... S21161C15::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C15*)(S21161C14*)(S21161C13*), ABISELECT(8,4), "S21161C4");
    check_base_class_offset(lv, (S21161C15*)(S21161C14*)(S21161C13*), 0, "S21161C4");
    /*is_ambiguous_... S21161C5::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*)(S21161C14*)(S21161C13*), ABISELECT(456,256), "S21161C4");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*)(S21161C14*)(S21161C13*), ABISELECT(272,148), "S21161C4");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*)(S21161C14*)(S21161C13*), ABISELECT(264,144), "S21161C4");
    check_base_class_offset(lv, (S21161C5*)(S21161C14*)(S21161C13*), ABISELECT(264,144), "S21161C4");
    check_base_class_offset(lv, (S21161C14*)(S21161C13*), 0, "S21161C4");
    /*is_ambiguous_... S21161C13::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C13*), ABISELECT(672,380), "S21161C4");
    check_base_class_offset(lv, (S21161C13*), 0, "S21161C4");
    /*is_ambiguous_... S21161C5::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*)(S21161C17*), ABISELECT(35760,21932), "S21161C4");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*)(S21161C17*), ABISELECT(35576,21824), "S21161C4");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*)(S21161C17*), ABISELECT(35568,21820), "S21161C4");
    check_base_class_offset(lv, (S21161C5*)(S21161C17*), ABISELECT(35568,21820), "S21161C4");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*)(S21161C17*), ABISELECT(35912,22012), "S21161C4");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C6*)(S21161C17*), ABISELECT(35904,22008), "S21161C4");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S21161C6*)(S21161C17*), ABISELECT(35904,22008), "S21161C4");
    check_base_class_offset(lv, (S21161C2*)(S21161C17*), ABISELECT(39464,24352), "S21161C4");
    check_base_class_offset(lv, (S21161C17*), ABISELECT(35568,21820), "S21161C4");
    check_field_offset(lv, s21161c4f0, ABISELECT(1104,676), "S21161C4.s21161c4f0");
    check_field_offset(lv, s21161c4f1, ABISELECT(1808,1100), "S21161C4.s21161c4f1");
    check_field_offset(lv, s21161c4f2, ABISELECT(1824,1104), "S21161C4.s21161c4f2");
    check_field_offset(lv, s21161c4f3, ABISELECT(2752,1660), "S21161C4.s21161c4f3");
    check_field_offset(lv, s21161c4f4, ABISELECT(2768,1672), "S21161C4.s21161c4f4");
    check_field_offset(lv, s21161c4f6, ABISELECT(2776,1680), "S21161C4.s21161c4f6");
    test_class_info(&lv, &cd_S21161C4);
    dp->~S21161C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C4(Test_S21161C4, "S21161C4", ABISELECT(39472,24356));

#else // __cplusplus

extern void _ZN8S21161C4C1Ev();
extern void _ZN8S21161C4D1Ev();
Name_Map name_map_S21161C4[] = {
  NSPAIR(_ZN8S21161C4C1Ev),
  NSPAIR(_ZN8S21161C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C15;
extern VTBL_ENTRY _ZTI9S21161C15[];
extern  VTBL_ENTRY _ZTV9S21161C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
extern Class_Descriptor cd_S21161C14;
extern VTBL_ENTRY _ZTI9S21161C14[];
extern  VTBL_ENTRY _ZTV9S21161C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C14[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C13;
extern VTBL_ENTRY _ZTI9S21161C13[];
extern  VTBL_ENTRY _ZTV9S21161C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
extern Class_Descriptor cd_S21161C2;
extern VTBL_ENTRY _ZTI8S21161C2[];
extern  VTBL_ENTRY _ZTV8S21161C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C2[];
extern Class_Descriptor cd_S21161C17;
extern VTBL_ENTRY _ZTI9S21161C17[];
extern  VTBL_ENTRY _ZTV9S21161C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C17[];
static Base_Class bases_S21161C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(4104,2496), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4224,2584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(3128,1876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21161C8,    ABISELECT(3120,1872), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(3120,1872), //bcp->offset
    36, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2976,1796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2792,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(2784,1684), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(2784,1684), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C2,    ABISELECT(4336,2640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(34992,21488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(34984,21484), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(35184,21596), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21161C12,    ABISELECT(35184,21596), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(264,144), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(264,144), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21161C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21161C13,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(35760,21932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(35576,21824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(35568,21820), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(35568,21820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35912,22012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(35904,22008), //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
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(35904,22008), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21161C2,    ABISELECT(39464,24352), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S21161C17,    ABISELECT(35568,21820), //bcp->offset
    65, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21161C4[];
extern void _ZN8S21161C4D1Ev();
extern void _ZN8S21161C4D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void _ZN9S21161C142v6Ev();
extern void _ZN9S21161C142v7Ev();
extern void ABISELECT(_ZThn264_N8S21161C4D1Ev,_ZThn144_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn264_N8S21161C4D0Ev,_ZThn144_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn672_N8S21161C4D1Ev,_ZThn380_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn672_N8S21161C4D0Ev,_ZThn380_N8S21161C4D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21161C4D1Ev,_ZTv0_n24_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn2784_N8S21161C4D1Ev,_ZThn1684_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21161C4D0Ev,_ZTv0_n24_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn2784_N8S21161C4D0Ev,_ZThn1684_N8S21161C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn3120_N8S21161C4D1Ev,_ZThn1872_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn3120_N8S21161C4D0Ev,_ZThn1872_N8S21161C4D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
extern void ABISELECT(_ZTv0_n24_N8S21161C4D1Ev,_ZTv0_n12_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn4104_N8S21161C4D1Ev,_ZThn2496_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C4D0Ev,_ZTv0_n12_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn4104_N8S21161C4D0Ev,_ZThn2496_N8S21161C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21161C4D1Ev,_ZTv0_n16_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn34984_N8S21161C4D1Ev,_ZThn21484_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21161C4D0Ev,_ZTv0_n16_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn34984_N8S21161C4D0Ev,_ZThn21484_N8S21161C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn35184_N8S21161C4D1Ev,_ZThn21596_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn35184_N8S21161C4D0Ev,_ZThn21596_N8S21161C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21161C4D1Ev,_ZTv0_n32_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn35568_N8S21161C4D1Ev,_ZThn21820_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21161C4D0Ev,_ZTv0_n32_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn35568_N8S21161C4D0Ev,_ZThn21820_N8S21161C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N8S21161C4D1Ev,_ZTvn188_n32_N8S21161C4D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N8S21161C4D0Ev,_ZTvn188_n32_N8S21161C4D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
extern void _ZN8S21161C22v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn39464_N8S21161C4D1Ev,_ZThn24352_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn39464_N8S21161C4D0Ev,_ZThn24352_N8S21161C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21161C4[] = {
  ABISELECT(39464,24352),
  ABISELECT(35568,21820),
  ABISELECT(4336,2640),
  ABISELECT(2784,1684),
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&_ZN8S21161C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C4D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v6Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v7Ev,
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S21161C4D1Ev,_ZThn144_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S21161C4D0Ev,_ZThn144_N8S21161C4D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N8S21161C4D1Ev,_ZThn380_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N8S21161C4D0Ev,_ZThn380_N8S21161C4D0Ev),
  ABISELECT(-2784,-1684),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21161C4D1Ev,_ZTv0_n24_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21161C4D0Ev,_ZTv0_n24_N8S21161C4D0Ev),
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C4D1Ev,_ZTv0_n12_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C4D0Ev,_ZTv0_n12_N8S21161C4D0Ev),
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21161C4D1Ev,_ZTv0_n16_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21161C4D0Ev,_ZTv0_n16_N8S21161C4D0Ev),
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21820),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  ABISELECT(-35568,-21820),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21161C4D1Ev,_ZTv0_n32_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21161C4D0Ev,_ZTv0_n32_N8S21161C4D0Ev),
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  ABISELECT(-35904,-22008),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21161C4D1Ev,_ZTvn188_n32_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21161C4D0Ev,_ZTvn188_n32_N8S21161C4D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
  ABISELECT(-39464,-24352),
  0,
  ABISELECT(-35360,-21856),
  ABISELECT(-39464,-24352),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&_ZN8S21161C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21161C4[];
extern void _ZN9S21161C13D1Ev();
extern void _ZN9S21161C13D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void _ZN9S21161C142v6Ev();
extern void _ZN9S21161C142v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C13__8S21161C4[] = {
  ABISELECT(2784,1684),
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&_ZN9S21161C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C13D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v6Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v7Ev,
};
extern void _ZN9S21161C14D1Ev();
extern void _ZN9S21161C14D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void _ZN9S21161C142v6Ev();
extern void _ZN9S21161C142v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C149S21161C13__8S21161C4[] = {
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&_ZN9S21161C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C14D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v6Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v7Ev,
};
extern void _ZN9S21161C15D1Ev();
extern void _ZN9S21161C15D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C159S21161C149S21161C13__8S21161C4[] = {
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&_ZN9S21161C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C15D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21161C15D1Ev,_ZThn2496_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21161C15D0Ev,_ZThn2496_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C159S21161C149S21161C13__8S21161C4[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21161C15D1Ev,_ZThn21484_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21161C15D0Ev,_ZThn21484_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C159S21161C149S21161C13__8S21161C4[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21161C15D1Ev,_ZThn21596_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21161C15D0Ev,_ZThn21596_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C159S21161C149S21161C13__8S21161C4[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C15D1Ev,_ZThn1872_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C15D0Ev,_ZThn1872_N9S21161C15D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C159S21161C149S21161C13__8S21161C4[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C59S21161C149S21161C13__A1__8S21161C4[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C59S21161C149S21161C13__A3__8S21161C4[] = {
  ABISELECT(3840,2352),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn3840_N8S21161C8D1Ev,_ZThn2352_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn3840_N8S21161C8D0Ev,_ZThn2352_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C59S21161C149S21161C13__A3__8S21161C4[] = {
  ABISELECT(-3840,-2352),
  ABISELECT(-3840,-2352),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn2856_N8S21161C5D1Ev,_ZThn1728_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn2856_N8S21161C5D0Ev,_ZThn1728_N8S21161C5D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C59S21161C149S21161C13__A1__8S21161C4[] = {
  0,
  0,
  ABISELECT(-2856,-1728),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-2856,-1728),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn3840_N8S21161C5D1Ev,_ZThn2352_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn3840_N8S21161C5D0Ev,_ZThn2352_N8S21161C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C59S21161C149S21161C13__A1__8S21161C4[] = {
  ABISELECT(-3840,-2352),
  ABISELECT(-3840,-2352),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21161C14D1Ev,_ZThn2496_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21161C14D0Ev,_ZThn2496_N9S21161C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C149S21161C13__8S21161C4[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21161C14D1Ev,_ZThn21484_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21161C14D0Ev,_ZThn21484_N9S21161C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C149S21161C13__8S21161C4[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21161C14D1Ev,_ZThn21596_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21161C14D0Ev,_ZThn21596_N9S21161C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C149S21161C13__8S21161C4[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C14D1Ev,_ZThn1872_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C14D0Ev,_ZThn1872_N9S21161C14D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C149S21161C13__8S21161C4[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZThn264_N9S21161C14D1Ev,_ZThn144_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn264_N9S21161C14D0Ev,_ZThn144_N9S21161C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C5__9S21161C149S21161C13__8S21161C4[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C14D1Ev,_ZThn144_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C14D0Ev,_ZThn144_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C13D1Ev,_ZThn1872_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C13D0Ev,_ZThn1872_N9S21161C13D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C13__8S21161C4[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21161C13D1Ev,_ZTv0_n12_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21161C13D1Ev,_ZThn2496_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C13D0Ev,_ZTv0_n12_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21161C13D0Ev,_ZThn2496_N9S21161C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C13__8S21161C4[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C13D1Ev,_ZTv0_n12_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C13D0Ev,_ZTv0_n12_N9S21161C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21161C13D1Ev,_ZTv0_n24_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn2784_N9S21161C13D1Ev,_ZThn1684_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21161C13D0Ev,_ZTv0_n24_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn2784_N9S21161C13D0Ev,_ZThn1684_N9S21161C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C5__9S21161C13__8S21161C4[] = {
  ABISELECT(-2784,-1684),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21161C13D1Ev,_ZTv0_n24_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21161C13D0Ev,_ZTv0_n24_N9S21161C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C13D1Ev,_ZTv0_n16_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21161C13D1Ev,_ZThn21484_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C13D0Ev,_ZTv0_n16_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21161C13D0Ev,_ZThn21484_N9S21161C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__A2__9S21161C13__8S21161C4[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C13D1Ev,_ZTv0_n16_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C13D0Ev,_ZTv0_n16_N9S21161C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21161C13D1Ev,_ZThn21596_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21161C13D0Ev,_ZThn21596_N9S21161C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C13__8S21161C4[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21161C13D1Ev,_ZThn144_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21161C13D0Ev,_ZThn144_N9S21161C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C59S21161C14__A1__9S21161C13__8S21161C4[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C13D1Ev,_ZThn144_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C13D0Ev,_ZThn144_N9S21161C13D0Ev),
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C5__8S21161C4[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C5__A1__8S21161C4[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21161C8D1Ev,_ZThn812_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21161C8D0Ev,_ZThn812_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C5__A1__8S21161C4[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn336_N8S21161C5D1Ev,_ZThn188_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn336_N8S21161C5D0Ev,_ZThn188_N8S21161C5D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C5__8S21161C4[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21161C5D1Ev,_ZThn812_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21161C5D0Ev,_ZThn812_N8S21161C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C5__8S21161C4[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C4[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C6__8S21161C4[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S21161C8D1Ev,_ZThn624_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S21161C8D0Ev,_ZThn624_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C6__8S21161C4[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21161C6D1Ev,_ZThn624_N8S21161C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21161C6D0Ev,_ZThn624_N8S21161C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C6__8S21161C4[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__A2__8S21161C4[] = {
  ABISELECT(-30880,-18988),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__A2__8S21161C4[] = {
  ABISELECT(30880,18988),
  ABISELECT(30880,18988),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C12__8S21161C4[] = {
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C12__8S21161C4[] = {
  ABISELECT(200,112),
  ABISELECT(-30880,-18988),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C12__8S21161C4[] = {
  ABISELECT(31080,19100),
  ABISELECT(31080,19100),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern void _ZN9S21161C17D1Ev();
extern void _ZN9S21161C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C17__8S21161C4[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&_ZN9S21161C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C17D0Ev,
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C59S21161C17__A2__8S21161C4[] = {
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C59S21161C17__A4__8S21161C4[] = {
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C59S21161C17__A4__8S21161C4[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C59S21161C17__A2__8S21161C4[] = {
  0,
  0,
  ABISELECT(32448,19948),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(32448,19948),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C59S21161C17__A2__8S21161C4[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C69S21161C17__A1__8S21161C4[] = {
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C69S21161C17__A5__8S21161C4[] = {
  ABISELECT(-31800,-19512),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C69S21161C17__A5__8S21161C4[] = {
  ABISELECT(31800,19512),
  ABISELECT(31800,19512),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C69S21161C17__A1__8S21161C4[] = {
  ABISELECT(31800,19512),
  ABISELECT(31800,19512),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C17__8S21161C4[] = {
  0,
  0,
  ABISELECT(32448,19948),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(32448,19948),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21161C17D1Ev,_ZTv0_n12_N9S21161C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C17D0Ev,_ZTv0_n12_N9S21161C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C17__8S21161C4[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C17D1Ev,_ZTv0_n12_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C17D0Ev,_ZTv0_n12_N9S21161C17D0Ev),
};
extern void ABISELECT(_ZThn336_N9S21161C17D1Ev,_ZThn188_N9S21161C17D1Ev)();
extern void ABISELECT(_ZThn336_N9S21161C17D0Ev,_ZThn188_N9S21161C17D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__A__9S21161C17__8S21161C4[] = {
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S21161C17D1Ev,_ZThn188_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S21161C17D0Ev,_ZThn188_N9S21161C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C17D1Ev,_ZTv0_n16_N9S21161C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21161C17D0Ev,_ZTv0_n16_N9S21161C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C8__A3__9S21161C17__8S21161C4[] = {
  ABISELECT(584,336),
  ABISELECT(-30880,-18988),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C17D1Ev,_ZTv0_n16_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C17D0Ev,_ZTv0_n16_N9S21161C17D0Ev),
};
extern void _ZN8S21161C22v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev)();
extern void ABISELECT(_ZThn3896_N9S21161C17D1Ev,_ZThn2532_N9S21161C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev)();
extern void ABISELECT(_ZThn3896_N9S21161C17D0Ev,_ZThn2532_N9S21161C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C2__9S21161C17__8S21161C4[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35360,-21856),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&_ZN8S21161C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev),
};
extern void _ZN8S21161C22v1Ev();
extern void _ZN8S21161C2D1Ev();
extern void _ZN8S21161C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C2__8S21161C4[] = {
  ABISELECT(-35360,-21856),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C2[0]),
  (VTBL_ENTRY)&_ZN8S21161C22v1Ev,
  (VTBL_ENTRY)&_ZN8S21161C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C2D1Ev,_ZTv0_n12_N8S21161C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C2D0Ev,_ZTv0_n12_N8S21161C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C2__8S21161C4[] = {
  ABISELECT(35360,21856),
  ABISELECT(35360,21856),
  (VTBL_ENTRY)&(_ZTI8S21161C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C2D1Ev,_ZTv0_n12_N8S21161C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C2D0Ev,_ZTv0_n12_N8S21161C2D0Ev),
};
static  VTT_ENTRY vtt_S21161C4[] = {
  {&(_ZTV8S21161C4[11]),  11,93},
  {&(_tg__ZTV9S21161C13__8S21161C4[8]),  8,14},
  {&(_tg__ZTV9S21161C149S21161C13__8S21161C4[7]),  7,13},
  {&(_tg__ZTV9S21161C159S21161C149S21161C13__8S21161C4[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21161C159S21161C149S21161C13__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C8__9S21161C159S21161C149S21161C13__8S21161C4[4]),  4,6},
  {&(_tg__ZTV9S21161C12__9S21161C159S21161C149S21161C13__8S21161C4[5]),  5,7},
  {&(_tg__ZTV8S21161C6__9S21161C159S21161C149S21161C13__8S21161C4[7]),  7,11},
  {&(_tg__ZTV8S21161C59S21161C149S21161C13__A1__8S21161C4[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C59S21161C149S21161C13__A3__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C59S21161C149S21161C13__A3__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C59S21161C149S21161C13__A1__8S21161C4[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C59S21161C149S21161C13__A1__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21161C149S21161C13__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C8__9S21161C149S21161C13__8S21161C4[4]),  4,6},
  {&(_tg__ZTV9S21161C12__9S21161C149S21161C13__8S21161C4[5]),  5,7},
  {&(_tg__ZTV8S21161C6__9S21161C149S21161C13__8S21161C4[7]),  7,11},
  {&(_tg__ZTV8S21161C5__9S21161C149S21161C13__8S21161C4[5]),  5,7},
  {&(_tg__ZTV8S21161C6__9S21161C13__8S21161C4[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21161C13__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C5__9S21161C13__8S21161C4[6]),  6,8},
  {&(_tg__ZTV8S21161C8__A2__9S21161C13__8S21161C4[4]),  4,6},
  {&(_tg__ZTV9S21161C12__9S21161C13__8S21161C4[5]),  5,7},
  {&(_tg__ZTV8S21161C59S21161C14__A1__9S21161C13__8S21161C4[5]),  5,7},
  {&(_ZTV8S21161C4[34]),  34,93},
  {&(_ZTV8S21161C4[43]),  43,93},
  {&(_ZTV8S21161C4[50]),  50,93},
  {&(_ZTV8S21161C4[56]),  56,93},
  {&(_ZTV8S21161C4[63]),  63,93},
  {&(_ZTV8S21161C4[22]),  22,93},
  {&(_ZTV8S21161C4[75]),  75,93},
  {&(_ZTV8S21161C4[81]),  81,93},
  {&(_ZTV8S21161C4[90]),  90,93},
  {&(_tg__ZTV8S21161C5__8S21161C4[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C5__A1__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C5__A1__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C5__8S21161C4[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C5__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C4[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C6__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C6__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C6__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C8__A2__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__A2__8S21161C4[3]),  3,5},
  {&(_tg__ZTV9S21161C12__8S21161C4[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C12__8S21161C4[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C12__8S21161C4[3]),  3,5},
  {&(_tg__ZTV9S21161C17__8S21161C4[7]),  7,9},
  {&(_tg__ZTV8S21161C59S21161C17__A2__8S21161C4[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C59S21161C17__A4__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C59S21161C17__A4__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C59S21161C17__A2__8S21161C4[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C59S21161C17__A2__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C69S21161C17__A1__8S21161C4[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C69S21161C17__A5__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C69S21161C17__A5__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C69S21161C17__A1__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C6__9S21161C17__8S21161C4[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21161C17__8S21161C4[3]),  3,5},
  {&(_tg__ZTV8S21161C6__A__9S21161C17__8S21161C4[4]),  4,8},
  {&(_tg__ZTV8S21161C8__A3__9S21161C17__8S21161C4[4]),  4,6},
  {&(_tg__ZTV8S21161C2__9S21161C17__8S21161C4[5]),  5,8},
  {&(_tg__ZTV8S21161C2__8S21161C4[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21161C2__8S21161C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21161C4[];
extern  VTBL_ENTRY _ZTV8S21161C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C4[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N9S21161C17D0Ev,_ZThn2532_N9S21161C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N9S21161C17D1Ev,_ZThn2532_N9S21161C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C6D0Ev,_ZThn624_N8S21161C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C6D1Ev,_ZThn624_N8S21161C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C13D0Ev,_ZTv0_n16_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21161C13D0Ev,_ZThn21484_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C13D1Ev,_ZTv0_n16_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21161C13D1Ev,_ZThn21484_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21161C13D0Ev,_ZTv0_n24_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21161C13D0Ev,_ZThn1684_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21161C13D1Ev,_ZTv0_n24_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21161C13D1Ev,_ZThn1684_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C13D0Ev,_ZTv0_n12_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21161C13D0Ev,_ZThn2496_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C13D1Ev,_ZTv0_n12_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21161C13D1Ev,_ZThn2496_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21161C13D0Ev,_ZThn21596_N9S21161C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C13D0Ev,_ZThn1872_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21161C13D1Ev,_ZThn21596_N9S21161C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C13D1Ev,_ZThn1872_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C14D0Ev,_ZThn1872_N9S21161C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21161C14D0Ev,_ZThn21596_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C14D1Ev,_ZThn1872_N9S21161C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21161C14D1Ev,_ZThn21596_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21161C14D0Ev,_ZThn21484_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21161C14D1Ev,_ZThn21484_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21161C14D0Ev,_ZThn2496_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21161C14D1Ev,_ZThn2496_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21161C5D0Ev,_ZThn812_N8S21161C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21161C5D0Ev,_ZThn2352_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21161C5D1Ev,_ZThn812_N8S21161C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21161C5D1Ev,_ZThn2352_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21161C5D0Ev,_ZThn188_N8S21161C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S21161C5D0Ev,_ZThn1728_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21161C5D1Ev,_ZThn188_N8S21161C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S21161C5D1Ev,_ZThn1728_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C8D0Ev,_ZThn624_N8S21161C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21161C8D0Ev,_ZThn812_N8S21161C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21161C8D0Ev,_ZThn2352_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21161C8D1Ev,_ZThn624_N8S21161C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21161C8D1Ev,_ZThn812_N8S21161C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21161C8D1Ev,_ZThn2352_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C15D0Ev,_ZThn1872_N9S21161C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21161C15D0Ev,_ZThn21596_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C15D1Ev,_ZThn1872_N9S21161C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21161C15D1Ev,_ZThn21596_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21161C15D0Ev,_ZThn21484_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21161C15D1Ev,_ZThn21484_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21161C15D0Ev,_ZThn2496_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21161C15D1Ev,_ZThn2496_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21161C4D0Ev,_ZTv0_n32_N8S21161C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N8S21161C4D0Ev,_ZThn21820_N8S21161C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21161C4D1Ev,_ZTv0_n32_N8S21161C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N8S21161C4D1Ev,_ZThn21820_N8S21161C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21161C4D0Ev,_ZTv0_n16_N8S21161C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N8S21161C4D0Ev,_ZThn21484_N8S21161C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21161C4D1Ev,_ZTv0_n16_N8S21161C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N8S21161C4D1Ev,_ZThn21484_N8S21161C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C4D0Ev,_ZTv0_n12_N8S21161C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N8S21161C4D0Ev,_ZThn2496_N8S21161C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C4D1Ev,_ZTv0_n12_N8S21161C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N8S21161C4D1Ev,_ZThn2496_N8S21161C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N8S21161C4D0Ev,_ZThn24352_N8S21161C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N8S21161C4D0Ev,_ZThn21596_N8S21161C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N8S21161C4D0Ev,_ZThn1872_N8S21161C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N8S21161C4D1Ev,_ZThn24352_N8S21161C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N8S21161C4D1Ev,_ZThn21596_N8S21161C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N8S21161C4D1Ev,_ZThn1872_N8S21161C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21161C4D0Ev,_ZTv0_n24_N8S21161C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N8S21161C4D0Ev,_ZThn1684_N8S21161C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21161C4D1Ev,_ZTv0_n24_N8S21161C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N8S21161C4D1Ev,_ZThn1684_N8S21161C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C4 = {  "S21161C4", // class name
  bases_S21161C4, 32,
  &(vtc_S21161C4[0]), // expected_vtbl_contents
  &(vtt_S21161C4[0]), // expected_vtt_contents
  ABISELECT(39472,24356), // object size
  NSPAIRA(_ZTI8S21161C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21161C4),93, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21161C4),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C19  : S19674C5 , S19674C7 , S21161C12 {
  ::S19674C7 s21161c19f0;
  void *s21161c19f1;
  char s21161c19f2;
  char s21161c19f3;
  int s21161c19f4;
  ::S19674C7 s21161c19f5;
  void *s21161c19f6[4];
  ::S21161C2 s21161c19f7;
  int s21161c19f8;
  ~S21161C19(); // tgen
  S21161C19(); // tgen
};
//SIG(-1 S21161C19) C1{ BC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ m Fp[14]} BC4{ VBC5{ VBC2 BC3 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC2 Fc:6 Fc[8] FD FC3 FC3} FC3 Fp Fc Fc Fi FC3 Fp[4] FC7{ VBC2 v1} Fi}


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

static void Test_S21161C19()
{
  extern Class_Descriptor cd_S21161C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(85,202)];
    init_test(&cd_S21161C19, buf);
    S21161C19 *dp, &lv = *(dp=new (buf) S21161C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1344,804), "sizeof(S21161C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C19)");
    /*is_ambiguous_... S21161C19::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), 0, "S21161C19");
    /*is_ambiguous_... S21161C19::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(120,88), "S21161C19");
    check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(1224,716), "S21161C19");
    check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(1040,608), "S21161C19");
    check_base_class_offset(lv, (S21161C8*)(S21161C12*), ABISELECT(1032,604), "S21161C19");
    /*is_ambiguous_... S21161C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*), ABISELECT(240,144), "S21161C19");
    check_base_class_offset(lv, (S21161C12*), ABISELECT(240,144), "S21161C19");
    check_field_offset(lv, s21161c19f0, ABISELECT(624,368), "S21161C19.s21161c19f0");
    check_field_offset(lv, s21161c19f1, ABISELECT(736,424), "S21161C19.s21161c19f1");
    check_field_offset(lv, s21161c19f2, ABISELECT(744,428), "S21161C19.s21161c19f2");
    check_field_offset(lv, s21161c19f3, ABISELECT(745,429), "S21161C19.s21161c19f3");
    check_field_offset(lv, s21161c19f4, ABISELECT(748,432), "S21161C19.s21161c19f4");
    check_field_offset(lv, s21161c19f5, ABISELECT(752,436), "S21161C19.s21161c19f5");
    check_field_offset(lv, s21161c19f6, ABISELECT(864,492), "S21161C19.s21161c19f6");
    check_field_offset(lv, s21161c19f7, ABISELECT(896,508), "S21161C19.s21161c19f7");
    check_field_offset(lv, s21161c19f8, ABISELECT(1024,600), "S21161C19.s21161c19f8");
    test_class_info(&lv, &cd_S21161C19);
    dp->~S21161C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C19(Test_S21161C19, "S21161C19", ABISELECT(1344,804));

#else // __cplusplus

extern void _ZN9S21161C19C1Ev();
extern void _ZN9S21161C19D1Ev();
Name_Map name_map_S21161C19[] = {
  NSPAIR(_ZN9S21161C19C1Ev),
  NSPAIR(_ZN9S21161C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
static Base_Class bases_S21161C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(120,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C5,    ABISELECT(1224,716), //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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1040,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
    4, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(1032,604), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21161C12,    ABISELECT(240,144), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21161C19[];
extern void _ZN9S21161C19D1Ev();
extern void _ZN9S21161C19D0Ev();
extern void ABISELECT(_ZThn240_N9S21161C19D1Ev,_ZThn144_N9S21161C19D1Ev)();
extern void ABISELECT(_ZThn240_N9S21161C19D0Ev,_ZThn144_N9S21161C19D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21161C19D1Ev,_ZTv0_n16_N9S21161C19D1Ev)();
extern void ABISELECT(_ZThn1032_N9S21161C19D1Ev,_ZThn604_N9S21161C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C19D0Ev,_ZTv0_n16_N9S21161C19D0Ev)();
extern void ABISELECT(_ZThn1032_N9S21161C19D0Ev,_ZThn604_N9S21161C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C19D1Ev,_ZTv0_n12_N9S21161C19D1Ev)();
extern void ABISELECT(_ZThn1224_N9S21161C19D1Ev,_ZThn716_N9S21161C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C19D0Ev,_ZTv0_n12_N9S21161C19D0Ev)();
extern void ABISELECT(_ZThn1224_N9S21161C19D0Ev,_ZThn716_N9S21161C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21161C19[] = {
  ABISELECT(1224,716),
  ABISELECT(1032,604),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C19[0]),
  (VTBL_ENTRY)&_ZN9S21161C19D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C19D0Ev,
  ABISELECT(984,572),
  ABISELECT(792,460),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI9S21161C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S21161C19D1Ev,_ZThn144_N9S21161C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S21161C19D0Ev,_ZThn144_N9S21161C19D0Ev),
  ABISELECT(-1032,-604),
  ABISELECT(192,112),
  ABISELECT(-1032,-604),
  (VTBL_ENTRY)&(_ZTI9S21161C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C19D1Ev,_ZTv0_n16_N9S21161C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C19D0Ev,_ZTv0_n16_N9S21161C19D0Ev),
  ABISELECT(-1224,-716),
  ABISELECT(-1224,-716),
  (VTBL_ENTRY)&(_ZTI9S21161C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C19D1Ev,_ZTv0_n12_N9S21161C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C19D0Ev,_ZTv0_n12_N9S21161C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S21161C19[];
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C19[] = {
  ABISELECT(984,572),
  ABISELECT(792,460),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn792_N9S21161C12D1Ev,_ZThn460_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn792_N9S21161C12D0Ev,_ZThn460_N9S21161C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C12__9S21161C19[] = {
  ABISELECT(-792,-460),
  ABISELECT(192,112),
  ABISELECT(-792,-460),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn984_N9S21161C12D1Ev,_ZThn572_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn984_N9S21161C12D0Ev,_ZThn572_N9S21161C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C12__9S21161C19[] = {
  ABISELECT(-984,-572),
  ABISELECT(-984,-572),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C19[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn192_N8S21161C8D1Ev,_ZThn112_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn192_N8S21161C8D0Ev,_ZThn112_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__9S21161C19[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
static  VTT_ENTRY vtt_S21161C19[] = {
  {&(_ZTV9S21161C19[4]),  4,23},
  {&(_tg__ZTV9S21161C12__9S21161C19[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C12__9S21161C19[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C12__9S21161C19[3]),  3,5},
  {&(_ZTV9S21161C19[10]),  10,23},
  {&(_ZTV9S21161C19[16]),  16,23},
  {&(_ZTV9S21161C19[21]),  21,23},
  {&(_tg__ZTV8S21161C8__9S21161C19[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__9S21161C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21161C19[];
extern  VTBL_ENTRY _ZTV9S21161C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C19[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21161C8D0Ev,_ZThn112_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21161C8D1Ev,_ZThn112_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21161C12D0Ev,_ZThn572_N9S21161C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21161C12D1Ev,_ZThn572_N9S21161C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21161C12D0Ev,_ZThn460_N9S21161C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21161C12D1Ev,_ZThn460_N9S21161C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C19D0Ev,_ZTv0_n12_N9S21161C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1224_N9S21161C19D0Ev,_ZThn716_N9S21161C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C19D1Ev,_ZTv0_n12_N9S21161C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1224_N9S21161C19D1Ev,_ZThn716_N9S21161C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C19D0Ev,_ZTv0_n16_N9S21161C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N9S21161C19D0Ev,_ZThn604_N9S21161C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C19D1Ev,_ZTv0_n16_N9S21161C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N9S21161C19D1Ev,_ZThn604_N9S21161C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C19 = {  "S21161C19", // class name
  bases_S21161C19, 7,
  &(vtc_S21161C19[0]), // expected_vtbl_contents
  &(vtt_S21161C19[0]), // expected_vtt_contents
  ABISELECT(1344,804), // object size
  NSPAIRA(_ZTI9S21161C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21161C19),23, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21161C19),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C20  : S21161C12 , S21161C18 , S21161C5 {
  short s21161c20f0;
  short s21161c20f1;
  void *s21161c20f2;
  short s21161c20f3;
  long s21161c20f4;
  ::S19674C25 s21161c20f5;
  short s21161c20f6:16;
  void *s21161c20f7;
  char s21161c20f8[10];
  __tsi64 s21161c20f9;
  int s21161c20f10;
  void *s21161c20f11;
  char s21161c20f12:2;
  ::S19674C9 s21161c20f13;
  ::S21161C19 s21161c20f14;
  ~S21161C20(); // tgen
  S21161C20(); // tgen
};
//SIG(-1 S21161C20) C1{ BC2{ VBC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC4 Fc:6 Fc[8] FD FC5 FC5} BC7{ VBC4 BC3 VBC2 FD Fp Fp} BC8{ VBC9{ VBC4 VBC5 BC3 v1 v2 FC3 FD[7] FC3 FL Fp[5]} BC5 BC3 Fi Fi Fi:28 Fi Fl} Fs Fs Fp Fs Fl FU10{ m Fi Fi Fs[2] Fi Fp Fp[6] Fp[10] Fs[7] FL} Fs:16 Fp Fc[10] FL Fi Fp Fc:2 FU6 FC11{ BC4 BC5 BC2 FC5 Fp Fc Fc Fi FC5 Fp[4] FC12{ VBC4 v3} Fi}}


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

static void Test_S21161C20()
{
  extern Class_Descriptor cd_S21161C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(270,642)];
    init_test(&cd_S21161C20, buf);
    S21161C20 *dp, &lv = *(dp=new (buf) S21161C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4304,2564), "sizeof(S21161C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C20)");
    /*is_ambiguous_... S21161C20::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(2688,1572), "S21161C20");
    /*is_ambiguous_... S21161C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C18*), ABISELECT(2688,1572), "S21161C20");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C18*), ABISELECT(2688,1572), "S21161C20");
    check_base_class_offset(lv, (S19674C5*)(S21161C6*), ABISELECT(2688,1572), "S21161C20");
    check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*), ABISELECT(2688,1572), "S21161C20");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*), ABISELECT(2688,1572), "S21161C20");
    /*is_ambiguous_... S21161C20::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(2504,1464), "S21161C20");
    /*is_ambiguous_... S21161C20::S21161C12 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C12*), ABISELECT(2496,1460), "S21161C20");
    /*is_ambiguous_... S21161C20::S21161C12 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C12*), ABISELECT(2496,1460), "S21161C20");
    /*is_ambiguous_... S21161C20::S21161C12 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*), 0, "S21161C20");
    /*is_ambiguous_... S21161C20::S21161C12 */ AMB_check_base_class_offset(lv, (S21161C12*), 0, "S21161C20");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C18*), ABISELECT(392,228), "S21161C20");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C18*), ABISELECT(384,224), "S21161C20");
    /*is_ambiguous_... S21161C20::S21161C12 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*), ABISELECT(2816,1660), "S21161C20");
    check_base_class_offset(lv, (S21161C12*)(S21161C18*), ABISELECT(2816,1660), "S21161C20");
    check_base_class_offset(lv, (S21161C18*), ABISELECT(384,224), "S21161C20");
    /*is_ambiguous_... S21161C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*), ABISELECT(4184,2508), "S21161C20");
    check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*), ABISELECT(3208,1888), "S21161C20");
    check_base_class_offset(lv, (S21161C8*)(S21161C6*), ABISELECT(3200,1884), "S21161C20");
    check_base_class_offset(lv, (S21161C6*)(S21161C5*), ABISELECT(3200,1884), "S21161C20");
    /*is_ambiguous_... S21161C5::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*), ABISELECT(800,468), "S21161C20");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*), ABISELECT(616,360), "S21161C20");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*), ABISELECT(608,356), "S21161C20");
    check_base_class_offset(lv, (S21161C5*), ABISELECT(608,356), "S21161C20");
    check_field_offset(lv, s21161c20f0, ABISELECT(936,544), "S21161C20.s21161c20f0");
    check_field_offset(lv, s21161c20f1, ABISELECT(938,546), "S21161C20.s21161c20f1");
    check_field_offset(lv, s21161c20f2, ABISELECT(944,548), "S21161C20.s21161c20f2");
    check_field_offset(lv, s21161c20f3, ABISELECT(952,552), "S21161C20.s21161c20f3");
    check_field_offset(lv, s21161c20f4, ABISELECT(960,556), "S21161C20.s21161c20f4");
    check_field_offset(lv, s21161c20f5, ABISELECT(968,560), "S21161C20.s21161c20f5");
    set_bf_and_test(lv, s21161c20f6, ABISELECT(1048,600), 0, 16, 1, "S21161C20");
    set_bf_and_test(lv, s21161c20f6, ABISELECT(1048,600), 0, 16, hide_sll(1LL<<15), "S21161C20");
    check_field_offset(lv, s21161c20f7, ABISELECT(1056,604), "S21161C20.s21161c20f7");
    check_field_offset(lv, s21161c20f8, ABISELECT(1064,608), "S21161C20.s21161c20f8");
    check_field_offset(lv, s21161c20f9, ABISELECT(1080,620), "S21161C20.s21161c20f9");
    check_field_offset(lv, s21161c20f10, ABISELECT(1088,628), "S21161C20.s21161c20f10");
    check_field_offset(lv, s21161c20f11, ABISELECT(1096,632), "S21161C20.s21161c20f11");
    set_bf_and_test(lv, s21161c20f12, ABISELECT(1104,636), 0, 2, 1, "S21161C20");
    set_bf_and_test(lv, s21161c20f12, ABISELECT(1104,636), 0, 2, hide_sll(1LL<<1), "S21161C20");
    check_field_offset(lv, s21161c20f13, ABISELECT(1112,640), "S21161C20.s21161c20f13");
    check_field_offset(lv, s21161c20f14, ABISELECT(1152,656), "S21161C20.s21161c20f14");
    test_class_info(&lv, &cd_S21161C20);
    dp->~S21161C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C20(Test_S21161C20, "S21161C20", ABISELECT(4304,2564));

#else // __cplusplus

extern void _ZN9S21161C20C1Ev();
extern void _ZN9S21161C20D1Ev();
Name_Map name_map_S21161C20[] = {
  NSPAIR(_ZN9S21161C20C1Ev),
  NSPAIR(_ZN9S21161C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
extern Class_Descriptor cd_S21161C18;
extern VTBL_ENTRY _ZTI9S21161C18[];
extern  VTBL_ENTRY _ZTV9S21161C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
static Base_Class bases_S21161C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(2688,1572), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2504,1464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(2496,1460), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21161C12,    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_S19674C7,    ABISELECT(392,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
    6, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(384,224), //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
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(2816,1660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C12,    ABISELECT(2816,1660), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21161C18,    ABISELECT(384,224), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(4184,2508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(3208,1888), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(3200,1884), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(3200,1884), //bcp->offset
    41, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(800,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
    17, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(616,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(608,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(608,356), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21161C20[];
extern void _ZN9S21161C20D1Ev();
extern void _ZN9S21161C20D0Ev();
extern void ABISELECT(_ZThn384_N9S21161C20D1Ev,_ZThn224_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn384_N9S21161C20D0Ev,_ZThn224_N9S21161C20D0Ev)();
extern void ABISELECT(_ZThn608_N9S21161C20D1Ev,_ZThn356_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn608_N9S21161C20D0Ev,_ZThn356_N9S21161C20D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21161C20D1Ev,_ZTv0_n16_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn2496_N9S21161C20D1Ev,_ZThn1460_N9S21161C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C20D0Ev,_ZTv0_n16_N9S21161C20D0Ev)();
extern void ABISELECT(_ZThn2496_N9S21161C20D0Ev,_ZThn1460_N9S21161C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C20D1Ev,_ZTv0_n12_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn2688_N9S21161C20D1Ev,_ZThn1572_N9S21161C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C20D0Ev,_ZTv0_n12_N9S21161C20D0Ev)();
extern void ABISELECT(_ZThn2688_N9S21161C20D0Ev,_ZThn1572_N9S21161C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C20D1Ev,_ZTv0_n20_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn2816_N9S21161C20D1Ev,_ZThn1660_N9S21161C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C20D0Ev,_ZTv0_n20_N9S21161C20D0Ev)();
extern void ABISELECT(_ZThn2816_N9S21161C20D0Ev,_ZThn1660_N9S21161C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C20D1Ev,_ZTv0_n20_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn3200_N9S21161C20D1Ev,_ZThn1884_N9S21161C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C20D0Ev,_ZTv0_n20_N9S21161C20D0Ev)();
extern void ABISELECT(_ZThn3200_N9S21161C20D0Ev,_ZThn1884_N9S21161C20D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY vtc_S21161C20[] = {
  ABISELECT(4184,2508),
  ABISELECT(3200,1884),
  ABISELECT(2816,1660),
  ABISELECT(2688,1572),
  ABISELECT(2496,1460),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&_ZN9S21161C20D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C20D0Ev,
  ABISELECT(2112,1236),
  ABISELECT(2432,1436),
  ABISELECT(2304,1348),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S21161C20D1Ev,_ZThn224_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S21161C20D0Ev,_ZThn224_N9S21161C20D0Ev),
  ABISELECT(3576,2152),
  ABISELECT(2592,1528),
  ABISELECT(2080,1216),
  ABISELECT(-608,-356),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S21161C20D1Ev,_ZThn356_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S21161C20D0Ev,_ZThn356_N9S21161C20D0Ev),
  ABISELECT(-2496,-1460),
  ABISELECT(192,112),
  ABISELECT(-2496,-1460),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C20D1Ev,_ZTv0_n16_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C20D0Ev,_ZTv0_n16_N9S21161C20D0Ev),
  ABISELECT(-2688,-1572),
  ABISELECT(-2688,-1572),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C20D1Ev,_ZTv0_n12_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C20D0Ev,_ZTv0_n12_N9S21161C20D0Ev),
  ABISELECT(-2816,-1660),
  ABISELECT(-128,-88),
  ABISELECT(-320,-200),
  ABISELECT(-2816,-1660),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C20D1Ev,_ZTv0_n20_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C20D0Ev,_ZTv0_n20_N9S21161C20D0Ev),
  0,
  0,
  ABISELECT(-3200,-1884),
  ABISELECT(984,624),
  ABISELECT(-512,-312),
  ABISELECT(-3200,-1884),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C20D1Ev,_ZTv0_n20_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C20D0Ev,_ZTv0_n20_N9S21161C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S21161C20[];
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C12__A__9S21161C20[] = {
  ABISELECT(2688,1572),
  ABISELECT(2496,1460),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn2496_N9S21161C12D1Ev,_ZThn1460_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn2496_N9S21161C12D0Ev,_ZThn1460_N9S21161C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C12__A__9S21161C20[] = {
  ABISELECT(-2496,-1460),
  ABISELECT(192,112),
  ABISELECT(-2496,-1460),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn2688_N9S21161C12D1Ev,_ZThn1572_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn2688_N9S21161C12D0Ev,_ZThn1572_N9S21161C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C12__A__9S21161C20[] = {
  ABISELECT(-2688,-1572),
  ABISELECT(-2688,-1572),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern void _ZN9S21161C18D1Ev();
extern void _ZN9S21161C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C18__9S21161C20[] = {
  ABISELECT(2112,1236),
  ABISELECT(2432,1436),
  ABISELECT(2304,1348),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&_ZN9S21161C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C18D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C89S21161C18__A1__9S21161C20[] = {
  ABISELECT(2304,1348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn2304_N8S21161C8D1Ev,_ZThn1348_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn2304_N8S21161C8D0Ev,_ZThn1348_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C89S21161C18__A1__9S21161C20[] = {
  ABISELECT(-2304,-1348),
  ABISELECT(-2304,-1348),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C18D1Ev,_ZTv0_n12_N9S21161C18D1Ev)();
extern void ABISELECT(_ZThn2304_N9S21161C18D1Ev,_ZThn1348_N9S21161C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C18D0Ev,_ZTv0_n12_N9S21161C18D0Ev)();
extern void ABISELECT(_ZThn2304_N9S21161C18D0Ev,_ZThn1348_N9S21161C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C18__9S21161C20[] = {
  ABISELECT(-2304,-1348),
  ABISELECT(-2304,-1348),
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C18D1Ev,_ZTv0_n12_N9S21161C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C18D0Ev,_ZTv0_n12_N9S21161C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C18D1Ev,_ZTv0_n20_N9S21161C18D1Ev)();
extern void ABISELECT(_ZThn2432_N9S21161C18D1Ev,_ZThn1436_N9S21161C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C18D0Ev,_ZTv0_n20_N9S21161C18D0Ev)();
extern void ABISELECT(_ZThn2432_N9S21161C18D0Ev,_ZThn1436_N9S21161C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C18__9S21161C20[] = {
  ABISELECT(-2432,-1436),
  ABISELECT(-128,-88),
  ABISELECT(-320,-200),
  ABISELECT(-2432,-1436),
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C18D1Ev,_ZTv0_n20_N9S21161C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C18D0Ev,_ZTv0_n20_N9S21161C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C18D1Ev,_ZTv0_n16_N9S21161C18D1Ev)();
extern void ABISELECT(_ZThn2112_N9S21161C18D1Ev,_ZThn1236_N9S21161C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C18D0Ev,_ZTv0_n16_N9S21161C18D0Ev)();
extern void ABISELECT(_ZThn2112_N9S21161C18D0Ev,_ZThn1236_N9S21161C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__A1__9S21161C18__9S21161C20[] = {
  ABISELECT(-2112,-1236),
  ABISELECT(192,112),
  ABISELECT(-2112,-1236),
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C18D1Ev,_ZTv0_n16_N9S21161C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C18D0Ev,_ZTv0_n16_N9S21161C18D0Ev),
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C5__9S21161C20[] = {
  ABISELECT(3576,2152),
  ABISELECT(2592,1528),
  ABISELECT(2080,1216),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C5__A3__9S21161C20[] = {
  ABISELECT(2080,1216),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn2080_N8S21161C8D1Ev,_ZThn1216_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn2080_N8S21161C8D0Ev,_ZThn1216_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C5__A3__9S21161C20[] = {
  ABISELECT(-2080,-1216),
  ABISELECT(-2080,-1216),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn2592_N8S21161C5D1Ev,_ZThn1528_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn2592_N8S21161C5D0Ev,_ZThn1528_N8S21161C5D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C5__9S21161C20[] = {
  0,
  0,
  ABISELECT(-2592,-1528),
  ABISELECT(984,624),
  ABISELECT(-512,-312),
  ABISELECT(-2592,-1528),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn2080_N8S21161C5D1Ev,_ZThn1216_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn2080_N8S21161C5D0Ev,_ZThn1216_N8S21161C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C5__9S21161C20[] = {
  ABISELECT(-2080,-1216),
  ABISELECT(-2080,-1216),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C20[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn192_N8S21161C8D1Ev,_ZThn112_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn192_N8S21161C8D0Ev,_ZThn112_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__9S21161C20[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C12__A1__9S21161C20[] = {
  ABISELECT(-128,-88),
  ABISELECT(-320,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C12__A1__9S21161C20[] = {
  ABISELECT(320,200),
  ABISELECT(192,112),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C12__A1__9S21161C20[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C20[] = {
  ABISELECT(984,624),
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C6__A2__9S21161C20[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C6__A2__9S21161C20[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C6__9S21161C20[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
static  VTT_ENTRY vtt_S21161C20[] = {
  {&(_ZTV9S21161C20[7]),  7,52},
  {&(_tg__ZTV9S21161C12__A__9S21161C20[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C12__A__9S21161C20[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C12__A__9S21161C20[3]),  3,5},
  {&(_tg__ZTV9S21161C18__9S21161C20[5]),  5,7},
  {&(_tg__ZTV8S21161C89S21161C18__A1__9S21161C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C89S21161C18__A1__9S21161C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21161C18__9S21161C20[3]),  3,5},
  {&(_tg__ZTV9S21161C12__9S21161C18__9S21161C20[5]),  5,7},
  {&(_tg__ZTV8S21161C8__A1__9S21161C18__9S21161C20[4]),  4,6},
  {&(_tg__ZTV8S21161C5__9S21161C20[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C5__A3__9S21161C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C5__A3__9S21161C20[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C5__9S21161C20[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C5__9S21161C20[3]),  3,5},
  {&(_ZTV9S21161C20[27]),  27,52},
  {&(_ZTV9S21161C20[32]),  32,52},
  {&(_ZTV9S21161C20[14]),  14,52},
  {&(_ZTV9S21161C20[39]),  39,52},
  {&(_ZTV9S21161C20[21]),  21,52},
  {&(_ZTV9S21161C20[48]),  48,52},
  {&(_tg__ZTV8S21161C8__9S21161C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__9S21161C20[3]),  3,5},
  {&(_tg__ZTV9S21161C12__A1__9S21161C20[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C12__A1__9S21161C20[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C12__A1__9S21161C20[3]),  3,5},
  {&(_tg__ZTV8S21161C6__9S21161C20[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C6__A2__9S21161C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C6__A2__9S21161C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C6__9S21161C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21161C20[];
extern  VTBL_ENTRY _ZTV9S21161C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C20[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S21161C5D0Ev,_ZThn1216_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S21161C5D1Ev,_ZThn1216_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N8S21161C5D0Ev,_ZThn1528_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N8S21161C5D1Ev,_ZThn1528_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C18D0Ev,_ZTv0_n16_N9S21161C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2112_N9S21161C18D0Ev,_ZThn1236_N9S21161C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C18D1Ev,_ZTv0_n16_N9S21161C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2112_N9S21161C18D1Ev,_ZThn1236_N9S21161C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C18D0Ev,_ZTv0_n20_N9S21161C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2432_N9S21161C18D0Ev,_ZThn1436_N9S21161C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C18D1Ev,_ZTv0_n20_N9S21161C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2432_N9S21161C18D1Ev,_ZThn1436_N9S21161C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C18D0Ev,_ZTv0_n12_N9S21161C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N9S21161C18D0Ev,_ZThn1348_N9S21161C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C18D1Ev,_ZTv0_n12_N9S21161C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N9S21161C18D1Ev,_ZThn1348_N9S21161C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21161C8D0Ev,_ZThn112_N8S21161C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S21161C8D0Ev,_ZThn1216_N8S21161C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N8S21161C8D0Ev,_ZThn1348_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21161C8D1Ev,_ZThn112_N8S21161C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S21161C8D1Ev,_ZThn1216_N8S21161C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N8S21161C8D1Ev,_ZThn1348_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2688_N9S21161C12D0Ev,_ZThn1572_N9S21161C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2688_N9S21161C12D1Ev,_ZThn1572_N9S21161C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N9S21161C12D0Ev,_ZThn1460_N9S21161C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N9S21161C12D1Ev,_ZThn1460_N9S21161C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C20D0Ev,_ZTv0_n20_N9S21161C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3200_N9S21161C20D0Ev,_ZThn1884_N9S21161C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S21161C20D0Ev,_ZThn1660_N9S21161C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C20D1Ev,_ZTv0_n20_N9S21161C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3200_N9S21161C20D1Ev,_ZThn1884_N9S21161C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S21161C20D1Ev,_ZThn1660_N9S21161C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C20D0Ev,_ZTv0_n12_N9S21161C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2688_N9S21161C20D0Ev,_ZThn1572_N9S21161C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C20D1Ev,_ZTv0_n12_N9S21161C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2688_N9S21161C20D1Ev,_ZThn1572_N9S21161C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C20D0Ev,_ZTv0_n16_N9S21161C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N9S21161C20D0Ev,_ZThn1460_N9S21161C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C20D1Ev,_ZTv0_n16_N9S21161C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N9S21161C20D1Ev,_ZThn1460_N9S21161C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C20 = {  "S21161C20", // class name
  bases_S21161C20, 18,
  &(vtc_S21161C20[0]), // expected_vtbl_contents
  &(vtt_S21161C20[0]), // expected_vtt_contents
  ABISELECT(4304,2564), // object size
  NSPAIRA(_ZTI9S21161C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21161C20),52, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21161C20),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21161C1  : virtual S21161C2 , virtual S21161C4 , S21161C19 , S21161C20 {
  ::S21161C15 s21161c1f0[8];
  int s21161c1f1;
  void *s21161c1f2;
  ::S21161C15 s21161c1f3;
  long double s21161c1f4;
  void *s21161c1f5;
  __tsi64 s21161c1f6;
  int s21161c1f7;
  int s21161c1f8[3];
  int s21161c1f9;
  void *s21161c1f10[8];
  int s21161c1f11;
  short s21161c1f12;
  virtual  ~S21161C1(); // _ZN8S21161C1D2Ev
  S21161C1(); // tgen
};
//SIG(1 S21161C1) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1} VBC4{ VBC5{ VBC6{ VBC3 VBC7{ m Fp[14]} BC8{ VBC3 BC7 Fs[6] FL[3] FU9{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v2 v3 FC8 FD[7] FC8 FL Fp[5]} BC7 BC8 Fi Fi Fi:28 Fi Fl} VBC10{ m FC11{ VBC12{ VBC3 v8} VBC13{ VBC3 VBC7 BC14{ VBC3 BC7 Fs[6] FL[3] FU9} v9 v10 FC14 FD[7] FC14 FL Fp[5]} vd FC15{ VBC14 BC3 Fc:6 Fc[8] FD FC7 FC7}[5] Fl Fi FC13 Fi Fi FC12}[5] Fp} BC16{ VBC6 VBC5 BC17{ BC18{ VBC3 VBC8 VBC19{ VBC8 BC3 Fc:6 Fc[8] FD FC7 FC7} BC7 VBC6 vd v4 v5 Fi Fi FC7 Fc Fc Fi Fs FL} BC5 v6 v7 FU20{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC3 vd FC7 Fi[10] Fi FC2 Fs Fi FL} VBC21{ VBC7 BC5 BC6 VBC8 VBC2 vd Fi Fi Fi FD Fp Fp FC8 Fp FC6 Fi Fp Fi FC3[8]} FC19 Fi FC22{ VBC3 BC8 VBC19 FD Fp Fp} FD Fs[3] Fi:0 Fi} BC23{ BC3 BC7 BC19 FC7 Fp Fc Fc Fi FC7 Fp[4] FC2 Fi} BC24{ BC19 BC22 BC5 Fs Fs Fp Fs Fl FU25{ m Fi Fi Fs[2] Fi Fp Fp[6] Fp[10] Fs[7] FL} Fs:16 Fp Fc[10] FL Fi Fp Fc:2 FU9 FC23} vd FC18[8] Fi Fp FC18 FD Fp FL Fi Fi[3] Fi Fp[8] Fi Fs}


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

static void Test_S21161C1()
{
  extern Class_Descriptor cd_S21161C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3860,9437)];
    init_test(&cd_S21161C1, buf);
    S21161C1 *dp, &lv = *(dp=new (buf) S21161C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(61744,37744), "sizeof(S21161C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21161C1)");
    check_base_class_offset(lv, (S19674C5*)(S21161C2*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C6*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C15*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*)(S21161C17*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C6*)(S21161C17*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C6*)(S21161C17*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C18*)(S21161C20*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C18*)(S21161C20*), ABISELECT(22264,13392), "S21161C1");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C8*)(S21161C5*)(S21161C20*), ABISELECT(22264,13392), "S21161C1");
    check_base_class_offset(lv, (S21161C2*), ABISELECT(22256,13388), "S21161C1");
    check_base_class_offset(lv, (S21161C2*)(S21161C17*), ABISELECT(22256,13388), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*), ABISELECT(26488,15976), "S21161C1");
    /*is_ambiguous_... S21161C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C17*), ABISELECT(26488,15976), "S21161C1");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C6*)(S21161C17*), ABISELECT(26488,15976), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*), ABISELECT(25512,15356), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C6 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C6*), ABISELECT(25504,15352), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C6*)(S21161C5*), ABISELECT(25504,15352), "S21161C1");
    check_base_class_offset(lv, (S21161C6*)(S21161C13*)(S21161C4*), ABISELECT(25504,15352), "S21161C1");
    check_base_class_offset(lv, (S21161C6*)(S21161C15*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(25504,15352), "S21161C1");
    check_base_class_offset(lv, (S21161C6*)(S21161C5*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(25504,15352), "S21161C1");
    check_base_class_offset(lv, (S21161C6*)(S21161C5*)(S21161C17*), ABISELECT(25504,15352), "S21161C1");
    check_base_class_offset(lv, (S21161C6*)(S21161C5*)(S21161C20*), ABISELECT(25504,15352), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C5 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*), ABISELECT(25360,15276), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C5 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*), ABISELECT(25176,15168), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*), ABISELECT(25168,15164), "S21161C1");
    /*is_ambiguous_... S21161C4::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C5*)(S21161C4*), ABISELECT(25168,15164), "S21161C1");
    /*is_ambiguous_... S21161C13::S21161C5 */ AMB_check_base_class_offset(lv, (S21161C5*)(S21161C13*)(S21161C4*), ABISELECT(25168,15164), "S21161C1");
    check_base_class_offset(lv, (S19674C2*)(S21161C4*), ABISELECT(26608,16032), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*), ABISELECT(57264,34880), "S21161C1");
    /*is_ambiguous_... S21161C15::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C15*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(57256,34876), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C12 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C12*), ABISELECT(57256,34876), "S21161C1");
    /*is_ambiguous_... S21161C17::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C17*), ABISELECT(57256,34876), "S21161C1");
    check_base_class_offset(lv, (S21161C8*)(S21161C12*)(S21161C19*), ABISELECT(57256,34876), "S21161C1");
    /*is_ambiguous_... S21161C20::S21161C12 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C12*)(S21161C20*), ABISELECT(57256,34876), "S21161C1");
    /*is_ambiguous_... S21161C1::S21161C12 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*), ABISELECT(57456,34988), "S21161C1");
    check_base_class_offset(lv, (S21161C12*)(S21161C15*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(57456,34988), "S21161C1");
    check_base_class_offset(lv, (S21161C12*)(S21161C18*)(S21161C20*), ABISELECT(57456,34988), "S21161C1");
    /*is_ambiguous_... S21161C15::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C15*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(22392,13484), "S21161C1");
    check_base_class_offset(lv, (S21161C15*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(22384,13480), "S21161C1");
    /*is_ambiguous_... S21161C5::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(22840,13736), "S21161C1");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(22656,13628), "S21161C1");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(22648,13624), "S21161C1");
    check_base_class_offset(lv, (S21161C5*)(S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(22648,13624), "S21161C1");
    check_base_class_offset(lv, (S21161C14*)(S21161C13*)(S21161C4*), ABISELECT(22384,13480), "S21161C1");
    /*is_ambiguous_... S21161C13::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C13*)(S21161C4*), ABISELECT(23056,13860), "S21161C1");
    check_base_class_offset(lv, (S21161C13*)(S21161C4*), ABISELECT(22384,13480), "S21161C1");
    /*is_ambiguous_... S21161C5::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*)(S21161C17*), ABISELECT(58032,35324), "S21161C1");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*)(S21161C17*), ABISELECT(57848,35216), "S21161C1");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*)(S21161C17*), ABISELECT(57840,35212), "S21161C1");
    check_base_class_offset(lv, (S21161C5*)(S21161C17*), ABISELECT(57840,35212), "S21161C1");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C6*)(S21161C17*), ABISELECT(58184,35404), "S21161C1");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C6*)(S21161C17*), ABISELECT(58176,35400), "S21161C1");
    /*is_ambiguous_... S21161C17::S21161C6 */ AMB_check_base_class_offset(lv, (S21161C6*)(S21161C17*), ABISELECT(58176,35400), "S21161C1");
    check_base_class_offset(lv, (S21161C17*)(S21161C4*), ABISELECT(57840,35212), "S21161C1");
    check_base_class_offset(lv, (S21161C4*), ABISELECT(22384,13480), "S21161C1");
    /*is_ambiguous_... S21161C19::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C19*), 0, "S21161C1");
    /*is_ambiguous_... S21161C19::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C19*), ABISELECT(120,88), "S21161C1");
    /*is_ambiguous_... S21161C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*)(S21161C19*), ABISELECT(240,144), "S21161C1");
    check_base_class_offset(lv, (S21161C12*)(S21161C19*), ABISELECT(240,144), "S21161C1");
    check_base_class_offset(lv, (S21161C19*), 0, "S21161C1");
    /*is_ambiguous_... S21161C20::S21161C12 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21161C12*)(S21161C20*), ABISELECT(1040,604), "S21161C1");
    /*is_ambiguous_... S21161C20::S21161C12 */ AMB_check_base_class_offset(lv, (S21161C12*)(S21161C20*), ABISELECT(1040,604), "S21161C1");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C18*)(S21161C20*), ABISELECT(1432,832), "S21161C1");
    /*is_ambiguous_... S21161C18::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C18*)(S21161C20*), ABISELECT(1424,828), "S21161C1");
    check_base_class_offset(lv, (S21161C18*)(S21161C20*), ABISELECT(1424,828), "S21161C1");
    /*is_ambiguous_... S21161C5::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C5*)(S21161C20*), ABISELECT(1840,1072), "S21161C1");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21161C8*)(S21161C5*)(S21161C20*), ABISELECT(1656,964), "S21161C1");
    /*is_ambiguous_... S21161C5::S21161C8 */ AMB_check_base_class_offset(lv, (S21161C8*)(S21161C5*)(S21161C20*), ABISELECT(1648,960), "S21161C1");
    check_base_class_offset(lv, (S21161C5*)(S21161C20*), ABISELECT(1648,960), "S21161C1");
    check_base_class_offset(lv, (S21161C20*), ABISELECT(1040,604), "S21161C1");
    check_field_offset(lv, s21161c1f0, ABISELECT(3536,2064), "S21161C1.s21161c1f0");
    check_field_offset(lv, s21161c1f1, ABISELECT(20048,12048), "S21161C1.s21161c1f1");
    check_field_offset(lv, s21161c1f2, ABISELECT(20056,12052), "S21161C1.s21161c1f2");
    check_field_offset(lv, s21161c1f3, ABISELECT(20064,12056), "S21161C1.s21161c1f3");
    check_field_offset(lv, s21161c1f4, ABISELECT(22128,13304), "S21161C1.s21161c1f4");
    check_field_offset(lv, s21161c1f5, ABISELECT(22144,13316), "S21161C1.s21161c1f5");
    check_field_offset(lv, s21161c1f6, ABISELECT(22152,13320), "S21161C1.s21161c1f6");
    check_field_offset(lv, s21161c1f7, ABISELECT(22160,13328), "S21161C1.s21161c1f7");
    check_field_offset(lv, s21161c1f8, ABISELECT(22164,13332), "S21161C1.s21161c1f8");
    check_field_offset(lv, s21161c1f9, ABISELECT(22176,13344), "S21161C1.s21161c1f9");
    check_field_offset(lv, s21161c1f10, ABISELECT(22184,13348), "S21161C1.s21161c1f10");
    check_field_offset(lv, s21161c1f11, ABISELECT(22248,13380), "S21161C1.s21161c1f11");
    check_field_offset(lv, s21161c1f12, ABISELECT(22252,13384), "S21161C1.s21161c1f12");
    test_class_info(&lv, &cd_S21161C1);
    dp->~S21161C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21161C1(Test_S21161C1, "S21161C1", ABISELECT(61744,37744));

#else // __cplusplus

extern void _ZN8S21161C1C1Ev();
extern void _ZN8S21161C1D2Ev();
Name_Map name_map_S21161C1[] = {
  NSPAIR(_ZN8S21161C1C1Ev),
  NSPAIR(_ZN8S21161C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C2;
extern VTBL_ENTRY _ZTI8S21161C2[];
extern  VTBL_ENTRY _ZTV8S21161C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C15;
extern VTBL_ENTRY _ZTI9S21161C15[];
extern  VTBL_ENTRY _ZTV9S21161C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
extern Class_Descriptor cd_S21161C14;
extern VTBL_ENTRY _ZTI9S21161C14[];
extern  VTBL_ENTRY _ZTV9S21161C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C14[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C13;
extern VTBL_ENTRY _ZTI9S21161C13[];
extern  VTBL_ENTRY _ZTV9S21161C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C6;
extern VTBL_ENTRY _ZTI8S21161C6[];
extern  VTBL_ENTRY _ZTV8S21161C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C6[];
extern Class_Descriptor cd_S21161C17;
extern VTBL_ENTRY _ZTI9S21161C17[];
extern  VTBL_ENTRY _ZTV9S21161C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C17[];
extern Class_Descriptor cd_S21161C4;
extern VTBL_ENTRY _ZTI8S21161C4[];
extern  VTBL_ENTRY _ZTV8S21161C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
extern Class_Descriptor cd_S21161C19;
extern VTBL_ENTRY _ZTI9S21161C19[];
extern  VTBL_ENTRY _ZTV9S21161C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C19[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21161C12;
extern VTBL_ENTRY _ZTI9S21161C12[];
extern  VTBL_ENTRY _ZTV9S21161C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C18;
extern VTBL_ENTRY _ZTI9S21161C18[];
extern  VTBL_ENTRY _ZTV9S21161C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21161C8;
extern VTBL_ENTRY _ZTI8S21161C8[];
extern  VTBL_ENTRY _ZTV8S21161C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C8[];
extern Class_Descriptor cd_S21161C5;
extern VTBL_ENTRY _ZTI8S21161C5[];
extern  VTBL_ENTRY _ZTV8S21161C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C5[];
extern Class_Descriptor cd_S21161C20;
extern VTBL_ENTRY _ZTI9S21161C20[];
extern  VTBL_ENTRY _ZTV9S21161C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21161C20[];
static Base_Class bases_S21161C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(22264,13392), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21161C2,    ABISELECT(22256,13388), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(26488,15976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(25512,15356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21161C8,    ABISELECT(25504,15352), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(25504,15352), //bcp->offset
    97, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(25360,15276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(25176,15168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(25168,15164), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(25168,15164), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19674C2,    ABISELECT(26608,16032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(57264,34880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(57256,34876), //bcp->offset
    108, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(57456,34988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21161C12,    ABISELECT(57456,34988), //bcp->offset
    114, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(22392,13484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C15,    ABISELECT(22384,13480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(22840,13736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(22656,13628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(22648,13624), //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
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(22648,13624), //bcp->offset
    78, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21161C14,    ABISELECT(22384,13480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(23056,13860), //bcp->offset
    85, //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
    19, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21161C13,    ABISELECT(22384,13480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //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
    32, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(58032,35324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(57848,35216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(57840,35212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(57840,35212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(58184,35404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(58176,35400), //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
    12, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21161C6,    ABISELECT(58176,35400), //bcp->offset
    133, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21161C17,    ABISELECT(57840,35212), //bcp->offset
    121, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S21161C4,    ABISELECT(22384,13480), //bcp->offset
    56, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    37, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(120,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19674C5,    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
    23, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S21161C12,    ABISELECT(240,144), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21161C19,    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_S19674C5,    ABISELECT(1040,604), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21161C12,    ABISELECT(1040,604), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(1432,832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S21161C8,    ABISELECT(1424,828), //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
    28, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S21161C18,    ABISELECT(1424,828), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(1840,1072), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(1656,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21161C8,    ABISELECT(1648,960), //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
    30, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S21161C5,    ABISELECT(1648,960), //bcp->offset
    36, //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
    31, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S21161C20,    ABISELECT(1040,604), //bcp->offset
    20, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21161C1[];
extern void _ZN8S21161C1D1Ev();
extern void _ZN8S21161C1D0Ev();
extern void ABISELECT(_ZThn240_N8S21161C1D1Ev,_ZThn144_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S21161C1D0Ev,_ZThn144_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn1040_N8S21161C1D1Ev,_ZThn604_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn1040_N8S21161C1D0Ev,_ZThn604_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn1424_N8S21161C1D1Ev,_ZThn828_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn1424_N8S21161C1D0Ev,_ZThn828_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn1648_N8S21161C1D1Ev,_ZThn960_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn1648_N8S21161C1D0Ev,_ZThn960_N8S21161C1D0Ev)();
extern void _ZN8S21161C22v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S21161C1D1Ev,_ZTv0_n20_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn22256_N8S21161C1D1Ev,_ZThn13388_N8S21161C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C1D0Ev,_ZTv0_n20_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn22256_N8S21161C1D0Ev,_ZThn13388_N8S21161C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C1D1Ev,_ZTv0_n12_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn22264_N8S21161C1D1Ev,_ZThn13392_N8S21161C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C1D0Ev,_ZTv0_n12_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn22264_N8S21161C1D0Ev,_ZThn13392_N8S21161C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21161C1D1Ev,_ZTv0_n48_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn22384_N8S21161C1D1Ev,_ZThn13480_N8S21161C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21161C1D0Ev,_ZTv0_n48_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn22384_N8S21161C1D0Ev,_ZThn13480_N8S21161C1D0Ev)() __attribute__((weak));
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void _ZN9S21161C142v6Ev();
extern void _ZN9S21161C142v7Ev();
extern void ABISELECT(_ZTvn264_n96_N8S21161C1D1Ev,_ZTvn144_n48_N8S21161C1D1Ev)();
extern void ABISELECT(_ZTvn264_n96_N8S21161C1D0Ev,_ZTvn144_n48_N8S21161C1D0Ev)();
extern void ABISELECT(_ZTvn672_n96_N8S21161C1D1Ev,_ZTvn380_n48_N8S21161C1D1Ev)();
extern void ABISELECT(_ZTvn672_n96_N8S21161C1D0Ev,_ZTvn380_n48_N8S21161C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21161C1D1Ev,_ZTv0_n24_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn25168_N8S21161C1D1Ev,_ZThn15164_N8S21161C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21161C1D0Ev,_ZTv0_n24_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn25168_N8S21161C1D0Ev,_ZThn15164_N8S21161C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C1D1Ev,_ZTv0_n20_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn25504_N8S21161C1D1Ev,_ZThn15352_N8S21161C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C1D0Ev,_ZTv0_n20_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn25504_N8S21161C1D0Ev,_ZThn15352_N8S21161C1D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S21161C1D1Ev,_ZTv0_n16_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn57256_N8S21161C1D1Ev,_ZThn34876_N8S21161C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21161C1D0Ev,_ZTv0_n16_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn57256_N8S21161C1D0Ev,_ZThn34876_N8S21161C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C1D1Ev,_ZTv0_n20_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn57456_N8S21161C1D1Ev,_ZThn34988_N8S21161C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C1D0Ev,_ZTv0_n20_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn57456_N8S21161C1D0Ev,_ZThn34988_N8S21161C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21161C1D1Ev,_ZTv0_n32_N8S21161C1D1Ev)();
extern void ABISELECT(_ZThn57840_N8S21161C1D1Ev,_ZThn35212_N8S21161C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21161C1D0Ev,_ZTv0_n32_N8S21161C1D0Ev)();
extern void ABISELECT(_ZThn57840_N8S21161C1D0Ev,_ZThn35212_N8S21161C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N8S21161C1D1Ev,_ZTvn188_n32_N8S21161C1D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N8S21161C1D0Ev,_ZTvn188_n32_N8S21161C1D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY vtc_S21161C1[] = {
  ABISELECT(57840,35212),
  ABISELECT(57456,34988),
  ABISELECT(26608,16032),
  ABISELECT(26488,15976),
  ABISELECT(25504,15352),
  ABISELECT(25168,15164),
  ABISELECT(22384,13480),
  ABISELECT(22256,13388),
  ABISELECT(22264,13392),
  ABISELECT(57256,34876),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&_ZN8S21161C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C1D0Ev,
  ABISELECT(22024,13248),
  ABISELECT(57016,34732),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S21161C1D1Ev,_ZThn144_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S21161C1D0Ev,_ZThn144_N8S21161C1D0Ev),
  ABISELECT(25448,15372),
  ABISELECT(24464,14748),
  ABISELECT(56416,34384),
  ABISELECT(21224,12788),
  ABISELECT(56216,34272),
  ABISELECT(-1040,-604),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1040_N8S21161C1D1Ev,_ZThn604_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1040_N8S21161C1D0Ev,_ZThn604_N8S21161C1D0Ev),
  ABISELECT(55832,34048),
  ABISELECT(56032,34160),
  ABISELECT(20840,12564),
  ABISELECT(-1424,-828),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1424_N8S21161C1D1Ev,_ZThn828_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1424_N8S21161C1D0Ev,_ZThn828_N8S21161C1D0Ev),
  ABISELECT(24840,15016),
  ABISELECT(23856,14392),
  ABISELECT(20616,12432),
  ABISELECT(-1648,-960),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1648_N8S21161C1D1Ev,_ZThn960_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1648_N8S21161C1D0Ev,_ZThn960_N8S21161C1D0Ev),
  ABISELECT(-22256,-13388),
  0,
  ABISELECT(8,4),
  ABISELECT(-22256,-13388),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&_ZN8S21161C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C1D1Ev,_ZTv0_n20_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C1D0Ev,_ZTv0_n20_N8S21161C1D0Ev),
  ABISELECT(-22264,-13392),
  ABISELECT(-22264,-13392),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C1D1Ev,_ZTv0_n12_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C1D0Ev,_ZTv0_n12_N8S21161C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-22384,-13480),
  ABISELECT(-128,-92),
  ABISELECT(35456,21732),
  ABISELECT(4224,2552),
  ABISELECT(2784,1684),
  ABISELECT(4104,2496),
  ABISELECT(3120,1872),
  ABISELECT(35072,21508),
  ABISELECT(34872,21396),
  ABISELECT(-120,-88),
  ABISELECT(-22384,-13480),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21161C1D1Ev,_ZTv0_n48_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21161C1D0Ev,_ZTv0_n48_N8S21161C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v6Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v7Ev,
  ABISELECT(3840,2352),
  ABISELECT(2856,1728),
  ABISELECT(-384,-232),
  ABISELECT(-22648,-13624),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n96_N8S21161C1D1Ev,_ZTvn144_n48_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n96_N8S21161C1D0Ev,_ZTvn144_n48_N8S21161C1D0Ev),
  ABISELECT(-23056,-13860),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n96_N8S21161C1D1Ev,_ZTvn380_n48_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n96_N8S21161C1D0Ev,_ZTvn380_n48_N8S21161C1D0Ev),
  ABISELECT(-25168,-15164),
  ABISELECT(1320,812),
  ABISELECT(336,188),
  ABISELECT(-2904,-1772),
  ABISELECT(-25168,-15164),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21161C1D1Ev,_ZTv0_n24_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21161C1D0Ev,_ZTv0_n24_N8S21161C1D0Ev),
  0,
  0,
  ABISELECT(-25504,-15352),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(-25504,-15352),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C1D1Ev,_ZTv0_n20_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C1D0Ev,_ZTv0_n20_N8S21161C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
  ABISELECT(-57256,-34876),
  ABISELECT(-34992,-21484),
  ABISELECT(-57256,-34876),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21161C1D1Ev,_ZTv0_n16_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21161C1D0Ev,_ZTv0_n16_N8S21161C1D0Ev),
  ABISELECT(-57456,-34988),
  ABISELECT(-35192,-21596),
  ABISELECT(-200,-112),
  ABISELECT(-57456,-34988),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C1D1Ev,_ZTv0_n20_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C1D0Ev,_ZTv0_n20_N8S21161C1D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-57840,-35212),
  ABISELECT(-35584,-21824),
  ABISELECT(-584,-336),
  ABISELECT(-31352,-19236),
  ABISELECT(-32336,-19860),
  ABISELECT(-35576,-21820),
  ABISELECT(-57840,-35212),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21161C1D1Ev,_ZTv0_n32_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21161C1D0Ev,_ZTv0_n32_N8S21161C1D0Ev),
  ABISELECT(-31688,-19424),
  ABISELECT(-35912,-22008),
  ABISELECT(-58176,-35400),
  (VTBL_ENTRY)&(_ZTI8S21161C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21161C1D1Ev,_ZTvn188_n32_N8S21161C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21161C1D0Ev,_ZTvn188_n32_N8S21161C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S21161C1[];
extern void _ZN9S21161C19D1Ev();
extern void _ZN9S21161C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C19__8S21161C1[] = {
  ABISELECT(22264,13392),
  ABISELECT(57256,34876),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C19[0]),
  (VTBL_ENTRY)&_ZN9S21161C19D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C19D0Ev,
};
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C129S21161C19__A1__8S21161C1[] = {
  ABISELECT(22024,13248),
  ABISELECT(57016,34732),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn57016_N9S21161C12D1Ev,_ZThn34732_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn57016_N9S21161C12D0Ev,_ZThn34732_N9S21161C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C129S21161C19__A1__8S21161C1[] = {
  ABISELECT(-57016,-34732),
  ABISELECT(-34992,-21484),
  ABISELECT(-57016,-34732),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn22024_N9S21161C12D1Ev,_ZThn13248_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn22024_N9S21161C12D0Ev,_ZThn13248_N9S21161C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C129S21161C19__A1__8S21161C1[] = {
  ABISELECT(-22024,-13248),
  ABISELECT(-22024,-13248),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZThn240_N9S21161C19D1Ev,_ZThn144_N9S21161C19D1Ev)();
extern void ABISELECT(_ZThn240_N9S21161C19D0Ev,_ZThn144_N9S21161C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C19__8S21161C1[] = {
  ABISELECT(22024,13248),
  ABISELECT(57016,34732),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI9S21161C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S21161C19D1Ev,_ZThn144_N9S21161C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S21161C19D0Ev,_ZThn144_N9S21161C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C19D1Ev,_ZTv0_n16_N9S21161C19D1Ev)();
extern void ABISELECT(_ZThn57256_N9S21161C19D1Ev,_ZThn34876_N9S21161C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C19D0Ev,_ZTv0_n16_N9S21161C19D0Ev)();
extern void ABISELECT(_ZThn57256_N9S21161C19D0Ev,_ZThn34876_N9S21161C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C19__8S21161C1[] = {
  ABISELECT(-57256,-34876),
  ABISELECT(-34992,-21484),
  ABISELECT(-57256,-34876),
  (VTBL_ENTRY)&(_ZTI9S21161C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C19D1Ev,_ZTv0_n16_N9S21161C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C19D0Ev,_ZTv0_n16_N9S21161C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C19D1Ev,_ZTv0_n12_N9S21161C19D1Ev)();
extern void ABISELECT(_ZThn22264_N9S21161C19D1Ev,_ZThn13392_N9S21161C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C19D0Ev,_ZTv0_n12_N9S21161C19D0Ev)();
extern void ABISELECT(_ZThn22264_N9S21161C19D0Ev,_ZThn13392_N9S21161C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__A1__9S21161C19__8S21161C1[] = {
  ABISELECT(-22264,-13392),
  ABISELECT(-22264,-13392),
  (VTBL_ENTRY)&(_ZTI9S21161C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C19D1Ev,_ZTv0_n12_N9S21161C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C19D0Ev,_ZTv0_n12_N9S21161C19D0Ev),
};
extern void _ZN9S21161C20D1Ev();
extern void _ZN9S21161C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C20__8S21161C1[] = {
  ABISELECT(25448,15372),
  ABISELECT(24464,14748),
  ABISELECT(56416,34384),
  ABISELECT(21224,12788),
  ABISELECT(56216,34272),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&_ZN9S21161C20D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C20D0Ev,
};
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C129S21161C20__A2__8S21161C1[] = {
  ABISELECT(21224,12788),
  ABISELECT(56216,34272),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn56216_N9S21161C12D1Ev,_ZThn34272_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn56216_N9S21161C12D0Ev,_ZThn34272_N9S21161C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C129S21161C20__A2__8S21161C1[] = {
  ABISELECT(-56216,-34272),
  ABISELECT(-34992,-21484),
  ABISELECT(-56216,-34272),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZThn21224_N9S21161C12D1Ev,_ZThn12788_N9S21161C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
extern void ABISELECT(_ZThn21224_N9S21161C12D0Ev,_ZThn12788_N9S21161C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C129S21161C20__A2__8S21161C1[] = {
  ABISELECT(-21224,-12788),
  ABISELECT(-21224,-12788),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern void _ZN9S21161C18D1Ev();
extern void _ZN9S21161C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C189S21161C20__8S21161C1[] = {
  ABISELECT(55832,34048),
  ABISELECT(56032,34160),
  ABISELECT(20840,12564),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&_ZN9S21161C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C18D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C89S21161C189S21161C20__A6__8S21161C1[] = {
  ABISELECT(20840,12564),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn20840_N8S21161C8D1Ev,_ZThn12564_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn20840_N8S21161C8D0Ev,_ZThn12564_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C89S21161C189S21161C20__A6__8S21161C1[] = {
  ABISELECT(-20840,-12564),
  ABISELECT(-20840,-12564),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C18D1Ev,_ZTv0_n12_N9S21161C18D1Ev)();
extern void ABISELECT(_ZThn20840_N9S21161C18D1Ev,_ZThn12564_N9S21161C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C18D0Ev,_ZTv0_n12_N9S21161C18D0Ev)();
extern void ABISELECT(_ZThn20840_N9S21161C18D0Ev,_ZThn12564_N9S21161C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C189S21161C20__8S21161C1[] = {
  ABISELECT(-20840,-12564),
  ABISELECT(-20840,-12564),
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C18D1Ev,_ZTv0_n12_N9S21161C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C18D0Ev,_ZTv0_n12_N9S21161C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C18D1Ev,_ZTv0_n20_N9S21161C18D1Ev)();
extern void ABISELECT(_ZThn56032_N9S21161C18D1Ev,_ZThn34160_N9S21161C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C18D0Ev,_ZTv0_n20_N9S21161C18D0Ev)();
extern void ABISELECT(_ZThn56032_N9S21161C18D0Ev,_ZThn34160_N9S21161C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C189S21161C20__8S21161C1[] = {
  ABISELECT(-56032,-34160),
  ABISELECT(-35192,-21596),
  ABISELECT(-200,-112),
  ABISELECT(-56032,-34160),
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C18D1Ev,_ZTv0_n20_N9S21161C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C18D0Ev,_ZTv0_n20_N9S21161C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C18D1Ev,_ZTv0_n16_N9S21161C18D1Ev)();
extern void ABISELECT(_ZThn55832_N9S21161C18D1Ev,_ZThn34048_N9S21161C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C18D0Ev,_ZTv0_n16_N9S21161C18D0Ev)();
extern void ABISELECT(_ZThn55832_N9S21161C18D0Ev,_ZThn34048_N9S21161C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__A1__9S21161C189S21161C20__8S21161C1[] = {
  ABISELECT(-55832,-34048),
  ABISELECT(-34992,-21484),
  ABISELECT(-55832,-34048),
  (VTBL_ENTRY)&(_ZTI9S21161C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C18D1Ev,_ZTv0_n16_N9S21161C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C18D0Ev,_ZTv0_n16_N9S21161C18D0Ev),
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C59S21161C20__A3__8S21161C1[] = {
  ABISELECT(24840,15016),
  ABISELECT(23856,14392),
  ABISELECT(20616,12432),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C59S21161C20__A7__8S21161C1[] = {
  ABISELECT(20616,12432),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZThn20616_N8S21161C8D1Ev,_ZThn12432_N8S21161C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
extern void ABISELECT(_ZThn20616_N8S21161C8D0Ev,_ZThn12432_N8S21161C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C59S21161C20__A7__8S21161C1[] = {
  ABISELECT(-20616,-12432),
  ABISELECT(-20616,-12432),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn23856_N8S21161C5D1Ev,_ZThn14392_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn23856_N8S21161C5D0Ev,_ZThn14392_N8S21161C5D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C59S21161C20__A3__8S21161C1[] = {
  0,
  0,
  ABISELECT(-23856,-14392),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(-23856,-14392),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn20616_N8S21161C5D1Ev,_ZThn12432_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn20616_N8S21161C5D0Ev,_ZThn12432_N8S21161C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C59S21161C20__A3__8S21161C1[] = {
  ABISELECT(-20616,-12432),
  ABISELECT(-20616,-12432),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C20D1Ev,_ZTv0_n16_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn56216_N9S21161C20D1Ev,_ZThn34272_N9S21161C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C20D0Ev,_ZTv0_n16_N9S21161C20D0Ev)();
extern void ABISELECT(_ZThn56216_N9S21161C20D0Ev,_ZThn34272_N9S21161C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C20__8S21161C1[] = {
  ABISELECT(-56216,-34272),
  ABISELECT(-34992,-21484),
  ABISELECT(-56216,-34272),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C20D1Ev,_ZTv0_n16_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C20D0Ev,_ZTv0_n16_N9S21161C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C20D1Ev,_ZTv0_n12_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn21224_N9S21161C20D1Ev,_ZThn12788_N9S21161C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21161C20D0Ev,_ZTv0_n12_N9S21161C20D0Ev)();
extern void ABISELECT(_ZThn21224_N9S21161C20D0Ev,_ZThn12788_N9S21161C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C20__8S21161C1[] = {
  ABISELECT(-21224,-12788),
  ABISELECT(-21224,-12788),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C20D1Ev,_ZTv0_n12_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C20D0Ev,_ZTv0_n12_N9S21161C20D0Ev),
};
extern void ABISELECT(_ZThn384_N9S21161C20D1Ev,_ZThn224_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn384_N9S21161C20D0Ev,_ZThn224_N9S21161C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21161C18__9S21161C20__8S21161C1[] = {
  ABISELECT(55832,34048),
  ABISELECT(56032,34160),
  ABISELECT(20840,12564),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S21161C20D1Ev,_ZThn224_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S21161C20D0Ev,_ZThn224_N9S21161C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C20D1Ev,_ZTv0_n20_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn56416_N9S21161C20D1Ev,_ZThn34384_N9S21161C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C20D0Ev,_ZTv0_n20_N9S21161C20D0Ev)();
extern void ABISELECT(_ZThn56416_N9S21161C20D0Ev,_ZThn34384_N9S21161C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__A1__9S21161C20__8S21161C1[] = {
  ABISELECT(-56416,-34384),
  ABISELECT(-35192,-21596),
  ABISELECT(-200,-112),
  ABISELECT(-56416,-34384),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C20D1Ev,_ZTv0_n20_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C20D0Ev,_ZTv0_n20_N9S21161C20D0Ev),
};
extern void ABISELECT(_ZThn608_N9S21161C20D1Ev,_ZThn356_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn608_N9S21161C20D0Ev,_ZThn356_N9S21161C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C5__9S21161C20__8S21161C1[] = {
  ABISELECT(24840,15016),
  ABISELECT(23856,14392),
  ABISELECT(20616,12432),
  ABISELECT(-608,-356),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S21161C20D1Ev,_ZThn356_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S21161C20D0Ev,_ZThn356_N9S21161C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C20D1Ev,_ZTv0_n20_N9S21161C20D1Ev)();
extern void ABISELECT(_ZThn24464_N9S21161C20D1Ev,_ZThn14748_N9S21161C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C20D0Ev,_ZTv0_n20_N9S21161C20D0Ev)();
extern void ABISELECT(_ZThn24464_N9S21161C20D0Ev,_ZThn14748_N9S21161C20D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C20__8S21161C1[] = {
  0,
  0,
  ABISELECT(-24464,-14748),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(-24464,-14748),
  (VTBL_ENTRY)&(_ZTI9S21161C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C20D1Ev,_ZTv0_n20_N9S21161C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C20D0Ev,_ZTv0_n20_N9S21161C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C22v1Ev();
extern void _ZN8S21161C2D1Ev();
extern void _ZN8S21161C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C2__8S21161C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C2[0]),
  (VTBL_ENTRY)&_ZN8S21161C22v1Ev,
  (VTBL_ENTRY)&_ZN8S21161C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C2D1Ev,_ZTv0_n12_N8S21161C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21161C2D1Ev,_ZThn4_N8S21161C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21161C2D0Ev,_ZTv0_n12_N8S21161C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21161C2D0Ev,_ZThn4_N8S21161C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C2__8S21161C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21161C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C2D1Ev,_ZTv0_n12_N8S21161C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C2D0Ev,_ZTv0_n12_N8S21161C2D0Ev),
};
extern void _ZN8S21161C4D1Ev();
extern void _ZN8S21161C4D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void _ZN9S21161C142v6Ev();
extern void _ZN9S21161C142v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C4__8S21161C1[] = {
  ABISELECT(-128,-92),
  ABISELECT(35456,21732),
  ABISELECT(4224,2552),
  ABISELECT(2784,1684),
  ABISELECT(4104,2496),
  ABISELECT(3120,1872),
  ABISELECT(35072,21508),
  ABISELECT(34872,21396),
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&_ZN8S21161C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C4D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v6Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v7Ev,
};
extern void _ZN9S21161C13D1Ev();
extern void _ZN9S21161C13D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void _ZN9S21161C142v6Ev();
extern void _ZN9S21161C142v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(2784,1684),
  ABISELECT(4104,2496),
  ABISELECT(3120,1872),
  ABISELECT(35072,21508),
  ABISELECT(34872,21396),
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&_ZN9S21161C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C13D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v6Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v7Ev,
};
extern void _ZN9S21161C14D1Ev();
extern void _ZN9S21161C14D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
extern void _ZN9S21161C142v6Ev();
extern void _ZN9S21161C142v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C149S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(4104,2496),
  ABISELECT(3120,1872),
  ABISELECT(35072,21508),
  ABISELECT(34872,21396),
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&_ZN9S21161C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C14D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v6Ev,
  (VTBL_ENTRY)&_ZN9S21161C142v7Ev,
};
extern void _ZN9S21161C15D1Ev();
extern void _ZN9S21161C15D0Ev();
extern void _ZN9S21161C152v4Ev();
extern void _ZN9S21161C152v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C159S21161C149S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(4104,2496),
  ABISELECT(3120,1872),
  ABISELECT(35072,21508),
  ABISELECT(34872,21396),
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&_ZN9S21161C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C15D0Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v4Ev,
  (VTBL_ENTRY)&_ZN9S21161C152v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C159S21161C149S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C15D1Ev,_ZTv0_n12_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C15D0Ev,_ZTv0_n12_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn34872_N9S21161C15D1Ev,_ZThn21396_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn34872_N9S21161C15D0Ev,_ZThn21396_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C159S21161C149S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(-34872,-21396),
  ABISELECT(-34992,-21484),
  ABISELECT(-34872,-21396),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn35072_N9S21161C15D1Ev,_ZThn21508_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn35072_N9S21161C15D0Ev,_ZThn21508_N9S21161C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C159S21161C149S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(-35072,-21508),
  ABISELECT(-35192,-21596),
  ABISELECT(-200,-112),
  ABISELECT(-35072,-21508),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C15D1Ev,_ZThn1872_N9S21161C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C15D0Ev,_ZThn1872_N9S21161C15D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C159S21161C149S21161C138S21161C4__8S21161C1[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21161C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C59S21161C149S21161C138S21161C4__A1__8S21161C1[] = {
  ABISELECT(3840,2352),
  ABISELECT(2856,1728),
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C59S21161C149S21161C138S21161C4__A3__8S21161C1[] = {
  ABISELECT(-384,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C59S21161C149S21161C138S21161C4__A3__8S21161C1[] = {
  ABISELECT(384,232),
  ABISELECT(384,232),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn2856_N8S21161C5D1Ev,_ZThn1728_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn2856_N8S21161C5D0Ev,_ZThn1728_N8S21161C5D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C59S21161C149S21161C138S21161C4__A1__8S21161C1[] = {
  0,
  0,
  ABISELECT(-2856,-1728),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(-2856,-1728),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C59S21161C149S21161C138S21161C4__A1__8S21161C1[] = {
  ABISELECT(384,232),
  ABISELECT(384,232),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C149S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C14D1Ev,_ZTv0_n12_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C14D0Ev,_ZTv0_n12_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn34872_N9S21161C14D1Ev,_ZThn21396_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn34872_N9S21161C14D0Ev,_ZThn21396_N9S21161C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C149S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(-34872,-21396),
  ABISELECT(-34992,-21484),
  ABISELECT(-34872,-21396),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn35072_N9S21161C14D1Ev,_ZThn21508_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn35072_N9S21161C14D0Ev,_ZThn21508_N9S21161C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C149S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(-35072,-21508),
  ABISELECT(-35192,-21596),
  ABISELECT(-200,-112),
  ABISELECT(-35072,-21508),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C14D1Ev,_ZThn1872_N9S21161C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C14D0Ev,_ZThn1872_N9S21161C14D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C149S21161C138S21161C4__8S21161C1[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZThn264_N9S21161C14D1Ev,_ZThn144_N9S21161C14D1Ev)();
extern void ABISELECT(_ZThn264_N9S21161C14D0Ev,_ZThn144_N9S21161C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C5__9S21161C149S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(3840,2352),
  ABISELECT(2856,1728),
  ABISELECT(-384,-232),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21161C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C14D1Ev,_ZThn144_N9S21161C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C14D0Ev,_ZThn144_N9S21161C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C13D1Ev,_ZThn1872_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21161C13D0Ev,_ZThn1872_N9S21161C13D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C138S21161C4__8S21161C1[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21161C13D1Ev,_ZTv0_n12_N9S21161C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C13D0Ev,_ZTv0_n12_N9S21161C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C13D1Ev,_ZTv0_n12_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C13D0Ev,_ZTv0_n12_N9S21161C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21161C13D1Ev,_ZTv0_n24_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn2784_N9S21161C13D1Ev,_ZThn1684_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21161C13D0Ev,_ZTv0_n24_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn2784_N9S21161C13D0Ev,_ZThn1684_N9S21161C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C5__9S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(-2784,-1684),
  ABISELECT(1320,812),
  ABISELECT(336,188),
  ABISELECT(-2904,-1772),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21161C13D1Ev,_ZTv0_n24_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21161C13D0Ev,_ZTv0_n24_N9S21161C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21161C13D1Ev,_ZTv0_n16_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn34872_N9S21161C13D1Ev,_ZThn21396_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21161C13D0Ev,_ZTv0_n16_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn34872_N9S21161C13D0Ev,_ZThn21396_N9S21161C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__A2__9S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(-34872,-21396),
  ABISELECT(-34992,-21484),
  ABISELECT(-34872,-21396),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C13D1Ev,_ZTv0_n16_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C13D0Ev,_ZTv0_n16_N9S21161C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn35072_N9S21161C13D1Ev,_ZThn21508_N9S21161C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev)();
extern void ABISELECT(_ZThn35072_N9S21161C13D0Ev,_ZThn21508_N9S21161C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__9S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(-35072,-21508),
  ABISELECT(-35192,-21596),
  ABISELECT(-200,-112),
  ABISELECT(-35072,-21508),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21161C13D1Ev,_ZThn144_N9S21161C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21161C13D0Ev,_ZThn144_N9S21161C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C59S21161C14__A1__9S21161C138S21161C4__8S21161C1[] = {
  ABISELECT(3840,2352),
  ABISELECT(2856,1728),
  ABISELECT(-384,-232),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21161C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C13D1Ev,_ZThn144_N9S21161C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21161C13D0Ev,_ZThn144_N9S21161C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21161C4D1Ev,_ZTv0_n24_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn2784_N8S21161C4D1Ev,_ZThn1684_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21161C4D0Ev,_ZTv0_n24_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn2784_N8S21161C4D0Ev,_ZThn1684_N8S21161C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C5__8S21161C4__8S21161C1[] = {
  ABISELECT(-2784,-1684),
  ABISELECT(1320,812),
  ABISELECT(336,188),
  ABISELECT(-2904,-1772),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21161C4D1Ev,_ZTv0_n24_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21161C4D0Ev,_ZTv0_n24_N8S21161C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn3120_N8S21161C4D1Ev,_ZThn1872_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn3120_N8S21161C4D0Ev,_ZThn1872_N8S21161C4D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C4__8S21161C1[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C4D1Ev,_ZTv0_n12_N8S21161C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C4D0Ev,_ZTv0_n12_N8S21161C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C4__8S21161C1[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C4D1Ev,_ZTv0_n12_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C4D0Ev,_ZTv0_n12_N8S21161C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21161C4D1Ev,_ZTv0_n16_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn34872_N8S21161C4D1Ev,_ZThn21396_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21161C4D0Ev,_ZTv0_n16_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn34872_N8S21161C4D0Ev,_ZThn21396_N8S21161C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21161C8__A2__8S21161C4__8S21161C1[] = {
  ABISELECT(-34872,-21396),
  ABISELECT(-34992,-21484),
  ABISELECT(-34872,-21396),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21161C4D1Ev,_ZTv0_n16_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21161C4D0Ev,_ZTv0_n16_N8S21161C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn35072_N8S21161C4D1Ev,_ZThn21508_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn35072_N8S21161C4D0Ev,_ZThn21508_N8S21161C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C12__8S21161C4__8S21161C1[] = {
  ABISELECT(-35072,-21508),
  ABISELECT(-35192,-21596),
  ABISELECT(-200,-112),
  ABISELECT(-35072,-21508),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev),
};
extern void ABISELECT(_ZThn264_N8S21161C4D1Ev,_ZThn144_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn264_N8S21161C4D0Ev,_ZThn144_N8S21161C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C59S21161C149S21161C13__A1__8S21161C4__8S21161C1[] = {
  ABISELECT(3840,2352),
  ABISELECT(2856,1728),
  ABISELECT(-384,-232),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S21161C4D1Ev,_ZThn144_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S21161C4D0Ev,_ZThn144_N8S21161C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S21161C4D1Ev,_ZTv0_n32_N8S21161C4D1Ev)();
extern void ABISELECT(_ZThn35456_N8S21161C4D1Ev,_ZThn21732_N8S21161C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21161C4D0Ev,_ZTv0_n32_N8S21161C4D0Ev)();
extern void ABISELECT(_ZThn35456_N8S21161C4D0Ev,_ZThn21732_N8S21161C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21161C17__8S21161C4__8S21161C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35456,-21732),
  ABISELECT(-35584,-21824),
  ABISELECT(-584,-336),
  ABISELECT(-31352,-19236),
  ABISELECT(-32336,-19860),
  ABISELECT(-35576,-21820),
  ABISELECT(-35456,-21732),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21161C4D1Ev,_ZTv0_n32_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21161C4D0Ev,_ZTv0_n32_N8S21161C4D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N8S21161C4D1Ev,_ZTvn188_n32_N8S21161C4D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N8S21161C4D0Ev,_ZTvn188_n32_N8S21161C4D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C69S21161C17__A1__8S21161C4__8S21161C1[] = {
  ABISELECT(-31688,-19424),
  ABISELECT(-35912,-22008),
  ABISELECT(-35792,-21920),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21161C4D1Ev,_ZTvn188_n32_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21161C4D0Ev,_ZTvn188_n32_N8S21161C4D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C22v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C2__8S21161C4__8S21161C1[] = {
  ABISELECT(128,92),
  0,
  ABISELECT(8,4),
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S21161C4[0]),
  (VTBL_ENTRY)&_ZN8S21161C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev),
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C5__8S21161C1[] = {
  ABISELECT(1320,812),
  ABISELECT(336,188),
  ABISELECT(-2904,-1772),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C5__A1__8S21161C1[] = {
  ABISELECT(-2904,-1772),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C5__A1__8S21161C1[] = {
  ABISELECT(2904,1772),
  ABISELECT(2904,1772),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZThn336_N8S21161C5D1Ev,_ZThn188_N8S21161C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void ABISELECT(_ZThn336_N8S21161C5D0Ev,_ZThn188_N8S21161C5D0Ev)() __attribute__((weak));
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C5__8S21161C1[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C5__8S21161C1[] = {
  ABISELECT(2904,1772),
  ABISELECT(2904,1772),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C1[] = {
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C6__8S21161C1[] = {
  ABISELECT(-3240,-1960),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C6__8S21161C1[] = {
  ABISELECT(3240,1960),
  ABISELECT(3240,1960),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C6__8S21161C1[] = {
  ABISELECT(3240,1960),
  ABISELECT(3240,1960),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C8__A2__8S21161C1[] = {
  ABISELECT(-34992,-21484),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C8__A2__8S21161C1[] = {
  ABISELECT(34992,21484),
  ABISELECT(34992,21484),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void _ZN9S21161C12D1Ev();
extern void _ZN9S21161C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C12__8S21161C1[] = {
  ABISELECT(-35192,-21596),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&_ZN9S21161C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C8__9S21161C12__8S21161C1[] = {
  ABISELECT(200,112),
  ABISELECT(-34992,-21484),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C12__8S21161C1[] = {
  ABISELECT(35192,21596),
  ABISELECT(35192,21596),
  (VTBL_ENTRY)&(_ZTI9S21161C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev),
};
extern void _ZN9S21161C17D1Ev();
extern void _ZN9S21161C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21161C17__8S21161C1[] = {
  ABISELECT(-35584,-21824),
  ABISELECT(-584,-336),
  ABISELECT(-31352,-19236),
  ABISELECT(-32336,-19860),
  ABISELECT(-35576,-21820),
  0,
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&_ZN9S21161C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21161C17D0Ev,
};
extern void _ZN8S21161C5D1Ev();
extern void _ZN8S21161C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C59S21161C17__A2__8S21161C1[] = {
  ABISELECT(-31352,-19236),
  ABISELECT(-32336,-19860),
  ABISELECT(-35576,-21820),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&_ZN8S21161C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C5D0Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C59S21161C17__A4__8S21161C1[] = {
  ABISELECT(-35576,-21820),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C59S21161C17__A4__8S21161C1[] = {
  ABISELECT(35576,21820),
  ABISELECT(35576,21820),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__8S21161C59S21161C17__A2__8S21161C1[] = {
  0,
  0,
  ABISELECT(32336,19860),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(32336,19860),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C59S21161C17__A2__8S21161C1[] = {
  ABISELECT(35576,21820),
  ABISELECT(35576,21820),
  (VTBL_ENTRY)&(_ZTI8S21161C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev),
};
extern void _ZN8S21161C6D1Ev();
extern void _ZN8S21161C6D0Ev();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C69S21161C17__A1__8S21161C1[] = {
  ABISELECT(-31688,-19424),
  ABISELECT(-35912,-22008),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&_ZN8S21161C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C6D0Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void _ZN8S21161C8D1Ev();
extern void _ZN8S21161C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C88S21161C69S21161C17__A5__8S21161C1[] = {
  ABISELECT(-35912,-22008),
  0,
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&_ZN8S21161C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21161C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C88S21161C69S21161C17__A5__8S21161C1[] = {
  ABISELECT(35912,22008),
  ABISELECT(35912,22008),
  (VTBL_ENTRY)&(_ZTI8S21161C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21161C69S21161C17__A1__8S21161C1[] = {
  ABISELECT(35912,22008),
  ABISELECT(35912,22008),
  (VTBL_ENTRY)&(_ZTI8S21161C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D1Ev,_ZTv0_n12_N8S21161C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21161C6D0Ev,_ZTv0_n12_N8S21161C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__9S21161C17__8S21161C1[] = {
  0,
  0,
  ABISELECT(32336,19860),
  ABISELECT(984,624),
  ABISELECT(-3240,-1960),
  ABISELECT(32336,19860),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21161C17D1Ev,_ZTv0_n12_N9S21161C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21161C17D0Ev,_ZTv0_n12_N9S21161C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21161C17__8S21161C1[] = {
  ABISELECT(35576,21820),
  ABISELECT(35576,21820),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C17D1Ev,_ZTv0_n12_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21161C17D0Ev,_ZTv0_n12_N9S21161C17D0Ev),
};
extern void ABISELECT(_ZThn336_N9S21161C17D1Ev,_ZThn188_N9S21161C17D1Ev)();
extern void ABISELECT(_ZThn336_N9S21161C17D0Ev,_ZThn188_N9S21161C17D0Ev)();
extern void _ZN8S21161C62v2Ev();
extern void _ZN8S21161C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21161C6__A__9S21161C17__8S21161C1[] = {
  ABISELECT(-31688,-19424),
  ABISELECT(-35912,-22008),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S21161C17D1Ev,_ZThn188_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N9S21161C17D0Ev,_ZThn188_N9S21161C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21161C62v2Ev,
  (VTBL_ENTRY)&_ZN8S21161C62v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21161C17D1Ev,_ZTv0_n16_N9S21161C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21161C17D0Ev,_ZTv0_n16_N9S21161C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C8__A3__9S21161C17__8S21161C1[] = {
  ABISELECT(584,336),
  ABISELECT(-34992,-21484),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C17D1Ev,_ZTv0_n16_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21161C17D0Ev,_ZTv0_n16_N9S21161C17D0Ev),
};
extern void _ZN8S21161C22v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21161C2__9S21161C17__8S21161C1[] = {
  ABISELECT(35584,21824),
  0,
  ABISELECT(8,4),
  ABISELECT(35584,21824),
  (VTBL_ENTRY)&(_ZTI9S21161C17[0]),
  (VTBL_ENTRY)&_ZN8S21161C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D1Ev,_ZTv0_n20_N9S21161C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21161C17D0Ev,_ZTv0_n20_N9S21161C17D0Ev),
};
static  VTT_ENTRY vtt_S21161C1[] = {
  {&(_ZTV8S21161C1[12]),  12,141},
  {&(_tg__ZTV9S21161C19__8S21161C1[4]),  4,6},
  {&(_tg__ZTV9S21161C129S21161C19__A1__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C129S21161C19__A1__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C129S21161C19__A1__8S21161C1[3]),  3,5},
  {&(_tg__ZTV9S21161C12__9S21161C19__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C19__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__A1__9S21161C19__8S21161C1[3]),  3,5},
  {&(_tg__ZTV9S21161C20__8S21161C1[7]),  7,9},
  {&(_tg__ZTV9S21161C129S21161C20__A2__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C129S21161C20__A2__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C129S21161C20__A2__8S21161C1[3]),  3,5},
  {&(_tg__ZTV9S21161C189S21161C20__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C89S21161C189S21161C20__A6__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C89S21161C189S21161C20__A6__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21161C189S21161C20__8S21161C1[3]),  3,5},
  {&(_tg__ZTV9S21161C12__9S21161C189S21161C20__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C8__A1__9S21161C189S21161C20__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S21161C59S21161C20__A3__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C59S21161C20__A7__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C59S21161C20__A7__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C59S21161C20__A3__8S21161C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C59S21161C20__A3__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C8__9S21161C20__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C20__8S21161C1[3]),  3,5},
  {&(_tg__ZTV9S21161C18__9S21161C20__8S21161C1[5]),  5,7},
  {&(_tg__ZTV9S21161C12__A1__9S21161C20__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C5__9S21161C20__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C6__9S21161C20__8S21161C1[7]),  7,11},
  {&(_ZTV8S21161C1[48]),  48,141},
  {&(_ZTV8S21161C1[54]),  54,141},
  {&(_ZTV8S21161C1[72]),  72,141},
  {&(_ZTV8S21161C1[95]),  95,141},
  {&(_ZTV8S21161C1[104]),  104,141},
  {&(_ZTV8S21161C1[112]),  112,141},
  {&(_ZTV8S21161C1[119]),  119,141},
  {&(_ZTV8S21161C1[83]),  83,141},
  {&(_ZTV8S21161C1[87]),  87,141},
  {&(_ZTV8S21161C1[131]),  131,141},
  {&(_ZTV8S21161C1[137]),  137,141},
  {&(_ZTV8S21161C1[18]),  18,141},
  {&(_ZTV8S21161C1[27]),  27,141},
  {&(_ZTV8S21161C1[34]),  34,141},
  {&(_ZTV8S21161C1[41]),  41,141},
  {&(_tg__ZTV8S21161C2__8S21161C1[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21161C2__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C4__8S21161C1[11]),  11,17},
  {&(_tg__ZTV9S21161C138S21161C4__8S21161C1[8]),  8,14},
  {&(_tg__ZTV9S21161C149S21161C138S21161C4__8S21161C1[7]),  7,13},
  {&(_tg__ZTV9S21161C159S21161C149S21161C138S21161C4__8S21161C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21161C159S21161C149S21161C138S21161C4__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C8__9S21161C159S21161C149S21161C138S21161C4__8S21161C1[4]),  4,6},
  {&(_tg__ZTV9S21161C12__9S21161C159S21161C149S21161C138S21161C4__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C6__9S21161C159S21161C149S21161C138S21161C4__8S21161C1[7]),  7,11},
  {&(_tg__ZTV8S21161C59S21161C149S21161C138S21161C4__A1__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C59S21161C149S21161C138S21161C4__A3__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C59S21161C149S21161C138S21161C4__A3__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C59S21161C149S21161C138S21161C4__A1__8S21161C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C59S21161C149S21161C138S21161C4__A1__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21161C149S21161C138S21161C4__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C8__9S21161C149S21161C138S21161C4__8S21161C1[4]),  4,6},
  {&(_tg__ZTV9S21161C12__9S21161C149S21161C138S21161C4__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C6__9S21161C149S21161C138S21161C4__8S21161C1[7]),  7,11},
  {&(_tg__ZTV8S21161C5__9S21161C149S21161C138S21161C4__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C6__9S21161C138S21161C4__8S21161C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21161C138S21161C4__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C5__9S21161C138S21161C4__8S21161C1[6]),  6,8},
  {&(_tg__ZTV8S21161C8__A2__9S21161C138S21161C4__8S21161C1[4]),  4,6},
  {&(_tg__ZTV9S21161C12__9S21161C138S21161C4__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C59S21161C14__A1__9S21161C138S21161C4__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C5__8S21161C4__8S21161C1[6]),  6,8},
  {&(_tg__ZTV8S21161C6__8S21161C4__8S21161C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C4__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C8__A2__8S21161C4__8S21161C1[4]),  4,6},
  {&(_tg__ZTV9S21161C12__8S21161C4__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C59S21161C149S21161C13__A1__8S21161C4__8S21161C1[5]),  5,7},
  {&(_tg__ZTV9S21161C17__8S21161C4__8S21161C1[10]),  10,12},
  {&(_tg__ZTV8S21161C69S21161C17__A1__8S21161C4__8S21161C1[4]),  4,8},
  {&(_tg__ZTV8S21161C2__8S21161C4__8S21161C1[5]),  5,8},
  {&(_tg__ZTV8S21161C5__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C5__A1__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C5__A1__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C5__8S21161C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C5__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C1[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C6__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C6__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C6__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C8__A2__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C8__A2__8S21161C1[3]),  3,5},
  {&(_tg__ZTV9S21161C12__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S21161C8__9S21161C12__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21161C12__8S21161C1[3]),  3,5},
  {&(_tg__ZTV9S21161C17__8S21161C1[7]),  7,9},
  {&(_tg__ZTV8S21161C59S21161C17__A2__8S21161C1[5]),  5,7},
  {&(_tg__ZTV8S21161C88S21161C59S21161C17__A4__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C59S21161C17__A4__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C6__8S21161C59S21161C17__A2__8S21161C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21161C59S21161C17__A2__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C69S21161C17__A1__8S21161C1[4]),  4,8},
  {&(_tg__ZTV8S21161C88S21161C69S21161C17__A5__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C88S21161C69S21161C17__A5__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21161C69S21161C17__A1__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C6__9S21161C17__8S21161C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21161C17__8S21161C1[3]),  3,5},
  {&(_tg__ZTV8S21161C6__A__9S21161C17__8S21161C1[4]),  4,8},
  {&(_tg__ZTV8S21161C8__A3__9S21161C17__8S21161C1[4]),  4,6},
  {&(_tg__ZTV8S21161C2__9S21161C17__8S21161C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21161C1[];
extern  VTBL_ENTRY _ZTV8S21161C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21161C1[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21161C4D0Ev,_ZTv0_n32_N8S21161C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35456_N8S21161C4D0Ev,_ZThn21732_N8S21161C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21161C4D1Ev,_ZTv0_n32_N8S21161C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35456_N8S21161C4D1Ev,_ZThn21732_N8S21161C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21161C4D0Ev,_ZTv0_n16_N8S21161C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34872_N8S21161C4D0Ev,_ZThn21396_N8S21161C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21161C4D1Ev,_ZTv0_n16_N8S21161C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34872_N8S21161C4D1Ev,_ZThn21396_N8S21161C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C4D0Ev,_ZTv0_n20_N8S21161C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35072_N8S21161C4D0Ev,_ZThn21508_N8S21161C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N8S21161C4D0Ev,_ZThn1872_N8S21161C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C4D1Ev,_ZTv0_n20_N8S21161C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35072_N8S21161C4D1Ev,_ZThn21508_N8S21161C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N8S21161C4D1Ev,_ZThn1872_N8S21161C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21161C4D0Ev,_ZTv0_n24_N8S21161C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N8S21161C4D0Ev,_ZThn1684_N8S21161C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21161C4D1Ev,_ZTv0_n24_N8S21161C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N8S21161C4D1Ev,_ZThn1684_N8S21161C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C13D0Ev,_ZTv0_n16_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34872_N9S21161C13D0Ev,_ZThn21396_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C13D1Ev,_ZTv0_n16_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34872_N9S21161C13D1Ev,_ZThn21396_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21161C13D0Ev,_ZTv0_n24_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21161C13D0Ev,_ZThn1684_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21161C13D1Ev,_ZTv0_n24_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21161C13D1Ev,_ZThn1684_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C13D0Ev,_ZTv0_n20_N9S21161C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35072_N9S21161C13D0Ev,_ZThn21508_N9S21161C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C13D0Ev,_ZThn1872_N9S21161C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C13D1Ev,_ZTv0_n20_N9S21161C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35072_N9S21161C13D1Ev,_ZThn21508_N9S21161C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C13D1Ev,_ZThn1872_N9S21161C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C14D0Ev,_ZTv0_n20_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C14D0Ev,_ZThn1872_N9S21161C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35072_N9S21161C14D0Ev,_ZThn21508_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C14D1Ev,_ZTv0_n20_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C14D1Ev,_ZThn1872_N9S21161C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35072_N9S21161C14D1Ev,_ZThn21508_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C14D0Ev,_ZTv0_n16_N9S21161C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34872_N9S21161C14D0Ev,_ZThn21396_N9S21161C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C14D1Ev,_ZTv0_n16_N9S21161C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34872_N9S21161C14D1Ev,_ZThn21396_N9S21161C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C15D0Ev,_ZTv0_n20_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C15D0Ev,_ZThn1872_N9S21161C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35072_N9S21161C15D0Ev,_ZThn21508_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C15D1Ev,_ZTv0_n20_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21161C15D1Ev,_ZThn1872_N9S21161C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35072_N9S21161C15D1Ev,_ZThn21508_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C15D0Ev,_ZTv0_n16_N9S21161C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34872_N9S21161C15D0Ev,_ZThn21396_N9S21161C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C15D1Ev,_ZTv0_n16_N9S21161C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34872_N9S21161C15D1Ev,_ZThn21396_N9S21161C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C2D0Ev,_ZTv0_n12_N8S21161C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21161C2D0Ev,_ZThn4_N8S21161C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C2D1Ev,_ZTv0_n12_N8S21161C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21161C2D1Ev,_ZThn4_N8S21161C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C20D0Ev,_ZTv0_n20_N9S21161C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24464_N9S21161C20D0Ev,_ZThn14748_N9S21161C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56416_N9S21161C20D0Ev,_ZThn34384_N9S21161C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C20D1Ev,_ZTv0_n20_N9S21161C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24464_N9S21161C20D1Ev,_ZThn14748_N9S21161C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56416_N9S21161C20D1Ev,_ZThn34384_N9S21161C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C20D0Ev,_ZTv0_n12_N9S21161C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21224_N9S21161C20D0Ev,_ZThn12788_N9S21161C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C20D1Ev,_ZTv0_n12_N9S21161C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21224_N9S21161C20D1Ev,_ZThn12788_N9S21161C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C20D0Ev,_ZTv0_n16_N9S21161C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56216_N9S21161C20D0Ev,_ZThn34272_N9S21161C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C20D1Ev,_ZTv0_n16_N9S21161C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56216_N9S21161C20D1Ev,_ZThn34272_N9S21161C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D0Ev,_ZTv0_n12_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20616_N8S21161C5D0Ev,_ZThn12432_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C5D1Ev,_ZTv0_n12_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20616_N8S21161C5D1Ev,_ZThn12432_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D0Ev,_ZTv0_n20_N8S21161C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21161C5D0Ev,_ZThn188_N8S21161C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S21161C5D0Ev,_ZThn1728_N8S21161C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn23856_N8S21161C5D0Ev,_ZThn14392_N8S21161C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C5D1Ev,_ZTv0_n20_N8S21161C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21161C5D1Ev,_ZThn188_N8S21161C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S21161C5D1Ev,_ZThn1728_N8S21161C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn23856_N8S21161C5D1Ev,_ZThn14392_N8S21161C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C18D0Ev,_ZTv0_n16_N9S21161C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55832_N9S21161C18D0Ev,_ZThn34048_N9S21161C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C18D1Ev,_ZTv0_n16_N9S21161C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55832_N9S21161C18D1Ev,_ZThn34048_N9S21161C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C18D0Ev,_ZTv0_n20_N9S21161C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56032_N9S21161C18D0Ev,_ZThn34160_N9S21161C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21161C18D1Ev,_ZTv0_n20_N9S21161C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56032_N9S21161C18D1Ev,_ZThn34160_N9S21161C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C18D0Ev,_ZTv0_n12_N9S21161C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20840_N9S21161C18D0Ev,_ZThn12564_N9S21161C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C18D1Ev,_ZTv0_n12_N9S21161C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20840_N9S21161C18D1Ev,_ZThn12564_N9S21161C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D0Ev,_ZTv0_n12_N8S21161C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20616_N8S21161C8D0Ev,_ZThn12432_N8S21161C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn20840_N8S21161C8D0Ev,_ZThn12564_N8S21161C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C8D1Ev,_ZTv0_n12_N8S21161C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20616_N8S21161C8D1Ev,_ZThn12432_N8S21161C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn20840_N8S21161C8D1Ev,_ZThn12564_N8S21161C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C19D0Ev,_ZTv0_n12_N9S21161C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22264_N9S21161C19D0Ev,_ZThn13392_N9S21161C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C19D1Ev,_ZTv0_n12_N9S21161C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22264_N9S21161C19D1Ev,_ZThn13392_N9S21161C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C19D0Ev,_ZTv0_n16_N9S21161C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn57256_N9S21161C19D0Ev,_ZThn34876_N9S21161C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C19D1Ev,_ZTv0_n16_N9S21161C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn57256_N9S21161C19D1Ev,_ZThn34876_N9S21161C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C12D0Ev,_ZTv0_n12_N9S21161C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21224_N9S21161C12D0Ev,_ZThn12788_N9S21161C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn22024_N9S21161C12D0Ev,_ZThn13248_N9S21161C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21161C12D1Ev,_ZTv0_n12_N9S21161C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21224_N9S21161C12D1Ev,_ZThn12788_N9S21161C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn22024_N9S21161C12D1Ev,_ZThn13248_N9S21161C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C12D0Ev,_ZTv0_n16_N9S21161C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56216_N9S21161C12D0Ev,_ZThn34272_N9S21161C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn57016_N9S21161C12D0Ev,_ZThn34732_N9S21161C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21161C12D1Ev,_ZTv0_n16_N9S21161C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56216_N9S21161C12D1Ev,_ZThn34272_N9S21161C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn57016_N9S21161C12D1Ev,_ZThn34732_N9S21161C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21161C1D0Ev,_ZTv0_n32_N8S21161C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn57840_N8S21161C1D0Ev,_ZThn35212_N8S21161C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21161C1D1Ev,_ZTv0_n32_N8S21161C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn57840_N8S21161C1D1Ev,_ZThn35212_N8S21161C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21161C1D0Ev,_ZTv0_n16_N8S21161C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn57256_N8S21161C1D0Ev,_ZThn34876_N8S21161C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21161C1D1Ev,_ZTv0_n16_N8S21161C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn57256_N8S21161C1D1Ev,_ZThn34876_N8S21161C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21161C1D0Ev,_ZTv0_n24_N8S21161C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25168_N8S21161C1D0Ev,_ZThn15164_N8S21161C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21161C1D1Ev,_ZTv0_n24_N8S21161C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25168_N8S21161C1D1Ev,_ZThn15164_N8S21161C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21161C1D0Ev,_ZTv0_n48_N8S21161C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22384_N8S21161C1D0Ev,_ZThn13480_N8S21161C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21161C1D1Ev,_ZTv0_n48_N8S21161C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22384_N8S21161C1D1Ev,_ZThn13480_N8S21161C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C1D0Ev,_ZTv0_n12_N8S21161C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22264_N8S21161C1D0Ev,_ZThn13392_N8S21161C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21161C1D1Ev,_ZTv0_n12_N8S21161C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22264_N8S21161C1D1Ev,_ZThn13392_N8S21161C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C1D0Ev,_ZTv0_n20_N8S21161C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn57456_N8S21161C1D0Ev,_ZThn34988_N8S21161C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25504_N8S21161C1D0Ev,_ZThn15352_N8S21161C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn22256_N8S21161C1D0Ev,_ZThn13388_N8S21161C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21161C1D1Ev,_ZTv0_n20_N8S21161C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn57456_N8S21161C1D1Ev,_ZThn34988_N8S21161C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25504_N8S21161C1D1Ev,_ZThn15352_N8S21161C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn22256_N8S21161C1D1Ev,_ZThn13388_N8S21161C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21161C1 = {  "S21161C1", // class name
  bases_S21161C1, 48,
  &(vtc_S21161C1[0]), // expected_vtbl_contents
  &(vtt_S21161C1[0]), // expected_vtt_contents
  ABISELECT(61744,37744), // object size
  NSPAIRA(_ZTI8S21161C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21161C1),141, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21161C1),108, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2137C11  {
  char s2137c11f0;
  int s2137c11f1[8];
  void *s2137c11f2[4];
  void  mf2137c11(); // _ZN8S2137C119mf2137c11Ev
};
//SIG(-1 S2137C11) C1{ m Fc Fi[8] Fp[4]}


void  S2137C11 ::mf2137c11(){}

static void Test_S2137C11()
{
  {
    init_simple_test("S2137C11");
    S2137C11 lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S2137C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2137C11)");
    check_field_offset(lv, s2137c11f0, 0, "S2137C11.s2137c11f0");
    check_field_offset(lv, s2137c11f1, 4, "S2137C11.s2137c11f1");
    check_field_offset(lv, s2137c11f2, ABISELECT(40,36), "S2137C11.s2137c11f2");
  }
}
static Arrange_To_Call_Me vS2137C11(Test_S2137C11, "S2137C11", ABISELECT(72,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2137C9  {
  int s2137c9f0;
  void *s2137c9f1;
  char s2137c9f2[8];
  void *s2137c9f3;
  ::S3164C4_nt s2137c9f4;
  ::S2137C11 s2137c9f5;
  int s2137c9f6;
  void *s2137c9f7;
  void  mf2137c9(); // _ZN7S2137C98mf2137c9Ev
};
//SIG(-1 S2137C9) C1{ m Fi Fp Fc[8] Fp FC2{ m Fi[2]} FC3{ m Fc Fi[8] Fp[4]} Fi Fp}


void  S2137C9 ::mf2137c9(){}

static void Test_S2137C9()
{
  {
    init_simple_test("S2137C9");
    S2137C9 lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S2137C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2137C9)");
    check_field_offset(lv, s2137c9f0, 0, "S2137C9.s2137c9f0");
    check_field_offset(lv, s2137c9f1, ABISELECT(8,4), "S2137C9.s2137c9f1");
    check_field_offset(lv, s2137c9f2, ABISELECT(16,8), "S2137C9.s2137c9f2");
    check_field_offset(lv, s2137c9f3, ABISELECT(24,16), "S2137C9.s2137c9f3");
    check_field_offset(lv, s2137c9f4, ABISELECT(32,20), "S2137C9.s2137c9f4");
    check_field_offset(lv, s2137c9f5, ABISELECT(40,28), "S2137C9.s2137c9f5");
    check_field_offset(lv, s2137c9f6, ABISELECT(112,80), "S2137C9.s2137c9f6");
    check_field_offset(lv, s2137c9f7, ABISELECT(120,84), "S2137C9.s2137c9f7");
  }
}
static Arrange_To_Call_Me vS2137C9(Test_S2137C9, "S2137C9", ABISELECT(128,88));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2137C18  : S2137C9 {
  void *s2137c18f0[2];
};
//SIG(-1 S2137C18) C1{ BC2{ m Fi Fp Fc[8] Fp FC3{ m Fi[2]} FC4{ m Fc Fi[8] Fp[4]} Fi Fp} Fp[2]}



static void Test_S2137C18()
{
  extern Class_Descriptor cd_S2137C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S2137C18, buf);
    S2137C18 &lv = *(new (buf) S2137C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S2137C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2137C18)");
    check_base_class_offset(lv, (S2137C9*), 0, "S2137C18");
    check_field_offset(lv, s2137c18f0, ABISELECT(128,88), "S2137C18.s2137c18f0");
    test_class_info(&lv, &cd_S2137C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2137C18(Test_S2137C18, "S2137C18", ABISELECT(144,96));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



//skip512 S2137C19_nt

#else // __cplusplus

extern Class_Descriptor cd_S2213C26;
static Base_Class bases_S2137C19_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2213C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S2137C23_nt  {
  void *s2137c23f0[2];
  void  mf2137c23(); // _ZN11S2137C23_nt9mf2137c23Ev
};
//SIG(-1 S2137C23_nt) C1{ m Fp[2]}


void  S2137C23_nt ::mf2137c23(){}

//skip512 S2137C23_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2137C4  {
  ::S2213C25 s2137c4f0;
  int s2137c4f1;
  ::S2137C9 s2137c4f2;
  void *s2137c4f3;
  ::S2213C5_nt s2137c4f4;
  void *s2137c4f5[3];
  ::S2213C37 s2137c4f6;
  void *s2137c4f7[4];
  ::S2137C18 s2137c4f8;
  ::S2137C19_nt s2137c4f9;
  int s2137c4f10;
  __tsi64 s2137c4f11;
  char s2137c4f12;
  int s2137c4f13;
  __tsi64 s2137c4f14;
  ::S2137C23_nt s2137c4f15[5];
  void *s2137c4f16[2];
  virtual  ~S2137C4(); // _ZN7S2137C4D1Ev
  virtual void  v21(); // _ZN7S2137C43v21Ev
  virtual void  v22(); // _ZN7S2137C43v22Ev
  virtual void  v23(); // _ZN7S2137C43v23Ev
  virtual void  v24(); // _ZN7S2137C43v24Ev
  virtual void  v25(); // _ZN7S2137C43v25Ev
  virtual void  v26(); // _ZN7S2137C43v26Ev
  virtual void  v27(); // _ZN7S2137C43v27Ev
  virtual void  v28(); // _ZN7S2137C43v28Ev
  virtual void  v29(); // _ZN7S2137C43v29Ev
  virtual void  v30(); // _ZN7S2137C43v30Ev
  virtual void  v31(); // _ZN7S2137C43v31Ev
  virtual void  v32(); // _ZN7S2137C43v32Ev
  virtual void  v33(); // _ZN7S2137C43v33Ev
  virtual void  v34(); // _ZN7S2137C43v34Ev
  virtual void  v35(); // _ZN7S2137C43v35Ev
  virtual void  v36(); // _ZN7S2137C43v36Ev
  virtual void  v37(); // _ZN7S2137C43v37Ev
  virtual void  v38(); // _ZN7S2137C43v38Ev
  virtual void  v39(); // _ZN7S2137C43v39Ev
  virtual void  v40(); // _ZN7S2137C43v40Ev
  virtual void  v41(); // _ZN7S2137C43v41Ev
  virtual void  v42(); // _ZN7S2137C43v42Ev
  virtual void  v43(); // _ZN7S2137C43v43Ev
  virtual void  v44(); // _ZN7S2137C43v44Ev
  virtual void  v45(); // _ZN7S2137C43v45Ev
  virtual void  v46(); // _ZN7S2137C43v46Ev
  virtual void  v47(); // _ZN7S2137C43v47Ev
  virtual void  v48(); // _ZN7S2137C43v48Ev
  virtual void  v49(); // _ZN7S2137C43v49Ev
  virtual void  v50(); // _ZN7S2137C43v50Ev
  virtual void  v51(); // _ZN7S2137C43v51Ev
  virtual void  v52(); // _ZN7S2137C43v52Ev
  virtual void  v53(); // _ZN7S2137C43v53Ev
  virtual void  v54(); // _ZN7S2137C43v54Ev
  virtual void  v55(); // _ZN7S2137C43v55Ev
  virtual void  v56(); // _ZN7S2137C43v56Ev
  virtual void  v57(); // _ZN7S2137C43v57Ev
  virtual void  v58(); // _ZN7S2137C43v58Ev
  virtual void  v59(); // _ZN7S2137C43v59Ev
  virtual void  v60(); // _ZN7S2137C43v60Ev
  virtual void  v61(); // _ZN7S2137C43v61Ev
  virtual void  v62(); // _ZN7S2137C43v62Ev
  virtual void  v63(); // _ZN7S2137C43v63Ev
  virtual void  v64(); // _ZN7S2137C43v64Ev
  virtual void  v65(); // _ZN7S2137C43v65Ev
  virtual void  v66(); // _ZN7S2137C43v66Ev
  virtual void  v67(); // _ZN7S2137C43v67Ev
  virtual void  v68(); // _ZN7S2137C43v68Ev
  virtual void  v69(); // _ZN7S2137C43v69Ev
  virtual void  v70(); // _ZN7S2137C43v70Ev
  virtual void  v71(); // _ZN7S2137C43v71Ev
  virtual void  v72(); // _ZN7S2137C43v72Ev
  virtual void  v73(); // _ZN7S2137C43v73Ev
  virtual void  v74(); // _ZN7S2137C43v74Ev
  virtual void  v75(); // _ZN7S2137C43v75Ev
  virtual void  v76(); // _ZN7S2137C43v76Ev
  virtual void  v77(); // _ZN7S2137C43v77Ev
  virtual void  v78(); // _ZN7S2137C43v78Ev
  virtual void  v79(); // _ZN7S2137C43v79Ev
  virtual void  v80(); // _ZN7S2137C43v80Ev
  virtual void  v81(); // _ZN7S2137C43v81Ev
  virtual void  v82(); // _ZN7S2137C43v82Ev
  virtual void  v83(); // _ZN7S2137C43v83Ev
  virtual void  v84(); // _ZN7S2137C43v84Ev
  virtual void  v85(); // _ZN7S2137C43v85Ev
  virtual void  v86(); // _ZN7S2137C43v86Ev
  virtual void  v87(); // _ZN7S2137C43v87Ev
  virtual void  v88(); // _ZN7S2137C43v88Ev
  virtual void  v89(); // _ZN7S2137C43v89Ev
  virtual void  v90(); // _ZN7S2137C43v90Ev
  virtual void  v91(); // _ZN7S2137C43v91Ev
  virtual void  v92(); // _ZN7S2137C43v92Ev
  virtual void  v93(); // _ZN7S2137C43v93Ev
  virtual void  v94(); // _ZN7S2137C43v94Ev
  virtual void  v95(); // _ZN7S2137C43v95Ev
  S2137C4(); // tgen
};
//SIG(-1 S2137C4) 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 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 FC2{ BC3{ m Fp Fi FC4{ m} FC4}} Fi FC5{ m Fi Fp Fc[8] Fp FC6{ m Fi[2]} FC7{ m Fc Fi[8] Fp[4]} Fi Fp} Fp FC8{ BC9{ m Fp Fi FC10{ m} FC11{ m}}} Fp[3] FC12{ m Fp Fi[2] FC13{ m}} Fp[4] FC14{ BC5 Fp[2]} FC15{ BC3} Fi FL Fc Fi FL FC16{ m Fp[2]}[5] Fp[2]}


 S2137C4 ::~S2137C4(){ note_dtor("S2137C4", this);}
void  S2137C4 ::v21(){vfunc_called(this, "_ZN7S2137C43v21Ev");}
void  S2137C4 ::v22(){vfunc_called(this, "_ZN7S2137C43v22Ev");}
void  S2137C4 ::v23(){vfunc_called(this, "_ZN7S2137C43v23Ev");}
void  S2137C4 ::v24(){vfunc_called(this, "_ZN7S2137C43v24Ev");}
void  S2137C4 ::v25(){vfunc_called(this, "_ZN7S2137C43v25Ev");}
void  S2137C4 ::v26(){vfunc_called(this, "_ZN7S2137C43v26Ev");}
void  S2137C4 ::v27(){vfunc_called(this, "_ZN7S2137C43v27Ev");}
void  S2137C4 ::v28(){vfunc_called(this, "_ZN7S2137C43v28Ev");}
void  S2137C4 ::v29(){vfunc_called(this, "_ZN7S2137C43v29Ev");}
void  S2137C4 ::v30(){vfunc_called(this, "_ZN7S2137C43v30Ev");}
void  S2137C4 ::v31(){vfunc_called(this, "_ZN7S2137C43v31Ev");}
void  S2137C4 ::v32(){vfunc_called(this, "_ZN7S2137C43v32Ev");}
void  S2137C4 ::v33(){vfunc_called(this, "_ZN7S2137C43v33Ev");}
void  S2137C4 ::v34(){vfunc_called(this, "_ZN7S2137C43v34Ev");}
void  S2137C4 ::v35(){vfunc_called(this, "_ZN7S2137C43v35Ev");}
void  S2137C4 ::v36(){vfunc_called(this, "_ZN7S2137C43v36Ev");}
void  S2137C4 ::v37(){vfunc_called(this, "_ZN7S2137C43v37Ev");}
void  S2137C4 ::v38(){vfunc_called(this, "_ZN7S2137C43v38Ev");}
void  S2137C4 ::v39(){vfunc_called(this, "_ZN7S2137C43v39Ev");}
void  S2137C4 ::v40(){vfunc_called(this, "_ZN7S2137C43v40Ev");}
void  S2137C4 ::v41(){vfunc_called(this, "_ZN7S2137C43v41Ev");}
void  S2137C4 ::v42(){vfunc_called(this, "_ZN7S2137C43v42Ev");}
void  S2137C4 ::v43(){vfunc_called(this, "_ZN7S2137C43v43Ev");}
void  S2137C4 ::v44(){vfunc_called(this, "_ZN7S2137C43v44Ev");}
void  S2137C4 ::v45(){vfunc_called(this, "_ZN7S2137C43v45Ev");}
void  S2137C4 ::v46(){vfunc_called(this, "_ZN7S2137C43v46Ev");}
void  S2137C4 ::v47(){vfunc_called(this, "_ZN7S2137C43v47Ev");}
void  S2137C4 ::v48(){vfunc_called(this, "_ZN7S2137C43v48Ev");}
void  S2137C4 ::v49(){vfunc_called(this, "_ZN7S2137C43v49Ev");}
void  S2137C4 ::v50(){vfunc_called(this, "_ZN7S2137C43v50Ev");}
void  S2137C4 ::v51(){vfunc_called(this, "_ZN7S2137C43v51Ev");}
void  S2137C4 ::v52(){vfunc_called(this, "_ZN7S2137C43v52Ev");}
void  S2137C4 ::v53(){vfunc_called(this, "_ZN7S2137C43v53Ev");}
void  S2137C4 ::v54(){vfunc_called(this, "_ZN7S2137C43v54Ev");}
void  S2137C4 ::v55(){vfunc_called(this, "_ZN7S2137C43v55Ev");}
void  S2137C4 ::v56(){vfunc_called(this, "_ZN7S2137C43v56Ev");}
void  S2137C4 ::v57(){vfunc_called(this, "_ZN7S2137C43v57Ev");}
void  S2137C4 ::v58(){vfunc_called(this, "_ZN7S2137C43v58Ev");}
void  S2137C4 ::v59(){vfunc_called(this, "_ZN7S2137C43v59Ev");}
void  S2137C4 ::v60(){vfunc_called(this, "_ZN7S2137C43v60Ev");}
void  S2137C4 ::v61(){vfunc_called(this, "_ZN7S2137C43v61Ev");}
void  S2137C4 ::v62(){vfunc_called(this, "_ZN7S2137C43v62Ev");}
void  S2137C4 ::v63(){vfunc_called(this, "_ZN7S2137C43v63Ev");}
void  S2137C4 ::v64(){vfunc_called(this, "_ZN7S2137C43v64Ev");}
void  S2137C4 ::v65(){vfunc_called(this, "_ZN7S2137C43v65Ev");}
void  S2137C4 ::v66(){vfunc_called(this, "_ZN7S2137C43v66Ev");}
void  S2137C4 ::v67(){vfunc_called(this, "_ZN7S2137C43v67Ev");}
void  S2137C4 ::v68(){vfunc_called(this, "_ZN7S2137C43v68Ev");}
void  S2137C4 ::v69(){vfunc_called(this, "_ZN7S2137C43v69Ev");}
void  S2137C4 ::v70(){vfunc_called(this, "_ZN7S2137C43v70Ev");}
void  S2137C4 ::v71(){vfunc_called(this, "_ZN7S2137C43v71Ev");}
void  S2137C4 ::v72(){vfunc_called(this, "_ZN7S2137C43v72Ev");}
void  S2137C4 ::v73(){vfunc_called(this, "_ZN7S2137C43v73Ev");}
void  S2137C4 ::v74(){vfunc_called(this, "_ZN7S2137C43v74Ev");}
void  S2137C4 ::v75(){vfunc_called(this, "_ZN7S2137C43v75Ev");}
void  S2137C4 ::v76(){vfunc_called(this, "_ZN7S2137C43v76Ev");}
void  S2137C4 ::v77(){vfunc_called(this, "_ZN7S2137C43v77Ev");}
void  S2137C4 ::v78(){vfunc_called(this, "_ZN7S2137C43v78Ev");}
void  S2137C4 ::v79(){vfunc_called(this, "_ZN7S2137C43v79Ev");}
void  S2137C4 ::v80(){vfunc_called(this, "_ZN7S2137C43v80Ev");}
void  S2137C4 ::v81(){vfunc_called(this, "_ZN7S2137C43v81Ev");}
void  S2137C4 ::v82(){vfunc_called(this, "_ZN7S2137C43v82Ev");}
void  S2137C4 ::v83(){vfunc_called(this, "_ZN7S2137C43v83Ev");}
void  S2137C4 ::v84(){vfunc_called(this, "_ZN7S2137C43v84Ev");}
void  S2137C4 ::v85(){vfunc_called(this, "_ZN7S2137C43v85Ev");}
void  S2137C4 ::v86(){vfunc_called(this, "_ZN7S2137C43v86Ev");}
void  S2137C4 ::v87(){vfunc_called(this, "_ZN7S2137C43v87Ev");}
void  S2137C4 ::v88(){vfunc_called(this, "_ZN7S2137C43v88Ev");}
void  S2137C4 ::v89(){vfunc_called(this, "_ZN7S2137C43v89Ev");}
void  S2137C4 ::v90(){vfunc_called(this, "_ZN7S2137C43v90Ev");}
void  S2137C4 ::v91(){vfunc_called(this, "_ZN7S2137C43v91Ev");}
void  S2137C4 ::v92(){vfunc_called(this, "_ZN7S2137C43v92Ev");}
void  S2137C4 ::v93(){vfunc_called(this, "_ZN7S2137C43v93Ev");}
void  S2137C4 ::v94(){vfunc_called(this, "_ZN7S2137C43v94Ev");}
void  S2137C4 ::v95(){vfunc_called(this, "_ZN7S2137C43v95Ev");}
S2137C4 ::S2137C4(){ note_ctor("S2137C4", this);} // tgen

static void Test_S2137C4()
{
  extern Class_Descriptor cd_S2137C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(70,89)];
    init_test(&cd_S2137C4, buf);
    S2137C4 *dp, &lv = *(dp=new (buf) S2137C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(552,352), "sizeof(S2137C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2137C4)");
    check_field_offset(lv, s2137c4f0, ABISELECT(8,4), "S2137C4.s2137c4f0");
    check_field_offset(lv, s2137c4f1, ABISELECT(24,16), "S2137C4.s2137c4f1");
    check_field_offset(lv, s2137c4f2, ABISELECT(32,20), "S2137C4.s2137c4f2");
    check_field_offset(lv, s2137c4f3, ABISELECT(160,108), "S2137C4.s2137c4f3");
    check_field_offset(lv, s2137c4f4, ABISELECT(168,112), "S2137C4.s2137c4f4");
    check_field_offset(lv, s2137c4f5, ABISELECT(184,124), "S2137C4.s2137c4f5");
    check_field_offset(lv, s2137c4f6, ABISELECT(208,136), "S2137C4.s2137c4f6");
    check_field_offset(lv, s2137c4f7, ABISELECT(232,152), "S2137C4.s2137c4f7");
    check_field_offset(lv, s2137c4f8, ABISELECT(264,168), "S2137C4.s2137c4f8");
    check_field_offset(lv, s2137c4f9, ABISELECT(408,264), "S2137C4.s2137c4f9");
    check_field_offset(lv, s2137c4f10, ABISELECT(424,276), "S2137C4.s2137c4f10");
    check_field_offset(lv, s2137c4f11, ABISELECT(432,280), "S2137C4.s2137c4f11");
    check_field_offset(lv, s2137c4f12, ABISELECT(440,288), "S2137C4.s2137c4f12");
    check_field_offset(lv, s2137c4f13, ABISELECT(444,292), "S2137C4.s2137c4f13");
    check_field_offset(lv, s2137c4f14, ABISELECT(448,296), "S2137C4.s2137c4f14");
    check_field_offset(lv, s2137c4f15, ABISELECT(456,304), "S2137C4.s2137c4f15");
    check_field_offset(lv, s2137c4f16, ABISELECT(536,344), "S2137C4.s2137c4f16");
    test_class_info(&lv, &cd_S2137C4);
    dp->~S2137C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2137C4(Test_S2137C4, "S2137C4", ABISELECT(552,352));

#else // __cplusplus

extern void _ZN7S2137C4C1Ev();
extern void _ZN7S2137C4D1Ev();
Name_Map name_map_S2137C4[] = {
  NSPAIR(_ZN7S2137C4C1Ev),
  NSPAIR(_ZN7S2137C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2137C4[];
extern void _ZN7S2137C4D1Ev();
extern void _ZN7S2137C4D0Ev();
extern void _ZN7S2137C43v21Ev();
extern void _ZN7S2137C43v22Ev();
extern void _ZN7S2137C43v23Ev();
extern void _ZN7S2137C43v24Ev();
extern void _ZN7S2137C43v25Ev();
extern void _ZN7S2137C43v26Ev();
extern void _ZN7S2137C43v27Ev();
extern void _ZN7S2137C43v28Ev();
extern void _ZN7S2137C43v29Ev();
extern void _ZN7S2137C43v30Ev();
extern void _ZN7S2137C43v31Ev();
extern void _ZN7S2137C43v32Ev();
extern void _ZN7S2137C43v33Ev();
extern void _ZN7S2137C43v34Ev();
extern void _ZN7S2137C43v35Ev();
extern void _ZN7S2137C43v36Ev();
extern void _ZN7S2137C43v37Ev();
extern void _ZN7S2137C43v38Ev();
extern void _ZN7S2137C43v39Ev();
extern void _ZN7S2137C43v40Ev();
extern void _ZN7S2137C43v41Ev();
extern void _ZN7S2137C43v42Ev();
extern void _ZN7S2137C43v43Ev();
extern void _ZN7S2137C43v44Ev();
extern void _ZN7S2137C43v45Ev();
extern void _ZN7S2137C43v46Ev();
extern void _ZN7S2137C43v47Ev();
extern void _ZN7S2137C43v48Ev();
extern void _ZN7S2137C43v49Ev();
extern void _ZN7S2137C43v50Ev();
extern void _ZN7S2137C43v51Ev();
extern void _ZN7S2137C43v52Ev();
extern void _ZN7S2137C43v53Ev();
extern void _ZN7S2137C43v54Ev();
extern void _ZN7S2137C43v55Ev();
extern void _ZN7S2137C43v56Ev();
extern void _ZN7S2137C43v57Ev();
extern void _ZN7S2137C43v58Ev();
extern void _ZN7S2137C43v59Ev();
extern void _ZN7S2137C43v60Ev();
extern void _ZN7S2137C43v61Ev();
extern void _ZN7S2137C43v62Ev();
extern void _ZN7S2137C43v63Ev();
extern void _ZN7S2137C43v64Ev();
extern void _ZN7S2137C43v65Ev();
extern void _ZN7S2137C43v66Ev();
extern void _ZN7S2137C43v67Ev();
extern void _ZN7S2137C43v68Ev();
extern void _ZN7S2137C43v69Ev();
extern void _ZN7S2137C43v70Ev();
extern void _ZN7S2137C43v71Ev();
extern void _ZN7S2137C43v72Ev();
extern void _ZN7S2137C43v73Ev();
extern void _ZN7S2137C43v74Ev();
extern void _ZN7S2137C43v75Ev();
extern void _ZN7S2137C43v76Ev();
extern void _ZN7S2137C43v77Ev();
extern void _ZN7S2137C43v78Ev();
extern void _ZN7S2137C43v79Ev();
extern void _ZN7S2137C43v80Ev();
extern void _ZN7S2137C43v81Ev();
extern void _ZN7S2137C43v82Ev();
extern void _ZN7S2137C43v83Ev();
extern void _ZN7S2137C43v84Ev();
extern void _ZN7S2137C43v85Ev();
extern void _ZN7S2137C43v86Ev();
extern void _ZN7S2137C43v87Ev();
extern void _ZN7S2137C43v88Ev();
extern void _ZN7S2137C43v89Ev();
extern void _ZN7S2137C43v90Ev();
extern void _ZN7S2137C43v91Ev();
extern void _ZN7S2137C43v92Ev();
extern void _ZN7S2137C43v93Ev();
extern void _ZN7S2137C43v94Ev();
extern void _ZN7S2137C43v95Ev();
static  VTBL_ENTRY vtc_S2137C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2137C4[0]),
  (VTBL_ENTRY)&_ZN7S2137C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2137C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v21Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v22Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v23Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v24Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v25Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v26Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v27Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v28Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v29Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v30Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v31Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v32Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v33Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v34Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v35Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v36Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v37Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v38Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v39Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v40Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v41Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v42Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v43Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v44Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v45Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v46Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v47Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v48Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v51Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v52Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v53Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v54Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v55Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v56Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v57Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v58Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v59Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v60Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v61Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v62Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v63Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v64Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v65Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v66Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v67Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v68Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v69Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v70Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v71Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v72Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v73Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v74Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v75Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v76Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v77Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v78Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v79Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v80Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v81Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v82Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v83Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v84Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v85Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v86Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v87Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v88Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v89Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v90Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v91Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v92Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v93Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v94Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v95Ev,
};
extern VTBL_ENTRY _ZTI7S2137C4[];
extern  VTBL_ENTRY _ZTV7S2137C4[];
Class_Descriptor cd_S2137C4 = {  "S2137C4", // class name
  0,0,//no base classes
  &(vtc_S2137C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(552,352), // object size
  NSPAIRA(_ZTI7S2137C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2137C4),79, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2137C3  : S2137C4 {
  virtual  ~S2137C3(); // _ZN7S2137C3D1Ev
  virtual void  v96(); // _ZN7S2137C33v96Ev
  virtual void  v97(); // _ZN7S2137C33v97Ev
  virtual void  v98(); // _ZN7S2137C33v98Ev
  virtual void  v99(); // _ZN7S2137C33v99Ev
  virtual void  v100(); // _ZN7S2137C34v100Ev
  virtual void  v101(); // _ZN7S2137C34v101Ev
  virtual void  v102(); // _ZN7S2137C34v102Ev
  S2137C3(); // tgen
};
//SIG(-1 S2137C3) C1{ BC2{ 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 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 FC3{ BC4{ m Fp Fi FC5{ m} FC5}} Fi FC6{ m Fi Fp Fc[8] Fp FC7{ m Fi[2]} FC8{ m Fc Fi[8] Fp[4]} Fi Fp} Fp FC9{ BC10{ m Fp Fi FC11{ m} FC12{ m}}} Fp[3] FC13{ m Fp Fi[2] FC14{ m}} Fp[4] FC15{ BC6 Fp[2]} FC16{ BC4} Fi FL Fc Fi FL FC17{ m Fp[2]}[5] Fp[2]} vd v1 v2 v3 v4 v5 v6 v7}


 S2137C3 ::~S2137C3(){ note_dtor("S2137C3", this);}
void  S2137C3 ::v96(){vfunc_called(this, "_ZN7S2137C33v96Ev");}
void  S2137C3 ::v97(){vfunc_called(this, "_ZN7S2137C33v97Ev");}
void  S2137C3 ::v98(){vfunc_called(this, "_ZN7S2137C33v98Ev");}
void  S2137C3 ::v99(){vfunc_called(this, "_ZN7S2137C33v99Ev");}
void  S2137C3 ::v100(){vfunc_called(this, "_ZN7S2137C34v100Ev");}
void  S2137C3 ::v101(){vfunc_called(this, "_ZN7S2137C34v101Ev");}
void  S2137C3 ::v102(){vfunc_called(this, "_ZN7S2137C34v102Ev");}
S2137C3 ::S2137C3(){ note_ctor("S2137C3", this);} // tgen

static void Test_S2137C3()
{
  extern Class_Descriptor cd_S2137C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(70,89)];
    init_test(&cd_S2137C3, buf);
    S2137C3 *dp, &lv = *(dp=new (buf) S2137C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(552,352), "sizeof(S2137C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2137C3)");
    check_base_class_offset(lv, (S2137C4*), 0, "S2137C3");
    test_class_info(&lv, &cd_S2137C3);
    dp->~S2137C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2137C3(Test_S2137C3, "S2137C3", ABISELECT(552,352));

#else // __cplusplus

extern void _ZN7S2137C3C1Ev();
extern void _ZN7S2137C3D1Ev();
Name_Map name_map_S2137C3[] = {
  NSPAIR(_ZN7S2137C3C1Ev),
  NSPAIR(_ZN7S2137C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2137C4;
extern VTBL_ENTRY _ZTI7S2137C4[];
extern  VTBL_ENTRY _ZTV7S2137C4[];
static Base_Class bases_S2137C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2137C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2137C3[];
extern void _ZN7S2137C3D1Ev();
extern void _ZN7S2137C3D0Ev();
extern void _ZN7S2137C43v21Ev();
extern void _ZN7S2137C43v22Ev();
extern void _ZN7S2137C43v23Ev();
extern void _ZN7S2137C43v24Ev();
extern void _ZN7S2137C43v25Ev();
extern void _ZN7S2137C43v26Ev();
extern void _ZN7S2137C43v27Ev();
extern void _ZN7S2137C43v28Ev();
extern void _ZN7S2137C43v29Ev();
extern void _ZN7S2137C43v30Ev();
extern void _ZN7S2137C43v31Ev();
extern void _ZN7S2137C43v32Ev();
extern void _ZN7S2137C43v33Ev();
extern void _ZN7S2137C43v34Ev();
extern void _ZN7S2137C43v35Ev();
extern void _ZN7S2137C43v36Ev();
extern void _ZN7S2137C43v37Ev();
extern void _ZN7S2137C43v38Ev();
extern void _ZN7S2137C43v39Ev();
extern void _ZN7S2137C43v40Ev();
extern void _ZN7S2137C43v41Ev();
extern void _ZN7S2137C43v42Ev();
extern void _ZN7S2137C43v43Ev();
extern void _ZN7S2137C43v44Ev();
extern void _ZN7S2137C43v45Ev();
extern void _ZN7S2137C43v46Ev();
extern void _ZN7S2137C43v47Ev();
extern void _ZN7S2137C43v48Ev();
extern void _ZN7S2137C43v49Ev();
extern void _ZN7S2137C43v50Ev();
extern void _ZN7S2137C43v51Ev();
extern void _ZN7S2137C43v52Ev();
extern void _ZN7S2137C43v53Ev();
extern void _ZN7S2137C43v54Ev();
extern void _ZN7S2137C43v55Ev();
extern void _ZN7S2137C43v56Ev();
extern void _ZN7S2137C43v57Ev();
extern void _ZN7S2137C43v58Ev();
extern void _ZN7S2137C43v59Ev();
extern void _ZN7S2137C43v60Ev();
extern void _ZN7S2137C43v61Ev();
extern void _ZN7S2137C43v62Ev();
extern void _ZN7S2137C43v63Ev();
extern void _ZN7S2137C43v64Ev();
extern void _ZN7S2137C43v65Ev();
extern void _ZN7S2137C43v66Ev();
extern void _ZN7S2137C43v67Ev();
extern void _ZN7S2137C43v68Ev();
extern void _ZN7S2137C43v69Ev();
extern void _ZN7S2137C43v70Ev();
extern void _ZN7S2137C43v71Ev();
extern void _ZN7S2137C43v72Ev();
extern void _ZN7S2137C43v73Ev();
extern void _ZN7S2137C43v74Ev();
extern void _ZN7S2137C43v75Ev();
extern void _ZN7S2137C43v76Ev();
extern void _ZN7S2137C43v77Ev();
extern void _ZN7S2137C43v78Ev();
extern void _ZN7S2137C43v79Ev();
extern void _ZN7S2137C43v80Ev();
extern void _ZN7S2137C43v81Ev();
extern void _ZN7S2137C43v82Ev();
extern void _ZN7S2137C43v83Ev();
extern void _ZN7S2137C43v84Ev();
extern void _ZN7S2137C43v85Ev();
extern void _ZN7S2137C43v86Ev();
extern void _ZN7S2137C43v87Ev();
extern void _ZN7S2137C43v88Ev();
extern void _ZN7S2137C43v89Ev();
extern void _ZN7S2137C43v90Ev();
extern void _ZN7S2137C43v91Ev();
extern void _ZN7S2137C43v92Ev();
extern void _ZN7S2137C43v93Ev();
extern void _ZN7S2137C43v94Ev();
extern void _ZN7S2137C43v95Ev();
extern void _ZN7S2137C33v96Ev();
extern void _ZN7S2137C33v97Ev();
extern void _ZN7S2137C33v98Ev();
extern void _ZN7S2137C33v99Ev();
extern void _ZN7S2137C34v100Ev();
extern void _ZN7S2137C34v101Ev();
extern void _ZN7S2137C34v102Ev();
static  VTBL_ENTRY vtc_S2137C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2137C3[0]),
  (VTBL_ENTRY)&_ZN7S2137C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2137C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v21Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v22Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v23Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v24Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v25Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v26Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v27Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v28Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v29Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v30Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v31Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v32Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v33Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v34Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v35Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v36Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v37Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v38Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v39Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v40Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v41Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v42Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v43Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v44Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v45Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v46Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v47Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v48Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v51Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v52Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v53Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v54Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v55Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v56Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v57Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v58Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v59Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v60Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v61Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v62Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v63Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v64Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v65Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v66Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v67Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v68Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v69Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v70Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v71Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v72Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v73Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v74Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v75Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v76Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v77Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v78Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v79Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v80Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v81Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v82Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v83Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v84Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v85Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v86Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v87Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v88Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v89Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v90Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v91Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v92Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v93Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v94Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v95Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v99Ev,
  (VTBL_ENTRY)&_ZN7S2137C34v100Ev,
  (VTBL_ENTRY)&_ZN7S2137C34v101Ev,
  (VTBL_ENTRY)&_ZN7S2137C34v102Ev,
};
extern VTBL_ENTRY _ZTI7S2137C3[];
extern  VTBL_ENTRY _ZTV7S2137C3[];
Class_Descriptor cd_S2137C3 = {  "S2137C3", // class name
  bases_S2137C3, 1,
  &(vtc_S2137C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(552,352), // object size
  NSPAIRA(_ZTI7S2137C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2137C3),86, //virtual function table var
  2, // 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  S2137C26_nt  {
  int s2137c26f0[2];
  void  mf2137c26(); // _ZN11S2137C26_nt9mf2137c26Ev
};
//SIG(-1 S2137C26_nt) C1{ m Fi[2]}


void  S2137C26_nt ::mf2137c26(){}

//skip512 S2137C26_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2137C2  : S2137C3 {
  ::S2213C20_nt s2137c2f0;
  ::S2137C26_nt s2137c2f1;
  virtual  ~S2137C2(); // _ZN7S2137C2D1Ev
  virtual void  v103(); // _ZN7S2137C24v103Ev
  virtual void  v104(); // _ZN7S2137C24v104Ev
  virtual void  v105(); // _ZN7S2137C24v105Ev
  virtual void  v106(); // _ZN7S2137C24v106Ev
  virtual void  v107(); // _ZN7S2137C24v107Ev
  virtual void  v108(); // _ZN7S2137C24v108Ev
  virtual void  v109(); // _ZN7S2137C24v109Ev
  virtual void  v110(); // _ZN7S2137C24v110Ev
  virtual void  v111(); // _ZN7S2137C24v111Ev
  virtual void  v112(); // _ZN7S2137C24v112Ev
  virtual void  v113(); // _ZN7S2137C24v113Ev
  virtual void  v114(); // _ZN7S2137C24v114Ev
  virtual void  v115(); // _ZN7S2137C24v115Ev
  virtual void  v116(); // _ZN7S2137C24v116Ev
  virtual void  v117(); // _ZN7S2137C24v117Ev
  S2137C2(); // tgen
};
//SIG(-1 S2137C2) C1{ BC2{ BC3{ vd 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 FC4{ BC5{ m Fp Fi FC6{ m} FC6}} Fi FC7{ m Fi Fp Fc[8] Fp FC8{ m Fi[2]} FC9{ m Fc Fi[8] Fp[4]} Fi Fp} Fp FC10{ BC11{ m Fp Fi FC12{ m} FC13{ m}}} Fp[3] FC14{ m Fp Fi[2] FC15{ m}} Fp[4] FC16{ BC7 Fp[2]} FC17{ BC5} Fi FL Fc Fi FL FC18{ m Fp[2]}[5] Fp[2]} vd v91 v92 v93 v94 v95 v96 v97} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 FC19{ m Fp Fi FC13} FC20{ m Fi[2]}}


 S2137C2 ::~S2137C2(){ note_dtor("S2137C2", this);}
void  S2137C2 ::v103(){vfunc_called(this, "_ZN7S2137C24v103Ev");}
void  S2137C2 ::v104(){vfunc_called(this, "_ZN7S2137C24v104Ev");}
void  S2137C2 ::v105(){vfunc_called(this, "_ZN7S2137C24v105Ev");}
void  S2137C2 ::v106(){vfunc_called(this, "_ZN7S2137C24v106Ev");}
void  S2137C2 ::v107(){vfunc_called(this, "_ZN7S2137C24v107Ev");}
void  S2137C2 ::v108(){vfunc_called(this, "_ZN7S2137C24v108Ev");}
void  S2137C2 ::v109(){vfunc_called(this, "_ZN7S2137C24v109Ev");}
void  S2137C2 ::v110(){vfunc_called(this, "_ZN7S2137C24v110Ev");}
void  S2137C2 ::v111(){vfunc_called(this, "_ZN7S2137C24v111Ev");}
void  S2137C2 ::v112(){vfunc_called(this, "_ZN7S2137C24v112Ev");}
void  S2137C2 ::v113(){vfunc_called(this, "_ZN7S2137C24v113Ev");}
void  S2137C2 ::v114(){vfunc_called(this, "_ZN7S2137C24v114Ev");}
void  S2137C2 ::v115(){vfunc_called(this, "_ZN7S2137C24v115Ev");}
void  S2137C2 ::v116(){vfunc_called(this, "_ZN7S2137C24v116Ev");}
void  S2137C2 ::v117(){vfunc_called(this, "_ZN7S2137C24v117Ev");}
S2137C2 ::S2137C2(){ note_ctor("S2137C2", this);} // tgen

static void Test_S2137C2()
{
  extern Class_Descriptor cd_S2137C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(73,94)];
    init_test(&cd_S2137C2, buf);
    S2137C2 *dp, &lv = *(dp=new (buf) S2137C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,372), "sizeof(S2137C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2137C2)");
    check_base_class_offset(lv, (S2137C4*)(S2137C3*), 0, "S2137C2");
    check_base_class_offset(lv, (S2137C3*), 0, "S2137C2");
    check_field_offset(lv, s2137c2f0, ABISELECT(552,352), "S2137C2.s2137c2f0");
    check_field_offset(lv, s2137c2f1, ABISELECT(568,364), "S2137C2.s2137c2f1");
    test_class_info(&lv, &cd_S2137C2);
    dp->~S2137C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2137C2(Test_S2137C2, "S2137C2", ABISELECT(576,372));

#else // __cplusplus

extern void _ZN7S2137C2C1Ev();
extern void _ZN7S2137C2D1Ev();
Name_Map name_map_S2137C2[] = {
  NSPAIR(_ZN7S2137C2C1Ev),
  NSPAIR(_ZN7S2137C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2137C4;
extern VTBL_ENTRY _ZTI7S2137C4[];
extern  VTBL_ENTRY _ZTV7S2137C4[];
extern Class_Descriptor cd_S2137C3;
extern VTBL_ENTRY _ZTI7S2137C3[];
extern  VTBL_ENTRY _ZTV7S2137C3[];
static Base_Class bases_S2137C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2137C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2137C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S2137C2[];
extern void _ZN7S2137C2D1Ev();
extern void _ZN7S2137C2D0Ev();
extern void _ZN7S2137C43v21Ev();
extern void _ZN7S2137C43v22Ev();
extern void _ZN7S2137C43v23Ev();
extern void _ZN7S2137C43v24Ev();
extern void _ZN7S2137C43v25Ev();
extern void _ZN7S2137C43v26Ev();
extern void _ZN7S2137C43v27Ev();
extern void _ZN7S2137C43v28Ev();
extern void _ZN7S2137C43v29Ev();
extern void _ZN7S2137C43v30Ev();
extern void _ZN7S2137C43v31Ev();
extern void _ZN7S2137C43v32Ev();
extern void _ZN7S2137C43v33Ev();
extern void _ZN7S2137C43v34Ev();
extern void _ZN7S2137C43v35Ev();
extern void _ZN7S2137C43v36Ev();
extern void _ZN7S2137C43v37Ev();
extern void _ZN7S2137C43v38Ev();
extern void _ZN7S2137C43v39Ev();
extern void _ZN7S2137C43v40Ev();
extern void _ZN7S2137C43v41Ev();
extern void _ZN7S2137C43v42Ev();
extern void _ZN7S2137C43v43Ev();
extern void _ZN7S2137C43v44Ev();
extern void _ZN7S2137C43v45Ev();
extern void _ZN7S2137C43v46Ev();
extern void _ZN7S2137C43v47Ev();
extern void _ZN7S2137C43v48Ev();
extern void _ZN7S2137C43v49Ev();
extern void _ZN7S2137C43v50Ev();
extern void _ZN7S2137C43v51Ev();
extern void _ZN7S2137C43v52Ev();
extern void _ZN7S2137C43v53Ev();
extern void _ZN7S2137C43v54Ev();
extern void _ZN7S2137C43v55Ev();
extern void _ZN7S2137C43v56Ev();
extern void _ZN7S2137C43v57Ev();
extern void _ZN7S2137C43v58Ev();
extern void _ZN7S2137C43v59Ev();
extern void _ZN7S2137C43v60Ev();
extern void _ZN7S2137C43v61Ev();
extern void _ZN7S2137C43v62Ev();
extern void _ZN7S2137C43v63Ev();
extern void _ZN7S2137C43v64Ev();
extern void _ZN7S2137C43v65Ev();
extern void _ZN7S2137C43v66Ev();
extern void _ZN7S2137C43v67Ev();
extern void _ZN7S2137C43v68Ev();
extern void _ZN7S2137C43v69Ev();
extern void _ZN7S2137C43v70Ev();
extern void _ZN7S2137C43v71Ev();
extern void _ZN7S2137C43v72Ev();
extern void _ZN7S2137C43v73Ev();
extern void _ZN7S2137C43v74Ev();
extern void _ZN7S2137C43v75Ev();
extern void _ZN7S2137C43v76Ev();
extern void _ZN7S2137C43v77Ev();
extern void _ZN7S2137C43v78Ev();
extern void _ZN7S2137C43v79Ev();
extern void _ZN7S2137C43v80Ev();
extern void _ZN7S2137C43v81Ev();
extern void _ZN7S2137C43v82Ev();
extern void _ZN7S2137C43v83Ev();
extern void _ZN7S2137C43v84Ev();
extern void _ZN7S2137C43v85Ev();
extern void _ZN7S2137C43v86Ev();
extern void _ZN7S2137C43v87Ev();
extern void _ZN7S2137C43v88Ev();
extern void _ZN7S2137C43v89Ev();
extern void _ZN7S2137C43v90Ev();
extern void _ZN7S2137C43v91Ev();
extern void _ZN7S2137C43v92Ev();
extern void _ZN7S2137C43v93Ev();
extern void _ZN7S2137C43v94Ev();
extern void _ZN7S2137C43v95Ev();
extern void _ZN7S2137C33v96Ev();
extern void _ZN7S2137C33v97Ev();
extern void _ZN7S2137C33v98Ev();
extern void _ZN7S2137C33v99Ev();
extern void _ZN7S2137C34v100Ev();
extern void _ZN7S2137C34v101Ev();
extern void _ZN7S2137C34v102Ev();
extern void _ZN7S2137C24v103Ev();
extern void _ZN7S2137C24v104Ev();
extern void _ZN7S2137C24v105Ev();
extern void _ZN7S2137C24v106Ev();
extern void _ZN7S2137C24v107Ev();
extern void _ZN7S2137C24v108Ev();
extern void _ZN7S2137C24v109Ev();
extern void _ZN7S2137C24v110Ev();
extern void _ZN7S2137C24v111Ev();
extern void _ZN7S2137C24v112Ev();
extern void _ZN7S2137C24v113Ev();
extern void _ZN7S2137C24v114Ev();
extern void _ZN7S2137C24v115Ev();
extern void _ZN7S2137C24v116Ev();
extern void _ZN7S2137C24v117Ev();
static  VTBL_ENTRY vtc_S2137C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2137C2[0]),
  (VTBL_ENTRY)&_ZN7S2137C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2137C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v21Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v22Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v23Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v24Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v25Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v26Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v27Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v28Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v29Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v30Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v31Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v32Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v33Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v34Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v35Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v36Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v37Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v38Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v39Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v40Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v41Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v42Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v43Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v44Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v45Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v46Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v47Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v48Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v51Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v52Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v53Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v54Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v55Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v56Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v57Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v58Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v59Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v60Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v61Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v62Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v63Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v64Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v65Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v66Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v67Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v68Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v69Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v70Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v71Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v72Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v73Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v74Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v75Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v76Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v77Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v78Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v79Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v80Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v81Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v82Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v83Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v84Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v85Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v86Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v87Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v88Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v89Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v90Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v91Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v92Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v93Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v94Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v95Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v99Ev,
  (VTBL_ENTRY)&_ZN7S2137C34v100Ev,
  (VTBL_ENTRY)&_ZN7S2137C34v101Ev,
  (VTBL_ENTRY)&_ZN7S2137C34v102Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v103Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v104Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v105Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v106Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v107Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v108Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v109Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v110Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v111Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v112Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v113Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v114Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v115Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v116Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v117Ev,
};
extern VTBL_ENTRY _ZTI7S2137C2[];
extern  VTBL_ENTRY _ZTV7S2137C2[];
Class_Descriptor cd_S2137C2 = {  "S2137C2", // class name
  bases_S2137C2, 2,
  &(vtc_S2137C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(576,372), // object size
  NSPAIRA(_ZTI7S2137C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2137C2),101, //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  S2137C1  : S2137C2 {
  virtual  ~S2137C1(); // _ZN7S2137C1D1Ev
  virtual void  v1(); // _ZN7S2137C12v1Ev
  virtual void  v2(); // _ZN7S2137C12v2Ev
  virtual void  v3(); // _ZN7S2137C12v3Ev
  virtual void  v4(); // _ZN7S2137C12v4Ev
  virtual void  v5(); // _ZN7S2137C12v5Ev
  virtual void  v6(); // _ZN7S2137C12v6Ev
  virtual void  v7(); // _ZN7S2137C12v7Ev
  virtual void  v8(); // _ZN7S2137C12v8Ev
  virtual void  v9(); // _ZN7S2137C12v9Ev
  virtual void  v10(); // _ZN7S2137C13v10Ev
  virtual void  v11(); // _ZN7S2137C13v11Ev
  virtual void  v12(); // _ZN7S2137C13v12Ev
  virtual void  v13(); // _ZN7S2137C13v13Ev
  virtual void  v14(); // _ZN7S2137C13v14Ev
  virtual void  v15(); // _ZN7S2137C13v15Ev
  virtual void  v16(); // _ZN7S2137C13v16Ev
  virtual void  v17(); // _ZN7S2137C13v17Ev
  virtual void  v18(); // _ZN7S2137C13v18Ev
  virtual void  v19(); // _ZN7S2137C13v19Ev
  virtual void  v20(); // _ZN7S2137C13v20Ev
  S2137C1(); // tgen
};
//SIG(1 S2137C1) C1{ BC2{ BC3{ BC4{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 FC5{ BC6{ m Fp Fi FC7{ m} FC7}} Fi FC8{ m Fi Fp Fc[8] Fp FC9{ m Fi[2]} FC10{ m Fc Fi[8] Fp[4]} Fi Fp} Fp FC11{ BC12{ m Fp Fi FC13{ m} FC14{ m}}} Fp[3] FC15{ m Fp Fi[2] FC16{ m}} Fp[4] FC17{ BC8 Fp[2]} FC18{ BC6} Fi FL Fc Fi FL FC19{ m Fp[2]}[5] Fp[2]} vd v96 v97 v98 v99 v100 v101 v102} vd v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 FC20{ m Fp Fi FC14} FC21{ m Fi[2]}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20}


 S2137C1 ::~S2137C1(){ note_dtor("S2137C1", this);}
void  S2137C1 ::v1(){vfunc_called(this, "_ZN7S2137C12v1Ev");}
void  S2137C1 ::v2(){vfunc_called(this, "_ZN7S2137C12v2Ev");}
void  S2137C1 ::v3(){vfunc_called(this, "_ZN7S2137C12v3Ev");}
void  S2137C1 ::v4(){vfunc_called(this, "_ZN7S2137C12v4Ev");}
void  S2137C1 ::v5(){vfunc_called(this, "_ZN7S2137C12v5Ev");}
void  S2137C1 ::v6(){vfunc_called(this, "_ZN7S2137C12v6Ev");}
void  S2137C1 ::v7(){vfunc_called(this, "_ZN7S2137C12v7Ev");}
void  S2137C1 ::v8(){vfunc_called(this, "_ZN7S2137C12v8Ev");}
void  S2137C1 ::v9(){vfunc_called(this, "_ZN7S2137C12v9Ev");}
void  S2137C1 ::v10(){vfunc_called(this, "_ZN7S2137C13v10Ev");}
void  S2137C1 ::v11(){vfunc_called(this, "_ZN7S2137C13v11Ev");}
void  S2137C1 ::v12(){vfunc_called(this, "_ZN7S2137C13v12Ev");}
void  S2137C1 ::v13(){vfunc_called(this, "_ZN7S2137C13v13Ev");}
void  S2137C1 ::v14(){vfunc_called(this, "_ZN7S2137C13v14Ev");}
void  S2137C1 ::v15(){vfunc_called(this, "_ZN7S2137C13v15Ev");}
void  S2137C1 ::v16(){vfunc_called(this, "_ZN7S2137C13v16Ev");}
void  S2137C1 ::v17(){vfunc_called(this, "_ZN7S2137C13v17Ev");}
void  S2137C1 ::v18(){vfunc_called(this, "_ZN7S2137C13v18Ev");}
void  S2137C1 ::v19(){vfunc_called(this, "_ZN7S2137C13v19Ev");}
void  S2137C1 ::v20(){vfunc_called(this, "_ZN7S2137C13v20Ev");}
S2137C1 ::S2137C1(){ note_ctor("S2137C1", this);} // tgen

static void Test_S2137C1()
{
  extern Class_Descriptor cd_S2137C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(73,94)];
    init_test(&cd_S2137C1, buf);
    S2137C1 *dp, &lv = *(dp=new (buf) S2137C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,372), "sizeof(S2137C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2137C1)");
    check_base_class_offset(lv, (S2137C4*)(S2137C3*)(S2137C2*), 0, "S2137C1");
    check_base_class_offset(lv, (S2137C3*)(S2137C2*), 0, "S2137C1");
    check_base_class_offset(lv, (S2137C2*), 0, "S2137C1");
    test_class_info(&lv, &cd_S2137C1);
    dp->~S2137C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2137C1(Test_S2137C1, "S2137C1", ABISELECT(576,372));

#else // __cplusplus

extern void _ZN7S2137C1C1Ev();
extern void _ZN7S2137C1D1Ev();
Name_Map name_map_S2137C1[] = {
  NSPAIR(_ZN7S2137C1C1Ev),
  NSPAIR(_ZN7S2137C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2137C4;
extern VTBL_ENTRY _ZTI7S2137C4[];
extern  VTBL_ENTRY _ZTV7S2137C4[];
extern Class_Descriptor cd_S2137C3;
extern VTBL_ENTRY _ZTI7S2137C3[];
extern  VTBL_ENTRY _ZTV7S2137C3[];
extern Class_Descriptor cd_S2137C2;
extern VTBL_ENTRY _ZTI7S2137C2[];
extern  VTBL_ENTRY _ZTV7S2137C2[];
static Base_Class bases_S2137C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2137C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2137C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2137C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2137C1[];
extern void _ZN7S2137C1D1Ev();
extern void _ZN7S2137C1D0Ev();
extern void _ZN7S2137C43v21Ev();
extern void _ZN7S2137C43v22Ev();
extern void _ZN7S2137C43v23Ev();
extern void _ZN7S2137C43v24Ev();
extern void _ZN7S2137C43v25Ev();
extern void _ZN7S2137C43v26Ev();
extern void _ZN7S2137C43v27Ev();
extern void _ZN7S2137C43v28Ev();
extern void _ZN7S2137C43v29Ev();
extern void _ZN7S2137C43v30Ev();
extern void _ZN7S2137C43v31Ev();
extern void _ZN7S2137C43v32Ev();
extern void _ZN7S2137C43v33Ev();
extern void _ZN7S2137C43v34Ev();
extern void _ZN7S2137C43v35Ev();
extern void _ZN7S2137C43v36Ev();
extern void _ZN7S2137C43v37Ev();
extern void _ZN7S2137C43v38Ev();
extern void _ZN7S2137C43v39Ev();
extern void _ZN7S2137C43v40Ev();
extern void _ZN7S2137C43v41Ev();
extern void _ZN7S2137C43v42Ev();
extern void _ZN7S2137C43v43Ev();
extern void _ZN7S2137C43v44Ev();
extern void _ZN7S2137C43v45Ev();
extern void _ZN7S2137C43v46Ev();
extern void _ZN7S2137C43v47Ev();
extern void _ZN7S2137C43v48Ev();
extern void _ZN7S2137C43v49Ev();
extern void _ZN7S2137C43v50Ev();
extern void _ZN7S2137C43v51Ev();
extern void _ZN7S2137C43v52Ev();
extern void _ZN7S2137C43v53Ev();
extern void _ZN7S2137C43v54Ev();
extern void _ZN7S2137C43v55Ev();
extern void _ZN7S2137C43v56Ev();
extern void _ZN7S2137C43v57Ev();
extern void _ZN7S2137C43v58Ev();
extern void _ZN7S2137C43v59Ev();
extern void _ZN7S2137C43v60Ev();
extern void _ZN7S2137C43v61Ev();
extern void _ZN7S2137C43v62Ev();
extern void _ZN7S2137C43v63Ev();
extern void _ZN7S2137C43v64Ev();
extern void _ZN7S2137C43v65Ev();
extern void _ZN7S2137C43v66Ev();
extern void _ZN7S2137C43v67Ev();
extern void _ZN7S2137C43v68Ev();
extern void _ZN7S2137C43v69Ev();
extern void _ZN7S2137C43v70Ev();
extern void _ZN7S2137C43v71Ev();
extern void _ZN7S2137C43v72Ev();
extern void _ZN7S2137C43v73Ev();
extern void _ZN7S2137C43v74Ev();
extern void _ZN7S2137C43v75Ev();
extern void _ZN7S2137C43v76Ev();
extern void _ZN7S2137C43v77Ev();
extern void _ZN7S2137C43v78Ev();
extern void _ZN7S2137C43v79Ev();
extern void _ZN7S2137C43v80Ev();
extern void _ZN7S2137C43v81Ev();
extern void _ZN7S2137C43v82Ev();
extern void _ZN7S2137C43v83Ev();
extern void _ZN7S2137C43v84Ev();
extern void _ZN7S2137C43v85Ev();
extern void _ZN7S2137C43v86Ev();
extern void _ZN7S2137C43v87Ev();
extern void _ZN7S2137C43v88Ev();
extern void _ZN7S2137C43v89Ev();
extern void _ZN7S2137C43v90Ev();
extern void _ZN7S2137C43v91Ev();
extern void _ZN7S2137C43v92Ev();
extern void _ZN7S2137C43v93Ev();
extern void _ZN7S2137C43v94Ev();
extern void _ZN7S2137C43v95Ev();
extern void _ZN7S2137C33v96Ev();
extern void _ZN7S2137C33v97Ev();
extern void _ZN7S2137C33v98Ev();
extern void _ZN7S2137C33v99Ev();
extern void _ZN7S2137C34v100Ev();
extern void _ZN7S2137C34v101Ev();
extern void _ZN7S2137C34v102Ev();
extern void _ZN7S2137C24v103Ev();
extern void _ZN7S2137C24v104Ev();
extern void _ZN7S2137C24v105Ev();
extern void _ZN7S2137C24v106Ev();
extern void _ZN7S2137C24v107Ev();
extern void _ZN7S2137C24v108Ev();
extern void _ZN7S2137C24v109Ev();
extern void _ZN7S2137C24v110Ev();
extern void _ZN7S2137C24v111Ev();
extern void _ZN7S2137C24v112Ev();
extern void _ZN7S2137C24v113Ev();
extern void _ZN7S2137C24v114Ev();
extern void _ZN7S2137C24v115Ev();
extern void _ZN7S2137C24v116Ev();
extern void _ZN7S2137C24v117Ev();
extern void _ZN7S2137C12v1Ev();
extern void _ZN7S2137C12v2Ev();
extern void _ZN7S2137C12v3Ev();
extern void _ZN7S2137C12v4Ev();
extern void _ZN7S2137C12v5Ev();
extern void _ZN7S2137C12v6Ev();
extern void _ZN7S2137C12v7Ev();
extern void _ZN7S2137C12v8Ev();
extern void _ZN7S2137C12v9Ev();
extern void _ZN7S2137C13v10Ev();
extern void _ZN7S2137C13v11Ev();
extern void _ZN7S2137C13v12Ev();
extern void _ZN7S2137C13v13Ev();
extern void _ZN7S2137C13v14Ev();
extern void _ZN7S2137C13v15Ev();
extern void _ZN7S2137C13v16Ev();
extern void _ZN7S2137C13v17Ev();
extern void _ZN7S2137C13v18Ev();
extern void _ZN7S2137C13v19Ev();
extern void _ZN7S2137C13v20Ev();
static  VTBL_ENTRY vtc_S2137C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2137C1[0]),
  (VTBL_ENTRY)&_ZN7S2137C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2137C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v21Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v22Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v23Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v24Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v25Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v26Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v27Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v28Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v29Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v30Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v31Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v32Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v33Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v34Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v35Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v36Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v37Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v38Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v39Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v40Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v41Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v42Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v43Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v44Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v45Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v46Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v47Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v48Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v49Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v50Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v51Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v52Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v53Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v54Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v55Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v56Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v57Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v58Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v59Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v60Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v61Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v62Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v63Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v64Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v65Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v66Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v67Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v68Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v69Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v70Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v71Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v72Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v73Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v74Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v75Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v76Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v77Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v78Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v79Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v80Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v81Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v82Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v83Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v84Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v85Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v86Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v87Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v88Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v89Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v90Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v91Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v92Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v93Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v94Ev,
  (VTBL_ENTRY)&_ZN7S2137C43v95Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v96Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v97Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v98Ev,
  (VTBL_ENTRY)&_ZN7S2137C33v99Ev,
  (VTBL_ENTRY)&_ZN7S2137C34v100Ev,
  (VTBL_ENTRY)&_ZN7S2137C34v101Ev,
  (VTBL_ENTRY)&_ZN7S2137C34v102Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v103Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v104Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v105Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v106Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v107Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v108Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v109Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v110Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v111Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v112Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v113Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v114Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v115Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v116Ev,
  (VTBL_ENTRY)&_ZN7S2137C24v117Ev,
  (VTBL_ENTRY)&_ZN7S2137C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2137C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2137C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2137C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2137C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2137C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2137C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2137C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2137C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v10Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v11Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v12Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v13Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v14Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v15Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v16Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v17Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v18Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v19Ev,
  (VTBL_ENTRY)&_ZN7S2137C13v20Ev,
};
extern VTBL_ENTRY _ZTI7S2137C1[];
extern  VTBL_ENTRY _ZTV7S2137C1[];
Class_Descriptor cd_S2137C1 = {  "S2137C1", // class name
  bases_S2137C1, 3,
  &(vtc_S2137C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(576,372), // object size
  NSPAIRA(_ZTI7S2137C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2137C1),121, //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  S582C5  {
  int s582c5f0;
  __tsi64 s582c5f1;
  void *s582c5f2[4];
  int s582c5f3[2];
  void *s582c5f4;
  ::S3164C4_nt s582c5f5;
  void *s582c5f6[2];
  virtual  ~S582C5(); // _ZN6S582C5D1Ev
  virtual void  v4(); // _ZN6S582C52v4Ev
  virtual void  v5(); // _ZN6S582C52v5Ev
  virtual void  v6(); // _ZN6S582C52v6Ev
  virtual void  v7(); // _ZN6S582C52v7Ev
  virtual void  v8(); // _ZN6S582C52v8Ev
  virtual void  v9(); // _ZN6S582C52v9Ev
  virtual void  v10(); // _ZN6S582C53v10Ev
  virtual void  v11(); // _ZN6S582C53v11Ev
  virtual void  v12(); // _ZN6S582C53v12Ev
  virtual void  v13(); // _ZN6S582C53v13Ev
  virtual void  v14(); // _ZN6S582C53v14Ev
  virtual void  v15(); // _ZN6S582C53v15Ev
  virtual void  v16(); // _ZN6S582C53v16Ev
  virtual void  v17(); // _ZN6S582C53v17Ev
  virtual void  v18(); // _ZN6S582C53v18Ev
  virtual void  v19(); // _ZN6S582C53v19Ev
  virtual void  v20(); // _ZN6S582C53v20Ev
  virtual void  v21(); // _ZN6S582C53v21Ev
  virtual void  v22(); // _ZN6S582C53v22Ev
  virtual void  v23(); // _ZN6S582C53v23Ev
  virtual void  v24(); // _ZN6S582C53v24Ev
  virtual void  v25(); // _ZN6S582C53v25Ev
  virtual void  v26(); // _ZN6S582C53v26Ev
  virtual void  v27(); // _ZN6S582C53v27Ev
  virtual void  v28(); // _ZN6S582C53v28Ev
  virtual void  v29(); // _ZN6S582C53v29Ev
  virtual void  v30(); // _ZN6S582C53v30Ev
  virtual void  v31(); // _ZN6S582C53v31Ev
  virtual void  v32(); // _ZN6S582C53v32Ev
  virtual void  v33(); // _ZN6S582C53v33Ev
  virtual void  v34(); // _ZN6S582C53v34Ev
  virtual void  v35(); // _ZN6S582C53v35Ev
  virtual void  v36(); // _ZN6S582C53v36Ev
  virtual void  v37(); // _ZN6S582C53v37Ev
  virtual void  v38(); // _ZN6S582C53v38Ev
  virtual void  v39(); // _ZN6S582C53v39Ev
  virtual void  v40(); // _ZN6S582C53v40Ev
  virtual void  v41(); // _ZN6S582C53v41Ev
  virtual void  v42(); // _ZN6S582C53v42Ev
  virtual void  v43(); // _ZN6S582C53v43Ev
  virtual void  v44(); // _ZN6S582C53v44Ev
  virtual void  v45(); // _ZN6S582C53v45Ev
  virtual void  v46(); // _ZN6S582C53v46Ev
  virtual void  v47(); // _ZN6S582C53v47Ev
  virtual void  v48(); // _ZN6S582C53v48Ev
  virtual void  v49(); // _ZN6S582C53v49Ev
  virtual void  v50(); // _ZN6S582C53v50Ev
  virtual void  v51(); // _ZN6S582C53v51Ev
  virtual void  v52(); // _ZN6S582C53v52Ev
  virtual void  v53(); // _ZN6S582C53v53Ev
  virtual void  v54(); // _ZN6S582C53v54Ev
  virtual void  v55(); // _ZN6S582C53v55Ev
  virtual void  v56(); // _ZN6S582C53v56Ev
  virtual void  v57(); // _ZN6S582C53v57Ev
  virtual void  v58(); // _ZN6S582C53v58Ev
  virtual void  v59(); // _ZN6S582C53v59Ev
  virtual void  v60(); // _ZN6S582C53v60Ev
  virtual void  v61(); // _ZN6S582C53v61Ev
  virtual void  v62(); // _ZN6S582C53v62Ev
  virtual void  v63(); // _ZN6S582C53v63Ev
  virtual void  v64(); // _ZN6S582C53v64Ev
  virtual void  v65(); // _ZN6S582C53v65Ev
  virtual void  v66(); // _ZN6S582C53v66Ev
  virtual void  v67(); // _ZN6S582C53v67Ev
  S582C5(); // tgen
};
//SIG(-1 S582C5) 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]}


 S582C5 ::~S582C5(){ note_dtor("S582C5", this);}
void  S582C5 ::v4(){vfunc_called(this, "_ZN6S582C52v4Ev");}
void  S582C5 ::v5(){vfunc_called(this, "_ZN6S582C52v5Ev");}
void  S582C5 ::v6(){vfunc_called(this, "_ZN6S582C52v6Ev");}
void  S582C5 ::v7(){vfunc_called(this, "_ZN6S582C52v7Ev");}
void  S582C5 ::v8(){vfunc_called(this, "_ZN6S582C52v8Ev");}
void  S582C5 ::v9(){vfunc_called(this, "_ZN6S582C52v9Ev");}
void  S582C5 ::v10(){vfunc_called(this, "_ZN6S582C53v10Ev");}
void  S582C5 ::v11(){vfunc_called(this, "_ZN6S582C53v11Ev");}
void  S582C5 ::v12(){vfunc_called(this, "_ZN6S582C53v12Ev");}
void  S582C5 ::v13(){vfunc_called(this, "_ZN6S582C53v13Ev");}
void  S582C5 ::v14(){vfunc_called(this, "_ZN6S582C53v14Ev");}
void  S582C5 ::v15(){vfunc_called(this, "_ZN6S582C53v15Ev");}
void  S582C5 ::v16(){vfunc_called(this, "_ZN6S582C53v16Ev");}
void  S582C5 ::v17(){vfunc_called(this, "_ZN6S582C53v17Ev");}
void  S582C5 ::v18(){vfunc_called(this, "_ZN6S582C53v18Ev");}
void  S582C5 ::v19(){vfunc_called(this, "_ZN6S582C53v19Ev");}
void  S582C5 ::v20(){vfunc_called(this, "_ZN6S582C53v20Ev");}
void  S582C5 ::v21(){vfunc_called(this, "_ZN6S582C53v21Ev");}
void  S582C5 ::v22(){vfunc_called(this, "_ZN6S582C53v22Ev");}
void  S582C5 ::v23(){vfunc_called(this, "_ZN6S582C53v23Ev");}
void  S582C5 ::v24(){vfunc_called(this, "_ZN6S582C53v24Ev");}
void  S582C5 ::v25(){vfunc_called(this, "_ZN6S582C53v25Ev");}
void  S582C5 ::v26(){vfunc_called(this, "_ZN6S582C53v26Ev");}
void  S582C5 ::v27(){vfunc_called(this, "_ZN6S582C53v27Ev");}
void  S582C5 ::v28(){vfunc_called(this, "_ZN6S582C53v28Ev");}
void  S582C5 ::v29(){vfunc_called(this, "_ZN6S582C53v29Ev");}
void  S582C5 ::v30(){vfunc_called(this, "_ZN6S582C53v30Ev");}
void  S582C5 ::v31(){vfunc_called(this, "_ZN6S582C53v31Ev");}
void  S582C5 ::v32(){vfunc_called(this, "_ZN6S582C53v32Ev");}
void  S582C5 ::v33(){vfunc_called(this, "_ZN6S582C53v33Ev");}
void  S582C5 ::v34(){vfunc_called(this, "_ZN6S582C53v34Ev");}
void  S582C5 ::v35(){vfunc_called(this, "_ZN6S582C53v35Ev");}
void  S582C5 ::v36(){vfunc_called(this, "_ZN6S582C53v36Ev");}
void  S582C5 ::v37(){vfunc_called(this, "_ZN6S582C53v37Ev");}
void  S582C5 ::v38(){vfunc_called(this, "_ZN6S582C53v38Ev");}
void  S582C5 ::v39(){vfunc_called(this, "_ZN6S582C53v39Ev");}
void  S582C5 ::v40(){vfunc_called(this, "_ZN6S582C53v40Ev");}
void  S582C5 ::v41(){vfunc_called(this, "_ZN6S582C53v41Ev");}
void  S582C5 ::v42(){vfunc_called(this, "_ZN6S582C53v42Ev");}
void  S582C5 ::v43(){vfunc_called(this, "_ZN6S582C53v43Ev");}
void  S582C5 ::v44(){vfunc_called(this, "_ZN6S582C53v44Ev");}
void  S582C5 ::v45(){vfunc_called(this, "_ZN6S582C53v45Ev");}
void  S582C5 ::v46(){vfunc_called(this, "_ZN6S582C53v46Ev");}
void  S582C5 ::v47(){vfunc_called(this, "_ZN6S582C53v47Ev");}
void  S582C5 ::v48(){vfunc_called(this, "_ZN6S582C53v48Ev");}
void  S582C5 ::v49(){vfunc_called(this, "_ZN6S582C53v49Ev");}
void  S582C5 ::v50(){vfunc_called(this, "_ZN6S582C53v50Ev");}
void  S582C5 ::v51(){vfunc_called(this, "_ZN6S582C53v51Ev");}
void  S582C5 ::v52(){vfunc_called(this, "_ZN6S582C53v52Ev");}
void  S582C5 ::v53(){vfunc_called(this, "_ZN6S582C53v53Ev");}
void  S582C5 ::v54(){vfunc_called(this, "_ZN6S582C53v54Ev");}
void  S582C5 ::v55(){vfunc_called(this, "_ZN6S582C53v55Ev");}
void  S582C5 ::v56(){vfunc_called(this, "_ZN6S582C53v56Ev");}
void  S582C5 ::v57(){vfunc_called(this, "_ZN6S582C53v57Ev");}
void  S582C5 ::v58(){vfunc_called(this, "_ZN6S582C53v58Ev");}
void  S582C5 ::v59(){vfunc_called(this, "_ZN6S582C53v59Ev");}
void  S582C5 ::v60(){vfunc_called(this, "_ZN6S582C53v60Ev");}
void  S582C5 ::v61(){vfunc_called(this, "_ZN6S582C53v61Ev");}
void  S582C5 ::v62(){vfunc_called(this, "_ZN6S582C53v62Ev");}
void  S582C5 ::v63(){vfunc_called(this, "_ZN6S582C53v63Ev");}
void  S582C5 ::v64(){vfunc_called(this, "_ZN6S582C53v64Ev");}
void  S582C5 ::v65(){vfunc_called(this, "_ZN6S582C53v65Ev");}
void  S582C5 ::v66(){vfunc_called(this, "_ZN6S582C53v66Ev");}
void  S582C5 ::v67(){vfunc_called(this, "_ZN6S582C53v67Ev");}
S582C5 ::S582C5(){ note_ctor("S582C5", this);} // tgen

static void Test_S582C5()
{
  extern Class_Descriptor cd_S582C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S582C5, buf);
    S582C5 *dp, &lv = *(dp=new (buf) S582C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S582C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S582C5)");
    check_field_offset(lv, s582c5f0, ABISELECT(8,4), "S582C5.s582c5f0");
    check_field_offset(lv, s582c5f1, ABISELECT(16,8), "S582C5.s582c5f1");
    check_field_offset(lv, s582c5f2, ABISELECT(24,16), "S582C5.s582c5f2");
    check_field_offset(lv, s582c5f3, ABISELECT(56,32), "S582C5.s582c5f3");
    check_field_offset(lv, s582c5f4, ABISELECT(64,40), "S582C5.s582c5f4");
    check_field_offset(lv, s582c5f5, ABISELECT(72,44), "S582C5.s582c5f5");
    check_field_offset(lv, s582c5f6, ABISELECT(80,52), "S582C5.s582c5f6");
    test_class_info(&lv, &cd_S582C5);
    dp->~S582C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS582C5(Test_S582C5, "S582C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S582C5C1Ev();
extern void _ZN6S582C5D1Ev();
Name_Map name_map_S582C5[] = {
  NSPAIR(_ZN6S582C5C1Ev),
  NSPAIR(_ZN6S582C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S582C5[];
extern void _ZN6S582C5D1Ev();
extern void _ZN6S582C5D0Ev();
extern void _ZN6S582C52v4Ev();
extern void _ZN6S582C52v5Ev();
extern void _ZN6S582C52v6Ev();
extern void _ZN6S582C52v7Ev();
extern void _ZN6S582C52v8Ev();
extern void _ZN6S582C52v9Ev();
extern void _ZN6S582C53v10Ev();
extern void _ZN6S582C53v11Ev();
extern void _ZN6S582C53v12Ev();
extern void _ZN6S582C53v13Ev();
extern void _ZN6S582C53v14Ev();
extern void _ZN6S582C53v15Ev();
extern void _ZN6S582C53v16Ev();
extern void _ZN6S582C53v17Ev();
extern void _ZN6S582C53v18Ev();
extern void _ZN6S582C53v19Ev();
extern void _ZN6S582C53v20Ev();
extern void _ZN6S582C53v21Ev();
extern void _ZN6S582C53v22Ev();
extern void _ZN6S582C53v23Ev();
extern void _ZN6S582C53v24Ev();
extern void _ZN6S582C53v25Ev();
extern void _ZN6S582C53v26Ev();
extern void _ZN6S582C53v27Ev();
extern void _ZN6S582C53v28Ev();
extern void _ZN6S582C53v29Ev();
extern void _ZN6S582C53v30Ev();
extern void _ZN6S582C53v31Ev();
extern void _ZN6S582C53v32Ev();
extern void _ZN6S582C53v33Ev();
extern void _ZN6S582C53v34Ev();
extern void _ZN6S582C53v35Ev();
extern void _ZN6S582C53v36Ev();
extern void _ZN6S582C53v37Ev();
extern void _ZN6S582C53v38Ev();
extern void _ZN6S582C53v39Ev();
extern void _ZN6S582C53v40Ev();
extern void _ZN6S582C53v41Ev();
extern void _ZN6S582C53v42Ev();
extern void _ZN6S582C53v43Ev();
extern void _ZN6S582C53v44Ev();
extern void _ZN6S582C53v45Ev();
extern void _ZN6S582C53v46Ev();
extern void _ZN6S582C53v47Ev();
extern void _ZN6S582C53v48Ev();
extern void _ZN6S582C53v49Ev();
extern void _ZN6S582C53v50Ev();
extern void _ZN6S582C53v51Ev();
extern void _ZN6S582C53v52Ev();
extern void _ZN6S582C53v53Ev();
extern void _ZN6S582C53v54Ev();
extern void _ZN6S582C53v55Ev();
extern void _ZN6S582C53v56Ev();
extern void _ZN6S582C53v57Ev();
extern void _ZN6S582C53v58Ev();
extern void _ZN6S582C53v59Ev();
extern void _ZN6S582C53v60Ev();
extern void _ZN6S582C53v61Ev();
extern void _ZN6S582C53v62Ev();
extern void _ZN6S582C53v63Ev();
extern void _ZN6S582C53v64Ev();
extern void _ZN6S582C53v65Ev();
extern void _ZN6S582C53v66Ev();
extern void _ZN6S582C53v67Ev();
static  VTBL_ENTRY vtc_S582C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S582C5[0]),
  (VTBL_ENTRY)&_ZN6S582C5D1Ev,
  (VTBL_ENTRY)&_ZN6S582C5D0Ev,
  (VTBL_ENTRY)&_ZN6S582C52v4Ev,
  (VTBL_ENTRY)&_ZN6S582C52v5Ev,
  (VTBL_ENTRY)&_ZN6S582C52v6Ev,
  (VTBL_ENTRY)&_ZN6S582C52v7Ev,
  (VTBL_ENTRY)&_ZN6S582C52v8Ev,
  (VTBL_ENTRY)&_ZN6S582C52v9Ev,
  (VTBL_ENTRY)&_ZN6S582C53v10Ev,
  (VTBL_ENTRY)&_ZN6S582C53v11Ev,
  (VTBL_ENTRY)&_ZN6S582C53v12Ev,
  (VTBL_ENTRY)&_ZN6S582C53v13Ev,
  (VTBL_ENTRY)&_ZN6S582C53v14Ev,
  (VTBL_ENTRY)&_ZN6S582C53v15Ev,
  (VTBL_ENTRY)&_ZN6S582C53v16Ev,
  (VTBL_ENTRY)&_ZN6S582C53v17Ev,
  (VTBL_ENTRY)&_ZN6S582C53v18Ev,
  (VTBL_ENTRY)&_ZN6S582C53v19Ev,
  (VTBL_ENTRY)&_ZN6S582C53v20Ev,
  (VTBL_ENTRY)&_ZN6S582C53v21Ev,
  (VTBL_ENTRY)&_ZN6S582C53v22Ev,
  (VTBL_ENTRY)&_ZN6S582C53v23Ev,
  (VTBL_ENTRY)&_ZN6S582C53v24Ev,
  (VTBL_ENTRY)&_ZN6S582C53v25Ev,
  (VTBL_ENTRY)&_ZN6S582C53v26Ev,
  (VTBL_ENTRY)&_ZN6S582C53v27Ev,
  (VTBL_ENTRY)&_ZN6S582C53v28Ev,
  (VTBL_ENTRY)&_ZN6S582C53v29Ev,
  (VTBL_ENTRY)&_ZN6S582C53v30Ev,
  (VTBL_ENTRY)&_ZN6S582C53v31Ev,
  (VTBL_ENTRY)&_ZN6S582C53v32Ev,
  (VTBL_ENTRY)&_ZN6S582C53v33Ev,
  (VTBL_ENTRY)&_ZN6S582C53v34Ev,
  (VTBL_ENTRY)&_ZN6S582C53v35Ev,
  (VTBL_ENTRY)&_ZN6S582C53v36Ev,
  (VTBL_ENTRY)&_ZN6S582C53v37Ev,
  (VTBL_ENTRY)&_ZN6S582C53v38Ev,
  (VTBL_ENTRY)&_ZN6S582C53v39Ev,
  (VTBL_ENTRY)&_ZN6S582C53v40Ev,
  (VTBL_ENTRY)&_ZN6S582C53v41Ev,
  (VTBL_ENTRY)&_ZN6S582C53v42Ev,
  (VTBL_ENTRY)&_ZN6S582C53v43Ev,
  (VTBL_ENTRY)&_ZN6S582C53v44Ev,
  (VTBL_ENTRY)&_ZN6S582C53v45Ev,
  (VTBL_ENTRY)&_ZN6S582C53v46Ev,
  (VTBL_ENTRY)&_ZN6S582C53v47Ev,
  (VTBL_ENTRY)&_ZN6S582C53v48Ev,
  (VTBL_ENTRY)&_ZN6S582C53v49Ev,
  (VTBL_ENTRY)&_ZN6S582C53v50Ev,
  (VTBL_ENTRY)&_ZN6S582C53v51Ev,
  (VTBL_ENTRY)&_ZN6S582C53v52Ev,
  (VTBL_ENTRY)&_ZN6S582C53v53Ev,
  (VTBL_ENTRY)&_ZN6S582C53v54Ev,
  (VTBL_ENTRY)&_ZN6S582C53v55Ev,
  (VTBL_ENTRY)&_ZN6S582C53v56Ev,
  (VTBL_ENTRY)&_ZN6S582C53v57Ev,
  (VTBL_ENTRY)&_ZN6S582C53v58Ev,
  (VTBL_ENTRY)&_ZN6S582C53v59Ev,
  (VTBL_ENTRY)&_ZN6S582C53v60Ev,
  (VTBL_ENTRY)&_ZN6S582C53v61Ev,
  (VTBL_ENTRY)&_ZN6S582C53v62Ev,
  (VTBL_ENTRY)&_ZN6S582C53v63Ev,
  (VTBL_ENTRY)&_ZN6S582C53v64Ev,
  (VTBL_ENTRY)&_ZN6S582C53v65Ev,
  (VTBL_ENTRY)&_ZN6S582C53v66Ev,
  (VTBL_ENTRY)&_ZN6S582C53v67Ev,
};
extern VTBL_ENTRY _ZTI6S582C5[];
extern  VTBL_ENTRY _ZTV6S582C5[];
Class_Descriptor cd_S582C5 = {  "S582C5", // class name
  0,0,//no base classes
  &(vtc_S582C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S582C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S582C5),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  S582C9  : S3164C7_nt {
};
//SIG(-1 S582C9) C1{ BC2{ m Fp Fi[2]}}



static void Test_S582C9()
{
  extern Class_Descriptor cd_S582C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S582C9, buf);
    S582C9 &lv = *(new (buf) S582C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S582C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S582C9)");
    check_base_class_offset(lv, (S3164C7_nt*), 0, "S582C9");
    test_class_info(&lv, &cd_S582C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS582C9(Test_S582C9, "S582C9", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S582C8()
{
  extern Class_Descriptor cd_S582C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S582C8, buf);
    S582C8 &lv = *(new (buf) S582C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S582C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S582C8)");
    check_base_class_offset(lv, (S3164C7_nt*)(S582C9*), 0, "S582C8");
    check_base_class_offset(lv, (S582C9*), 0, "S582C8");
    test_class_info(&lv, &cd_S582C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS582C8(Test_S582C8, "S582C8", ABISELECT(16,12));

#else // __cplusplus

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



//skip512 S582C7_nt

#else // __cplusplus

extern Class_Descriptor cd_S3164C7_nt;
extern Class_Descriptor cd_S582C9;
extern Class_Descriptor cd_S582C8;
static Base_Class bases_S582C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S582C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S582C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S582C4_nt  : S582C5 {
  int s582c4f0[2];
  void *s582c4f1;
  int s582c4f2[2];
  ::S582C7_nt s582c4f3;
  ::S582C7_nt s582c4f4;
  ::S3164C31_nt s582c4f5;
  ::S582C7_nt s582c4f6;
  unsigned int s582c4f7:1;
  unsigned int s582c4f8:1;
  unsigned int s582c4f9:1;
  unsigned int s582c4f10:1;
  unsigned int s582c4f11:1;
  int s582c4f12[2];
  virtual  ~S582C4_nt(); // _ZN9S582C4_ntD1Ev
  virtual void  v68(); // _ZN9S582C4_nt3v68Ev
  virtual void  v69(); // _ZN9S582C4_nt3v69Ev
  virtual void  v70(); // _ZN9S582C4_nt3v70Ev
  virtual void  v71(); // _ZN9S582C4_nt3v71Ev
  virtual void  v72(); // _ZN9S582C4_nt3v72Ev
  virtual void  v73(); // _ZN9S582C4_nt3v73Ev
  virtual void  v74(); // _ZN9S582C4_nt3v74Ev
  virtual void  v75(); // _ZN9S582C4_nt3v75Ev
  virtual void  v76(); // _ZN9S582C4_nt3v76Ev
  virtual void  v77(); // _ZN9S582C4_nt3v77Ev
  virtual void  v78(); // _ZN9S582C4_nt3v78Ev
  virtual void  v79(); // _ZN9S582C4_nt3v79Ev
  virtual void  v80(); // _ZN9S582C4_nt3v80Ev
  virtual void  v81(); // _ZN9S582C4_nt3v81Ev
  virtual void  v82(); // _ZN9S582C4_nt3v82Ev
  virtual void  v83(); // _ZN9S582C4_nt3v83Ev
  virtual void  v84(); // _ZN9S582C4_nt3v84Ev
  virtual void  v85(); // _ZN9S582C4_nt3v85Ev
  virtual void  v86(); // _ZN9S582C4_nt3v86Ev
  virtual void  v87(); // _ZN9S582C4_nt3v87Ev
  virtual void  v88(); // _ZN9S582C4_nt3v88Ev
  virtual void  v89(); // _ZN9S582C4_nt3v89Ev
  S582C4_nt(); // tgen
};
//SIG(-1 S582C4_nt) C1{ BC2{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fi[2] Fp Fi[2] FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} FC4 FC8{ m} FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]}


 S582C4_nt ::~S582C4_nt(){ note_dtor("S582C4_nt", this);}
void  S582C4_nt ::v68(){vfunc_called(this, "_ZN9S582C4_nt3v68Ev");}
void  S582C4_nt ::v69(){vfunc_called(this, "_ZN9S582C4_nt3v69Ev");}
void  S582C4_nt ::v70(){vfunc_called(this, "_ZN9S582C4_nt3v70Ev");}
void  S582C4_nt ::v71(){vfunc_called(this, "_ZN9S582C4_nt3v71Ev");}
void  S582C4_nt ::v72(){vfunc_called(this, "_ZN9S582C4_nt3v72Ev");}
void  S582C4_nt ::v73(){vfunc_called(this, "_ZN9S582C4_nt3v73Ev");}
void  S582C4_nt ::v74(){vfunc_called(this, "_ZN9S582C4_nt3v74Ev");}
void  S582C4_nt ::v75(){vfunc_called(this, "_ZN9S582C4_nt3v75Ev");}
void  S582C4_nt ::v76(){vfunc_called(this, "_ZN9S582C4_nt3v76Ev");}
void  S582C4_nt ::v77(){vfunc_called(this, "_ZN9S582C4_nt3v77Ev");}
void  S582C4_nt ::v78(){vfunc_called(this, "_ZN9S582C4_nt3v78Ev");}
void  S582C4_nt ::v79(){vfunc_called(this, "_ZN9S582C4_nt3v79Ev");}
void  S582C4_nt ::v80(){vfunc_called(this, "_ZN9S582C4_nt3v80Ev");}
void  S582C4_nt ::v81(){vfunc_called(this, "_ZN9S582C4_nt3v81Ev");}
void  S582C4_nt ::v82(){vfunc_called(this, "_ZN9S582C4_nt3v82Ev");}
void  S582C4_nt ::v83(){vfunc_called(this, "_ZN9S582C4_nt3v83Ev");}
void  S582C4_nt ::v84(){vfunc_called(this, "_ZN9S582C4_nt3v84Ev");}
void  S582C4_nt ::v85(){vfunc_called(this, "_ZN9S582C4_nt3v85Ev");}
void  S582C4_nt ::v86(){vfunc_called(this, "_ZN9S582C4_nt3v86Ev");}
void  S582C4_nt ::v87(){vfunc_called(this, "_ZN9S582C4_nt3v87Ev");}
void  S582C4_nt ::v88(){vfunc_called(this, "_ZN9S582C4_nt3v88Ev");}
void  S582C4_nt ::v89(){vfunc_called(this, "_ZN9S582C4_nt3v89Ev");}
S582C4_nt ::S582C4_nt(){ note_ctor("S582C4_nt", this);} // tgen

//skip512 S582C4_nt

#else // __cplusplus

extern void _ZN9S582C4_ntC1Ev();
extern void _ZN9S582C4_ntD1Ev();
Name_Map name_map_S582C4_nt[] = {
  NSPAIR(_ZN9S582C4_ntC1Ev),
  NSPAIR(_ZN9S582C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S582C5;
extern VTBL_ENTRY _ZTI6S582C5[];
extern  VTBL_ENTRY _ZTV6S582C5[];
static Base_Class bases_S582C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S582C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S582C4_nt[];
extern void _ZN9S582C4_ntD1Ev();
extern void _ZN9S582C4_ntD0Ev();
extern void _ZN6S582C52v4Ev();
extern void _ZN6S582C52v5Ev();
extern void _ZN6S582C52v6Ev();
extern void _ZN6S582C52v7Ev();
extern void _ZN6S582C52v8Ev();
extern void _ZN6S582C52v9Ev();
extern void _ZN6S582C53v10Ev();
extern void _ZN6S582C53v11Ev();
extern void _ZN6S582C53v12Ev();
extern void _ZN6S582C53v13Ev();
extern void _ZN6S582C53v14Ev();
extern void _ZN6S582C53v15Ev();
extern void _ZN6S582C53v16Ev();
extern void _ZN6S582C53v17Ev();
extern void _ZN6S582C53v18Ev();
extern void _ZN6S582C53v19Ev();
extern void _ZN6S582C53v20Ev();
extern void _ZN6S582C53v21Ev();
extern void _ZN6S582C53v22Ev();
extern void _ZN6S582C53v23Ev();
extern void _ZN6S582C53v24Ev();
extern void _ZN6S582C53v25Ev();
extern void _ZN6S582C53v26Ev();
extern void _ZN6S582C53v27Ev();
extern void _ZN6S582C53v28Ev();
extern void _ZN6S582C53v29Ev();
extern void _ZN6S582C53v30Ev();
extern void _ZN6S582C53v31Ev();
extern void _ZN6S582C53v32Ev();
extern void _ZN6S582C53v33Ev();
extern void _ZN6S582C53v34Ev();
extern void _ZN6S582C53v35Ev();
extern void _ZN6S582C53v36Ev();
extern void _ZN6S582C53v37Ev();
extern void _ZN6S582C53v38Ev();
extern void _ZN6S582C53v39Ev();
extern void _ZN6S582C53v40Ev();
extern void _ZN6S582C53v41Ev();
extern void _ZN6S582C53v42Ev();
extern void _ZN6S582C53v43Ev();
extern void _ZN6S582C53v44Ev();
extern void _ZN6S582C53v45Ev();
extern void _ZN6S582C53v46Ev();
extern void _ZN6S582C53v47Ev();
extern void _ZN6S582C53v48Ev();
extern void _ZN6S582C53v49Ev();
extern void _ZN6S582C53v50Ev();
extern void _ZN6S582C53v51Ev();
extern void _ZN6S582C53v52Ev();
extern void _ZN6S582C53v53Ev();
extern void _ZN6S582C53v54Ev();
extern void _ZN6S582C53v55Ev();
extern void _ZN6S582C53v56Ev();
extern void _ZN6S582C53v57Ev();
extern void _ZN6S582C53v58Ev();
extern void _ZN6S582C53v59Ev();
extern void _ZN6S582C53v60Ev();
extern void _ZN6S582C53v61Ev();
extern void _ZN6S582C53v62Ev();
extern void _ZN6S582C53v63Ev();
extern void _ZN6S582C53v64Ev();
extern void _ZN6S582C53v65Ev();
extern void _ZN6S582C53v66Ev();
extern void _ZN6S582C53v67Ev();
extern void _ZN9S582C4_nt3v68Ev();
extern void _ZN9S582C4_nt3v69Ev();
extern void _ZN9S582C4_nt3v70Ev();
extern void _ZN9S582C4_nt3v71Ev();
extern void _ZN9S582C4_nt3v72Ev();
extern void _ZN9S582C4_nt3v73Ev();
extern void _ZN9S582C4_nt3v74Ev();
extern void _ZN9S582C4_nt3v75Ev();
extern void _ZN9S582C4_nt3v76Ev();
extern void _ZN9S582C4_nt3v77Ev();
extern void _ZN9S582C4_nt3v78Ev();
extern void _ZN9S582C4_nt3v79Ev();
extern void _ZN9S582C4_nt3v80Ev();
extern void _ZN9S582C4_nt3v81Ev();
extern void _ZN9S582C4_nt3v82Ev();
extern void _ZN9S582C4_nt3v83Ev();
extern void _ZN9S582C4_nt3v84Ev();
extern void _ZN9S582C4_nt3v85Ev();
extern void _ZN9S582C4_nt3v86Ev();
extern void _ZN9S582C4_nt3v87Ev();
extern void _ZN9S582C4_nt3v88Ev();
extern void _ZN9S582C4_nt3v89Ev();
static  VTBL_ENTRY vtc_S582C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S582C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S582C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S582C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S582C52v4Ev,
  (VTBL_ENTRY)&_ZN6S582C52v5Ev,
  (VTBL_ENTRY)&_ZN6S582C52v6Ev,
  (VTBL_ENTRY)&_ZN6S582C52v7Ev,
  (VTBL_ENTRY)&_ZN6S582C52v8Ev,
  (VTBL_ENTRY)&_ZN6S582C52v9Ev,
  (VTBL_ENTRY)&_ZN6S582C53v10Ev,
  (VTBL_ENTRY)&_ZN6S582C53v11Ev,
  (VTBL_ENTRY)&_ZN6S582C53v12Ev,
  (VTBL_ENTRY)&_ZN6S582C53v13Ev,
  (VTBL_ENTRY)&_ZN6S582C53v14Ev,
  (VTBL_ENTRY)&_ZN6S582C53v15Ev,
  (VTBL_ENTRY)&_ZN6S582C53v16Ev,
  (VTBL_ENTRY)&_ZN6S582C53v17Ev,
  (VTBL_ENTRY)&_ZN6S582C53v18Ev,
  (VTBL_ENTRY)&_ZN6S582C53v19Ev,
  (VTBL_ENTRY)&_ZN6S582C53v20Ev,
  (VTBL_ENTRY)&_ZN6S582C53v21Ev,
  (VTBL_ENTRY)&_ZN6S582C53v22Ev,
  (VTBL_ENTRY)&_ZN6S582C53v23Ev,
  (VTBL_ENTRY)&_ZN6S582C53v24Ev,
  (VTBL_ENTRY)&_ZN6S582C53v25Ev,
  (VTBL_ENTRY)&_ZN6S582C53v26Ev,
  (VTBL_ENTRY)&_ZN6S582C53v27Ev,
  (VTBL_ENTRY)&_ZN6S582C53v28Ev,
  (VTBL_ENTRY)&_ZN6S582C53v29Ev,
  (VTBL_ENTRY)&_ZN6S582C53v30Ev,
  (VTBL_ENTRY)&_ZN6S582C53v31Ev,
  (VTBL_ENTRY)&_ZN6S582C53v32Ev,
  (VTBL_ENTRY)&_ZN6S582C53v33Ev,
  (VTBL_ENTRY)&_ZN6S582C53v34Ev,
  (VTBL_ENTRY)&_ZN6S582C53v35Ev,
  (VTBL_ENTRY)&_ZN6S582C53v36Ev,
  (VTBL_ENTRY)&_ZN6S582C53v37Ev,
  (VTBL_ENTRY)&_ZN6S582C53v38Ev,
  (VTBL_ENTRY)&_ZN6S582C53v39Ev,
  (VTBL_ENTRY)&_ZN6S582C53v40Ev,
  (VTBL_ENTRY)&_ZN6S582C53v41Ev,
  (VTBL_ENTRY)&_ZN6S582C53v42Ev,
  (VTBL_ENTRY)&_ZN6S582C53v43Ev,
  (VTBL_ENTRY)&_ZN6S582C53v44Ev,
  (VTBL_ENTRY)&_ZN6S582C53v45Ev,
  (VTBL_ENTRY)&_ZN6S582C53v46Ev,
  (VTBL_ENTRY)&_ZN6S582C53v47Ev,
  (VTBL_ENTRY)&_ZN6S582C53v48Ev,
  (VTBL_ENTRY)&_ZN6S582C53v49Ev,
  (VTBL_ENTRY)&_ZN6S582C53v50Ev,
  (VTBL_ENTRY)&_ZN6S582C53v51Ev,
  (VTBL_ENTRY)&_ZN6S582C53v52Ev,
  (VTBL_ENTRY)&_ZN6S582C53v53Ev,
  (VTBL_ENTRY)&_ZN6S582C53v54Ev,
  (VTBL_ENTRY)&_ZN6S582C53v55Ev,
  (VTBL_ENTRY)&_ZN6S582C53v56Ev,
  (VTBL_ENTRY)&_ZN6S582C53v57Ev,
  (VTBL_ENTRY)&_ZN6S582C53v58Ev,
  (VTBL_ENTRY)&_ZN6S582C53v59Ev,
  (VTBL_ENTRY)&_ZN6S582C53v60Ev,
  (VTBL_ENTRY)&_ZN6S582C53v61Ev,
  (VTBL_ENTRY)&_ZN6S582C53v62Ev,
  (VTBL_ENTRY)&_ZN6S582C53v63Ev,
  (VTBL_ENTRY)&_ZN6S582C53v64Ev,
  (VTBL_ENTRY)&_ZN6S582C53v65Ev,
  (VTBL_ENTRY)&_ZN6S582C53v66Ev,
  (VTBL_ENTRY)&_ZN6S582C53v67Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v89Ev,
};
extern VTBL_ENTRY _ZTI9S582C4_nt[];
VTBL_ENTRY *P__ZTI9S582C4_nt = _ZTI9S582C4_nt; 
extern  VTBL_ENTRY _ZTV9S582C4_nt[];
Class_Descriptor cd_S582C4_nt = {  "S582C4_nt", // class name
  bases_S582C4_nt, 1,
  &(vtc_S582C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI9S582C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S582C4_nt),90, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S582C3_nt  : S582C4_nt {
  unsigned int s582c3f0:1;
  unsigned int s582c3f1:1;
  unsigned int s582c3f2:1;
  ::S3164C27 s582c3f3;
  ::S3164C23 s582c3f4;
  ::S3164C17 s582c3f5;
  ::S3164C11 s582c3f6;
  int s582c3f7[3];
  virtual  ~S582C3_nt(); // _ZN9S582C3_ntD1Ev
  virtual void  v90(); // _ZN9S582C3_nt3v90Ev
  virtual void  v91(); // _ZN9S582C3_nt3v91Ev
  virtual void  v92(); // _ZN9S582C3_nt3v92Ev
  virtual void  v93(); // _ZN9S582C3_nt3v93Ev
  virtual void  v94(); // _ZN9S582C3_nt3v94Ev
  virtual void  v95(); // _ZN9S582C3_nt3v95Ev
  virtual void  v96(); // _ZN9S582C3_nt3v96Ev
  virtual void  v97(); // _ZN9S582C3_nt3v97Ev
  virtual void  v98(); // _ZN9S582C3_nt3v98Ev
  virtual void  v99(); // _ZN9S582C3_nt3v99Ev
  virtual void  v100(); // _ZN9S582C3_nt4v100Ev
  virtual void  v101(); // _ZN9S582C3_nt4v101Ev
  virtual void  v102(); // _ZN9S582C3_nt4v102Ev
  virtual void  v103(); // _ZN9S582C3_nt4v103Ev
  virtual void  v104(); // _ZN9S582C3_nt4v104Ev
  virtual void  v105(); // _ZN9S582C3_nt4v105Ev
  virtual void  v106(); // _ZN9S582C3_nt4v106Ev
  virtual void  v107(); // _ZN9S582C3_nt4v107Ev
  virtual void  v108(); // _ZN9S582C3_nt4v108Ev
  virtual void  v109(); // _ZN9S582C3_nt4v109Ev
  S582C3_nt(); // tgen
};
//SIG(-1 S582C3_nt) C1{ BC2{ BC3{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 Fi[2] Fp Fi[2] FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC5 FC9{ m} FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi:1 Fi:1 Fi:1 FC10{ BC11{ BC8}} FC12{ BC13{ BC8}} FC14{ BC15{ BC8}} FC16{ BC17{ BC8}} Fi[3]}


 S582C3_nt ::~S582C3_nt(){ note_dtor("S582C3_nt", this);}
void  S582C3_nt ::v90(){vfunc_called(this, "_ZN9S582C3_nt3v90Ev");}
void  S582C3_nt ::v91(){vfunc_called(this, "_ZN9S582C3_nt3v91Ev");}
void  S582C3_nt ::v92(){vfunc_called(this, "_ZN9S582C3_nt3v92Ev");}
void  S582C3_nt ::v93(){vfunc_called(this, "_ZN9S582C3_nt3v93Ev");}
void  S582C3_nt ::v94(){vfunc_called(this, "_ZN9S582C3_nt3v94Ev");}
void  S582C3_nt ::v95(){vfunc_called(this, "_ZN9S582C3_nt3v95Ev");}
void  S582C3_nt ::v96(){vfunc_called(this, "_ZN9S582C3_nt3v96Ev");}
void  S582C3_nt ::v97(){vfunc_called(this, "_ZN9S582C3_nt3v97Ev");}
void  S582C3_nt ::v98(){vfunc_called(this, "_ZN9S582C3_nt3v98Ev");}
void  S582C3_nt ::v99(){vfunc_called(this, "_ZN9S582C3_nt3v99Ev");}
void  S582C3_nt ::v100(){vfunc_called(this, "_ZN9S582C3_nt4v100Ev");}
void  S582C3_nt ::v101(){vfunc_called(this, "_ZN9S582C3_nt4v101Ev");}
void  S582C3_nt ::v102(){vfunc_called(this, "_ZN9S582C3_nt4v102Ev");}
void  S582C3_nt ::v103(){vfunc_called(this, "_ZN9S582C3_nt4v103Ev");}
void  S582C3_nt ::v104(){vfunc_called(this, "_ZN9S582C3_nt4v104Ev");}
void  S582C3_nt ::v105(){vfunc_called(this, "_ZN9S582C3_nt4v105Ev");}
void  S582C3_nt ::v106(){vfunc_called(this, "_ZN9S582C3_nt4v106Ev");}
void  S582C3_nt ::v107(){vfunc_called(this, "_ZN9S582C3_nt4v107Ev");}
void  S582C3_nt ::v108(){vfunc_called(this, "_ZN9S582C3_nt4v108Ev");}
void  S582C3_nt ::v109(){vfunc_called(this, "_ZN9S582C3_nt4v109Ev");}
S582C3_nt ::S582C3_nt(){ note_ctor("S582C3_nt", this);} // tgen

//skip512 S582C3_nt

#else // __cplusplus

extern void _ZN9S582C3_ntC1Ev();
extern void _ZN9S582C3_ntD1Ev();
Name_Map name_map_S582C3_nt[] = {
  NSPAIR(_ZN9S582C3_ntC1Ev),
  NSPAIR(_ZN9S582C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S582C5;
extern VTBL_ENTRY _ZTI6S582C5[];
extern  VTBL_ENTRY _ZTV6S582C5[];
extern Class_Descriptor cd_S582C4_nt;
extern VTBL_ENTRY _ZTI9S582C4_nt[];
extern  VTBL_ENTRY _ZTV9S582C4_nt[];
static Base_Class bases_S582C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S582C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S582C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S582C3_nt[];
extern void _ZN9S582C3_ntD1Ev();
extern void _ZN9S582C3_ntD0Ev();
extern void _ZN6S582C52v4Ev();
extern void _ZN6S582C52v5Ev();
extern void _ZN6S582C52v6Ev();
extern void _ZN6S582C52v7Ev();
extern void _ZN6S582C52v8Ev();
extern void _ZN6S582C52v9Ev();
extern void _ZN6S582C53v10Ev();
extern void _ZN6S582C53v11Ev();
extern void _ZN6S582C53v12Ev();
extern void _ZN6S582C53v13Ev();
extern void _ZN6S582C53v14Ev();
extern void _ZN6S582C53v15Ev();
extern void _ZN6S582C53v16Ev();
extern void _ZN6S582C53v17Ev();
extern void _ZN6S582C53v18Ev();
extern void _ZN6S582C53v19Ev();
extern void _ZN6S582C53v20Ev();
extern void _ZN6S582C53v21Ev();
extern void _ZN6S582C53v22Ev();
extern void _ZN6S582C53v23Ev();
extern void _ZN6S582C53v24Ev();
extern void _ZN6S582C53v25Ev();
extern void _ZN6S582C53v26Ev();
extern void _ZN6S582C53v27Ev();
extern void _ZN6S582C53v28Ev();
extern void _ZN6S582C53v29Ev();
extern void _ZN6S582C53v30Ev();
extern void _ZN6S582C53v31Ev();
extern void _ZN6S582C53v32Ev();
extern void _ZN6S582C53v33Ev();
extern void _ZN6S582C53v34Ev();
extern void _ZN6S582C53v35Ev();
extern void _ZN6S582C53v36Ev();
extern void _ZN6S582C53v37Ev();
extern void _ZN6S582C53v38Ev();
extern void _ZN6S582C53v39Ev();
extern void _ZN6S582C53v40Ev();
extern void _ZN6S582C53v41Ev();
extern void _ZN6S582C53v42Ev();
extern void _ZN6S582C53v43Ev();
extern void _ZN6S582C53v44Ev();
extern void _ZN6S582C53v45Ev();
extern void _ZN6S582C53v46Ev();
extern void _ZN6S582C53v47Ev();
extern void _ZN6S582C53v48Ev();
extern void _ZN6S582C53v49Ev();
extern void _ZN6S582C53v50Ev();
extern void _ZN6S582C53v51Ev();
extern void _ZN6S582C53v52Ev();
extern void _ZN6S582C53v53Ev();
extern void _ZN6S582C53v54Ev();
extern void _ZN6S582C53v55Ev();
extern void _ZN6S582C53v56Ev();
extern void _ZN6S582C53v57Ev();
extern void _ZN6S582C53v58Ev();
extern void _ZN6S582C53v59Ev();
extern void _ZN6S582C53v60Ev();
extern void _ZN6S582C53v61Ev();
extern void _ZN6S582C53v62Ev();
extern void _ZN6S582C53v63Ev();
extern void _ZN6S582C53v64Ev();
extern void _ZN6S582C53v65Ev();
extern void _ZN6S582C53v66Ev();
extern void _ZN6S582C53v67Ev();
extern void _ZN9S582C4_nt3v68Ev();
extern void _ZN9S582C4_nt3v69Ev();
extern void _ZN9S582C4_nt3v70Ev();
extern void _ZN9S582C4_nt3v71Ev();
extern void _ZN9S582C4_nt3v72Ev();
extern void _ZN9S582C4_nt3v73Ev();
extern void _ZN9S582C4_nt3v74Ev();
extern void _ZN9S582C4_nt3v75Ev();
extern void _ZN9S582C4_nt3v76Ev();
extern void _ZN9S582C4_nt3v77Ev();
extern void _ZN9S582C4_nt3v78Ev();
extern void _ZN9S582C4_nt3v79Ev();
extern void _ZN9S582C4_nt3v80Ev();
extern void _ZN9S582C4_nt3v81Ev();
extern void _ZN9S582C4_nt3v82Ev();
extern void _ZN9S582C4_nt3v83Ev();
extern void _ZN9S582C4_nt3v84Ev();
extern void _ZN9S582C4_nt3v85Ev();
extern void _ZN9S582C4_nt3v86Ev();
extern void _ZN9S582C4_nt3v87Ev();
extern void _ZN9S582C4_nt3v88Ev();
extern void _ZN9S582C4_nt3v89Ev();
extern void _ZN9S582C3_nt3v90Ev();
extern void _ZN9S582C3_nt3v91Ev();
extern void _ZN9S582C3_nt3v92Ev();
extern void _ZN9S582C3_nt3v93Ev();
extern void _ZN9S582C3_nt3v94Ev();
extern void _ZN9S582C3_nt3v95Ev();
extern void _ZN9S582C3_nt3v96Ev();
extern void _ZN9S582C3_nt3v97Ev();
extern void _ZN9S582C3_nt3v98Ev();
extern void _ZN9S582C3_nt3v99Ev();
extern void _ZN9S582C3_nt4v100Ev();
extern void _ZN9S582C3_nt4v101Ev();
extern void _ZN9S582C3_nt4v102Ev();
extern void _ZN9S582C3_nt4v103Ev();
extern void _ZN9S582C3_nt4v104Ev();
extern void _ZN9S582C3_nt4v105Ev();
extern void _ZN9S582C3_nt4v106Ev();
extern void _ZN9S582C3_nt4v107Ev();
extern void _ZN9S582C3_nt4v108Ev();
extern void _ZN9S582C3_nt4v109Ev();
static  VTBL_ENTRY vtc_S582C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S582C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S582C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S582C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S582C52v4Ev,
  (VTBL_ENTRY)&_ZN6S582C52v5Ev,
  (VTBL_ENTRY)&_ZN6S582C52v6Ev,
  (VTBL_ENTRY)&_ZN6S582C52v7Ev,
  (VTBL_ENTRY)&_ZN6S582C52v8Ev,
  (VTBL_ENTRY)&_ZN6S582C52v9Ev,
  (VTBL_ENTRY)&_ZN6S582C53v10Ev,
  (VTBL_ENTRY)&_ZN6S582C53v11Ev,
  (VTBL_ENTRY)&_ZN6S582C53v12Ev,
  (VTBL_ENTRY)&_ZN6S582C53v13Ev,
  (VTBL_ENTRY)&_ZN6S582C53v14Ev,
  (VTBL_ENTRY)&_ZN6S582C53v15Ev,
  (VTBL_ENTRY)&_ZN6S582C53v16Ev,
  (VTBL_ENTRY)&_ZN6S582C53v17Ev,
  (VTBL_ENTRY)&_ZN6S582C53v18Ev,
  (VTBL_ENTRY)&_ZN6S582C53v19Ev,
  (VTBL_ENTRY)&_ZN6S582C53v20Ev,
  (VTBL_ENTRY)&_ZN6S582C53v21Ev,
  (VTBL_ENTRY)&_ZN6S582C53v22Ev,
  (VTBL_ENTRY)&_ZN6S582C53v23Ev,
  (VTBL_ENTRY)&_ZN6S582C53v24Ev,
  (VTBL_ENTRY)&_ZN6S582C53v25Ev,
  (VTBL_ENTRY)&_ZN6S582C53v26Ev,
  (VTBL_ENTRY)&_ZN6S582C53v27Ev,
  (VTBL_ENTRY)&_ZN6S582C53v28Ev,
  (VTBL_ENTRY)&_ZN6S582C53v29Ev,
  (VTBL_ENTRY)&_ZN6S582C53v30Ev,
  (VTBL_ENTRY)&_ZN6S582C53v31Ev,
  (VTBL_ENTRY)&_ZN6S582C53v32Ev,
  (VTBL_ENTRY)&_ZN6S582C53v33Ev,
  (VTBL_ENTRY)&_ZN6S582C53v34Ev,
  (VTBL_ENTRY)&_ZN6S582C53v35Ev,
  (VTBL_ENTRY)&_ZN6S582C53v36Ev,
  (VTBL_ENTRY)&_ZN6S582C53v37Ev,
  (VTBL_ENTRY)&_ZN6S582C53v38Ev,
  (VTBL_ENTRY)&_ZN6S582C53v39Ev,
  (VTBL_ENTRY)&_ZN6S582C53v40Ev,
  (VTBL_ENTRY)&_ZN6S582C53v41Ev,
  (VTBL_ENTRY)&_ZN6S582C53v42Ev,
  (VTBL_ENTRY)&_ZN6S582C53v43Ev,
  (VTBL_ENTRY)&_ZN6S582C53v44Ev,
  (VTBL_ENTRY)&_ZN6S582C53v45Ev,
  (VTBL_ENTRY)&_ZN6S582C53v46Ev,
  (VTBL_ENTRY)&_ZN6S582C53v47Ev,
  (VTBL_ENTRY)&_ZN6S582C53v48Ev,
  (VTBL_ENTRY)&_ZN6S582C53v49Ev,
  (VTBL_ENTRY)&_ZN6S582C53v50Ev,
  (VTBL_ENTRY)&_ZN6S582C53v51Ev,
  (VTBL_ENTRY)&_ZN6S582C53v52Ev,
  (VTBL_ENTRY)&_ZN6S582C53v53Ev,
  (VTBL_ENTRY)&_ZN6S582C53v54Ev,
  (VTBL_ENTRY)&_ZN6S582C53v55Ev,
  (VTBL_ENTRY)&_ZN6S582C53v56Ev,
  (VTBL_ENTRY)&_ZN6S582C53v57Ev,
  (VTBL_ENTRY)&_ZN6S582C53v58Ev,
  (VTBL_ENTRY)&_ZN6S582C53v59Ev,
  (VTBL_ENTRY)&_ZN6S582C53v60Ev,
  (VTBL_ENTRY)&_ZN6S582C53v61Ev,
  (VTBL_ENTRY)&_ZN6S582C53v62Ev,
  (VTBL_ENTRY)&_ZN6S582C53v63Ev,
  (VTBL_ENTRY)&_ZN6S582C53v64Ev,
  (VTBL_ENTRY)&_ZN6S582C53v65Ev,
  (VTBL_ENTRY)&_ZN6S582C53v66Ev,
  (VTBL_ENTRY)&_ZN6S582C53v67Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v109Ev,
};
extern VTBL_ENTRY _ZTI9S582C3_nt[];
VTBL_ENTRY *P__ZTI9S582C3_nt = _ZTI9S582C3_nt; 
extern  VTBL_ENTRY _ZTV9S582C3_nt[];
Class_Descriptor cd_S582C3_nt = {  "S582C3_nt", // class name
  bases_S582C3_nt, 2,
  &(vtc_S582C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI9S582C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S582C3_nt),110, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S582C2_nt ::~S582C2_nt(){ note_dtor("S582C2_nt", this);}
void  S582C2_nt ::v110(){vfunc_called(this, "_ZN9S582C2_nt4v110Ev");}
void  S582C2_nt ::v111(){vfunc_called(this, "_ZN9S582C2_nt4v111Ev");}
void  S582C2_nt ::v112(){vfunc_called(this, "_ZN9S582C2_nt4v112Ev");}
void  S582C2_nt ::v113(){vfunc_called(this, "_ZN9S582C2_nt4v113Ev");}
S582C2_nt ::S582C2_nt(){ note_ctor("S582C2_nt", this);} // tgen

//skip512 S582C2_nt

#else // __cplusplus

extern void _ZN9S582C2_ntC1Ev();
extern void _ZN9S582C2_ntD1Ev();
Name_Map name_map_S582C2_nt[] = {
  NSPAIR(_ZN9S582C2_ntC1Ev),
  NSPAIR(_ZN9S582C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S582C5;
extern VTBL_ENTRY _ZTI6S582C5[];
extern  VTBL_ENTRY _ZTV6S582C5[];
extern Class_Descriptor cd_S582C4_nt;
extern VTBL_ENTRY _ZTI9S582C4_nt[];
extern  VTBL_ENTRY _ZTV9S582C4_nt[];
extern Class_Descriptor cd_S582C3_nt;
extern VTBL_ENTRY _ZTI9S582C3_nt[];
extern  VTBL_ENTRY _ZTV9S582C3_nt[];
static Base_Class bases_S582C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S582C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S582C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S582C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S582C2_nt[];
extern void _ZN9S582C2_ntD1Ev();
extern void _ZN9S582C2_ntD0Ev();
extern void _ZN6S582C52v4Ev();
extern void _ZN6S582C52v5Ev();
extern void _ZN6S582C52v6Ev();
extern void _ZN6S582C52v7Ev();
extern void _ZN6S582C52v8Ev();
extern void _ZN6S582C52v9Ev();
extern void _ZN6S582C53v10Ev();
extern void _ZN6S582C53v11Ev();
extern void _ZN6S582C53v12Ev();
extern void _ZN6S582C53v13Ev();
extern void _ZN6S582C53v14Ev();
extern void _ZN6S582C53v15Ev();
extern void _ZN6S582C53v16Ev();
extern void _ZN6S582C53v17Ev();
extern void _ZN6S582C53v18Ev();
extern void _ZN6S582C53v19Ev();
extern void _ZN6S582C53v20Ev();
extern void _ZN6S582C53v21Ev();
extern void _ZN6S582C53v22Ev();
extern void _ZN6S582C53v23Ev();
extern void _ZN6S582C53v24Ev();
extern void _ZN6S582C53v25Ev();
extern void _ZN6S582C53v26Ev();
extern void _ZN6S582C53v27Ev();
extern void _ZN6S582C53v28Ev();
extern void _ZN6S582C53v29Ev();
extern void _ZN6S582C53v30Ev();
extern void _ZN6S582C53v31Ev();
extern void _ZN6S582C53v32Ev();
extern void _ZN6S582C53v33Ev();
extern void _ZN6S582C53v34Ev();
extern void _ZN6S582C53v35Ev();
extern void _ZN6S582C53v36Ev();
extern void _ZN6S582C53v37Ev();
extern void _ZN6S582C53v38Ev();
extern void _ZN6S582C53v39Ev();
extern void _ZN6S582C53v40Ev();
extern void _ZN6S582C53v41Ev();
extern void _ZN6S582C53v42Ev();
extern void _ZN6S582C53v43Ev();
extern void _ZN6S582C53v44Ev();
extern void _ZN6S582C53v45Ev();
extern void _ZN6S582C53v46Ev();
extern void _ZN6S582C53v47Ev();
extern void _ZN6S582C53v48Ev();
extern void _ZN6S582C53v49Ev();
extern void _ZN6S582C53v50Ev();
extern void _ZN6S582C53v51Ev();
extern void _ZN6S582C53v52Ev();
extern void _ZN6S582C53v53Ev();
extern void _ZN6S582C53v54Ev();
extern void _ZN6S582C53v55Ev();
extern void _ZN6S582C53v56Ev();
extern void _ZN6S582C53v57Ev();
extern void _ZN6S582C53v58Ev();
extern void _ZN6S582C53v59Ev();
extern void _ZN6S582C53v60Ev();
extern void _ZN6S582C53v61Ev();
extern void _ZN6S582C53v62Ev();
extern void _ZN6S582C53v63Ev();
extern void _ZN6S582C53v64Ev();
extern void _ZN6S582C53v65Ev();
extern void _ZN6S582C53v66Ev();
extern void _ZN6S582C53v67Ev();
extern void _ZN9S582C4_nt3v68Ev();
extern void _ZN9S582C4_nt3v69Ev();
extern void _ZN9S582C4_nt3v70Ev();
extern void _ZN9S582C4_nt3v71Ev();
extern void _ZN9S582C4_nt3v72Ev();
extern void _ZN9S582C4_nt3v73Ev();
extern void _ZN9S582C4_nt3v74Ev();
extern void _ZN9S582C4_nt3v75Ev();
extern void _ZN9S582C4_nt3v76Ev();
extern void _ZN9S582C4_nt3v77Ev();
extern void _ZN9S582C4_nt3v78Ev();
extern void _ZN9S582C4_nt3v79Ev();
extern void _ZN9S582C4_nt3v80Ev();
extern void _ZN9S582C4_nt3v81Ev();
extern void _ZN9S582C4_nt3v82Ev();
extern void _ZN9S582C4_nt3v83Ev();
extern void _ZN9S582C4_nt3v84Ev();
extern void _ZN9S582C4_nt3v85Ev();
extern void _ZN9S582C4_nt3v86Ev();
extern void _ZN9S582C4_nt3v87Ev();
extern void _ZN9S582C4_nt3v88Ev();
extern void _ZN9S582C4_nt3v89Ev();
extern void _ZN9S582C3_nt3v90Ev();
extern void _ZN9S582C3_nt3v91Ev();
extern void _ZN9S582C3_nt3v92Ev();
extern void _ZN9S582C3_nt3v93Ev();
extern void _ZN9S582C3_nt3v94Ev();
extern void _ZN9S582C3_nt3v95Ev();
extern void _ZN9S582C3_nt3v96Ev();
extern void _ZN9S582C3_nt3v97Ev();
extern void _ZN9S582C3_nt3v98Ev();
extern void _ZN9S582C3_nt3v99Ev();
extern void _ZN9S582C3_nt4v100Ev();
extern void _ZN9S582C3_nt4v101Ev();
extern void _ZN9S582C3_nt4v102Ev();
extern void _ZN9S582C3_nt4v103Ev();
extern void _ZN9S582C3_nt4v104Ev();
extern void _ZN9S582C3_nt4v105Ev();
extern void _ZN9S582C3_nt4v106Ev();
extern void _ZN9S582C3_nt4v107Ev();
extern void _ZN9S582C3_nt4v108Ev();
extern void _ZN9S582C3_nt4v109Ev();
extern void _ZN9S582C2_nt4v110Ev();
extern void _ZN9S582C2_nt4v111Ev();
extern void _ZN9S582C2_nt4v112Ev();
extern void _ZN9S582C2_nt4v113Ev();
static  VTBL_ENTRY vtc_S582C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S582C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S582C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S582C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S582C52v4Ev,
  (VTBL_ENTRY)&_ZN6S582C52v5Ev,
  (VTBL_ENTRY)&_ZN6S582C52v6Ev,
  (VTBL_ENTRY)&_ZN6S582C52v7Ev,
  (VTBL_ENTRY)&_ZN6S582C52v8Ev,
  (VTBL_ENTRY)&_ZN6S582C52v9Ev,
  (VTBL_ENTRY)&_ZN6S582C53v10Ev,
  (VTBL_ENTRY)&_ZN6S582C53v11Ev,
  (VTBL_ENTRY)&_ZN6S582C53v12Ev,
  (VTBL_ENTRY)&_ZN6S582C53v13Ev,
  (VTBL_ENTRY)&_ZN6S582C53v14Ev,
  (VTBL_ENTRY)&_ZN6S582C53v15Ev,
  (VTBL_ENTRY)&_ZN6S582C53v16Ev,
  (VTBL_ENTRY)&_ZN6S582C53v17Ev,
  (VTBL_ENTRY)&_ZN6S582C53v18Ev,
  (VTBL_ENTRY)&_ZN6S582C53v19Ev,
  (VTBL_ENTRY)&_ZN6S582C53v20Ev,
  (VTBL_ENTRY)&_ZN6S582C53v21Ev,
  (VTBL_ENTRY)&_ZN6S582C53v22Ev,
  (VTBL_ENTRY)&_ZN6S582C53v23Ev,
  (VTBL_ENTRY)&_ZN6S582C53v24Ev,
  (VTBL_ENTRY)&_ZN6S582C53v25Ev,
  (VTBL_ENTRY)&_ZN6S582C53v26Ev,
  (VTBL_ENTRY)&_ZN6S582C53v27Ev,
  (VTBL_ENTRY)&_ZN6S582C53v28Ev,
  (VTBL_ENTRY)&_ZN6S582C53v29Ev,
  (VTBL_ENTRY)&_ZN6S582C53v30Ev,
  (VTBL_ENTRY)&_ZN6S582C53v31Ev,
  (VTBL_ENTRY)&_ZN6S582C53v32Ev,
  (VTBL_ENTRY)&_ZN6S582C53v33Ev,
  (VTBL_ENTRY)&_ZN6S582C53v34Ev,
  (VTBL_ENTRY)&_ZN6S582C53v35Ev,
  (VTBL_ENTRY)&_ZN6S582C53v36Ev,
  (VTBL_ENTRY)&_ZN6S582C53v37Ev,
  (VTBL_ENTRY)&_ZN6S582C53v38Ev,
  (VTBL_ENTRY)&_ZN6S582C53v39Ev,
  (VTBL_ENTRY)&_ZN6S582C53v40Ev,
  (VTBL_ENTRY)&_ZN6S582C53v41Ev,
  (VTBL_ENTRY)&_ZN6S582C53v42Ev,
  (VTBL_ENTRY)&_ZN6S582C53v43Ev,
  (VTBL_ENTRY)&_ZN6S582C53v44Ev,
  (VTBL_ENTRY)&_ZN6S582C53v45Ev,
  (VTBL_ENTRY)&_ZN6S582C53v46Ev,
  (VTBL_ENTRY)&_ZN6S582C53v47Ev,
  (VTBL_ENTRY)&_ZN6S582C53v48Ev,
  (VTBL_ENTRY)&_ZN6S582C53v49Ev,
  (VTBL_ENTRY)&_ZN6S582C53v50Ev,
  (VTBL_ENTRY)&_ZN6S582C53v51Ev,
  (VTBL_ENTRY)&_ZN6S582C53v52Ev,
  (VTBL_ENTRY)&_ZN6S582C53v53Ev,
  (VTBL_ENTRY)&_ZN6S582C53v54Ev,
  (VTBL_ENTRY)&_ZN6S582C53v55Ev,
  (VTBL_ENTRY)&_ZN6S582C53v56Ev,
  (VTBL_ENTRY)&_ZN6S582C53v57Ev,
  (VTBL_ENTRY)&_ZN6S582C53v58Ev,
  (VTBL_ENTRY)&_ZN6S582C53v59Ev,
  (VTBL_ENTRY)&_ZN6S582C53v60Ev,
  (VTBL_ENTRY)&_ZN6S582C53v61Ev,
  (VTBL_ENTRY)&_ZN6S582C53v62Ev,
  (VTBL_ENTRY)&_ZN6S582C53v63Ev,
  (VTBL_ENTRY)&_ZN6S582C53v64Ev,
  (VTBL_ENTRY)&_ZN6S582C53v65Ev,
  (VTBL_ENTRY)&_ZN6S582C53v66Ev,
  (VTBL_ENTRY)&_ZN6S582C53v67Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S582C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S582C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S582C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S582C2_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI9S582C2_nt[];
VTBL_ENTRY *P__ZTI9S582C2_nt = _ZTI9S582C2_nt; 
extern  VTBL_ENTRY _ZTV9S582C2_nt[];
Class_Descriptor cd_S582C2_nt = {  "S582C2_nt", // class name
  bases_S582C2_nt, 3,
  &(vtc_S582C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI9S582C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S582C2_nt),114, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S582C1 ::~S582C1(){ note_dtor("S582C1", this);}
void  S582C1 ::v1(){vfunc_called(this, "_ZN6S582C12v1Ev");}
void  S582C1 ::v2(){vfunc_called(this, "_ZN6S582C12v2Ev");}
void  S582C1 ::v3(){vfunc_called(this, "_ZN6S582C12v3Ev");}
S582C1 ::S582C1(){ note_ctor("S582C1", this);} // tgen

static void Test_S582C1()
{
  extern Class_Descriptor cd_S582C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,60)];
    init_test(&cd_S582C1, buf);
    S582C1 *dp, &lv = *(dp=new (buf) S582C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,236), "sizeof(S582C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S582C1)");
    check_base_class_offset(lv, (S582C5*)(S582C4_nt*)(S582C3_nt*)(S582C2_nt*), 0, "S582C1");
    check_base_class_offset(lv, (S582C4_nt*)(S582C3_nt*)(S582C2_nt*), 0, "S582C1");
    check_base_class_offset(lv, (S582C3_nt*)(S582C2_nt*), 0, "S582C1");
    check_base_class_offset(lv, (S582C2_nt*), 0, "S582C1");
    check_field_offset(lv, s582c1f0, ABISELECT(296,220), "S582C1.s582c1f0");
    check_field_offset(lv, s582c1f1, ABISELECT(304,224), "S582C1.s582c1f1");
    check_field_offset(lv, s582c1f2, ABISELECT(312,232), "S582C1.s582c1f2");
    test_class_info(&lv, &cd_S582C1);
    dp->~S582C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS582C1(Test_S582C1, "S582C1", ABISELECT(320,236));

#else // __cplusplus

extern void _ZN6S582C1C1Ev();
extern void _ZN6S582C1D1Ev();
Name_Map name_map_S582C1[] = {
  NSPAIR(_ZN6S582C1C1Ev),
  NSPAIR(_ZN6S582C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S582C5;
extern VTBL_ENTRY _ZTI6S582C5[];
extern  VTBL_ENTRY _ZTV6S582C5[];
extern Class_Descriptor cd_S582C4_nt;
extern VTBL_ENTRY _ZTI9S582C4_nt[];
extern  VTBL_ENTRY _ZTV9S582C4_nt[];
extern Class_Descriptor cd_S582C3_nt;
extern VTBL_ENTRY _ZTI9S582C3_nt[];
extern  VTBL_ENTRY _ZTV9S582C3_nt[];
extern Class_Descriptor cd_S582C2_nt;
extern VTBL_ENTRY _ZTI9S582C2_nt[];
extern  VTBL_ENTRY _ZTV9S582C2_nt[];
static Base_Class bases_S582C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S582C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S582C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S582C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S582C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S582C1[];
extern void _ZN6S582C1D1Ev();
extern void _ZN6S582C1D0Ev();
extern void _ZN6S582C52v4Ev();
extern void _ZN6S582C52v5Ev();
extern void _ZN6S582C52v6Ev();
extern void _ZN6S582C52v7Ev();
extern void _ZN6S582C52v8Ev();
extern void _ZN6S582C52v9Ev();
extern void _ZN6S582C53v10Ev();
extern void _ZN6S582C53v11Ev();
extern void _ZN6S582C53v12Ev();
extern void _ZN6S582C53v13Ev();
extern void _ZN6S582C53v14Ev();
extern void _ZN6S582C53v15Ev();
extern void _ZN6S582C53v16Ev();
extern void _ZN6S582C53v17Ev();
extern void _ZN6S582C53v18Ev();
extern void _ZN6S582C53v19Ev();
extern void _ZN6S582C53v20Ev();
extern void _ZN6S582C53v21Ev();
extern void _ZN6S582C53v22Ev();
extern void _ZN6S582C53v23Ev();
extern void _ZN6S582C53v24Ev();
extern void _ZN6S582C53v25Ev();
extern void _ZN6S582C53v26Ev();
extern void _ZN6S582C53v27Ev();
extern void _ZN6S582C53v28Ev();
extern void _ZN6S582C53v29Ev();
extern void _ZN6S582C53v30Ev();
extern void _ZN6S582C53v31Ev();
extern void _ZN6S582C53v32Ev();
extern void _ZN6S582C53v33Ev();
extern void _ZN6S582C53v34Ev();
extern void _ZN6S582C53v35Ev();
extern void _ZN6S582C53v36Ev();
extern void _ZN6S582C53v37Ev();
extern void _ZN6S582C53v38Ev();
extern void _ZN6S582C53v39Ev();
extern void _ZN6S582C53v40Ev();
extern void _ZN6S582C53v41Ev();
extern void _ZN6S582C53v42Ev();
extern void _ZN6S582C53v43Ev();
extern void _ZN6S582C53v44Ev();
extern void _ZN6S582C53v45Ev();
extern void _ZN6S582C53v46Ev();
extern void _ZN6S582C53v47Ev();
extern void _ZN6S582C53v48Ev();
extern void _ZN6S582C53v49Ev();
extern void _ZN6S582C53v50Ev();
extern void _ZN6S582C53v51Ev();
extern void _ZN6S582C53v52Ev();
extern void _ZN6S582C53v53Ev();
extern void _ZN6S582C53v54Ev();
extern void _ZN6S582C53v55Ev();
extern void _ZN6S582C53v56Ev();
extern void _ZN6S582C53v57Ev();
extern void _ZN6S582C53v58Ev();
extern void _ZN6S582C53v59Ev();
extern void _ZN6S582C53v60Ev();
extern void _ZN6S582C53v61Ev();
extern void _ZN6S582C53v62Ev();
extern void _ZN6S582C53v63Ev();
extern void _ZN6S582C53v64Ev();
extern void _ZN6S582C53v65Ev();
extern void _ZN6S582C53v66Ev();
extern void _ZN6S582C53v67Ev();
extern void _ZN9S582C4_nt3v68Ev();
extern void _ZN9S582C4_nt3v69Ev();
extern void _ZN9S582C4_nt3v70Ev();
extern void _ZN9S582C4_nt3v71Ev();
extern void _ZN9S582C4_nt3v72Ev();
extern void _ZN9S582C4_nt3v73Ev();
extern void _ZN9S582C4_nt3v74Ev();
extern void _ZN9S582C4_nt3v75Ev();
extern void _ZN9S582C4_nt3v76Ev();
extern void _ZN9S582C4_nt3v77Ev();
extern void _ZN9S582C4_nt3v78Ev();
extern void _ZN9S582C4_nt3v79Ev();
extern void _ZN9S582C4_nt3v80Ev();
extern void _ZN9S582C4_nt3v81Ev();
extern void _ZN9S582C4_nt3v82Ev();
extern void _ZN9S582C4_nt3v83Ev();
extern void _ZN9S582C4_nt3v84Ev();
extern void _ZN9S582C4_nt3v85Ev();
extern void _ZN9S582C4_nt3v86Ev();
extern void _ZN9S582C4_nt3v87Ev();
extern void _ZN9S582C4_nt3v88Ev();
extern void _ZN9S582C4_nt3v89Ev();
extern void _ZN9S582C3_nt3v90Ev();
extern void _ZN9S582C3_nt3v91Ev();
extern void _ZN9S582C3_nt3v92Ev();
extern void _ZN9S582C3_nt3v93Ev();
extern void _ZN9S582C3_nt3v94Ev();
extern void _ZN9S582C3_nt3v95Ev();
extern void _ZN9S582C3_nt3v96Ev();
extern void _ZN9S582C3_nt3v97Ev();
extern void _ZN9S582C3_nt3v98Ev();
extern void _ZN9S582C3_nt3v99Ev();
extern void _ZN9S582C3_nt4v100Ev();
extern void _ZN9S582C3_nt4v101Ev();
extern void _ZN9S582C3_nt4v102Ev();
extern void _ZN9S582C3_nt4v103Ev();
extern void _ZN9S582C3_nt4v104Ev();
extern void _ZN9S582C3_nt4v105Ev();
extern void _ZN9S582C3_nt4v106Ev();
extern void _ZN9S582C3_nt4v107Ev();
extern void _ZN9S582C3_nt4v108Ev();
extern void _ZN9S582C3_nt4v109Ev();
extern void _ZN9S582C2_nt4v110Ev();
extern void _ZN9S582C2_nt4v111Ev();
extern void _ZN9S582C2_nt4v112Ev();
extern void _ZN9S582C2_nt4v113Ev();
extern void _ZN6S582C12v1Ev();
extern void _ZN6S582C12v2Ev();
extern void _ZN6S582C12v3Ev();
static  VTBL_ENTRY vtc_S582C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S582C1[0]),
  (VTBL_ENTRY)&_ZN6S582C1D1Ev,
  (VTBL_ENTRY)&_ZN6S582C1D0Ev,
  (VTBL_ENTRY)&_ZN6S582C52v4Ev,
  (VTBL_ENTRY)&_ZN6S582C52v5Ev,
  (VTBL_ENTRY)&_ZN6S582C52v6Ev,
  (VTBL_ENTRY)&_ZN6S582C52v7Ev,
  (VTBL_ENTRY)&_ZN6S582C52v8Ev,
  (VTBL_ENTRY)&_ZN6S582C52v9Ev,
  (VTBL_ENTRY)&_ZN6S582C53v10Ev,
  (VTBL_ENTRY)&_ZN6S582C53v11Ev,
  (VTBL_ENTRY)&_ZN6S582C53v12Ev,
  (VTBL_ENTRY)&_ZN6S582C53v13Ev,
  (VTBL_ENTRY)&_ZN6S582C53v14Ev,
  (VTBL_ENTRY)&_ZN6S582C53v15Ev,
  (VTBL_ENTRY)&_ZN6S582C53v16Ev,
  (VTBL_ENTRY)&_ZN6S582C53v17Ev,
  (VTBL_ENTRY)&_ZN6S582C53v18Ev,
  (VTBL_ENTRY)&_ZN6S582C53v19Ev,
  (VTBL_ENTRY)&_ZN6S582C53v20Ev,
  (VTBL_ENTRY)&_ZN6S582C53v21Ev,
  (VTBL_ENTRY)&_ZN6S582C53v22Ev,
  (VTBL_ENTRY)&_ZN6S582C53v23Ev,
  (VTBL_ENTRY)&_ZN6S582C53v24Ev,
  (VTBL_ENTRY)&_ZN6S582C53v25Ev,
  (VTBL_ENTRY)&_ZN6S582C53v26Ev,
  (VTBL_ENTRY)&_ZN6S582C53v27Ev,
  (VTBL_ENTRY)&_ZN6S582C53v28Ev,
  (VTBL_ENTRY)&_ZN6S582C53v29Ev,
  (VTBL_ENTRY)&_ZN6S582C53v30Ev,
  (VTBL_ENTRY)&_ZN6S582C53v31Ev,
  (VTBL_ENTRY)&_ZN6S582C53v32Ev,
  (VTBL_ENTRY)&_ZN6S582C53v33Ev,
  (VTBL_ENTRY)&_ZN6S582C53v34Ev,
  (VTBL_ENTRY)&_ZN6S582C53v35Ev,
  (VTBL_ENTRY)&_ZN6S582C53v36Ev,
  (VTBL_ENTRY)&_ZN6S582C53v37Ev,
  (VTBL_ENTRY)&_ZN6S582C53v38Ev,
  (VTBL_ENTRY)&_ZN6S582C53v39Ev,
  (VTBL_ENTRY)&_ZN6S582C53v40Ev,
  (VTBL_ENTRY)&_ZN6S582C53v41Ev,
  (VTBL_ENTRY)&_ZN6S582C53v42Ev,
  (VTBL_ENTRY)&_ZN6S582C53v43Ev,
  (VTBL_ENTRY)&_ZN6S582C53v44Ev,
  (VTBL_ENTRY)&_ZN6S582C53v45Ev,
  (VTBL_ENTRY)&_ZN6S582C53v46Ev,
  (VTBL_ENTRY)&_ZN6S582C53v47Ev,
  (VTBL_ENTRY)&_ZN6S582C53v48Ev,
  (VTBL_ENTRY)&_ZN6S582C53v49Ev,
  (VTBL_ENTRY)&_ZN6S582C53v50Ev,
  (VTBL_ENTRY)&_ZN6S582C53v51Ev,
  (VTBL_ENTRY)&_ZN6S582C53v52Ev,
  (VTBL_ENTRY)&_ZN6S582C53v53Ev,
  (VTBL_ENTRY)&_ZN6S582C53v54Ev,
  (VTBL_ENTRY)&_ZN6S582C53v55Ev,
  (VTBL_ENTRY)&_ZN6S582C53v56Ev,
  (VTBL_ENTRY)&_ZN6S582C53v57Ev,
  (VTBL_ENTRY)&_ZN6S582C53v58Ev,
  (VTBL_ENTRY)&_ZN6S582C53v59Ev,
  (VTBL_ENTRY)&_ZN6S582C53v60Ev,
  (VTBL_ENTRY)&_ZN6S582C53v61Ev,
  (VTBL_ENTRY)&_ZN6S582C53v62Ev,
  (VTBL_ENTRY)&_ZN6S582C53v63Ev,
  (VTBL_ENTRY)&_ZN6S582C53v64Ev,
  (VTBL_ENTRY)&_ZN6S582C53v65Ev,
  (VTBL_ENTRY)&_ZN6S582C53v66Ev,
  (VTBL_ENTRY)&_ZN6S582C53v67Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S582C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S582C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S582C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S582C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S582C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S582C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN6S582C12v1Ev,
  (VTBL_ENTRY)&_ZN6S582C12v2Ev,
  (VTBL_ENTRY)&_ZN6S582C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S582C1[];
extern  VTBL_ENTRY _ZTV6S582C1[];
Class_Descriptor cd_S582C1 = {  "S582C1", // class name
  bases_S582C1, 4,
  &(vtc_S582C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,236), // object size
  NSPAIRA(_ZTI6S582C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S582C1),117, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4676C3  {
  ::S2213C25 s4676c3f0;
  int s4676c3f1;
  ::S2137C9 s4676c3f2;
  void *s4676c3f3;
  ::S2213C5_nt s4676c3f4;
  void *s4676c3f5[3];
  ::S2213C37 s4676c3f6;
  void *s4676c3f7[4];
  ::S2137C18 s4676c3f8;
  ::S2137C19_nt s4676c3f9;
  int s4676c3f10;
  __tsi64 s4676c3f11;
  char s4676c3f12;
  int s4676c3f13;
  __tsi64 s4676c3f14;
  ::S2137C23_nt s4676c3f15[5];
  void *s4676c3f16[2];
  virtual  ~S4676C3(); // _ZN7S4676C3D1Ev
  virtual void  v28(); // _ZN7S4676C33v28Ev
  virtual void  v29(); // _ZN7S4676C33v29Ev
  virtual void  v30(); // _ZN7S4676C33v30Ev
  virtual void  v31(); // _ZN7S4676C33v31Ev
  virtual void  v32(); // _ZN7S4676C33v32Ev
  virtual void  v33(); // _ZN7S4676C33v33Ev
  virtual void  v34(); // _ZN7S4676C33v34Ev
  virtual void  v35(); // _ZN7S4676C33v35Ev
  virtual void  v36(); // _ZN7S4676C33v36Ev
  virtual void  v37(); // _ZN7S4676C33v37Ev
  virtual void  v38(); // _ZN7S4676C33v38Ev
  virtual void  v39(); // _ZN7S4676C33v39Ev
  virtual void  v40(); // _ZN7S4676C33v40Ev
  virtual void  v41(); // _ZN7S4676C33v41Ev
  virtual void  v42(); // _ZN7S4676C33v42Ev
  virtual void  v43(); // _ZN7S4676C33v43Ev
  virtual void  v44(); // _ZN7S4676C33v44Ev
  virtual void  v45(); // _ZN7S4676C33v45Ev
  virtual void  v46(); // _ZN7S4676C33v46Ev
  virtual void  v47(); // _ZN7S4676C33v47Ev
  virtual void  v48(); // _ZN7S4676C33v48Ev
  virtual void  v49(); // _ZN7S4676C33v49Ev
  virtual void  v50(); // _ZN7S4676C33v50Ev
  virtual void  v51(); // _ZN7S4676C33v51Ev
  virtual void  v52(); // _ZN7S4676C33v52Ev
  virtual void  v53(); // _ZN7S4676C33v53Ev
  virtual void  v54(); // _ZN7S4676C33v54Ev
  virtual void  v55(); // _ZN7S4676C33v55Ev
  virtual void  v56(); // _ZN7S4676C33v56Ev
  virtual void  v57(); // _ZN7S4676C33v57Ev
  virtual void  v58(); // _ZN7S4676C33v58Ev
  virtual void  v59(); // _ZN7S4676C33v59Ev
  virtual void  v60(); // _ZN7S4676C33v60Ev
  virtual void  v61(); // _ZN7S4676C33v61Ev
  virtual void  v62(); // _ZN7S4676C33v62Ev
  virtual void  v63(); // _ZN7S4676C33v63Ev
  virtual void  v64(); // _ZN7S4676C33v64Ev
  virtual void  v65(); // _ZN7S4676C33v65Ev
  virtual void  v66(); // _ZN7S4676C33v66Ev
  virtual void  v67(); // _ZN7S4676C33v67Ev
  virtual void  v68(); // _ZN7S4676C33v68Ev
  virtual void  v69(); // _ZN7S4676C33v69Ev
  virtual void  v70(); // _ZN7S4676C33v70Ev
  virtual void  v71(); // _ZN7S4676C33v71Ev
  virtual void  v72(); // _ZN7S4676C33v72Ev
  virtual void  v73(); // _ZN7S4676C33v73Ev
  virtual void  v74(); // _ZN7S4676C33v74Ev
  virtual void  v75(); // _ZN7S4676C33v75Ev
  virtual void  v76(); // _ZN7S4676C33v76Ev
  virtual void  v77(); // _ZN7S4676C33v77Ev
  virtual void  v78(); // _ZN7S4676C33v78Ev
  virtual void  v79(); // _ZN7S4676C33v79Ev
  virtual void  v80(); // _ZN7S4676C33v80Ev
  virtual void  v81(); // _ZN7S4676C33v81Ev
  virtual void  v82(); // _ZN7S4676C33v82Ev
  virtual void  v83(); // _ZN7S4676C33v83Ev
  virtual void  v84(); // _ZN7S4676C33v84Ev
  virtual void  v85(); // _ZN7S4676C33v85Ev
  virtual void  v86(); // _ZN7S4676C33v86Ev
  virtual void  v87(); // _ZN7S4676C33v87Ev
  virtual void  v88(); // _ZN7S4676C33v88Ev
  virtual void  v89(); // _ZN7S4676C33v89Ev
  virtual void  v90(); // _ZN7S4676C33v90Ev
  virtual void  v91(); // _ZN7S4676C33v91Ev
  virtual void  v92(); // _ZN7S4676C33v92Ev
  virtual void  v93(); // _ZN7S4676C33v93Ev
  virtual void  v94(); // _ZN7S4676C33v94Ev
  virtual void  v95(); // _ZN7S4676C33v95Ev
  virtual void  v96(); // _ZN7S4676C33v96Ev
  virtual void  v97(); // _ZN7S4676C33v97Ev
  virtual void  v98(); // _ZN7S4676C33v98Ev
  virtual void  v99(); // _ZN7S4676C33v99Ev
  virtual void  v100(); // _ZN7S4676C34v100Ev
  virtual void  v101(); // _ZN7S4676C34v101Ev
  virtual void  v102(); // _ZN7S4676C34v102Ev
  S4676C3(); // tgen
};
//SIG(-1 S4676C3) 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 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 FC2{ BC3{ m Fp Fi FC4{ m} FC4}} Fi FC5{ m Fi Fp Fc[8] Fp FC6{ m Fi[2]} FC7{ m Fc Fi[8] Fp[4]} Fi Fp} Fp FC8{ BC9{ m Fp Fi FC10{ m} FC11{ m}}} Fp[3] FC12{ m Fp Fi[2] FC13{ m}} Fp[4] FC14{ BC5 Fp[2]} FC15{ BC3} Fi FL Fc Fi FL FC16{ m Fp[2]}[5] Fp[2]}


 S4676C3 ::~S4676C3(){ note_dtor("S4676C3", this);}
void  S4676C3 ::v28(){vfunc_called(this, "_ZN7S4676C33v28Ev");}
void  S4676C3 ::v29(){vfunc_called(this, "_ZN7S4676C33v29Ev");}
void  S4676C3 ::v30(){vfunc_called(this, "_ZN7S4676C33v30Ev");}
void  S4676C3 ::v31(){vfunc_called(this, "_ZN7S4676C33v31Ev");}
void  S4676C3 ::v32(){vfunc_called(this, "_ZN7S4676C33v32Ev");}
void  S4676C3 ::v33(){vfunc_called(this, "_ZN7S4676C33v33Ev");}
void  S4676C3 ::v34(){vfunc_called(this, "_ZN7S4676C33v34Ev");}
void  S4676C3 ::v35(){vfunc_called(this, "_ZN7S4676C33v35Ev");}
void  S4676C3 ::v36(){vfunc_called(this, "_ZN7S4676C33v36Ev");}
void  S4676C3 ::v37(){vfunc_called(this, "_ZN7S4676C33v37Ev");}
void  S4676C3 ::v38(){vfunc_called(this, "_ZN7S4676C33v38Ev");}
void  S4676C3 ::v39(){vfunc_called(this, "_ZN7S4676C33v39Ev");}
void  S4676C3 ::v40(){vfunc_called(this, "_ZN7S4676C33v40Ev");}
void  S4676C3 ::v41(){vfunc_called(this, "_ZN7S4676C33v41Ev");}
void  S4676C3 ::v42(){vfunc_called(this, "_ZN7S4676C33v42Ev");}
void  S4676C3 ::v43(){vfunc_called(this, "_ZN7S4676C33v43Ev");}
void  S4676C3 ::v44(){vfunc_called(this, "_ZN7S4676C33v44Ev");}
void  S4676C3 ::v45(){vfunc_called(this, "_ZN7S4676C33v45Ev");}
void  S4676C3 ::v46(){vfunc_called(this, "_ZN7S4676C33v46Ev");}
void  S4676C3 ::v47(){vfunc_called(this, "_ZN7S4676C33v47Ev");}
void  S4676C3 ::v48(){vfunc_called(this, "_ZN7S4676C33v48Ev");}
void  S4676C3 ::v49(){vfunc_called(this, "_ZN7S4676C33v49Ev");}
void  S4676C3 ::v50(){vfunc_called(this, "_ZN7S4676C33v50Ev");}
void  S4676C3 ::v51(){vfunc_called(this, "_ZN7S4676C33v51Ev");}
void  S4676C3 ::v52(){vfunc_called(this, "_ZN7S4676C33v52Ev");}
void  S4676C3 ::v53(){vfunc_called(this, "_ZN7S4676C33v53Ev");}
void  S4676C3 ::v54(){vfunc_called(this, "_ZN7S4676C33v54Ev");}
void  S4676C3 ::v55(){vfunc_called(this, "_ZN7S4676C33v55Ev");}
void  S4676C3 ::v56(){vfunc_called(this, "_ZN7S4676C33v56Ev");}
void  S4676C3 ::v57(){vfunc_called(this, "_ZN7S4676C33v57Ev");}
void  S4676C3 ::v58(){vfunc_called(this, "_ZN7S4676C33v58Ev");}
void  S4676C3 ::v59(){vfunc_called(this, "_ZN7S4676C33v59Ev");}
void  S4676C3 ::v60(){vfunc_called(this, "_ZN7S4676C33v60Ev");}
void  S4676C3 ::v61(){vfunc_called(this, "_ZN7S4676C33v61Ev");}
void  S4676C3 ::v62(){vfunc_called(this, "_ZN7S4676C33v62Ev");}
void  S4676C3 ::v63(){vfunc_called(this, "_ZN7S4676C33v63Ev");}
void  S4676C3 ::v64(){vfunc_called(this, "_ZN7S4676C33v64Ev");}
void  S4676C3 ::v65(){vfunc_called(this, "_ZN7S4676C33v65Ev");}
void  S4676C3 ::v66(){vfunc_called(this, "_ZN7S4676C33v66Ev");}
void  S4676C3 ::v67(){vfunc_called(this, "_ZN7S4676C33v67Ev");}
void  S4676C3 ::v68(){vfunc_called(this, "_ZN7S4676C33v68Ev");}
void  S4676C3 ::v69(){vfunc_called(this, "_ZN7S4676C33v69Ev");}
void  S4676C3 ::v70(){vfunc_called(this, "_ZN7S4676C33v70Ev");}
void  S4676C3 ::v71(){vfunc_called(this, "_ZN7S4676C33v71Ev");}
void  S4676C3 ::v72(){vfunc_called(this, "_ZN7S4676C33v72Ev");}
void  S4676C3 ::v73(){vfunc_called(this, "_ZN7S4676C33v73Ev");}
void  S4676C3 ::v74(){vfunc_called(this, "_ZN7S4676C33v74Ev");}
void  S4676C3 ::v75(){vfunc_called(this, "_ZN7S4676C33v75Ev");}
void  S4676C3 ::v76(){vfunc_called(this, "_ZN7S4676C33v76Ev");}
void  S4676C3 ::v77(){vfunc_called(this, "_ZN7S4676C33v77Ev");}
void  S4676C3 ::v78(){vfunc_called(this, "_ZN7S4676C33v78Ev");}
void  S4676C3 ::v79(){vfunc_called(this, "_ZN7S4676C33v79Ev");}
void  S4676C3 ::v80(){vfunc_called(this, "_ZN7S4676C33v80Ev");}
void  S4676C3 ::v81(){vfunc_called(this, "_ZN7S4676C33v81Ev");}
void  S4676C3 ::v82(){vfunc_called(this, "_ZN7S4676C33v82Ev");}
void  S4676C3 ::v83(){vfunc_called(this, "_ZN7S4676C33v83Ev");}
void  S4676C3 ::v84(){vfunc_called(this, "_ZN7S4676C33v84Ev");}
void  S4676C3 ::v85(){vfunc_called(this, "_ZN7S4676C33v85Ev");}
void  S4676C3 ::v86(){vfunc_called(this, "_ZN7S4676C33v86Ev");}
void  S4676C3 ::v87(){vfunc_called(this, "_ZN7S4676C33v87Ev");}
void  S4676C3 ::v88(){vfunc_called(this, "_ZN7S4676C33v88Ev");}
void  S4676C3 ::v89(){vfunc_called(this, "_ZN7S4676C33v89Ev");}
void  S4676C3 ::v90(){vfunc_called(this, "_ZN7S4676C33v90Ev");}
void  S4676C3 ::v91(){vfunc_called(this, "_ZN7S4676C33v91Ev");}
void  S4676C3 ::v92(){vfunc_called(this, "_ZN7S4676C33v92Ev");}
void  S4676C3 ::v93(){vfunc_called(this, "_ZN7S4676C33v93Ev");}
void  S4676C3 ::v94(){vfunc_called(this, "_ZN7S4676C33v94Ev");}
void  S4676C3 ::v95(){vfunc_called(this, "_ZN7S4676C33v95Ev");}
void  S4676C3 ::v96(){vfunc_called(this, "_ZN7S4676C33v96Ev");}
void  S4676C3 ::v97(){vfunc_called(this, "_ZN7S4676C33v97Ev");}
void  S4676C3 ::v98(){vfunc_called(this, "_ZN7S4676C33v98Ev");}
void  S4676C3 ::v99(){vfunc_called(this, "_ZN7S4676C33v99Ev");}
void  S4676C3 ::v100(){vfunc_called(this, "_ZN7S4676C34v100Ev");}
void  S4676C3 ::v101(){vfunc_called(this, "_ZN7S4676C34v101Ev");}
void  S4676C3 ::v102(){vfunc_called(this, "_ZN7S4676C34v102Ev");}
S4676C3 ::S4676C3(){ note_ctor("S4676C3", this);} // tgen

static void Test_S4676C3()
{
  extern Class_Descriptor cd_S4676C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(70,89)];
    init_test(&cd_S4676C3, buf);
    S4676C3 *dp, &lv = *(dp=new (buf) S4676C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(552,352), "sizeof(S4676C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4676C3)");
    check_field_offset(lv, s4676c3f0, ABISELECT(8,4), "S4676C3.s4676c3f0");
    check_field_offset(lv, s4676c3f1, ABISELECT(24,16), "S4676C3.s4676c3f1");
    check_field_offset(lv, s4676c3f2, ABISELECT(32,20), "S4676C3.s4676c3f2");
    check_field_offset(lv, s4676c3f3, ABISELECT(160,108), "S4676C3.s4676c3f3");
    check_field_offset(lv, s4676c3f4, ABISELECT(168,112), "S4676C3.s4676c3f4");
    check_field_offset(lv, s4676c3f5, ABISELECT(184,124), "S4676C3.s4676c3f5");
    check_field_offset(lv, s4676c3f6, ABISELECT(208,136), "S4676C3.s4676c3f6");
    check_field_offset(lv, s4676c3f7, ABISELECT(232,152), "S4676C3.s4676c3f7");
    check_field_offset(lv, s4676c3f8, ABISELECT(264,168), "S4676C3.s4676c3f8");
    check_field_offset(lv, s4676c3f9, ABISELECT(408,264), "S4676C3.s4676c3f9");
    check_field_offset(lv, s4676c3f10, ABISELECT(424,276), "S4676C3.s4676c3f10");
    check_field_offset(lv, s4676c3f11, ABISELECT(432,280), "S4676C3.s4676c3f11");
    check_field_offset(lv, s4676c3f12, ABISELECT(440,288), "S4676C3.s4676c3f12");
    check_field_offset(lv, s4676c3f13, ABISELECT(444,292), "S4676C3.s4676c3f13");
    check_field_offset(lv, s4676c3f14, ABISELECT(448,296), "S4676C3.s4676c3f14");
    check_field_offset(lv, s4676c3f15, ABISELECT(456,304), "S4676C3.s4676c3f15");
    check_field_offset(lv, s4676c3f16, ABISELECT(536,344), "S4676C3.s4676c3f16");
    test_class_info(&lv, &cd_S4676C3);
    dp->~S4676C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4676C3(Test_S4676C3, "S4676C3", ABISELECT(552,352));

#else // __cplusplus

extern void _ZN7S4676C3C1Ev();
extern void _ZN7S4676C3D1Ev();
Name_Map name_map_S4676C3[] = {
  NSPAIR(_ZN7S4676C3C1Ev),
  NSPAIR(_ZN7S4676C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4676C3[];
extern void _ZN7S4676C3D1Ev();
extern void _ZN7S4676C3D0Ev();
extern void _ZN7S4676C33v28Ev();
extern void _ZN7S4676C33v29Ev();
extern void _ZN7S4676C33v30Ev();
extern void _ZN7S4676C33v31Ev();
extern void _ZN7S4676C33v32Ev();
extern void _ZN7S4676C33v33Ev();
extern void _ZN7S4676C33v34Ev();
extern void _ZN7S4676C33v35Ev();
extern void _ZN7S4676C33v36Ev();
extern void _ZN7S4676C33v37Ev();
extern void _ZN7S4676C33v38Ev();
extern void _ZN7S4676C33v39Ev();
extern void _ZN7S4676C33v40Ev();
extern void _ZN7S4676C33v41Ev();
extern void _ZN7S4676C33v42Ev();
extern void _ZN7S4676C33v43Ev();
extern void _ZN7S4676C33v44Ev();
extern void _ZN7S4676C33v45Ev();
extern void _ZN7S4676C33v46Ev();
extern void _ZN7S4676C33v47Ev();
extern void _ZN7S4676C33v48Ev();
extern void _ZN7S4676C33v49Ev();
extern void _ZN7S4676C33v50Ev();
extern void _ZN7S4676C33v51Ev();
extern void _ZN7S4676C33v52Ev();
extern void _ZN7S4676C33v53Ev();
extern void _ZN7S4676C33v54Ev();
extern void _ZN7S4676C33v55Ev();
extern void _ZN7S4676C33v56Ev();
extern void _ZN7S4676C33v57Ev();
extern void _ZN7S4676C33v58Ev();
extern void _ZN7S4676C33v59Ev();
extern void _ZN7S4676C33v60Ev();
extern void _ZN7S4676C33v61Ev();
extern void _ZN7S4676C33v62Ev();
extern void _ZN7S4676C33v63Ev();
extern void _ZN7S4676C33v64Ev();
extern void _ZN7S4676C33v65Ev();
extern void _ZN7S4676C33v66Ev();
extern void _ZN7S4676C33v67Ev();
extern void _ZN7S4676C33v68Ev();
extern void _ZN7S4676C33v69Ev();
extern void _ZN7S4676C33v70Ev();
extern void _ZN7S4676C33v71Ev();
extern void _ZN7S4676C33v72Ev();
extern void _ZN7S4676C33v73Ev();
extern void _ZN7S4676C33v74Ev();
extern void _ZN7S4676C33v75Ev();
extern void _ZN7S4676C33v76Ev();
extern void _ZN7S4676C33v77Ev();
extern void _ZN7S4676C33v78Ev();
extern void _ZN7S4676C33v79Ev();
extern void _ZN7S4676C33v80Ev();
extern void _ZN7S4676C33v81Ev();
extern void _ZN7S4676C33v82Ev();
extern void _ZN7S4676C33v83Ev();
extern void _ZN7S4676C33v84Ev();
extern void _ZN7S4676C33v85Ev();
extern void _ZN7S4676C33v86Ev();
extern void _ZN7S4676C33v87Ev();
extern void _ZN7S4676C33v88Ev();
extern void _ZN7S4676C33v89Ev();
extern void _ZN7S4676C33v90Ev();
extern void _ZN7S4676C33v91Ev();
extern void _ZN7S4676C33v92Ev();
extern void _ZN7S4676C33v93Ev();
extern void _ZN7S4676C33v94Ev();
extern void _ZN7S4676C33v95Ev();
extern void _ZN7S4676C33v96Ev();
extern void _ZN7S4676C33v97Ev();
extern void _ZN7S4676C33v98Ev();
extern void _ZN7S4676C33v99Ev();
extern void _ZN7S4676C34v100Ev();
extern void _ZN7S4676C34v101Ev();
extern void _ZN7S4676C34v102Ev();
static  VTBL_ENTRY vtc_S4676C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4676C3[0]),
  (VTBL_ENTRY)&_ZN7S4676C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4676C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v45Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v46Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v47Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v48Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v49Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v50Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v51Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v52Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v53Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v54Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v55Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v56Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v57Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v58Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v59Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v60Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v61Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v62Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v63Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v64Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v65Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v66Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v67Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v68Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v69Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v70Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v71Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v72Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v73Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v74Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v75Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v76Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v77Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v78Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v79Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v80Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v81Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v82Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v83Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v84Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v85Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v86Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v87Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v88Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v89Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v90Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v91Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v92Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v93Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v94Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v95Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v96Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v97Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v98Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v99Ev,
  (VTBL_ENTRY)&_ZN7S4676C34v100Ev,
  (VTBL_ENTRY)&_ZN7S4676C34v101Ev,
  (VTBL_ENTRY)&_ZN7S4676C34v102Ev,
};
extern VTBL_ENTRY _ZTI7S4676C3[];
extern  VTBL_ENTRY _ZTV7S4676C3[];
Class_Descriptor cd_S4676C3 = {  "S4676C3", // class name
  0,0,//no base classes
  &(vtc_S4676C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(552,352), // object size
  NSPAIRA(_ZTI7S4676C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4676C3),79, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4676C2  : S4676C3 {
  virtual  ~S4676C2(); // _ZN7S4676C2D1Ev
  virtual void  v103(); // _ZN7S4676C24v103Ev
  virtual void  v104(); // _ZN7S4676C24v104Ev
  virtual void  v105(); // _ZN7S4676C24v105Ev
  virtual void  v106(); // _ZN7S4676C24v106Ev
  virtual void  v107(); // _ZN7S4676C24v107Ev
  virtual void  v108(); // _ZN7S4676C24v108Ev
  virtual void  v109(); // _ZN7S4676C24v109Ev
  S4676C2(); // tgen
};
//SIG(-1 S4676C2) C1{ BC2{ 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 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 FC3{ BC4{ m Fp Fi FC5{ m} FC5}} Fi FC6{ m Fi Fp Fc[8] Fp FC7{ m Fi[2]} FC8{ m Fc Fi[8] Fp[4]} Fi Fp} Fp FC9{ BC10{ m Fp Fi FC11{ m} FC12{ m}}} Fp[3] FC13{ m Fp Fi[2] FC14{ m}} Fp[4] FC15{ BC6 Fp[2]} FC16{ BC4} Fi FL Fc Fi FL FC17{ m Fp[2]}[5] Fp[2]} vd v1 v2 v3 v4 v5 v6 v7}


 S4676C2 ::~S4676C2(){ note_dtor("S4676C2", this);}
void  S4676C2 ::v103(){vfunc_called(this, "_ZN7S4676C24v103Ev");}
void  S4676C2 ::v104(){vfunc_called(this, "_ZN7S4676C24v104Ev");}
void  S4676C2 ::v105(){vfunc_called(this, "_ZN7S4676C24v105Ev");}
void  S4676C2 ::v106(){vfunc_called(this, "_ZN7S4676C24v106Ev");}
void  S4676C2 ::v107(){vfunc_called(this, "_ZN7S4676C24v107Ev");}
void  S4676C2 ::v108(){vfunc_called(this, "_ZN7S4676C24v108Ev");}
void  S4676C2 ::v109(){vfunc_called(this, "_ZN7S4676C24v109Ev");}
S4676C2 ::S4676C2(){ note_ctor("S4676C2", this);} // tgen

static void Test_S4676C2()
{
  extern Class_Descriptor cd_S4676C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(70,89)];
    init_test(&cd_S4676C2, buf);
    S4676C2 *dp, &lv = *(dp=new (buf) S4676C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(552,352), "sizeof(S4676C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4676C2)");
    check_base_class_offset(lv, (S4676C3*), 0, "S4676C2");
    test_class_info(&lv, &cd_S4676C2);
    dp->~S4676C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4676C2(Test_S4676C2, "S4676C2", ABISELECT(552,352));

#else // __cplusplus

extern void _ZN7S4676C2C1Ev();
extern void _ZN7S4676C2D1Ev();
Name_Map name_map_S4676C2[] = {
  NSPAIR(_ZN7S4676C2C1Ev),
  NSPAIR(_ZN7S4676C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4676C3;
extern VTBL_ENTRY _ZTI7S4676C3[];
extern  VTBL_ENTRY _ZTV7S4676C3[];
static Base_Class bases_S4676C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4676C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4676C2[];
extern void _ZN7S4676C2D1Ev();
extern void _ZN7S4676C2D0Ev();
extern void _ZN7S4676C33v28Ev();
extern void _ZN7S4676C33v29Ev();
extern void _ZN7S4676C33v30Ev();
extern void _ZN7S4676C33v31Ev();
extern void _ZN7S4676C33v32Ev();
extern void _ZN7S4676C33v33Ev();
extern void _ZN7S4676C33v34Ev();
extern void _ZN7S4676C33v35Ev();
extern void _ZN7S4676C33v36Ev();
extern void _ZN7S4676C33v37Ev();
extern void _ZN7S4676C33v38Ev();
extern void _ZN7S4676C33v39Ev();
extern void _ZN7S4676C33v40Ev();
extern void _ZN7S4676C33v41Ev();
extern void _ZN7S4676C33v42Ev();
extern void _ZN7S4676C33v43Ev();
extern void _ZN7S4676C33v44Ev();
extern void _ZN7S4676C33v45Ev();
extern void _ZN7S4676C33v46Ev();
extern void _ZN7S4676C33v47Ev();
extern void _ZN7S4676C33v48Ev();
extern void _ZN7S4676C33v49Ev();
extern void _ZN7S4676C33v50Ev();
extern void _ZN7S4676C33v51Ev();
extern void _ZN7S4676C33v52Ev();
extern void _ZN7S4676C33v53Ev();
extern void _ZN7S4676C33v54Ev();
extern void _ZN7S4676C33v55Ev();
extern void _ZN7S4676C33v56Ev();
extern void _ZN7S4676C33v57Ev();
extern void _ZN7S4676C33v58Ev();
extern void _ZN7S4676C33v59Ev();
extern void _ZN7S4676C33v60Ev();
extern void _ZN7S4676C33v61Ev();
extern void _ZN7S4676C33v62Ev();
extern void _ZN7S4676C33v63Ev();
extern void _ZN7S4676C33v64Ev();
extern void _ZN7S4676C33v65Ev();
extern void _ZN7S4676C33v66Ev();
extern void _ZN7S4676C33v67Ev();
extern void _ZN7S4676C33v68Ev();
extern void _ZN7S4676C33v69Ev();
extern void _ZN7S4676C33v70Ev();
extern void _ZN7S4676C33v71Ev();
extern void _ZN7S4676C33v72Ev();
extern void _ZN7S4676C33v73Ev();
extern void _ZN7S4676C33v74Ev();
extern void _ZN7S4676C33v75Ev();
extern void _ZN7S4676C33v76Ev();
extern void _ZN7S4676C33v77Ev();
extern void _ZN7S4676C33v78Ev();
extern void _ZN7S4676C33v79Ev();
extern void _ZN7S4676C33v80Ev();
extern void _ZN7S4676C33v81Ev();
extern void _ZN7S4676C33v82Ev();
extern void _ZN7S4676C33v83Ev();
extern void _ZN7S4676C33v84Ev();
extern void _ZN7S4676C33v85Ev();
extern void _ZN7S4676C33v86Ev();
extern void _ZN7S4676C33v87Ev();
extern void _ZN7S4676C33v88Ev();
extern void _ZN7S4676C33v89Ev();
extern void _ZN7S4676C33v90Ev();
extern void _ZN7S4676C33v91Ev();
extern void _ZN7S4676C33v92Ev();
extern void _ZN7S4676C33v93Ev();
extern void _ZN7S4676C33v94Ev();
extern void _ZN7S4676C33v95Ev();
extern void _ZN7S4676C33v96Ev();
extern void _ZN7S4676C33v97Ev();
extern void _ZN7S4676C33v98Ev();
extern void _ZN7S4676C33v99Ev();
extern void _ZN7S4676C34v100Ev();
extern void _ZN7S4676C34v101Ev();
extern void _ZN7S4676C34v102Ev();
extern void _ZN7S4676C24v103Ev();
extern void _ZN7S4676C24v104Ev();
extern void _ZN7S4676C24v105Ev();
extern void _ZN7S4676C24v106Ev();
extern void _ZN7S4676C24v107Ev();
extern void _ZN7S4676C24v108Ev();
extern void _ZN7S4676C24v109Ev();
static  VTBL_ENTRY vtc_S4676C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4676C2[0]),
  (VTBL_ENTRY)&_ZN7S4676C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4676C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v45Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v46Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v47Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v48Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v49Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v50Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v51Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v52Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v53Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v54Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v55Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v56Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v57Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v58Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v59Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v60Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v61Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v62Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v63Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v64Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v65Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v66Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v67Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v68Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v69Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v70Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v71Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v72Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v73Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v74Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v75Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v76Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v77Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v78Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v79Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v80Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v81Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v82Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v83Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v84Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v85Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v86Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v87Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v88Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v89Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v90Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v91Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v92Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v93Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v94Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v95Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v96Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v97Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v98Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v99Ev,
  (VTBL_ENTRY)&_ZN7S4676C34v100Ev,
  (VTBL_ENTRY)&_ZN7S4676C34v101Ev,
  (VTBL_ENTRY)&_ZN7S4676C34v102Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v103Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v104Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v105Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v106Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v107Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v108Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v109Ev,
};
extern VTBL_ENTRY _ZTI7S4676C2[];
extern  VTBL_ENTRY _ZTV7S4676C2[];
Class_Descriptor cd_S4676C2 = {  "S4676C2", // class name
  bases_S4676C2, 1,
  &(vtc_S4676C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(552,352), // object size
  NSPAIRA(_ZTI7S4676C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4676C2),86, //virtual function table var
  2, // 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  S4676C1  : S4676C2 {
  __tsi64 s4676c1f0;
  int s4676c1f1;
  __tsi64 s4676c1f2;
  ::S2213C20_nt s4676c1f3;
  virtual  ~S4676C1(); // _ZN7S4676C1D1Ev
  virtual void  v1(); // _ZN7S4676C12v1Ev
  virtual void  v2(); // _ZN7S4676C12v2Ev
  virtual void  v3(); // _ZN7S4676C12v3Ev
  virtual void  v4(); // _ZN7S4676C12v4Ev
  virtual void  v5(); // _ZN7S4676C12v5Ev
  virtual void  v6(); // _ZN7S4676C12v6Ev
  virtual void  v7(); // _ZN7S4676C12v7Ev
  virtual void  v8(); // _ZN7S4676C12v8Ev
  virtual void  v9(); // _ZN7S4676C12v9Ev
  virtual void  v10(); // _ZN7S4676C13v10Ev
  virtual void  v11(); // _ZN7S4676C13v11Ev
  virtual void  v12(); // _ZN7S4676C13v12Ev
  virtual void  v13(); // _ZN7S4676C13v13Ev
  virtual void  v14(); // _ZN7S4676C13v14Ev
  virtual void  v15(); // _ZN7S4676C13v15Ev
  virtual void  v16(); // _ZN7S4676C13v16Ev
  virtual void  v17(); // _ZN7S4676C13v17Ev
  virtual void  v18(); // _ZN7S4676C13v18Ev
  virtual void  v19(); // _ZN7S4676C13v19Ev
  virtual void  v20(); // _ZN7S4676C13v20Ev
  virtual void  v21(); // _ZN7S4676C13v21Ev
  virtual void  v22(); // _ZN7S4676C13v22Ev
  virtual void  v23(); // _ZN7S4676C13v23Ev
  virtual void  v24(); // _ZN7S4676C13v24Ev
  virtual void  v25(); // _ZN7S4676C13v25Ev
  virtual void  v26(); // _ZN7S4676C13v26Ev
  virtual void  v27(); // _ZN7S4676C13v27Ev
  S4676C1(); // tgen
};
//SIG(1 S4676C1) C1{ BC2{ BC3{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 FC4{ BC5{ m Fp Fi FC6{ m} FC6}} Fi FC7{ m Fi Fp Fc[8] Fp FC8{ m Fi[2]} FC9{ m Fc Fi[8] Fp[4]} Fi Fp} Fp FC10{ BC11{ m Fp Fi FC12{ m} FC13{ m}}} Fp[3] FC14{ m Fp Fi[2] FC15{ m}} Fp[4] FC16{ BC7 Fp[2]} FC17{ BC5} Fi FL Fc Fi FL FC18{ m Fp[2]}[5] Fp[2]} vd v103 v104 v105 v106 v107 v108 v109} 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 FL Fi FL FC19{ m Fp Fi FC13}}


 S4676C1 ::~S4676C1(){ note_dtor("S4676C1", this);}
void  S4676C1 ::v1(){vfunc_called(this, "_ZN7S4676C12v1Ev");}
void  S4676C1 ::v2(){vfunc_called(this, "_ZN7S4676C12v2Ev");}
void  S4676C1 ::v3(){vfunc_called(this, "_ZN7S4676C12v3Ev");}
void  S4676C1 ::v4(){vfunc_called(this, "_ZN7S4676C12v4Ev");}
void  S4676C1 ::v5(){vfunc_called(this, "_ZN7S4676C12v5Ev");}
void  S4676C1 ::v6(){vfunc_called(this, "_ZN7S4676C12v6Ev");}
void  S4676C1 ::v7(){vfunc_called(this, "_ZN7S4676C12v7Ev");}
void  S4676C1 ::v8(){vfunc_called(this, "_ZN7S4676C12v8Ev");}
void  S4676C1 ::v9(){vfunc_called(this, "_ZN7S4676C12v9Ev");}
void  S4676C1 ::v10(){vfunc_called(this, "_ZN7S4676C13v10Ev");}
void  S4676C1 ::v11(){vfunc_called(this, "_ZN7S4676C13v11Ev");}
void  S4676C1 ::v12(){vfunc_called(this, "_ZN7S4676C13v12Ev");}
void  S4676C1 ::v13(){vfunc_called(this, "_ZN7S4676C13v13Ev");}
void  S4676C1 ::v14(){vfunc_called(this, "_ZN7S4676C13v14Ev");}
void  S4676C1 ::v15(){vfunc_called(this, "_ZN7S4676C13v15Ev");}
void  S4676C1 ::v16(){vfunc_called(this, "_ZN7S4676C13v16Ev");}
void  S4676C1 ::v17(){vfunc_called(this, "_ZN7S4676C13v17Ev");}
void  S4676C1 ::v18(){vfunc_called(this, "_ZN7S4676C13v18Ev");}
void  S4676C1 ::v19(){vfunc_called(this, "_ZN7S4676C13v19Ev");}
void  S4676C1 ::v20(){vfunc_called(this, "_ZN7S4676C13v20Ev");}
void  S4676C1 ::v21(){vfunc_called(this, "_ZN7S4676C13v21Ev");}
void  S4676C1 ::v22(){vfunc_called(this, "_ZN7S4676C13v22Ev");}
void  S4676C1 ::v23(){vfunc_called(this, "_ZN7S4676C13v23Ev");}
void  S4676C1 ::v24(){vfunc_called(this, "_ZN7S4676C13v24Ev");}
void  S4676C1 ::v25(){vfunc_called(this, "_ZN7S4676C13v25Ev");}
void  S4676C1 ::v26(){vfunc_called(this, "_ZN7S4676C13v26Ev");}
void  S4676C1 ::v27(){vfunc_called(this, "_ZN7S4676C13v27Ev");}
S4676C1 ::S4676C1(){ note_ctor("S4676C1", this);} // tgen

static void Test_S4676C1()
{
  extern Class_Descriptor cd_S4676C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(75,97)];
    init_test(&cd_S4676C1, buf);
    S4676C1 *dp, &lv = *(dp=new (buf) S4676C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(592,384), "sizeof(S4676C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4676C1)");
    check_base_class_offset(lv, (S4676C3*)(S4676C2*), 0, "S4676C1");
    check_base_class_offset(lv, (S4676C2*), 0, "S4676C1");
    check_field_offset(lv, s4676c1f0, ABISELECT(552,352), "S4676C1.s4676c1f0");
    check_field_offset(lv, s4676c1f1, ABISELECT(560,360), "S4676C1.s4676c1f1");
    check_field_offset(lv, s4676c1f2, ABISELECT(568,364), "S4676C1.s4676c1f2");
    check_field_offset(lv, s4676c1f3, ABISELECT(576,372), "S4676C1.s4676c1f3");
    test_class_info(&lv, &cd_S4676C1);
    dp->~S4676C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4676C1(Test_S4676C1, "S4676C1", ABISELECT(592,384));

#else // __cplusplus

extern void _ZN7S4676C1C1Ev();
extern void _ZN7S4676C1D1Ev();
Name_Map name_map_S4676C1[] = {
  NSPAIR(_ZN7S4676C1C1Ev),
  NSPAIR(_ZN7S4676C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4676C3;
extern VTBL_ENTRY _ZTI7S4676C3[];
extern  VTBL_ENTRY _ZTV7S4676C3[];
extern Class_Descriptor cd_S4676C2;
extern VTBL_ENTRY _ZTI7S4676C2[];
extern  VTBL_ENTRY _ZTV7S4676C2[];
static Base_Class bases_S4676C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4676C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4676C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4676C1[];
extern void _ZN7S4676C1D1Ev();
extern void _ZN7S4676C1D0Ev();
extern void _ZN7S4676C33v28Ev();
extern void _ZN7S4676C33v29Ev();
extern void _ZN7S4676C33v30Ev();
extern void _ZN7S4676C33v31Ev();
extern void _ZN7S4676C33v32Ev();
extern void _ZN7S4676C33v33Ev();
extern void _ZN7S4676C33v34Ev();
extern void _ZN7S4676C33v35Ev();
extern void _ZN7S4676C33v36Ev();
extern void _ZN7S4676C33v37Ev();
extern void _ZN7S4676C33v38Ev();
extern void _ZN7S4676C33v39Ev();
extern void _ZN7S4676C33v40Ev();
extern void _ZN7S4676C33v41Ev();
extern void _ZN7S4676C33v42Ev();
extern void _ZN7S4676C33v43Ev();
extern void _ZN7S4676C33v44Ev();
extern void _ZN7S4676C33v45Ev();
extern void _ZN7S4676C33v46Ev();
extern void _ZN7S4676C33v47Ev();
extern void _ZN7S4676C33v48Ev();
extern void _ZN7S4676C33v49Ev();
extern void _ZN7S4676C33v50Ev();
extern void _ZN7S4676C33v51Ev();
extern void _ZN7S4676C33v52Ev();
extern void _ZN7S4676C33v53Ev();
extern void _ZN7S4676C33v54Ev();
extern void _ZN7S4676C33v55Ev();
extern void _ZN7S4676C33v56Ev();
extern void _ZN7S4676C33v57Ev();
extern void _ZN7S4676C33v58Ev();
extern void _ZN7S4676C33v59Ev();
extern void _ZN7S4676C33v60Ev();
extern void _ZN7S4676C33v61Ev();
extern void _ZN7S4676C33v62Ev();
extern void _ZN7S4676C33v63Ev();
extern void _ZN7S4676C33v64Ev();
extern void _ZN7S4676C33v65Ev();
extern void _ZN7S4676C33v66Ev();
extern void _ZN7S4676C33v67Ev();
extern void _ZN7S4676C33v68Ev();
extern void _ZN7S4676C33v69Ev();
extern void _ZN7S4676C33v70Ev();
extern void _ZN7S4676C33v71Ev();
extern void _ZN7S4676C33v72Ev();
extern void _ZN7S4676C33v73Ev();
extern void _ZN7S4676C33v74Ev();
extern void _ZN7S4676C33v75Ev();
extern void _ZN7S4676C33v76Ev();
extern void _ZN7S4676C33v77Ev();
extern void _ZN7S4676C33v78Ev();
extern void _ZN7S4676C33v79Ev();
extern void _ZN7S4676C33v80Ev();
extern void _ZN7S4676C33v81Ev();
extern void _ZN7S4676C33v82Ev();
extern void _ZN7S4676C33v83Ev();
extern void _ZN7S4676C33v84Ev();
extern void _ZN7S4676C33v85Ev();
extern void _ZN7S4676C33v86Ev();
extern void _ZN7S4676C33v87Ev();
extern void _ZN7S4676C33v88Ev();
extern void _ZN7S4676C33v89Ev();
extern void _ZN7S4676C33v90Ev();
extern void _ZN7S4676C33v91Ev();
extern void _ZN7S4676C33v92Ev();
extern void _ZN7S4676C33v93Ev();
extern void _ZN7S4676C33v94Ev();
extern void _ZN7S4676C33v95Ev();
extern void _ZN7S4676C33v96Ev();
extern void _ZN7S4676C33v97Ev();
extern void _ZN7S4676C33v98Ev();
extern void _ZN7S4676C33v99Ev();
extern void _ZN7S4676C34v100Ev();
extern void _ZN7S4676C34v101Ev();
extern void _ZN7S4676C34v102Ev();
extern void _ZN7S4676C24v103Ev();
extern void _ZN7S4676C24v104Ev();
extern void _ZN7S4676C24v105Ev();
extern void _ZN7S4676C24v106Ev();
extern void _ZN7S4676C24v107Ev();
extern void _ZN7S4676C24v108Ev();
extern void _ZN7S4676C24v109Ev();
extern void _ZN7S4676C12v1Ev();
extern void _ZN7S4676C12v2Ev();
extern void _ZN7S4676C12v3Ev();
extern void _ZN7S4676C12v4Ev();
extern void _ZN7S4676C12v5Ev();
extern void _ZN7S4676C12v6Ev();
extern void _ZN7S4676C12v7Ev();
extern void _ZN7S4676C12v8Ev();
extern void _ZN7S4676C12v9Ev();
extern void _ZN7S4676C13v10Ev();
extern void _ZN7S4676C13v11Ev();
extern void _ZN7S4676C13v12Ev();
extern void _ZN7S4676C13v13Ev();
extern void _ZN7S4676C13v14Ev();
extern void _ZN7S4676C13v15Ev();
extern void _ZN7S4676C13v16Ev();
extern void _ZN7S4676C13v17Ev();
extern void _ZN7S4676C13v18Ev();
extern void _ZN7S4676C13v19Ev();
extern void _ZN7S4676C13v20Ev();
extern void _ZN7S4676C13v21Ev();
extern void _ZN7S4676C13v22Ev();
extern void _ZN7S4676C13v23Ev();
extern void _ZN7S4676C13v24Ev();
extern void _ZN7S4676C13v25Ev();
extern void _ZN7S4676C13v26Ev();
extern void _ZN7S4676C13v27Ev();
static  VTBL_ENTRY vtc_S4676C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4676C1[0]),
  (VTBL_ENTRY)&_ZN7S4676C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4676C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v45Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v46Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v47Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v48Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v49Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v50Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v51Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v52Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v53Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v54Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v55Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v56Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v57Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v58Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v59Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v60Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v61Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v62Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v63Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v64Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v65Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v66Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v67Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v68Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v69Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v70Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v71Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v72Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v73Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v74Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v75Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v76Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v77Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v78Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v79Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v80Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v81Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v82Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v83Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v84Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v85Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v86Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v87Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v88Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v89Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v90Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v91Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v92Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v93Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v94Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v95Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v96Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v97Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v98Ev,
  (VTBL_ENTRY)&_ZN7S4676C33v99Ev,
  (VTBL_ENTRY)&_ZN7S4676C34v100Ev,
  (VTBL_ENTRY)&_ZN7S4676C34v101Ev,
  (VTBL_ENTRY)&_ZN7S4676C34v102Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v103Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v104Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v105Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v106Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v107Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v108Ev,
  (VTBL_ENTRY)&_ZN7S4676C24v109Ev,
  (VTBL_ENTRY)&_ZN7S4676C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4676C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4676C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4676C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4676C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4676C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4676C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4676C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4676C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v10Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v11Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v12Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v13Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v14Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v15Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v16Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v17Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v18Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v19Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v20Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v21Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v22Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v23Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v24Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v25Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v26Ev,
  (VTBL_ENTRY)&_ZN7S4676C13v27Ev,
};
extern VTBL_ENTRY _ZTI7S4676C1[];
extern  VTBL_ENTRY _ZTV7S4676C1[];
Class_Descriptor cd_S4676C1 = {  "S4676C1", // class name
  bases_S4676C1, 2,
  &(vtc_S4676C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(592,384), // object size
  NSPAIRA(_ZTI7S4676C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4676C1),113, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C6  : virtual S19674C5 , S19674C7 {
  short s21147c6f0[6];
  __tsi64 s21147c6f1[3];
  ::S19674C9 s21147c6f2;
  ~S21147C6(); // tgen
  S21147C6(); // tgen
};
//SIG(-1 S21147C6) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ m Fp[14]} Fs[6] FL[3] FU4{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}}


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

static void Test_S21147C6()
{
  extern Class_Descriptor cd_S21147C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,51)];
    init_test(&cd_S21147C6, buf);
    S21147C6 *dp, &lv = *(dp=new (buf) S21147C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,200), "sizeof(S21147C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21147C6)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(192,112), "S21147C6");
    check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21147C6");
    check_field_offset(lv, s21147c6f0, ABISELECT(120,60), "S21147C6.s21147c6f0");
    check_field_offset(lv, s21147c6f1, ABISELECT(136,72), "S21147C6.s21147c6f1");
    check_field_offset(lv, s21147c6f2, ABISELECT(160,96), "S21147C6.s21147c6f2");
    test_class_info(&lv, &cd_S21147C6);
    dp->~S21147C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C6(Test_S21147C6, "S21147C6", ABISELECT(312,200));

#else // __cplusplus

extern void _ZN8S21147C6C1Ev();
extern void _ZN8S21147C6D1Ev();
Name_Map name_map_S21147C6[] = {
  NSPAIR(_ZN8S21147C6C1Ev),
  NSPAIR(_ZN8S21147C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
static Base_Class bases_S21147C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(192,112), //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},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21147C6[];
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S21147C6D1Ev,_ZThn112_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S21147C6D0Ev,_ZThn112_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C6[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21147C6[];
static  VTT_ENTRY vtt_S21147C6[] = {
  {&(_ZTV8S21147C6[3]),  3,10},
  {&(_ZTV8S21147C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21147C6D0Ev,_ZThn112_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21147C6D1Ev,_ZThn112_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C6 = {  "S21147C6", // class name
  bases_S21147C6, 2,
  &(vtc_S21147C6[0]), // expected_vtbl_contents
  &(vtt_S21147C6[0]), // expected_vtt_contents
  ABISELECT(312,200), // object size
  NSPAIRA(_ZTI8S21147C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21147C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21147C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C3  : virtual S19674C5 , virtual S19674C7 , S21147C6 {
  ::S21147C6 s21147c3f0;
  long double s21147c3f1[7];
  ::S21147C6 s21147c3f2;
  __tsi64 s21147c3f3;
  void *s21147c3f4[5];
  virtual void  v1(); // _ZN8S21147C32v1Ev
  virtual void  v2(); // _ZN8S21147C32v2Ev
  ~S21147C3(); // tgen
  S21147C3(); // tgen
};
//SIG(-1 S21147C3) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ m Fp[14]} BC4{ VBC2 BC3 Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC4 FD[7] FC4 FL Fp[5]}


void  S21147C3 ::v1(){vfunc_called(this, "_ZN8S21147C32v1Ev");}
void  S21147C3 ::v2(){vfunc_called(this, "_ZN8S21147C32v2Ev");}
S21147C3 ::~S21147C3(){ note_dtor("S21147C3", this);} // tgen
S21147C3 ::S21147C3(){ note_ctor("S21147C3", this);} // tgen

static void Test_S21147C3()
{
  extern Class_Descriptor cd_S21147C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,193)];
    init_test(&cd_S21147C3, buf);
    S21147C3 *dp, &lv = *(dp=new (buf) S21147C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,768), "sizeof(S21147C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C3)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(984,624), "S21147C3");
    check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(984,624), "S21147C3");
    /*is_ambiguous_... S21147C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(1104,712), "S21147C3");
    check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(8,4), "S21147C3");
    check_base_class_offset(lv, (S21147C6*), 0, "S21147C3");
    check_field_offset(lv, s21147c3f0, ABISELECT(192,112), "S21147C3.s21147c3f0");
    check_field_offset(lv, s21147c3f1, ABISELECT(512,312), "S21147C3.s21147c3f1");
    check_field_offset(lv, s21147c3f2, ABISELECT(624,396), "S21147C3.s21147c3f2");
    check_field_offset(lv, s21147c3f3, ABISELECT(936,596), "S21147C3.s21147c3f3");
    check_field_offset(lv, s21147c3f4, ABISELECT(944,604), "S21147C3.s21147c3f4");
    test_class_info(&lv, &cd_S21147C3);
    dp->~S21147C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C3(Test_S21147C3, "S21147C3", ABISELECT(1216,768));

#else // __cplusplus

extern void _ZN8S21147C3C1Ev();
extern void _ZN8S21147C3D1Ev();
Name_Map name_map_S21147C3[] = {
  NSPAIR(_ZN8S21147C3C1Ev),
  NSPAIR(_ZN8S21147C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
static Base_Class bases_S21147C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(984,624), //bcp->offset
    8, //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_S19674C7,    ABISELECT(1104,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21147C6,    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 _ZTI8S21147C3[];
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C3[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21147C3[];
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__8S21147C3[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__8S21147C3[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
static  VTT_ENTRY vtt_S21147C3[] = {
  {&(_ZTV8S21147C3[4]),  4,13},
  {&(_tg__ZTV8S21147C6__8S21147C3[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__8S21147C3[3]),  3,5},
  {&(_ZTV8S21147C3[11]),  11,13},
};
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C3 = {  "S21147C3", // class name
  bases_S21147C3, 4,
  &(vtc_S21147C3[0]), // expected_vtbl_contents
  &(vtt_S21147C3[0]), // expected_vtt_contents
  ABISELECT(1216,768), // object size
  NSPAIRA(_ZTI8S21147C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21147C3),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21147C3),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C2  : virtual S21147C3 , S19674C7 , S21147C6 {
  int s21147c2f0;
  int s21147c2f1;
  int s21147c2f2:28;
  int s21147c2f3;
  long s21147c2f4;
  ~S21147C2(); // tgen
  S21147C2(); // tgen
};
//SIG(-1 S21147C2) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} BC4 BC5 Fi Fi Fi:28 Fi Fl}


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

static void Test_S21147C2()
{
  extern Class_Descriptor cd_S21147C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,240)];
    init_test(&cd_S21147C2, buf);
    S21147C2 *dp, &lv = *(dp=new (buf) S21147C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,956), "sizeof(S21147C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C2)");
    check_base_class_offset(lv, (S19674C5*)(S21147C3*), ABISELECT(1320,812), "S21147C2");
    check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*), ABISELECT(1320,812), "S21147C2");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(1320,812), "S21147C2");
    /*is_ambiguous_... S21147C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*), ABISELECT(1440,900), "S21147C2");
    check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*), ABISELECT(344,192), "S21147C2");
    check_base_class_offset(lv, (S21147C6*)(S21147C3*), ABISELECT(336,188), "S21147C2");
    check_base_class_offset(lv, (S21147C3*), ABISELECT(336,188), "S21147C2");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(192,112), "S21147C2");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(8,4), "S21147C2");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*), 0, "S21147C2");
    check_field_offset(lv, s21147c2f0, ABISELECT(304,168), "S21147C2.s21147c2f0");
    check_field_offset(lv, s21147c2f1, ABISELECT(308,172), "S21147C2.s21147c2f1");
    set_bf_and_test(lv, s21147c2f2, ABISELECT(312,176), 0, 28, 1, "S21147C2");
    set_bf_and_test(lv, s21147c2f2, ABISELECT(312,176), 0, 28, hide_sll(1LL<<27), "S21147C2");
    check_field_offset(lv, s21147c2f3, ABISELECT(316,180), "S21147C2.s21147c2f3");
    check_field_offset(lv, s21147c2f4, ABISELECT(320,184), "S21147C2.s21147c2f4");
    test_class_info(&lv, &cd_S21147C2);
    dp->~S21147C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C2(Test_S21147C2, "S21147C2", ABISELECT(1552,956));

#else // __cplusplus

extern void _ZN8S21147C2C1Ev();
extern void _ZN8S21147C2D1Ev();
Name_Map name_map_S21147C2[] = {
  NSPAIR(_ZN8S21147C2C1Ev),
  NSPAIR(_ZN8S21147C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
static Base_Class bases_S21147C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(1320,812), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1440,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(344,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
    3, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(336,188), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21147C2[];
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21147C2D1Ev,_ZThn188_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21147C2D0Ev,_ZThn188_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C2D1Ev,_ZThn812_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C2D0Ev,_ZThn812_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C2[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21147C2[];
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A1__8S21147C2[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C6D1Ev,_ZThn812_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C6D0Ev,_ZThn812_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__A1__8S21147C2[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C2[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C3__8S21147C2[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C3__8S21147C2[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C3__8S21147C2[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
static  VTT_ENTRY vtt_S21147C2[] = {
  {&(_ZTV8S21147C2[5]),  5,23},
  {&(_tg__ZTV8S21147C6__A1__8S21147C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__A1__8S21147C2[3]),  3,5},
  {&(_ZTV8S21147C2[14]),  14,23},
  {&(_ZTV8S21147C2[21]),  21,23},
  {&(_tg__ZTV8S21147C3__8S21147C2[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C3__8S21147C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C3__8S21147C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C3__8S21147C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C6D0Ev,_ZThn812_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C6D1Ev,_ZThn812_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C2D0Ev,_ZThn812_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C2D1Ev,_ZThn812_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21147C2D0Ev,_ZThn188_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21147C2D1Ev,_ZThn188_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C2 = {  "S21147C2", // class name
  bases_S21147C2, 8,
  &(vtc_S21147C2[0]), // expected_vtbl_contents
  &(vtt_S21147C2[0]), // expected_vtt_contents
  ABISELECT(1552,956), // object size
  NSPAIRA(_ZTI8S21147C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21147C2),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21147C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C9  : virtual S19674C5 {
  virtual void  v3(); // _ZN8S21147C92v3Ev
  ~S21147C9(); // tgen
  S21147C9(); // tgen
};
//SIG(-1 S21147C9) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1}


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

static void Test_S21147C9()
{
  extern Class_Descriptor cd_S21147C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S21147C9, buf);
    S21147C9 *dp, &lv = *(dp=new (buf) S21147C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S21147C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21147C9)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(8,4), "S21147C9");
    test_class_info(&lv, &cd_S21147C9);
    dp->~S21147C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C9(Test_S21147C9, "S21147C9", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S21147C9C1Ev();
extern void _ZN8S21147C9D1Ev();
Name_Map name_map_S21147C9[] = {
  NSPAIR(_ZN8S21147C9C1Ev),
  NSPAIR(_ZN8S21147C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21147C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21147C9[];
extern void _ZN8S21147C92v3Ev();
extern void _ZN8S21147C9D1Ev();
extern void _ZN8S21147C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21147C9D1Ev,_ZThn4_N8S21147C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21147C9D0Ev,_ZThn4_N8S21147C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21147C9[];
static  VTT_ENTRY vtt_S21147C9[] = {
  {&(_ZTV8S21147C9[3]),  3,11},
  {&(_ZTV8S21147C9[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21147C9[];
extern  VTBL_ENTRY _ZTV8S21147C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C9[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21147C9D0Ev,_ZThn4_N8S21147C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21147C9D1Ev,_ZThn4_N8S21147C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C9 = {  "S21147C9", // class name
  bases_S21147C9, 1,
  &(vtc_S21147C9[0]), // expected_vtbl_contents
  &(vtt_S21147C9[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S21147C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21147C9),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21147C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C8  : virtual S19674C7 , S21147C2 , S21147C3 , virtual S21147C6 , virtual S21147C9 {
  int s21147c8f0;
  int s21147c8f1;
  int s21147c8f2;
  long double s21147c8f3;
  void *s21147c8f4;
  void *s21147c8f5;
  ::S21147C6 s21147c8f6;
  void *s21147c8f7;
  ::S21147C3 s21147c8f8;
  int s21147c8f9;
  void *s21147c8f10;
  int s21147c8f11;
  ::S19674C5 s21147c8f12[8];
  virtual  ~S21147C8(); // _ZN8S21147C8D2Ev
  S21147C8(); // tgen
};
//SIG(-1 S21147C8) C1{ VBC2{ m Fp[14]} BC3{ VBC4{ VBC5{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC2 BC6{ VBC5 BC2 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC2 BC6 Fi Fi Fi:28 Fi Fl} BC4 VBC6 VBC8{ VBC5 v3} vd Fi Fi Fi FD Fp Fp FC6 Fp FC4 Fi Fp Fi FC5[8]}


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

static void Test_S21147C8()
{
  extern Class_Descriptor cd_S21147C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(334,855)];
    init_test(&cd_S21147C8, buf);
    S21147C8 *dp, &lv = *(dp=new (buf) S21147C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5328,3416), "sizeof(S21147C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C8)");
    /*is_ambiguous_... S21147C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(3896,2532), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*), ABISELECT(3896,2532), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*), ABISELECT(3896,2532), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C3*), ABISELECT(5000,3212), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*), ABISELECT(5000,3212), "S21147C8");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*), ABISELECT(5000,3212), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C3*), ABISELECT(5000,3212), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*), ABISELECT(5000,3212), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(5000,3212), "S21147C8");
    check_base_class_offset(lv, (S19674C5*)(S21147C9*), ABISELECT(5000,3212), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*), ABISELECT(4024,2592), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C3*), ABISELECT(4016,2588), "S21147C8");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*), ABISELECT(4016,2588), "S21147C8");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*), ABISELECT(192,112), "S21147C8");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*), ABISELECT(8,4), "S21147C8");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*), 0, "S21147C8");
    check_base_class_offset(lv, (S21147C2*), 0, "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*), ABISELECT(344,192), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C3*), ABISELECT(336,188), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C3*), ABISELECT(336,188), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(5128,3304), "S21147C8");
    /*is_ambiguous_... S21147C8::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*), ABISELECT(5120,3300), "S21147C8");
    check_base_class_offset(lv, (S21147C9*), ABISELECT(5312,3412), "S21147C8");
    check_field_offset(lv, s21147c8f0, ABISELECT(1320,812), "S21147C8.s21147c8f0");
    check_field_offset(lv, s21147c8f1, ABISELECT(1324,816), "S21147C8.s21147c8f1");
    check_field_offset(lv, s21147c8f2, ABISELECT(1328,820), "S21147C8.s21147c8f2");
    check_field_offset(lv, s21147c8f3, ABISELECT(1344,824), "S21147C8.s21147c8f3");
    check_field_offset(lv, s21147c8f4, ABISELECT(1360,836), "S21147C8.s21147c8f4");
    check_field_offset(lv, s21147c8f5, ABISELECT(1368,840), "S21147C8.s21147c8f5");
    check_field_offset(lv, s21147c8f6, ABISELECT(1376,844), "S21147C8.s21147c8f6");
    check_field_offset(lv, s21147c8f7, ABISELECT(1688,1044), "S21147C8.s21147c8f7");
    check_field_offset(lv, s21147c8f8, ABISELECT(1696,1048), "S21147C8.s21147c8f8");
    check_field_offset(lv, s21147c8f9, ABISELECT(2912,1816), "S21147C8.s21147c8f9");
    check_field_offset(lv, s21147c8f10, ABISELECT(2920,1820), "S21147C8.s21147c8f10");
    check_field_offset(lv, s21147c8f11, ABISELECT(2928,1824), "S21147C8.s21147c8f11");
    check_field_offset(lv, s21147c8f12, ABISELECT(2936,1828), "S21147C8.s21147c8f12");
    test_class_info(&lv, &cd_S21147C8);
    dp->~S21147C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C8(Test_S21147C8, "S21147C8", ABISELECT(5328,3416));

#else // __cplusplus

extern void _ZN8S21147C8C1Ev();
extern void _ZN8S21147C8D2Ev();
Name_Map name_map_S21147C8[] = {
  NSPAIR(_ZN8S21147C8C1Ev),
  NSPAIR(_ZN8S21147C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C9;
extern VTBL_ENTRY _ZTI8S21147C9[];
extern  VTBL_ENTRY _ZTV8S21147C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C9[];
static Base_Class bases_S21147C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(3896,2532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(5000,3212), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4024,2592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21147C6,    ABISELECT(4016,2588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(4016,2588), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(192,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
    8, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21147C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(344,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(336,188), //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
    11, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(336,188), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(5128,3304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(5120,3300), //bcp->offset
    33, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21147C9,    ABISELECT(5312,3412), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21147C8[];
extern void _ZN8S21147C8D1Ev();
extern void _ZN8S21147C8D0Ev();
extern void ABISELECT(_ZThn336_N8S21147C8D1Ev,_ZThn188_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S21147C8D0Ev,_ZThn188_N8S21147C8D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn4016_N8S21147C8D1Ev,_ZThn2588_N8S21147C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev)();
extern void ABISELECT(_ZThn4016_N8S21147C8D0Ev,_ZThn2588_N8S21147C8D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21147C8D1Ev,_ZThn3212_N8S21147C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21147C8D0Ev,_ZThn3212_N8S21147C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn5120_N8S21147C8D1Ev,_ZThn3300_N8S21147C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev)();
extern void ABISELECT(_ZThn5120_N8S21147C8D0Ev,_ZThn3300_N8S21147C8D0Ev)() __attribute__((weak));
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn5312_N8S21147C8D1Ev,_ZThn3412_N8S21147C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev)();
extern void ABISELECT(_ZThn5312_N8S21147C8D0Ev,_ZThn3412_N8S21147C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C8[] = {
  ABISELECT(5312,3412),
  ABISELECT(5120,3300),
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&_ZN8S21147C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C8D0Ev,
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21147C8D1Ev,_ZThn188_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21147C8D0Ev,_ZThn188_N8S21147C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev),
  ABISELECT(-5120,-3300),
  ABISELECT(-120,-88),
  ABISELECT(-5120,-3300),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev),
  ABISELECT(-5312,-3412),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-5312,-3412),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21147C8[];
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C2__8S21147C8[] = {
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C2__A1__8S21147C8[] = {
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21147C6D1Ev,_ZThn3212_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21147C6D0Ev,_ZThn3212_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C2__A1__8S21147C8[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn4016_N8S21147C2D1Ev,_ZThn2588_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn4016_N8S21147C2D0Ev,_ZThn2588_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C2__8S21147C8[] = {
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21147C2D1Ev,_ZThn3212_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21147C2D0Ev,_ZThn3212_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C2__8S21147C8[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__A__8S21147C8[] = {
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C3__A2__8S21147C8[] = {
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn4664_N8S21147C6D1Ev,_ZThn3024_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn4664_N8S21147C6D0Ev,_ZThn3024_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C3__A2__8S21147C8[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZThn4664_N8S21147C3D1Ev,_ZThn3024_N8S21147C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
extern void ABISELECT(_ZThn4664_N8S21147C3D0Ev,_ZThn3024_N8S21147C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C3__A__8S21147C8[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C8[] = {
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C3__8S21147C8[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C3__8S21147C8[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C3__8S21147C8[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A3__8S21147C8[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__A3__8S21147C8[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void _ZN8S21147C92v3Ev();
extern void _ZN8S21147C9D1Ev();
extern void _ZN8S21147C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C9__8S21147C8[] = {
  ABISELECT(-312,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C9__8S21147C8[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev),
};
static  VTT_ENTRY vtt_S21147C8[] = {
  {&(_ZTV8S21147C8[7]),  7,47},
  {&(_tg__ZTV8S21147C2__8S21147C8[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C2__A1__8S21147C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C2__A1__8S21147C8[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C2__8S21147C8[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C2__8S21147C8[3]),  3,5},
  {&(_tg__ZTV8S21147C3__A__8S21147C8[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C3__A2__8S21147C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C3__A2__8S21147C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C3__A__8S21147C8[3]),  3,5},
  {&(_ZTV8S21147C8[24]),  24,47},
  {&(_ZTV8S21147C8[31]),  31,47},
  {&(_ZTV8S21147C8[13]),  13,47},
  {&(_ZTV8S21147C8[37]),  37,47},
  {&(_ZTV8S21147C8[44]),  44,47},
  {&(_tg__ZTV8S21147C3__8S21147C8[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C3__8S21147C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C3__8S21147C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C3__8S21147C8[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A3__8S21147C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__A3__8S21147C8[3]),  3,5},
  {&(_tg__ZTV8S21147C9__8S21147C8[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21147C9__8S21147C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21147C8[];
extern  VTBL_ENTRY _ZTV8S21147C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C8[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21147C3D0Ev,_ZThn3024_N8S21147C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21147C3D1Ev,_ZThn3024_N8S21147C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21147C2D0Ev,_ZThn3212_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21147C2D1Ev,_ZThn3212_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21147C2D0Ev,_ZThn2588_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21147C2D1Ev,_ZThn2588_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21147C6D0Ev,_ZThn3024_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21147C6D0Ev,_ZThn3212_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21147C6D1Ev,_ZThn3024_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21147C6D1Ev,_ZThn3212_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N8S21147C8D0Ev,_ZThn3300_N8S21147C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N8S21147C8D1Ev,_ZThn3300_N8S21147C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21147C8D0Ev,_ZThn3212_N8S21147C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21147C8D1Ev,_ZThn3212_N8S21147C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N8S21147C8D0Ev,_ZThn3412_N8S21147C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21147C8D0Ev,_ZThn2588_N8S21147C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N8S21147C8D1Ev,_ZThn3412_N8S21147C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21147C8D1Ev,_ZThn2588_N8S21147C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C8 = {  "S21147C8", // class name
  bases_S21147C8, 15,
  &(vtc_S21147C8[0]), // expected_vtbl_contents
  &(vtt_S21147C8[0]), // expected_vtt_contents
  ABISELECT(5328,3416), // object size
  NSPAIRA(_ZTI8S21147C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21147C8),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21147C8),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C15  : virtual S21147C6 , S19674C5 {
  char s21147c15f0:6;
  char s21147c15f1[8];
  long double s21147c15f2;
  ::S19674C7 s21147c15f3;
  ::S19674C7 s21147c15f4;
  ~S21147C15(); // tgen
  S21147C15(); // tgen
};
//SIG(-1 S21147C15) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC3 Fc:6 Fc[8] FD FC4 FC4}


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

static void Test_S21147C15()
{
  extern Class_Descriptor cd_S21147C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,107)];
    init_test(&cd_S21147C15, buf);
    S21147C15 *dp, &lv = *(dp=new (buf) S21147C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,424), "sizeof(S21147C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C15)");
    check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(576,336), "S21147C15");
    check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(392,228), "S21147C15");
    check_base_class_offset(lv, (S21147C6*), ABISELECT(384,224), "S21147C15");
    /*is_ambiguous_... S21147C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), 0, "S21147C15");
    set_bf_and_test(lv, s21147c15f0, ABISELECT(120,88), 0, 6, 1, "S21147C15");
    set_bf_and_test(lv, s21147c15f0, ABISELECT(120,88), 0, 6, hide_sll(1LL<<5), "S21147C15");
    check_field_offset(lv, s21147c15f1, ABISELECT(121,89), "S21147C15.s21147c15f1");
    check_field_offset(lv, s21147c15f2, ABISELECT(144,100), "S21147C15.s21147c15f2");
    check_field_offset(lv, s21147c15f3, ABISELECT(160,112), "S21147C15.s21147c15f3");
    check_field_offset(lv, s21147c15f4, ABISELECT(272,168), "S21147C15.s21147c15f4");
    test_class_info(&lv, &cd_S21147C15);
    dp->~S21147C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C15(Test_S21147C15, "S21147C15", ABISELECT(704,424));

#else // __cplusplus

extern void _ZN9S21147C15C1Ev();
extern void _ZN9S21147C15D1Ev();
Name_Map name_map_S21147C15[] = {
  NSPAIR(_ZN9S21147C15C1Ev),
  NSPAIR(_ZN9S21147C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21147C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(576,336), //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(384,224), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S21147C15[];
extern void _ZN9S21147C15D1Ev();
extern void _ZN9S21147C15D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev)();
extern void ABISELECT(_ZThn384_N9S21147C15D1Ev,_ZThn224_N9S21147C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev)();
extern void ABISELECT(_ZThn384_N9S21147C15D0Ev,_ZThn224_N9S21147C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev)();
extern void ABISELECT(_ZThn576_N9S21147C15D1Ev,_ZThn336_N9S21147C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev)();
extern void ABISELECT(_ZThn576_N9S21147C15D0Ev,_ZThn336_N9S21147C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C15[] = {
  ABISELECT(576,336),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&_ZN9S21147C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C15D0Ev,
  ABISELECT(-384,-224),
  ABISELECT(192,112),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev),
  ABISELECT(-576,-336),
  ABISELECT(-576,-336),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21147C15[];
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C15[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S21147C6D1Ev,_ZThn112_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S21147C6D0Ev,_ZThn112_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__9S21147C15[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
static  VTT_ENTRY vtt_S21147C15[] = {
  {&(_ZTV9S21147C15[4]),  4,17},
  {&(_ZTV9S21147C15[10]),  10,17},
  {&(_ZTV9S21147C15[15]),  15,17},
  {&(_tg__ZTV8S21147C6__9S21147C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__9S21147C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21147C15[];
extern  VTBL_ENTRY _ZTV9S21147C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C15[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21147C6D0Ev,_ZThn112_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21147C6D1Ev,_ZThn112_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21147C15D0Ev,_ZThn336_N9S21147C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21147C15D1Ev,_ZThn336_N9S21147C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21147C15D0Ev,_ZThn224_N9S21147C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21147C15D1Ev,_ZThn224_N9S21147C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C15 = {  "S21147C15", // class name
  bases_S21147C15, 4,
  &(vtc_S21147C15[0]), // expected_vtbl_contents
  &(vtt_S21147C15[0]), // expected_vtt_contents
  ABISELECT(704,424), // object size
  NSPAIRA(_ZTI9S21147C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21147C15),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21147C15),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C18  : virtual S19674C5 , virtual S21147C6 , virtual S21147C15 , S19674C7 , virtual S21147C3 {
  int s21147c18f0;
  int s21147c18f1;
  ::S19674C7 s21147c18f2;
  char s21147c18f3;
  char s21147c18f4;
  int s21147c18f5;
  short s21147c18f6;
  __tsi64 s21147c18f7;
  virtual  ~S21147C18(); // _ZN9S21147C18D2Ev
  virtual void  v4(); // _ZN9S21147C182v4Ev
  virtual void  v5(); // _ZN9S21147C182v5Ev
  S21147C18(); // tgen
};
//SIG(-1 S21147C18) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC7{ VBC2 VBC4 BC3 v3 v4 FC3 FD[7] FC3 FL Fp[5]} vd v1 v2 Fi Fi FC4 Fc Fc Fi Fs FL}


 S21147C18 ::~S21147C18(){ note_dtor("S21147C18", this);}
void  S21147C18 ::v4(){vfunc_called(this, "_ZN9S21147C182v4Ev");}
void  S21147C18 ::v5(){vfunc_called(this, "_ZN9S21147C182v5Ev");}
S21147C18 ::S21147C18(){ note_ctor("S21147C18", this);} // tgen

static void Test_S21147C18()
{
  extern Class_Descriptor cd_S21147C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,313)];
    init_test(&cd_S21147C18, buf);
    S21147C18 *dp, &lv = *(dp=new (buf) S21147C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1248), "sizeof(S21147C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C18)");
    /*is_ambiguous_... S21147C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(264,144), "S21147C18");
    /*is_ambiguous_... S21147C18::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(264,144), "S21147C18");
    check_base_class_offset(lv, (S19674C5*)(S21147C3*), ABISELECT(264,144), "S21147C18");
    check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*), ABISELECT(264,144), "S21147C18");
    /*is_ambiguous_... S21147C18::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(392,236), "S21147C18");
    /*is_ambiguous_... S21147C18::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*), ABISELECT(384,232), "S21147C18");
    check_base_class_offset(lv, (S21147C6*)(S21147C15*), ABISELECT(384,232), "S21147C18");
    /*is_ambiguous_... S21147C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C15*), ABISELECT(576,344), "S21147C18");
    check_base_class_offset(lv, (S21147C15*), ABISELECT(576,344), "S21147C18");
    /*is_ambiguous_... S21147C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21147C18");
    /*is_ambiguous_... S21147C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*), ABISELECT(1944,1192), "S21147C18");
    check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*), ABISELECT(968,572), "S21147C18");
    check_base_class_offset(lv, (S21147C6*)(S21147C3*), ABISELECT(960,568), "S21147C18");
    check_base_class_offset(lv, (S21147C3*), ABISELECT(960,568), "S21147C18");
    check_field_offset(lv, s21147c18f0, ABISELECT(120,60), "S21147C18.s21147c18f0");
    check_field_offset(lv, s21147c18f1, ABISELECT(124,64), "S21147C18.s21147c18f1");
    check_field_offset(lv, s21147c18f2, ABISELECT(128,68), "S21147C18.s21147c18f2");
    check_field_offset(lv, s21147c18f3, ABISELECT(240,124), "S21147C18.s21147c18f3");
    check_field_offset(lv, s21147c18f4, ABISELECT(241,125), "S21147C18.s21147c18f4");
    check_field_offset(lv, s21147c18f5, ABISELECT(244,128), "S21147C18.s21147c18f5");
    check_field_offset(lv, s21147c18f6, ABISELECT(248,132), "S21147C18.s21147c18f6");
    check_field_offset(lv, s21147c18f7, ABISELECT(256,136), "S21147C18.s21147c18f7");
    test_class_info(&lv, &cd_S21147C18);
    dp->~S21147C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C18(Test_S21147C18, "S21147C18", ABISELECT(2064,1248));

#else // __cplusplus

extern void _ZN9S21147C18C1Ev();
extern void _ZN9S21147C18D2Ev();
Name_Map name_map_S21147C18[] = {
  NSPAIR(_ZN9S21147C18C1Ev),
  NSPAIR(_ZN9S21147C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C15;
extern VTBL_ENTRY _ZTI9S21147C15[];
extern  VTBL_ENTRY _ZTV9S21147C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
static Base_Class bases_S21147C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(264,144), //bcp->offset
    11, //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_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(384,232), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21147C15,    ABISELECT(576,344), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(1944,1192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(968,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(960,568), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(960,568), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21147C18[];
extern void _ZN9S21147C18D1Ev();
extern void _ZN9S21147C18D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C18D1Ev,_ZThn144_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn264_N9S21147C18D0Ev,_ZThn144_N9S21147C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn384_N9S21147C18D1Ev,_ZThn232_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn384_N9S21147C18D0Ev,_ZThn232_N9S21147C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn576_N9S21147C18D1Ev,_ZThn344_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn576_N9S21147C18D0Ev,_ZThn344_N9S21147C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn960_N9S21147C18D1Ev,_ZThn568_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn960_N9S21147C18D0Ev,_ZThn568_N9S21147C18D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY vtc_S21147C18[] = {
  ABISELECT(1944,1192),
  ABISELECT(960,568),
  ABISELECT(576,344),
  ABISELECT(384,232),
  ABISELECT(264,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&_ZN9S21147C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev),
  ABISELECT(-384,-232),
  ABISELECT(-120,-88),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev),
  ABISELECT(-576,-344),
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  ABISELECT(-576,-344),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
  0,
  0,
  ABISELECT(-960,-568),
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  ABISELECT(-960,-568),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern VTBL_ENTRY _ZTV9S21147C18[];
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C18[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__9S21147C18[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void _ZN9S21147C15D1Ev();
extern void _ZN9S21147C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C18[] = {
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&_ZN9S21147C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C15__9S21147C18[] = {
  ABISELECT(192,112),
  ABISELECT(-120,-88),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C15__9S21147C18[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C18[] = {
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C3__A1__9S21147C18[] = {
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C3__A1__9S21147C18[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C3__9S21147C18[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
static  VTT_ENTRY vtt_S21147C18[] = {
  {&(_ZTV9S21147C18[7]),  7,40},
  {&(_ZTV9S21147C18[14]),  14,40},
  {&(_ZTV9S21147C18[20]),  20,40},
  {&(_ZTV9S21147C18[27]),  27,40},
  {&(_ZTV9S21147C18[36]),  36,40},
  {&(_tg__ZTV8S21147C6__9S21147C18[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__9S21147C18[3]),  3,5},
  {&(_tg__ZTV9S21147C15__9S21147C18[4]),  4,6},
  {&(_tg__ZTV8S21147C6__9S21147C15__9S21147C18[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21147C15__9S21147C18[3]),  3,5},
  {&(_tg__ZTV8S21147C3__9S21147C18[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C3__A1__9S21147C18[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C3__A1__9S21147C18[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C3__9S21147C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21147C18[];
extern  VTBL_ENTRY _ZTV9S21147C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C18[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S21147C18D0Ev,_ZThn568_N9S21147C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21147C18D0Ev,_ZThn344_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S21147C18D1Ev,_ZThn568_N9S21147C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21147C18D1Ev,_ZThn344_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21147C18D0Ev,_ZThn232_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21147C18D1Ev,_ZThn232_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21147C18D0Ev,_ZThn144_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21147C18D1Ev,_ZThn144_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C18 = {  "S21147C18", // class name
  bases_S21147C18, 10,
  &(vtc_S21147C18[0]), // expected_vtbl_contents
  &(vtt_S21147C18[0]), // expected_vtt_contents
  ABISELECT(2064,1248), // object size
  NSPAIRA(_ZTI9S21147C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21147C18),40, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21147C18),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C17  : S21147C18 , S21147C2 {
  ::S19674C18 s21147c17f0;
  int s21147c17f1;
  int s21147c17f2;
  int s21147c17f3;
  short s21147c17f4;
  virtual void  v6(); // _ZN9S21147C172v6Ev
  virtual void  v7(); // _ZN9S21147C172v7Ev
  ~S21147C17(); // tgen
  S21147C17(); // tgen
};
//SIG(-1 S21147C17) C1{ BC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC8{ VBC3 VBC5 BC4 v3 v4 FC4 FD[7] FC4 FL Fp[5]} vd v5 v6 Fi Fi FC5 Fc Fc Fi Fs FL} BC9{ VBC8 BC5 BC4 Fi Fi Fi:28 Fi Fl} v1 v2 FU10{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs}


void  S21147C17 ::v6(){vfunc_called(this, "_ZN9S21147C172v6Ev");}
void  S21147C17 ::v7(){vfunc_called(this, "_ZN9S21147C172v7Ev");}
S21147C17 ::~S21147C17(){ note_dtor("S21147C17", this);} // tgen
S21147C17 ::S21147C17(){ note_ctor("S21147C17", this);} // tgen

static void Test_S21147C17()
{
  extern Class_Descriptor cd_S21147C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(156,372)];
    init_test(&cd_S21147C17, buf);
    S21147C17 *dp, &lv = *(dp=new (buf) S21147C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2480,1484), "sizeof(S21147C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C17)");
    /*is_ambiguous_... S21147C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C18*), ABISELECT(672,380), "S21147C17");
    /*is_ambiguous_... S21147C17::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(672,380), "S21147C17");
    check_base_class_offset(lv, (S19674C5*)(S21147C3*), ABISELECT(672,380), "S21147C17");
    check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*), ABISELECT(672,380), "S21147C17");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*), ABISELECT(672,380), "S21147C17");
    /*is_ambiguous_... S21147C17::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(800,472), "S21147C17");
    /*is_ambiguous_... S21147C18::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C18*), ABISELECT(792,468), "S21147C17");
    check_base_class_offset(lv, (S21147C6*)(S21147C15*), ABISELECT(792,468), "S21147C17");
    /*is_ambiguous_... S21147C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C15*), ABISELECT(992,580), "S21147C17");
    check_base_class_offset(lv, (S21147C15*)(S21147C18*), ABISELECT(992,580), "S21147C17");
    /*is_ambiguous_... S21147C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C18*), ABISELECT(8,4), "S21147C17");
    /*is_ambiguous_... S21147C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*), ABISELECT(2360,1428), "S21147C17");
    check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*), ABISELECT(1384,808), "S21147C17");
    check_base_class_offset(lv, (S21147C6*)(S21147C3*), ABISELECT(1376,804), "S21147C17");
    check_base_class_offset(lv, (S21147C3*)(S21147C18*), ABISELECT(1376,804), "S21147C17");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*), ABISELECT(1376,804), "S21147C17");
    check_base_class_offset(lv, (S21147C18*), 0, "S21147C17");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*), ABISELECT(456,256), "S21147C17");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*), ABISELECT(272,148), "S21147C17");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*), ABISELECT(264,144), "S21147C17");
    check_base_class_offset(lv, (S21147C2*), ABISELECT(264,144), "S21147C17");
    check_field_offset(lv, s21147c17f0, ABISELECT(592,332), "S21147C17.s21147c17f0");
    check_field_offset(lv, s21147c17f1, ABISELECT(656,364), "S21147C17.s21147c17f1");
    check_field_offset(lv, s21147c17f2, ABISELECT(660,368), "S21147C17.s21147c17f2");
    check_field_offset(lv, s21147c17f3, ABISELECT(664,372), "S21147C17.s21147c17f3");
    check_field_offset(lv, s21147c17f4, ABISELECT(668,376), "S21147C17.s21147c17f4");
    test_class_info(&lv, &cd_S21147C17);
    dp->~S21147C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C17(Test_S21147C17, "S21147C17", ABISELECT(2480,1484));

#else // __cplusplus

extern void _ZN9S21147C17C1Ev();
extern void _ZN9S21147C17D1Ev();
Name_Map name_map_S21147C17[] = {
  NSPAIR(_ZN9S21147C17C1Ev),
  NSPAIR(_ZN9S21147C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C15;
extern VTBL_ENTRY _ZTI9S21147C15[];
extern  VTBL_ENTRY _ZTV9S21147C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S21147C18;
extern VTBL_ENTRY _ZTI9S21147C18[];
extern  VTBL_ENTRY _ZTV9S21147C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
static Base_Class bases_S21147C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(800,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
    2, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(792,468), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(992,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21147C15,    ABISELECT(992,580), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2360,1428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1384,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(1376,804), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(1376,804), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21147C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(264,144), //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
    14, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(264,144), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //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 _ZTI9S21147C17[];
extern void _ZN9S21147C17D1Ev();
extern void _ZN9S21147C17D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
extern void ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn672_N9S21147C17D1Ev,_ZThn380_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn672_N9S21147C17D0Ev,_ZThn380_N9S21147C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn792_N9S21147C17D1Ev,_ZThn468_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn792_N9S21147C17D0Ev,_ZThn468_N9S21147C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn992_N9S21147C17D1Ev,_ZThn580_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn992_N9S21147C17D0Ev,_ZThn580_N9S21147C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn1376_N9S21147C17D1Ev,_ZThn804_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn1376_N9S21147C17D0Ev,_ZThn804_N9S21147C17D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY vtc_S21147C17[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&_ZN9S21147C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev),
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev),
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern VTBL_ENTRY _ZTV9S21147C17[];
extern void _ZN9S21147C18D1Ev();
extern void _ZN9S21147C18D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C18__9S21147C17[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&_ZN9S21147C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn672_N9S21147C18D1Ev,_ZThn380_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn672_N9S21147C18D0Ev,_ZThn380_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C18__9S21147C17[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn792_N9S21147C18D1Ev,_ZThn468_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn792_N9S21147C18D0Ev,_ZThn468_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C18__9S21147C17[] = {
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn992_N9S21147C18D1Ev,_ZThn580_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn992_N9S21147C18D0Ev,_ZThn580_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C18__9S21147C17[] = {
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn1376_N9S21147C18D1Ev,_ZThn804_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn1376_N9S21147C18D0Ev,_ZThn804_N9S21147C18D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C18__9S21147C17[] = {
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C17[] = {
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C2__A2__9S21147C17[] = {
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn408_N8S21147C6D1Ev,_ZThn236_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn408_N8S21147C6D0Ev,_ZThn236_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C2__A2__9S21147C17[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn1112_N8S21147C2D1Ev,_ZThn660_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn1112_N8S21147C2D0Ev,_ZThn660_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C2__9S21147C17[] = {
  0,
  0,
  ABISELECT(-1112,-660),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1112,-660),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn408_N8S21147C2D1Ev,_ZThn236_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn408_N8S21147C2D0Ev,_ZThn236_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C2__9S21147C17[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C17[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__9S21147C17[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void _ZN9S21147C15D1Ev();
extern void _ZN9S21147C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C17[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&_ZN9S21147C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C15__9S21147C17[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C15__9S21147C17[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C17[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C3__A1__9S21147C17[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C3__A1__9S21147C17[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C3__9S21147C17[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
static  VTT_ENTRY vtt_S21147C17[] = {
  {&(_ZTV9S21147C17[7]),  7,49},
  {&(_tg__ZTV9S21147C18__9S21147C17[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C18__9S21147C17[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C18__9S21147C17[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C18__9S21147C17[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C18__9S21147C17[7]),  7,11},
  {&(_tg__ZTV8S21147C2__9S21147C17[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C2__A2__9S21147C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C2__A2__9S21147C17[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C2__9S21147C17[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C2__9S21147C17[3]),  3,5},
  {&(_ZTV9S21147C17[23]),  23,49},
  {&(_ZTV9S21147C17[29]),  29,49},
  {&(_ZTV9S21147C17[36]),  36,49},
  {&(_ZTV9S21147C17[45]),  45,49},
  {&(_ZTV9S21147C17[18]),  18,49},
  {&(_tg__ZTV8S21147C6__9S21147C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__9S21147C17[3]),  3,5},
  {&(_tg__ZTV9S21147C15__9S21147C17[4]),  4,6},
  {&(_tg__ZTV8S21147C6__9S21147C15__9S21147C17[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21147C15__9S21147C17[3]),  3,5},
  {&(_tg__ZTV8S21147C3__9S21147C17[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C3__A1__9S21147C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C3__A1__9S21147C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C3__9S21147C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21147C17[];
extern  VTBL_ENTRY _ZTV9S21147C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C17[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21147C2D0Ev,_ZThn236_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21147C2D1Ev,_ZThn236_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N8S21147C2D0Ev,_ZThn660_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N8S21147C2D1Ev,_ZThn660_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21147C6D0Ev,_ZThn236_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21147C6D1Ev,_ZThn236_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21147C18D0Ev,_ZThn804_N9S21147C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21147C18D0Ev,_ZThn580_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21147C18D1Ev,_ZThn804_N9S21147C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21147C18D1Ev,_ZThn580_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21147C18D0Ev,_ZThn468_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21147C18D1Ev,_ZThn468_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21147C18D0Ev,_ZThn380_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21147C18D1Ev,_ZThn380_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21147C17D0Ev,_ZThn804_N9S21147C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21147C17D0Ev,_ZThn580_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21147C17D1Ev,_ZThn804_N9S21147C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21147C17D1Ev,_ZThn580_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21147C17D0Ev,_ZThn468_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21147C17D1Ev,_ZThn468_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21147C17D0Ev,_ZThn380_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21147C17D1Ev,_ZThn380_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C17 = {  "S21147C17", // class name
  bases_S21147C17, 15,
  &(vtc_S21147C17[0]), // expected_vtbl_contents
  &(vtt_S21147C17[0]), // expected_vtt_contents
  ABISELECT(2480,1484), // object size
  NSPAIRA(_ZTI9S21147C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21147C17),49, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21147C17),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C16  : virtual S21147C3 , virtual S21147C2 , S21147C17 , S19674C5 {
  ::S19674C7 s21147c16f0;
  int s21147c16f1[10];
  int s21147c16f2;
  ::S21147C9 s21147c16f3;
  short s21147c16f4;
  int s21147c16f5;
  __tsi64 s21147c16f6;
  virtual  ~S21147C16(); // _ZN9S21147C16D2Ev
  S21147C16(); // tgen
};
//SIG(-1 S21147C16) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} VBC7{ VBC2 BC4 BC5 Fi Fi Fi:28 Fi Fl} BC8{ BC9{ VBC3 VBC5 VBC10{ VBC5 BC3 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC2 vd v3 v4 Fi Fi FC4 Fc Fc Fi Fs FL} BC7 v5 v6 FU11{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC3 vd FC4 Fi[10] Fi FC12{ VBC3 v7} Fs Fi FL}


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

static void Test_S21147C16()
{
  extern Class_Descriptor cd_S21147C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(203,493)];
    init_test(&cd_S21147C16, buf);
    S21147C16 *dp, &lv = *(dp=new (buf) S21147C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3232,1968), "sizeof(S21147C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C16)");
    check_base_class_offset(lv, (S19674C5*)(S21147C3*), ABISELECT(2088,1300), "S21147C16");
    check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*), ABISELECT(2088,1300), "S21147C16");
    /*is_ambiguous_... S21147C16::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*), ABISELECT(2088,1300), "S21147C16");
    /*is_ambiguous_... S21147C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C18*)(S21147C17*), ABISELECT(2088,1300), "S21147C16");
    /*is_ambiguous_... S21147C16::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(2088,1300), "S21147C16");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*)(S21147C17*), ABISELECT(2088,1300), "S21147C16");
    /*is_ambiguous_... S21147C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*), ABISELECT(2208,1388), "S21147C16");
    check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*), ABISELECT(1112,680), "S21147C16");
    check_base_class_offset(lv, (S21147C6*)(S21147C3*), ABISELECT(1104,676), "S21147C16");
    check_base_class_offset(lv, (S21147C3*), ABISELECT(1104,676), "S21147C16");
    /*is_ambiguous_... S21147C16::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C3*)(S21147C2*), ABISELECT(1104,676), "S21147C16");
    check_base_class_offset(lv, (S21147C3*)(S21147C18*)(S21147C17*), ABISELECT(1104,676), "S21147C16");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*)(S21147C17*), ABISELECT(1104,676), "S21147C16");
    /*is_ambiguous_... S21147C16::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*), ABISELECT(2512,1556), "S21147C16");
    /*is_ambiguous_... S21147C16::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*), ABISELECT(2328,1448), "S21147C16");
    /*is_ambiguous_... S21147C16::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*), ABISELECT(2320,1444), "S21147C16");
    /*is_ambiguous_... S21147C16::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C2*), ABISELECT(2320,1444), "S21147C16");
    /*is_ambiguous_... S21147C16::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(2656,1636), "S21147C16");
    /*is_ambiguous_... S21147C18::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C18*)(S21147C17*), ABISELECT(2648,1632), "S21147C16");
    check_base_class_offset(lv, (S21147C6*)(S21147C15*), ABISELECT(2648,1632), "S21147C16");
    /*is_ambiguous_... S21147C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C15*), ABISELECT(2848,1744), "S21147C16");
    check_base_class_offset(lv, (S21147C15*)(S21147C18*)(S21147C17*), ABISELECT(2848,1744), "S21147C16");
    /*is_ambiguous_... S21147C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C18*)(S21147C17*), ABISELECT(8,4), "S21147C16");
    check_base_class_offset(lv, (S21147C18*)(S21147C17*), 0, "S21147C16");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*)(S21147C17*), ABISELECT(456,256), "S21147C16");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*)(S21147C17*), ABISELECT(272,148), "S21147C16");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*)(S21147C17*), ABISELECT(264,144), "S21147C16");
    check_base_class_offset(lv, (S21147C2*)(S21147C17*), ABISELECT(264,144), "S21147C16");
    check_base_class_offset(lv, (S21147C17*), 0, "S21147C16");
    /*is_ambiguous_... S21147C16::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(672,380), "S21147C16");
    check_field_offset(lv, s21147c16f0, ABISELECT(792,468), "S21147C16.s21147c16f0");
    check_field_offset(lv, s21147c16f1, ABISELECT(904,524), "S21147C16.s21147c16f1");
    check_field_offset(lv, s21147c16f2, ABISELECT(944,564), "S21147C16.s21147c16f2");
    check_field_offset(lv, s21147c16f3, ABISELECT(952,568), "S21147C16.s21147c16f3");
    check_field_offset(lv, s21147c16f4, ABISELECT(1080,660), "S21147C16.s21147c16f4");
    check_field_offset(lv, s21147c16f5, ABISELECT(1084,664), "S21147C16.s21147c16f5");
    check_field_offset(lv, s21147c16f6, ABISELECT(1088,668), "S21147C16.s21147c16f6");
    test_class_info(&lv, &cd_S21147C16);
    dp->~S21147C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C16(Test_S21147C16, "S21147C16", ABISELECT(3232,1968));

#else // __cplusplus

extern void _ZN9S21147C16C1Ev();
extern void _ZN9S21147C16D2Ev();
Name_Map name_map_S21147C16[] = {
  NSPAIR(_ZN9S21147C16C1Ev),
  NSPAIR(_ZN9S21147C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C15;
extern VTBL_ENTRY _ZTI9S21147C15[];
extern  VTBL_ENTRY _ZTV9S21147C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C18;
extern VTBL_ENTRY _ZTI9S21147C18[];
extern  VTBL_ENTRY _ZTV9S21147C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S21147C17;
extern VTBL_ENTRY _ZTI9S21147C17[];
extern  VTBL_ENTRY _ZTV9S21147C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C17[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21147C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(2088,1300), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2208,1388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(1112,680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(1104,676), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(1104,676), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(2512,1556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2328,1448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(2320,1444), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(2320,1444), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(2656,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21147C6,    ABISELECT(2648,1632), //bcp->offset
    49, //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
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(2848,1744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21147C15,    ABISELECT(2848,1744), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(264,144), //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
    18, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(264,144), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21147C17,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21147C16[];
extern void _ZN9S21147C16D1Ev();
extern void _ZN9S21147C16D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
extern void ABISELECT(_ZThn264_N9S21147C16D1Ev,_ZThn144_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C16D0Ev,_ZThn144_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn672_N9S21147C16D1Ev,_ZThn380_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn672_N9S21147C16D0Ev,_ZThn380_N9S21147C16D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn1104_N9S21147C16D1Ev,_ZThn676_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn1104_N9S21147C16D0Ev,_ZThn676_N9S21147C16D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn2088_N9S21147C16D1Ev,_ZThn1300_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn2088_N9S21147C16D0Ev,_ZThn1300_N9S21147C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn2320_N9S21147C16D1Ev,_ZThn1444_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn2320_N9S21147C16D0Ev,_ZThn1444_N9S21147C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn2648_N9S21147C16D1Ev,_ZThn1632_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn2648_N9S21147C16D0Ev,_ZThn1632_N9S21147C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn2848_N9S21147C16D1Ev,_ZThn1744_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn2848_N9S21147C16D0Ev,_ZThn1744_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C16[] = {
  ABISELECT(2320,1444),
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&_ZN9S21147C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C16D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C16D1Ev,_ZThn144_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C16D0Ev,_ZThn144_N9S21147C16D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21147C16D1Ev,_ZThn380_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21147C16D0Ev,_ZThn380_N9S21147C16D0Ev),
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev),
  ABISELECT(-2320,-1444),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(-2320,-1444),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev),
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev),
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21147C16[];
extern void _ZN9S21147C17D1Ev();
extern void _ZN9S21147C17D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C17__9S21147C16[] = {
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&_ZN9S21147C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C18D1Ev();
extern void _ZN9S21147C18D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C189S21147C17__9S21147C16[] = {
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&_ZN9S21147C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn2088_N9S21147C18D1Ev,_ZThn1300_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn2088_N9S21147C18D0Ev,_ZThn1300_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C189S21147C17__9S21147C16[] = {
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn2648_N9S21147C18D1Ev,_ZThn1632_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn2648_N9S21147C18D0Ev,_ZThn1632_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C189S21147C17__9S21147C16[] = {
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn2848_N9S21147C18D1Ev,_ZThn1744_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn2848_N9S21147C18D0Ev,_ZThn1744_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C189S21147C17__9S21147C16[] = {
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn1104_N9S21147C18D1Ev,_ZThn676_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn1104_N9S21147C18D0Ev,_ZThn676_N9S21147C18D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C189S21147C17__9S21147C16[] = {
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C17__A1__9S21147C16[] = {
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C29S21147C17__A3__9S21147C16[] = {
  ABISELECT(1824,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn1824_N8S21147C6D1Ev,_ZThn1156_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn1824_N8S21147C6D0Ev,_ZThn1156_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C29S21147C17__A3__9S21147C16[] = {
  ABISELECT(-1824,-1156),
  ABISELECT(-1824,-1156),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn840_N8S21147C2D1Ev,_ZThn532_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn840_N8S21147C2D0Ev,_ZThn532_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C29S21147C17__A1__9S21147C16[] = {
  0,
  0,
  ABISELECT(-840,-532),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn1824_N8S21147C2D1Ev,_ZThn1156_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn1824_N8S21147C2D0Ev,_ZThn1156_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C29S21147C17__A1__9S21147C16[] = {
  ABISELECT(-1824,-1156),
  ABISELECT(-1824,-1156),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn2088_N9S21147C17D1Ev,_ZThn1300_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn2088_N9S21147C17D0Ev,_ZThn1300_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C17__9S21147C16[] = {
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn2648_N9S21147C17D1Ev,_ZThn1632_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn2648_N9S21147C17D0Ev,_ZThn1632_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C17__9S21147C16[] = {
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn2848_N9S21147C17D1Ev,_ZThn1744_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn2848_N9S21147C17D0Ev,_ZThn1744_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C17__9S21147C16[] = {
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn1104_N9S21147C17D1Ev,_ZThn676_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn1104_N9S21147C17D0Ev,_ZThn676_N9S21147C17D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C17__9S21147C16[] = {
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C17__9S21147C16[] = {
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C16[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C3__9S21147C16[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C3__9S21147C16[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C3__9S21147C16[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C16[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C2__A1__9S21147C16[] = {
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C2__A1__9S21147C16[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C2__9S21147C16[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C2__9S21147C16[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C16[] = {
  ABISELECT(-560,-332),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__A2__9S21147C16[] = {
  ABISELECT(560,332),
  ABISELECT(560,332),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void _ZN9S21147C15D1Ev();
extern void _ZN9S21147C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C16[] = {
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&_ZN9S21147C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C15__9S21147C16[] = {
  ABISELECT(200,112),
  ABISELECT(-560,-332),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C15__9S21147C16[] = {
  ABISELECT(760,444),
  ABISELECT(760,444),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev),
};
static  VTT_ENTRY vtt_S21147C16[] = {
  {&(_ZTV9S21147C16[8]),  8,62},
  {&(_tg__ZTV9S21147C17__9S21147C16[7]),  7,13},
  {&(_tg__ZTV9S21147C189S21147C17__9S21147C16[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C189S21147C17__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C189S21147C17__9S21147C16[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C189S21147C17__9S21147C16[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C189S21147C17__9S21147C16[7]),  7,11},
  {&(_tg__ZTV8S21147C29S21147C17__A1__9S21147C16[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C29S21147C17__A3__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C29S21147C17__A3__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C29S21147C17__A1__9S21147C16[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C29S21147C17__A1__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21147C17__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C17__9S21147C16[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C17__9S21147C16[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C17__9S21147C16[7]),  7,11},
  {&(_tg__ZTV8S21147C2__9S21147C17__9S21147C16[5]),  5,7},
  {&(_ZTV9S21147C16[32]),  32,62},
  {&(_ZTV9S21147C16[39]),  39,62},
  {&(_ZTV9S21147C16[47]),  47,62},
  {&(_ZTV9S21147C16[53]),  53,62},
  {&(_ZTV9S21147C16[60]),  60,62},
  {&(_ZTV9S21147C16[19]),  19,62},
  {&(_tg__ZTV8S21147C3__9S21147C16[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C3__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C3__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C3__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S21147C2__9S21147C16[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C2__A1__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C2__A1__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C2__9S21147C16[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C2__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A2__9S21147C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__A2__9S21147C16[3]),  3,5},
  {&(_tg__ZTV9S21147C15__9S21147C16[4]),  4,6},
  {&(_tg__ZTV8S21147C6__9S21147C15__9S21147C16[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21147C15__9S21147C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21147C16[];
extern  VTBL_ENTRY _ZTV9S21147C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C16[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21147C17D0Ev,_ZThn676_N9S21147C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21147C17D0Ev,_ZThn1744_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21147C17D1Ev,_ZThn676_N9S21147C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21147C17D1Ev,_ZThn1744_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21147C17D0Ev,_ZThn1632_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21147C17D1Ev,_ZThn1632_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21147C17D0Ev,_ZThn1300_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21147C17D1Ev,_ZThn1300_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21147C2D0Ev,_ZThn1156_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21147C2D1Ev,_ZThn1156_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn840_N8S21147C2D0Ev,_ZThn532_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn840_N8S21147C2D1Ev,_ZThn532_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21147C6D0Ev,_ZThn1156_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21147C6D1Ev,_ZThn1156_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21147C18D0Ev,_ZThn676_N9S21147C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21147C18D0Ev,_ZThn1744_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21147C18D1Ev,_ZThn676_N9S21147C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21147C18D1Ev,_ZThn1744_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21147C18D0Ev,_ZThn1632_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21147C18D1Ev,_ZThn1632_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21147C18D0Ev,_ZThn1300_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21147C18D1Ev,_ZThn1300_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21147C16D0Ev,_ZThn1632_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21147C16D1Ev,_ZThn1632_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2320_N9S21147C16D0Ev,_ZThn1444_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2320_N9S21147C16D1Ev,_ZThn1444_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21147C16D0Ev,_ZThn1300_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21147C16D1Ev,_ZThn1300_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21147C16D0Ev,_ZThn1744_N9S21147C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21147C16D0Ev,_ZThn676_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21147C16D1Ev,_ZThn1744_N9S21147C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21147C16D1Ev,_ZThn676_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C16 = {  "S21147C16", // class name
  bases_S21147C16, 21,
  &(vtc_S21147C16[0]), // expected_vtbl_contents
  &(vtt_S21147C16[0]), // expected_vtt_contents
  ABISELECT(3232,1968), // object size
  NSPAIRA(_ZTI9S21147C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21147C16),62, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21147C16),37, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C20  : virtual S19674C5 , S21147C6 , virtual S21147C15 {
  long double s21147c20f0;
  void *s21147c20f1;
  void *s21147c20f2;
  ~S21147C20(); // tgen
  S21147C20(); // tgen
};
//SIG(-1 S21147C20) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} FD Fp Fp}


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

static void Test_S21147C20()
{
  extern Class_Descriptor cd_S21147C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,140)];
    init_test(&cd_S21147C20, buf);
    S21147C20 *dp, &lv = *(dp=new (buf) S21147C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,556), "sizeof(S21147C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C20)");
    /*is_ambiguous_... S21147C20::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(224,132), "S21147C20");
    /*is_ambiguous_... S21147C20::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(224,132), "S21147C20");
    /*is_ambiguous_... S21147C20::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(224,132), "S21147C20");
    /*is_ambiguous_... S21147C20::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(8,4), "S21147C20");
    /*is_ambiguous_... S21147C20::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*), 0, "S21147C20");
    /*is_ambiguous_... S21147C20::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(744,448), "S21147C20");
    check_base_class_offset(lv, (S21147C6*)(S21147C15*), ABISELECT(736,444), "S21147C20");
    /*is_ambiguous_... S21147C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C15*), ABISELECT(352,220), "S21147C20");
    check_base_class_offset(lv, (S21147C15*), ABISELECT(352,220), "S21147C20");
    check_field_offset(lv, s21147c20f0, ABISELECT(192,112), "S21147C20.s21147c20f0");
    check_field_offset(lv, s21147c20f1, ABISELECT(208,124), "S21147C20.s21147c20f1");
    check_field_offset(lv, s21147c20f2, ABISELECT(216,128), "S21147C20.s21147c20f2");
    test_class_info(&lv, &cd_S21147C20);
    dp->~S21147C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C20(Test_S21147C20, "S21147C20", ABISELECT(928,556));

#else // __cplusplus

extern void _ZN9S21147C20C1Ev();
extern void _ZN9S21147C20D1Ev();
Name_Map name_map_S21147C20[] = {
  NSPAIR(_ZN9S21147C20C1Ev),
  NSPAIR(_ZN9S21147C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C15;
extern VTBL_ENTRY _ZTI9S21147C15[];
extern  VTBL_ENTRY _ZTV9S21147C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C15[];
static Base_Class bases_S21147C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(224,132), //bcp->offset
    7, //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_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21147C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(744,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(736,444), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(352,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21147C15,    ABISELECT(352,220), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21147C20[];
extern void _ZN9S21147C20D1Ev();
extern void _ZN9S21147C20D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21147C20D1Ev,_ZTv0_n12_N9S21147C20D1Ev)();
extern void ABISELECT(_ZThn224_N9S21147C20D1Ev,_ZThn132_N9S21147C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C20D0Ev,_ZTv0_n12_N9S21147C20D0Ev)();
extern void ABISELECT(_ZThn224_N9S21147C20D0Ev,_ZThn132_N9S21147C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C20D1Ev,_ZTv0_n20_N9S21147C20D1Ev)();
extern void ABISELECT(_ZThn352_N9S21147C20D1Ev,_ZThn220_N9S21147C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C20D0Ev,_ZTv0_n20_N9S21147C20D0Ev)();
extern void ABISELECT(_ZThn352_N9S21147C20D0Ev,_ZThn220_N9S21147C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C20D1Ev,_ZTv0_n16_N9S21147C20D1Ev)();
extern void ABISELECT(_ZThn736_N9S21147C20D1Ev,_ZThn444_N9S21147C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C20D0Ev,_ZTv0_n16_N9S21147C20D0Ev)();
extern void ABISELECT(_ZThn736_N9S21147C20D0Ev,_ZThn444_N9S21147C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C20[] = {
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C20[0]),
  (VTBL_ENTRY)&_ZN9S21147C20D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C20D0Ev,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S21147C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C20D1Ev,_ZTv0_n12_N9S21147C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C20D0Ev,_ZTv0_n12_N9S21147C20D0Ev),
  ABISELECT(-352,-220),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI9S21147C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C20D1Ev,_ZTv0_n20_N9S21147C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C20D0Ev,_ZTv0_n20_N9S21147C20D0Ev),
  ABISELECT(-736,-444),
  ABISELECT(-512,-312),
  ABISELECT(-736,-444),
  (VTBL_ENTRY)&(_ZTI9S21147C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C20D1Ev,_ZTv0_n16_N9S21147C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C20D0Ev,_ZTv0_n16_N9S21147C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S21147C20[];
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A__9S21147C20[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn224_N8S21147C6D1Ev,_ZThn132_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn224_N8S21147C6D0Ev,_ZThn132_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__A__9S21147C20[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void _ZN9S21147C15D1Ev();
extern void _ZN9S21147C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C20[] = {
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&_ZN9S21147C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev)();
extern void ABISELECT(_ZThn384_N9S21147C15D1Ev,_ZThn224_N9S21147C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev)();
extern void ABISELECT(_ZThn384_N9S21147C15D0Ev,_ZThn224_N9S21147C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C15__9S21147C20[] = {
  ABISELECT(-384,-224),
  ABISELECT(-512,-312),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C15__9S21147C20[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev),
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A1__9S21147C20[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__A1__9S21147C20[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
static  VTT_ENTRY vtt_S21147C20[] = {
  {&(_ZTV9S21147C20[5]),  5,25},
  {&(_tg__ZTV8S21147C6__A__9S21147C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__A__9S21147C20[3]),  3,5},
  {&(_ZTV9S21147C20[10]),  10,25},
  {&(_ZTV9S21147C20[17]),  17,25},
  {&(_ZTV9S21147C20[23]),  23,25},
  {&(_tg__ZTV9S21147C15__9S21147C20[4]),  4,6},
  {&(_tg__ZTV8S21147C6__9S21147C15__9S21147C20[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21147C15__9S21147C20[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A1__9S21147C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__A1__9S21147C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21147C20[];
extern  VTBL_ENTRY _ZTV9S21147C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C20[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21147C15D0Ev,_ZThn224_N9S21147C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21147C15D1Ev,_ZThn224_N9S21147C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21147C6D0Ev,_ZThn132_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21147C6D1Ev,_ZThn132_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C20D0Ev,_ZTv0_n16_N9S21147C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S21147C20D0Ev,_ZThn444_N9S21147C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C20D1Ev,_ZTv0_n16_N9S21147C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S21147C20D1Ev,_ZThn444_N9S21147C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C20D0Ev,_ZTv0_n20_N9S21147C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S21147C20D0Ev,_ZThn220_N9S21147C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C20D1Ev,_ZTv0_n20_N9S21147C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S21147C20D1Ev,_ZThn220_N9S21147C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C20D0Ev,_ZTv0_n12_N9S21147C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21147C20D0Ev,_ZThn132_N9S21147C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C20D1Ev,_ZTv0_n12_N9S21147C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21147C20D1Ev,_ZThn132_N9S21147C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C20 = {  "S21147C20", // class name
  bases_S21147C20, 7,
  &(vtc_S21147C20[0]), // expected_vtbl_contents
  &(vtt_S21147C20[0]), // expected_vtt_contents
  ABISELECT(928,556), // object size
  NSPAIRA(_ZTI9S21147C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21147C20),25, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21147C20),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C12  : virtual S21147C2 , virtual S19674C2 , S21147C16 , virtual S21147C8 {
  ::S21147C15 s21147c12f0;
  int s21147c12f1;
  ::S21147C20 s21147c12f2;
  long double s21147c12f3;
  short s21147c12f4[3];
  int  :0;
  int s21147c12f6;
  ~S21147C12(); // tgen
  S21147C12(); // tgen
};
//SIG(-1 S21147C12) C1{ VBC2{ VBC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ m Fp[14]} BC6{ VBC4 BC5 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC5 BC6 Fi Fi Fi:28 Fi Fl} VBC8{ m FC9{ VBC10{ VBC4 v8} VBC11{ VBC4 VBC5 BC12{ VBC4 BC5 Fs[6] FL[3] FU7} v9 v10 FC12 FD[7] FC12 FL Fp[5]} vd FC13{ VBC12 BC4 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC11 Fi Fi FC10}[5] Fp} BC14{ VBC3 VBC2 BC15{ BC16{ VBC4 VBC6 VBC17{ VBC6 BC4 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC3 vd v3 v4 Fi Fi FC5 Fc Fc Fi Fs FL} BC2 v5 v6 FU18{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC4 vd FC5 Fi[10] Fi FC19{ VBC4 v7} Fs Fi FL} VBC20{ VBC5 BC2 BC3 VBC6 VBC19 vd Fi Fi Fi FD Fp Fp FC6 Fp FC3 Fi Fp Fi FC4[8]} FC17 Fi FC21{ VBC4 BC6 VBC17 FD Fp Fp} FD Fs[3] Fi:0 Fi}


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

static void Test_S21147C12()
{
  extern Class_Descriptor cd_S21147C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2468,6090)];
    init_test(&cd_S21147C12, buf);
    S21147C12 *dp, &lv = *(dp=new (buf) S21147C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39472,24356), "sizeof(S21147C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C12)");
    /*is_ambiguous_... S21147C12::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C3*), ABISELECT(4104,2496), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*), ABISELECT(4104,2496), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*), ABISELECT(4104,2496), "S21147C12");
    /*is_ambiguous_... S21147C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C18*)(S21147C17*)(S21147C16*), ABISELECT(4104,2496), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(4104,2496), "S21147C12");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*), ABISELECT(4104,2496), "S21147C12");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(4104,2496), "S21147C12");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C3*)(S21147C8*), ABISELECT(4104,2496), "S21147C12");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(4104,2496), "S21147C12");
    check_base_class_offset(lv, (S19674C5*)(S21147C9*), ABISELECT(4104,2496), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*), ABISELECT(4224,2584), "S21147C12");
    /*is_ambiguous_... S21147C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C8*), ABISELECT(4224,2584), "S21147C12");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*)(S21147C8*), ABISELECT(4224,2584), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*), ABISELECT(3128,1876), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C3*), ABISELECT(3120,1872), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C3*)(S21147C2*), ABISELECT(3120,1872), "S21147C12");
    check_base_class_offset(lv, (S21147C3*)(S21147C16*), ABISELECT(3120,1872), "S21147C12");
    check_base_class_offset(lv, (S21147C3*)(S21147C18*)(S21147C17*)(S21147C16*), ABISELECT(3120,1872), "S21147C12");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*)(S21147C17*)(S21147C16*), ABISELECT(3120,1872), "S21147C12");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*)(S21147C8*), ABISELECT(3120,1872), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*), ABISELECT(2976,1796), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*), ABISELECT(2792,1688), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*), ABISELECT(2784,1684), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C2*), ABISELECT(2784,1684), "S21147C12");
    /*is_ambiguous_... S21147C16::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C2*)(S21147C16*), ABISELECT(2784,1684), "S21147C12");
    check_base_class_offset(lv, (S19674C2*), ABISELECT(4336,2640), "S21147C12");
    /*is_ambiguous_... S21147C12::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(34992,21488), "S21147C12");
    /*is_ambiguous_... S21147C18::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C18*)(S21147C17*)(S21147C16*), ABISELECT(34984,21484), "S21147C12");
    check_base_class_offset(lv, (S21147C6*)(S21147C15*), ABISELECT(34984,21484), "S21147C12");
    /*is_ambiguous_... S21147C8::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C8*), ABISELECT(34984,21484), "S21147C12");
    /*is_ambiguous_... S21147C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C15*), ABISELECT(35184,21596), "S21147C12");
    check_base_class_offset(lv, (S21147C15*)(S21147C18*)(S21147C17*)(S21147C16*), ABISELECT(35184,21596), "S21147C12");
    /*is_ambiguous_... S21147C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C18*)(S21147C17*)(S21147C16*), ABISELECT(8,4), "S21147C12");
    check_base_class_offset(lv, (S21147C18*)(S21147C17*)(S21147C16*), 0, "S21147C12");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*)(S21147C17*)(S21147C16*), ABISELECT(456,256), "S21147C12");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*), ABISELECT(272,148), "S21147C12");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*), ABISELECT(264,144), "S21147C12");
    check_base_class_offset(lv, (S21147C2*)(S21147C17*)(S21147C16*), ABISELECT(264,144), "S21147C12");
    check_base_class_offset(lv, (S21147C17*)(S21147C16*), 0, "S21147C12");
    /*is_ambiguous_... S21147C16::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C16*), ABISELECT(672,380), "S21147C12");
    check_base_class_offset(lv, (S21147C16*), 0, "S21147C12");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*)(S21147C8*), ABISELECT(35760,21932), "S21147C12");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(35576,21824), "S21147C12");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(35568,21820), "S21147C12");
    check_base_class_offset(lv, (S21147C2*)(S21147C8*), ABISELECT(35568,21820), "S21147C12");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(35912,22012), "S21147C12");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(35904,22008), "S21147C12");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C3*)(S21147C8*), ABISELECT(35904,22008), "S21147C12");
    check_base_class_offset(lv, (S21147C9*)(S21147C8*), ABISELECT(39464,24352), "S21147C12");
    check_base_class_offset(lv, (S21147C8*), ABISELECT(35568,21820), "S21147C12");
    check_field_offset(lv, s21147c12f0, ABISELECT(1104,676), "S21147C12.s21147c12f0");
    check_field_offset(lv, s21147c12f1, ABISELECT(1808,1100), "S21147C12.s21147c12f1");
    check_field_offset(lv, s21147c12f2, ABISELECT(1824,1104), "S21147C12.s21147c12f2");
    check_field_offset(lv, s21147c12f3, ABISELECT(2752,1660), "S21147C12.s21147c12f3");
    check_field_offset(lv, s21147c12f4, ABISELECT(2768,1672), "S21147C12.s21147c12f4");
    check_field_offset(lv, s21147c12f6, ABISELECT(2776,1680), "S21147C12.s21147c12f6");
    test_class_info(&lv, &cd_S21147C12);
    dp->~S21147C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C12(Test_S21147C12, "S21147C12", ABISELECT(39472,24356));

#else // __cplusplus

extern void _ZN9S21147C12C1Ev();
extern void _ZN9S21147C12D1Ev();
Name_Map name_map_S21147C12[] = {
  NSPAIR(_ZN9S21147C12C1Ev),
  NSPAIR(_ZN9S21147C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C15;
extern VTBL_ENTRY _ZTI9S21147C15[];
extern  VTBL_ENTRY _ZTV9S21147C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C18;
extern VTBL_ENTRY _ZTI9S21147C18[];
extern  VTBL_ENTRY _ZTV9S21147C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S21147C17;
extern VTBL_ENTRY _ZTI9S21147C17[];
extern  VTBL_ENTRY _ZTV9S21147C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C17[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C16;
extern VTBL_ENTRY _ZTI9S21147C16[];
extern  VTBL_ENTRY _ZTV9S21147C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C16[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S21147C9;
extern VTBL_ENTRY _ZTI8S21147C9[];
extern  VTBL_ENTRY _ZTV8S21147C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C9[];
extern Class_Descriptor cd_S21147C8;
extern VTBL_ENTRY _ZTI8S21147C8[];
extern  VTBL_ENTRY _ZTV8S21147C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C8[];
static Base_Class bases_S21147C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(4104,2496), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4224,2584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(3128,1876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21147C6,    ABISELECT(3120,1872), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(3120,1872), //bcp->offset
    36, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2976,1796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2792,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(2784,1684), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(2784,1684), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C2,    ABISELECT(4336,2640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(34992,21488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(34984,21484), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(35184,21596), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21147C15,    ABISELECT(35184,21596), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(264,144), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(264,144), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21147C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21147C16,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(35760,21932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(35576,21824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(35568,21820), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(35568,21820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35912,22012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(35904,22008), //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
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(35904,22008), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21147C9,    ABISELECT(39464,24352), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S21147C8,    ABISELECT(35568,21820), //bcp->offset
    65, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21147C12[];
extern void _ZN9S21147C12D1Ev();
extern void _ZN9S21147C12D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
extern void ABISELECT(_ZThn264_N9S21147C12D1Ev,_ZThn144_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C12D0Ev,_ZThn144_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn672_N9S21147C12D1Ev,_ZThn380_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn672_N9S21147C12D0Ev,_ZThn380_N9S21147C12D0Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn2784_N9S21147C12D1Ev,_ZThn1684_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn2784_N9S21147C12D0Ev,_ZThn1684_N9S21147C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21147C12D1Ev,_ZThn1872_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21147C12D0Ev,_ZThn1872_N9S21147C12D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21147C12D1Ev,_ZThn2496_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21147C12D0Ev,_ZThn2496_N9S21147C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C12D1Ev,_ZThn21484_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C12D0Ev,_ZThn21484_N9S21147C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C12D1Ev,_ZThn21596_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C12D0Ev,_ZThn21596_N9S21147C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn35568_N9S21147C12D1Ev,_ZThn21820_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn35568_N9S21147C12D0Ev,_ZThn21820_N9S21147C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N9S21147C12D1Ev,_ZTvn188_n32_N9S21147C12D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21147C12D0Ev,_ZTvn188_n32_N9S21147C12D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn39464_N9S21147C12D1Ev,_ZThn24352_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn39464_N9S21147C12D0Ev,_ZThn24352_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C12[] = {
  ABISELECT(39464,24352),
  ABISELECT(35568,21820),
  ABISELECT(4336,2640),
  ABISELECT(2784,1684),
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&_ZN9S21147C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C12D1Ev,_ZThn144_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C12D0Ev,_ZThn144_N9S21147C12D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21147C12D1Ev,_ZThn380_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21147C12D0Ev,_ZThn380_N9S21147C12D0Ev),
  ABISELECT(-2784,-1684),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev),
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev),
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev),
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21820),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  ABISELECT(-35568,-21820),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev),
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  ABISELECT(-35904,-22008),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C12D1Ev,_ZTvn188_n32_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C12D0Ev,_ZTvn188_n32_N9S21147C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-39464,-24352),
  0,
  ABISELECT(-35360,-21856),
  ABISELECT(-39464,-24352),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S21147C12[];
extern void _ZN9S21147C16D1Ev();
extern void _ZN9S21147C16D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C16__9S21147C12[] = {
  ABISELECT(2784,1684),
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&_ZN9S21147C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C16D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C17D1Ev();
extern void _ZN9S21147C17D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C179S21147C16__9S21147C12[] = {
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&_ZN9S21147C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C18D1Ev();
extern void _ZN9S21147C18D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C189S21147C179S21147C16__9S21147C12[] = {
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&_ZN9S21147C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21147C18D1Ev,_ZThn2496_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21147C18D0Ev,_ZThn2496_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C189S21147C179S21147C16__9S21147C12[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C18D1Ev,_ZThn21484_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C18D0Ev,_ZThn21484_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C189S21147C179S21147C16__9S21147C12[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C18D1Ev,_ZThn21596_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C18D0Ev,_ZThn21596_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C189S21147C179S21147C16__9S21147C12[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21147C18D1Ev,_ZThn1872_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21147C18D0Ev,_ZThn1872_N9S21147C18D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C189S21147C179S21147C16__9S21147C12[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C179S21147C16__A1__9S21147C12[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C29S21147C179S21147C16__A3__9S21147C12[] = {
  ABISELECT(3840,2352),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn3840_N8S21147C6D1Ev,_ZThn2352_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn3840_N8S21147C6D0Ev,_ZThn2352_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C29S21147C179S21147C16__A3__9S21147C12[] = {
  ABISELECT(-3840,-2352),
  ABISELECT(-3840,-2352),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn2856_N8S21147C2D1Ev,_ZThn1728_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn2856_N8S21147C2D0Ev,_ZThn1728_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C29S21147C179S21147C16__A1__9S21147C12[] = {
  0,
  0,
  ABISELECT(-2856,-1728),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-2856,-1728),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn3840_N8S21147C2D1Ev,_ZThn2352_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn3840_N8S21147C2D0Ev,_ZThn2352_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C29S21147C179S21147C16__A1__9S21147C12[] = {
  ABISELECT(-3840,-2352),
  ABISELECT(-3840,-2352),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21147C17D1Ev,_ZThn2496_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21147C17D0Ev,_ZThn2496_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C179S21147C16__9S21147C12[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C17D1Ev,_ZThn21484_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C17D0Ev,_ZThn21484_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C179S21147C16__9S21147C12[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C17D1Ev,_ZThn21596_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C17D0Ev,_ZThn21596_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C179S21147C16__9S21147C12[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21147C17D1Ev,_ZThn1872_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21147C17D0Ev,_ZThn1872_N9S21147C17D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C179S21147C16__9S21147C12[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C179S21147C16__9S21147C12[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21147C16D1Ev,_ZThn1872_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21147C16D0Ev,_ZThn1872_N9S21147C16D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C16__9S21147C12[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21147C16D1Ev,_ZThn2496_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21147C16D0Ev,_ZThn2496_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C16__9S21147C12[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn2784_N9S21147C16D1Ev,_ZThn1684_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn2784_N9S21147C16D0Ev,_ZThn1684_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C16__9S21147C12[] = {
  ABISELECT(-2784,-1684),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C16D1Ev,_ZThn21484_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C16D0Ev,_ZThn21484_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C16__9S21147C12[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C16D1Ev,_ZThn21596_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C16D0Ev,_ZThn21596_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C16__9S21147C12[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21147C16D1Ev,_ZThn144_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C16D0Ev,_ZThn144_N9S21147C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C17__A1__9S21147C16__9S21147C12[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C16D1Ev,_ZThn144_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C16D0Ev,_ZThn144_N9S21147C16D0Ev),
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C12[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C2__A1__9S21147C12[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C6D1Ev,_ZThn812_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C6D0Ev,_ZThn812_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C2__A1__9S21147C12[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21147C2D1Ev,_ZThn188_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21147C2D0Ev,_ZThn188_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C2__9S21147C12[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C2D1Ev,_ZThn812_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C2D0Ev,_ZThn812_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C2__9S21147C12[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C12[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C3__9S21147C12[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C3__9S21147C12[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C3__9S21147C12[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C12[] = {
  ABISELECT(-30880,-18988),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__A2__9S21147C12[] = {
  ABISELECT(30880,18988),
  ABISELECT(30880,18988),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void _ZN9S21147C15D1Ev();
extern void _ZN9S21147C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C12[] = {
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&_ZN9S21147C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C15__9S21147C12[] = {
  ABISELECT(200,112),
  ABISELECT(-30880,-18988),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C15__9S21147C12[] = {
  ABISELECT(31080,19100),
  ABISELECT(31080,19100),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev),
};
extern void _ZN8S21147C8D1Ev();
extern void _ZN8S21147C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C8__9S21147C12[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&_ZN8S21147C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C8D0Ev,
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C28S21147C8__A2__9S21147C12[] = {
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C28S21147C8__A4__9S21147C12[] = {
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C28S21147C8__A4__9S21147C12[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C28S21147C8__A2__9S21147C12[] = {
  0,
  0,
  ABISELECT(32448,19948),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(32448,19948),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C28S21147C8__A2__9S21147C12[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C38S21147C8__A1__9S21147C12[] = {
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C38S21147C8__A5__9S21147C12[] = {
  ABISELECT(-31800,-19512),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C38S21147C8__A5__9S21147C12[] = {
  ABISELECT(31800,19512),
  ABISELECT(31800,19512),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C38S21147C8__A1__9S21147C12[] = {
  ABISELECT(31800,19512),
  ABISELECT(31800,19512),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C8__9S21147C12[] = {
  0,
  0,
  ABISELECT(32448,19948),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(32448,19948),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C8__9S21147C12[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev),
};
extern void ABISELECT(_ZThn336_N8S21147C8D1Ev,_ZThn188_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S21147C8D0Ev,_ZThn188_N8S21147C8D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__A__8S21147C8__9S21147C12[] = {
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21147C8D1Ev,_ZThn188_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21147C8D0Ev,_ZThn188_N8S21147C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A3__8S21147C8__9S21147C12[] = {
  ABISELECT(584,336),
  ABISELECT(-30880,-18988),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev),
};
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn3896_N8S21147C8D1Ev,_ZThn2532_N8S21147C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev)();
extern void ABISELECT(_ZThn3896_N8S21147C8D0Ev,_ZThn2532_N8S21147C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C9__8S21147C8__9S21147C12[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35360,-21856),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev),
};
extern void _ZN8S21147C92v3Ev();
extern void _ZN8S21147C9D1Ev();
extern void _ZN8S21147C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C9__9S21147C12[] = {
  ABISELECT(-35360,-21856),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C9__9S21147C12[] = {
  ABISELECT(35360,21856),
  ABISELECT(35360,21856),
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev),
};
static  VTT_ENTRY vtt_S21147C12[] = {
  {&(_ZTV9S21147C12[11]),  11,93},
  {&(_tg__ZTV9S21147C16__9S21147C12[8]),  8,14},
  {&(_tg__ZTV9S21147C179S21147C16__9S21147C12[7]),  7,13},
  {&(_tg__ZTV9S21147C189S21147C179S21147C16__9S21147C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C189S21147C179S21147C16__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C189S21147C179S21147C16__9S21147C12[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C189S21147C179S21147C16__9S21147C12[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C189S21147C179S21147C16__9S21147C12[7]),  7,11},
  {&(_tg__ZTV8S21147C29S21147C179S21147C16__A1__9S21147C12[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C29S21147C179S21147C16__A3__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C29S21147C179S21147C16__A3__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C29S21147C179S21147C16__A1__9S21147C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C29S21147C179S21147C16__A1__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21147C179S21147C16__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C179S21147C16__9S21147C12[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C179S21147C16__9S21147C12[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C179S21147C16__9S21147C12[7]),  7,11},
  {&(_tg__ZTV8S21147C2__9S21147C179S21147C16__9S21147C12[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C16__9S21147C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C16__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C2__9S21147C16__9S21147C12[6]),  6,8},
  {&(_tg__ZTV8S21147C6__A2__9S21147C16__9S21147C12[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C16__9S21147C12[5]),  5,7},
  {&(_tg__ZTV8S21147C29S21147C17__A1__9S21147C16__9S21147C12[5]),  5,7},
  {&(_ZTV9S21147C12[34]),  34,93},
  {&(_ZTV9S21147C12[43]),  43,93},
  {&(_ZTV9S21147C12[50]),  50,93},
  {&(_ZTV9S21147C12[56]),  56,93},
  {&(_ZTV9S21147C12[63]),  63,93},
  {&(_ZTV9S21147C12[22]),  22,93},
  {&(_ZTV9S21147C12[75]),  75,93},
  {&(_ZTV9S21147C12[81]),  81,93},
  {&(_ZTV9S21147C12[90]),  90,93},
  {&(_tg__ZTV8S21147C2__9S21147C12[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C2__A1__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C2__A1__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C2__9S21147C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C2__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C3__9S21147C12[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C3__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C3__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C3__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A2__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__A2__9S21147C12[3]),  3,5},
  {&(_tg__ZTV9S21147C15__9S21147C12[4]),  4,6},
  {&(_tg__ZTV8S21147C6__9S21147C15__9S21147C12[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21147C15__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C8__9S21147C12[7]),  7,9},
  {&(_tg__ZTV8S21147C28S21147C8__A2__9S21147C12[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C28S21147C8__A4__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C28S21147C8__A4__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C28S21147C8__A2__9S21147C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C28S21147C8__A2__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C38S21147C8__A1__9S21147C12[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C38S21147C8__A5__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C38S21147C8__A5__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C38S21147C8__A1__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C8__9S21147C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C8__9S21147C12[3]),  3,5},
  {&(_tg__ZTV8S21147C3__A__8S21147C8__9S21147C12[4]),  4,8},
  {&(_tg__ZTV8S21147C6__A3__8S21147C8__9S21147C12[4]),  4,6},
  {&(_tg__ZTV8S21147C9__8S21147C8__9S21147C12[5]),  5,8},
  {&(_tg__ZTV8S21147C9__9S21147C12[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21147C9__9S21147C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21147C12[];
extern  VTBL_ENTRY _ZTV9S21147C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C12[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21147C8D0Ev,_ZThn2532_N8S21147C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21147C8D1Ev,_ZThn2532_N8S21147C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C16D0Ev,_ZThn21484_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C16D1Ev,_ZThn21484_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21147C16D0Ev,_ZThn1684_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21147C16D1Ev,_ZThn1684_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21147C16D0Ev,_ZThn2496_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21147C16D1Ev,_ZThn2496_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C16D0Ev,_ZThn21596_N9S21147C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21147C16D0Ev,_ZThn1872_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C16D1Ev,_ZThn21596_N9S21147C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21147C16D1Ev,_ZThn1872_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21147C17D0Ev,_ZThn1872_N9S21147C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C17D0Ev,_ZThn21596_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21147C17D1Ev,_ZThn1872_N9S21147C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C17D1Ev,_ZThn21596_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C17D0Ev,_ZThn21484_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C17D1Ev,_ZThn21484_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21147C17D0Ev,_ZThn2496_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21147C17D1Ev,_ZThn2496_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C2D0Ev,_ZThn812_N8S21147C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21147C2D0Ev,_ZThn2352_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C2D1Ev,_ZThn812_N8S21147C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21147C2D1Ev,_ZThn2352_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21147C2D0Ev,_ZThn188_N8S21147C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S21147C2D0Ev,_ZThn1728_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21147C2D1Ev,_ZThn188_N8S21147C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S21147C2D1Ev,_ZThn1728_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C6D0Ev,_ZThn812_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21147C6D0Ev,_ZThn2352_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C6D1Ev,_ZThn812_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21147C6D1Ev,_ZThn2352_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21147C18D0Ev,_ZThn1872_N9S21147C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C18D0Ev,_ZThn21596_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21147C18D1Ev,_ZThn1872_N9S21147C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C18D1Ev,_ZThn21596_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C18D0Ev,_ZThn21484_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C18D1Ev,_ZThn21484_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21147C18D0Ev,_ZThn2496_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21147C18D1Ev,_ZThn2496_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21147C12D0Ev,_ZThn21820_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21147C12D1Ev,_ZThn21820_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C12D0Ev,_ZThn21484_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C12D1Ev,_ZThn21484_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21147C12D0Ev,_ZThn2496_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21147C12D1Ev,_ZThn2496_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21147C12D0Ev,_ZThn24352_N9S21147C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C12D0Ev,_ZThn21596_N9S21147C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21147C12D0Ev,_ZThn1872_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21147C12D1Ev,_ZThn24352_N9S21147C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C12D1Ev,_ZThn21596_N9S21147C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21147C12D1Ev,_ZThn1872_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21147C12D0Ev,_ZThn1684_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21147C12D1Ev,_ZThn1684_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C12 = {  "S21147C12", // class name
  bases_S21147C12, 32,
  &(vtc_S21147C12[0]), // expected_vtbl_contents
  &(vtt_S21147C12[0]), // expected_vtt_contents
  ABISELECT(39472,24356), // object size
  NSPAIRA(_ZTI9S21147C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21147C12),93, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21147C12),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C11  : virtual S19674C7 , S21147C12 {
  int s21147c11f0;
  int s21147c11f1;
  virtual  ~S21147C11(); // _ZN9S21147C11D2Ev
  virtual void  v8(); // _ZN9S21147C112v8Ev
  S21147C11(); // tgen
};
//SIG(-1 S21147C11) C1{ VBC2{ m Fp[14]} BC3{ VBC4{ VBC5{ VBC6{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC2 BC7{ VBC6 BC2 Fs[6] FL[3] FU8{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v2 v3 FC7 FD[7] FC7 FL Fp[5]} BC2 BC7 Fi Fi Fi:28 Fi Fl} VBC9{ m FC10{ VBC11{ VBC6 v9} VBC12{ VBC6 VBC2 BC13{ VBC6 BC2 Fs[6] FL[3] FU8} v10 v11 FC13 FD[7] FC13 FL Fp[5]} vd FC14{ VBC13 BC6 Fc:6 Fc[8] FD FC2 FC2}[5] Fl Fi FC12 Fi Fi FC11}[5] Fp} BC15{ VBC5 VBC4 BC16{ BC17{ VBC6 VBC7 VBC18{ VBC7 BC6 Fc:6 Fc[8] FD FC2 FC2} BC2 VBC5 vd v4 v5 Fi Fi FC2 Fc Fc Fi Fs FL} BC4 v6 v7 FU19{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC6 vd FC2 Fi[10] Fi FC20{ VBC6 v8} Fs Fi FL} VBC21{ VBC2 BC4 BC5 VBC7 VBC20 vd Fi Fi Fi FD Fp Fp FC7 Fp FC5 Fi Fp Fi FC6[8]} FC18 Fi FC22{ VBC6 BC7 VBC18 FD Fp Fp} FD Fs[3] Fi:0 Fi} vd v1 Fi Fi}


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

static void Test_S21147C11()
{
  extern Class_Descriptor cd_S21147C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2468,6092)];
    init_test(&cd_S21147C11, buf);
    S21147C11 *dp, &lv = *(dp=new (buf) S21147C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39472,24364), "sizeof(S21147C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C11)");
    /*is_ambiguous_... S21147C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(2792,1692), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*), ABISELECT(2792,1692), "S21147C11");
    /*is_ambiguous_... S21147C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C8*), ABISELECT(2792,1692), "S21147C11");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*)(S21147C8*), ABISELECT(2792,1692), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C3*), ABISELECT(4216,2560), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*), ABISELECT(4216,2560), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*), ABISELECT(4216,2560), "S21147C11");
    /*is_ambiguous_... S21147C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(4216,2560), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(4216,2560), "S21147C11");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(4216,2560), "S21147C11");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(4216,2560), "S21147C11");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C3*)(S21147C8*), ABISELECT(4216,2560), "S21147C11");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(4216,2560), "S21147C11");
    check_base_class_offset(lv, (S19674C5*)(S21147C9*), ABISELECT(4216,2560), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*), ABISELECT(3240,1940), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C3*), ABISELECT(3232,1936), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C3*)(S21147C2*), ABISELECT(3232,1936), "S21147C11");
    check_base_class_offset(lv, (S21147C3*)(S21147C16*)(S21147C12*), ABISELECT(3232,1936), "S21147C11");
    check_base_class_offset(lv, (S21147C3*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(3232,1936), "S21147C11");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(3232,1936), "S21147C11");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*)(S21147C8*), ABISELECT(3232,1936), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*), ABISELECT(3096,1860), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*), ABISELECT(2912,1752), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*), ABISELECT(2904,1748), "S21147C11");
    /*is_ambiguous_... S21147C12::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C2*)(S21147C12*), ABISELECT(2904,1748), "S21147C11");
    /*is_ambiguous_... S21147C16::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C2*)(S21147C16*)(S21147C12*), ABISELECT(2904,1748), "S21147C11");
    check_base_class_offset(lv, (S19674C2*)(S21147C12*), ABISELECT(4336,2648), "S21147C11");
    /*is_ambiguous_... S21147C11::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(34992,21496), "S21147C11");
    /*is_ambiguous_... S21147C18::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(34984,21492), "S21147C11");
    check_base_class_offset(lv, (S21147C6*)(S21147C15*), ABISELECT(34984,21492), "S21147C11");
    /*is_ambiguous_... S21147C8::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C8*), ABISELECT(34984,21492), "S21147C11");
    /*is_ambiguous_... S21147C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C15*), ABISELECT(35184,21604), "S21147C11");
    check_base_class_offset(lv, (S21147C15*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(35184,21604), "S21147C11");
    /*is_ambiguous_... S21147C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(8,4), "S21147C11");
    check_base_class_offset(lv, (S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*), 0, "S21147C11");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(456,256), "S21147C11");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(272,148), "S21147C11");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(264,144), "S21147C11");
    check_base_class_offset(lv, (S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*), ABISELECT(264,144), "S21147C11");
    check_base_class_offset(lv, (S21147C17*)(S21147C16*)(S21147C12*), 0, "S21147C11");
    /*is_ambiguous_... S21147C16::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C16*)(S21147C12*), ABISELECT(672,380), "S21147C11");
    check_base_class_offset(lv, (S21147C16*)(S21147C12*), 0, "S21147C11");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*)(S21147C8*), ABISELECT(35760,21940), "S21147C11");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(35576,21832), "S21147C11");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(35568,21828), "S21147C11");
    check_base_class_offset(lv, (S21147C2*)(S21147C8*), ABISELECT(35568,21828), "S21147C11");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(35912,22020), "S21147C11");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(35904,22016), "S21147C11");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C3*)(S21147C8*), ABISELECT(35904,22016), "S21147C11");
    check_base_class_offset(lv, (S21147C9*)(S21147C8*), ABISELECT(39464,24360), "S21147C11");
    check_base_class_offset(lv, (S21147C8*)(S21147C12*), ABISELECT(35568,21828), "S21147C11");
    check_base_class_offset(lv, (S21147C12*), 0, "S21147C11");
    check_field_offset(lv, s21147c11f0, ABISELECT(2780,1684), "S21147C11.s21147c11f0");
    check_field_offset(lv, s21147c11f1, ABISELECT(2784,1688), "S21147C11.s21147c11f1");
    test_class_info(&lv, &cd_S21147C11);
    dp->~S21147C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C11(Test_S21147C11, "S21147C11", ABISELECT(39472,24364));

#else // __cplusplus

extern void _ZN9S21147C11C1Ev();
extern void _ZN9S21147C11D2Ev();
Name_Map name_map_S21147C11[] = {
  NSPAIR(_ZN9S21147C11C1Ev),
  NSPAIR(_ZN9S21147C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C15;
extern VTBL_ENTRY _ZTI9S21147C15[];
extern  VTBL_ENTRY _ZTV9S21147C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C18;
extern VTBL_ENTRY _ZTI9S21147C18[];
extern  VTBL_ENTRY _ZTV9S21147C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S21147C17;
extern VTBL_ENTRY _ZTI9S21147C17[];
extern  VTBL_ENTRY _ZTV9S21147C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C17[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C16;
extern VTBL_ENTRY _ZTI9S21147C16[];
extern  VTBL_ENTRY _ZTV9S21147C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C16[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S21147C9;
extern VTBL_ENTRY _ZTI8S21147C9[];
extern  VTBL_ENTRY _ZTV8S21147C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C9[];
extern Class_Descriptor cd_S21147C8;
extern VTBL_ENTRY _ZTI8S21147C8[];
extern  VTBL_ENTRY _ZTV8S21147C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C8[];
extern Class_Descriptor cd_S21147C12;
extern VTBL_ENTRY _ZTI9S21147C12[];
extern  VTBL_ENTRY _ZTV9S21147C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C12[];
static Base_Class bases_S21147C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(2792,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(4216,2560), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(3240,1940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21147C6,    ABISELECT(3232,1936), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(3232,1936), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(3096,1860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2912,1752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(2904,1748), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(2904,1748), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19674C2,    ABISELECT(4336,2648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(34992,21496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(34984,21492), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(35184,21604), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21147C15,    ABISELECT(35184,21604), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(264,144), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(264,144), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21147C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //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
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21147C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35760,21940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(35576,21832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(35568,21828), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(35568,21828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35912,22020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(35904,22016), //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
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(35904,22016), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21147C9,    ABISELECT(39464,24360), //bcp->offset
    86, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S21147C8,    ABISELECT(35568,21828), //bcp->offset
    66, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S21147C12,    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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21147C11[];
extern void _ZN9S21147C11D1Ev();
extern void _ZN9S21147C11D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
extern void _ZN9S21147C112v8Ev();
extern void ABISELECT(_ZThn264_N9S21147C11D1Ev,_ZThn144_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C11D0Ev,_ZThn144_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn672_N9S21147C11D1Ev,_ZThn380_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn672_N9S21147C11D0Ev,_ZThn380_N9S21147C11D0Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21147C11D1Ev,_ZTv0_n24_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn2904_N9S21147C11D1Ev,_ZThn1748_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C11D0Ev,_ZTv0_n24_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn2904_N9S21147C11D0Ev,_ZThn1748_N9S21147C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn3232_N9S21147C11D1Ev,_ZThn1936_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn3232_N9S21147C11D0Ev,_ZThn1936_N9S21147C11D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S21147C11D1Ev,_ZTv0_n12_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn4216_N9S21147C11D1Ev,_ZThn2560_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C11D0Ev,_ZTv0_n12_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn4216_N9S21147C11D0Ev,_ZThn2560_N9S21147C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C11D1Ev,_ZTv0_n16_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C11D1Ev,_ZThn21492_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C11D0Ev,_ZTv0_n16_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C11D0Ev,_ZThn21492_N9S21147C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C11D1Ev,_ZThn21604_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C11D0Ev,_ZThn21604_N9S21147C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21147C11D1Ev,_ZTv0_n32_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn35568_N9S21147C11D1Ev,_ZThn21828_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21147C11D0Ev,_ZTv0_n32_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn35568_N9S21147C11D0Ev,_ZThn21828_N9S21147C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N9S21147C11D1Ev,_ZTvn188_n32_N9S21147C11D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21147C11D0Ev,_ZTvn188_n32_N9S21147C11D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn39464_N9S21147C11D1Ev,_ZThn24360_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn39464_N9S21147C11D0Ev,_ZThn24360_N9S21147C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C11[] = {
  ABISELECT(39464,24360),
  ABISELECT(35568,21828),
  ABISELECT(4336,2648),
  ABISELECT(2904,1748),
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&_ZN9S21147C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21147C112v8Ev,
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C11D1Ev,_ZThn144_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C11D0Ev,_ZThn144_N9S21147C11D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21147C11D1Ev,_ZThn380_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21147C11D0Ev,_ZThn380_N9S21147C11D0Ev),
  ABISELECT(-2904,-1748),
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  ABISELECT(-2904,-1748),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C11D1Ev,_ZTv0_n24_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C11D0Ev,_ZTv0_n24_N9S21147C11D0Ev),
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C11D1Ev,_ZTv0_n12_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C11D0Ev,_ZTv0_n12_N9S21147C11D0Ev),
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C11D1Ev,_ZTv0_n16_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C11D0Ev,_ZTv0_n16_N9S21147C11D0Ev),
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21828),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-35568,-21828),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C11D1Ev,_ZTv0_n32_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C11D0Ev,_ZTv0_n32_N9S21147C11D0Ev),
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-35904,-22016),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C11D1Ev,_ZTvn188_n32_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C11D0Ev,_ZTvn188_n32_N9S21147C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-39464,-24360),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-39464,-24360),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21147C11[];
extern void _ZN9S21147C12D1Ev();
extern void _ZN9S21147C12D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C12__9S21147C11[] = {
  ABISELECT(39464,24360),
  ABISELECT(35568,21828),
  ABISELECT(4336,2648),
  ABISELECT(2904,1748),
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&_ZN9S21147C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C16D1Ev();
extern void _ZN9S21147C16D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(2904,1748),
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&_ZN9S21147C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C16D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C17D1Ev();
extern void _ZN9S21147C17D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C179S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&_ZN9S21147C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C18D1Ev();
extern void _ZN9S21147C18D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C189S21147C179S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&_ZN9S21147C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn4216_N9S21147C18D1Ev,_ZThn2560_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn4216_N9S21147C18D0Ev,_ZThn2560_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C189S21147C179S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C18D1Ev,_ZThn21492_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C18D0Ev,_ZThn21492_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C189S21147C179S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C18D1Ev,_ZThn21604_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C18D0Ev,_ZThn21604_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C189S21147C179S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn3232_N9S21147C18D1Ev,_ZThn1936_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn3232_N9S21147C18D0Ev,_ZThn1936_N9S21147C18D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C189S21147C179S21147C169S21147C12__9S21147C11[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C179S21147C169S21147C12__A1__9S21147C11[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C29S21147C179S21147C169S21147C12__A3__9S21147C11[] = {
  ABISELECT(3952,2416),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn3952_N8S21147C6D1Ev,_ZThn2416_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn3952_N8S21147C6D0Ev,_ZThn2416_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C29S21147C179S21147C169S21147C12__A3__9S21147C11[] = {
  ABISELECT(-3952,-2416),
  ABISELECT(-3952,-2416),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn2968_N8S21147C2D1Ev,_ZThn1792_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn2968_N8S21147C2D0Ev,_ZThn1792_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C29S21147C179S21147C169S21147C12__A1__9S21147C11[] = {
  0,
  0,
  ABISELECT(-2968,-1792),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-2968,-1792),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn3952_N8S21147C2D1Ev,_ZThn2416_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn3952_N8S21147C2D0Ev,_ZThn2416_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C29S21147C179S21147C169S21147C12__A1__9S21147C11[] = {
  ABISELECT(-3952,-2416),
  ABISELECT(-3952,-2416),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn4216_N9S21147C17D1Ev,_ZThn2560_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn4216_N9S21147C17D0Ev,_ZThn2560_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C179S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C17D1Ev,_ZThn21492_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C17D0Ev,_ZThn21492_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C179S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C17D1Ev,_ZThn21604_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C17D0Ev,_ZThn21604_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C179S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn3232_N9S21147C17D1Ev,_ZThn1936_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn3232_N9S21147C17D0Ev,_ZThn1936_N9S21147C17D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C179S21147C169S21147C12__9S21147C11[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C179S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn3232_N9S21147C16D1Ev,_ZThn1936_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn3232_N9S21147C16D0Ev,_ZThn1936_N9S21147C16D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C169S21147C12__9S21147C11[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn4216_N9S21147C16D1Ev,_ZThn2560_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn4216_N9S21147C16D0Ev,_ZThn2560_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn2904_N9S21147C16D1Ev,_ZThn1748_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn2904_N9S21147C16D0Ev,_ZThn1748_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(-2904,-1748),
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  ABISELECT(-2904,-1748),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C16D1Ev,_ZThn21492_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C16D0Ev,_ZThn21492_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C16D1Ev,_ZThn21604_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C16D0Ev,_ZThn21604_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21147C16D1Ev,_ZThn144_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C16D0Ev,_ZThn144_N9S21147C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C17__A1__9S21147C169S21147C12__9S21147C11[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C16D1Ev,_ZThn144_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C16D0Ev,_ZThn144_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn2904_N9S21147C12D1Ev,_ZThn1748_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn2904_N9S21147C12D0Ev,_ZThn1748_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C12__9S21147C11[] = {
  ABISELECT(-2904,-1748),
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  ABISELECT(-2904,-1748),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn3232_N9S21147C12D1Ev,_ZThn1936_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn3232_N9S21147C12D0Ev,_ZThn1936_N9S21147C12D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C12__9S21147C11[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn4216_N9S21147C12D1Ev,_ZThn2560_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn4216_N9S21147C12D0Ev,_ZThn2560_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C12__9S21147C11[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C12D1Ev,_ZThn21492_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21147C12D0Ev,_ZThn21492_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C12__9S21147C11[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C12D1Ev,_ZThn21604_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21147C12D0Ev,_ZThn21604_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C12__9S21147C11[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21147C12D1Ev,_ZThn144_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C12D0Ev,_ZThn144_N9S21147C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C179S21147C16__A1__9S21147C12__9S21147C11[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C12D1Ev,_ZThn144_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C12D0Ev,_ZThn144_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn35568_N9S21147C12D1Ev,_ZThn21828_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn35568_N9S21147C12D0Ev,_ZThn21828_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C8__9S21147C12__9S21147C11[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21828),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-35568,-21828),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21147C12D1Ev,_ZTvn188_n32_N9S21147C12D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21147C12D0Ev,_ZTvn188_n32_N9S21147C12D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C38S21147C8__A1__9S21147C12__9S21147C11[] = {
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-35904,-22016),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C12D1Ev,_ZTvn188_n32_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C12D0Ev,_ZTvn188_n32_N9S21147C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn39464_N9S21147C12D1Ev,_ZThn24360_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn39464_N9S21147C12D0Ev,_ZThn24360_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C9__9S21147C12__9S21147C11[] = {
  ABISELECT(-39464,-24360),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-39464,-24360),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C11[] = {
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C2__A1__9S21147C11[] = {
  ABISELECT(1312,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn1312_N8S21147C6D1Ev,_ZThn812_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn1312_N8S21147C6D0Ev,_ZThn812_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C2__A1__9S21147C11[] = {
  ABISELECT(-1312,-812),
  ABISELECT(-1312,-812),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn328_N8S21147C2D1Ev,_ZThn188_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn328_N8S21147C2D0Ev,_ZThn188_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C2__9S21147C11[] = {
  0,
  0,
  ABISELECT(-328,-188),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-328,-188),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn1312_N8S21147C2D1Ev,_ZThn812_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn1312_N8S21147C2D0Ev,_ZThn812_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C2__9S21147C11[] = {
  ABISELECT(-1312,-812),
  ABISELECT(-1312,-812),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C11[] = {
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C3__9S21147C11[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C3__9S21147C11[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C3__9S21147C11[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C11[] = {
  ABISELECT(-30768,-18932),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__A2__9S21147C11[] = {
  ABISELECT(30768,18932),
  ABISELECT(30768,18932),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void _ZN9S21147C15D1Ev();
extern void _ZN9S21147C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C11[] = {
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&_ZN9S21147C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C15__9S21147C11[] = {
  ABISELECT(200,112),
  ABISELECT(-30768,-18932),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C15__9S21147C11[] = {
  ABISELECT(30968,19044),
  ABISELECT(30968,19044),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev),
};
extern void _ZN8S21147C8D1Ev();
extern void _ZN8S21147C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C8__9S21147C11[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&_ZN8S21147C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C8D0Ev,
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C28S21147C8__A2__9S21147C11[] = {
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C28S21147C8__A4__9S21147C11[] = {
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C28S21147C8__A4__9S21147C11[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C28S21147C8__A2__9S21147C11[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C28S21147C8__A2__9S21147C11[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C38S21147C8__A1__9S21147C11[] = {
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C38S21147C8__A5__9S21147C11[] = {
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C38S21147C8__A5__9S21147C11[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C38S21147C8__A1__9S21147C11[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C8__9S21147C11[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C8__9S21147C11[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev),
};
extern void ABISELECT(_ZThn336_N8S21147C8D1Ev,_ZThn188_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S21147C8D0Ev,_ZThn188_N8S21147C8D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__A__8S21147C8__9S21147C11[] = {
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21147C8D1Ev,_ZThn188_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21147C8D0Ev,_ZThn188_N8S21147C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A3__8S21147C8__9S21147C11[] = {
  ABISELECT(584,336),
  ABISELECT(-30768,-18932),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev),
};
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn3896_N8S21147C8D1Ev,_ZThn2532_N8S21147C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev)();
extern void ABISELECT(_ZThn3896_N8S21147C8D0Ev,_ZThn2532_N8S21147C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C9__8S21147C8__9S21147C11[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev),
};
extern void _ZN8S21147C92v3Ev();
extern void _ZN8S21147C9D1Ev();
extern void _ZN8S21147C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C9__9S21147C11[] = {
  ABISELECT(-35248,-21800),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C9__9S21147C11[] = {
  ABISELECT(35248,21800),
  ABISELECT(35248,21800),
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev),
};
static  VTT_ENTRY vtt_S21147C11[] = {
  {&(_ZTV9S21147C11[11]),  11,94},
  {&(_tg__ZTV9S21147C12__9S21147C11[11]),  11,17},
  {&(_tg__ZTV9S21147C169S21147C12__9S21147C11[8]),  8,14},
  {&(_tg__ZTV9S21147C179S21147C169S21147C12__9S21147C11[7]),  7,13},
  {&(_tg__ZTV9S21147C189S21147C179S21147C169S21147C12__9S21147C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C189S21147C179S21147C169S21147C12__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C189S21147C179S21147C169S21147C12__9S21147C11[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C189S21147C179S21147C169S21147C12__9S21147C11[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C189S21147C179S21147C169S21147C12__9S21147C11[7]),  7,11},
  {&(_tg__ZTV8S21147C29S21147C179S21147C169S21147C12__A1__9S21147C11[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C29S21147C179S21147C169S21147C12__A3__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C29S21147C179S21147C169S21147C12__A3__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C29S21147C179S21147C169S21147C12__A1__9S21147C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C29S21147C179S21147C169S21147C12__A1__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21147C179S21147C169S21147C12__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C179S21147C169S21147C12__9S21147C11[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C179S21147C169S21147C12__9S21147C11[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C179S21147C169S21147C12__9S21147C11[7]),  7,11},
  {&(_tg__ZTV8S21147C2__9S21147C179S21147C169S21147C12__9S21147C11[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C169S21147C12__9S21147C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C169S21147C12__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C2__9S21147C169S21147C12__9S21147C11[6]),  6,8},
  {&(_tg__ZTV8S21147C6__A2__9S21147C169S21147C12__9S21147C11[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C169S21147C12__9S21147C11[5]),  5,7},
  {&(_tg__ZTV8S21147C29S21147C17__A1__9S21147C169S21147C12__9S21147C11[5]),  5,7},
  {&(_tg__ZTV8S21147C2__9S21147C12__9S21147C11[6]),  6,8},
  {&(_tg__ZTV8S21147C3__9S21147C12__9S21147C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C12__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A2__9S21147C12__9S21147C11[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C12__9S21147C11[5]),  5,7},
  {&(_tg__ZTV8S21147C29S21147C179S21147C16__A1__9S21147C12__9S21147C11[5]),  5,7},
  {&(_tg__ZTV8S21147C8__9S21147C12__9S21147C11[10]),  10,12},
  {&(_tg__ZTV8S21147C38S21147C8__A1__9S21147C12__9S21147C11[4]),  4,8},
  {&(_tg__ZTV8S21147C9__9S21147C12__9S21147C11[5]),  5,8},
  {&(_ZTV9S21147C11[35]),  35,94},
  {&(_ZTV9S21147C11[44]),  44,94},
  {&(_ZTV9S21147C11[51]),  51,94},
  {&(_ZTV9S21147C11[57]),  57,94},
  {&(_ZTV9S21147C11[64]),  64,94},
  {&(_ZTV9S21147C11[23]),  23,94},
  {&(_ZTV9S21147C11[76]),  76,94},
  {&(_ZTV9S21147C11[82]),  82,94},
  {&(_ZTV9S21147C11[91]),  91,94},
  {&(_tg__ZTV8S21147C2__9S21147C11[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C2__A1__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C2__A1__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C2__9S21147C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C2__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C3__9S21147C11[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C3__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C3__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C3__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A2__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__A2__9S21147C11[3]),  3,5},
  {&(_tg__ZTV9S21147C15__9S21147C11[4]),  4,6},
  {&(_tg__ZTV8S21147C6__9S21147C15__9S21147C11[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21147C15__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C8__9S21147C11[7]),  7,9},
  {&(_tg__ZTV8S21147C28S21147C8__A2__9S21147C11[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C28S21147C8__A4__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C28S21147C8__A4__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C28S21147C8__A2__9S21147C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C28S21147C8__A2__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C38S21147C8__A1__9S21147C11[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C38S21147C8__A5__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C38S21147C8__A5__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C38S21147C8__A1__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C8__9S21147C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C8__9S21147C11[3]),  3,5},
  {&(_tg__ZTV8S21147C3__A__8S21147C8__9S21147C11[4]),  4,8},
  {&(_tg__ZTV8S21147C6__A3__8S21147C8__9S21147C11[4]),  4,6},
  {&(_tg__ZTV8S21147C9__8S21147C8__9S21147C11[5]),  5,8},
  {&(_tg__ZTV8S21147C9__9S21147C11[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21147C9__9S21147C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21147C11[];
extern  VTBL_ENTRY _ZTV9S21147C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C11[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21147C8D0Ev,_ZThn2532_N8S21147C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21147C8D1Ev,_ZThn2532_N8S21147C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21147C12D0Ev,_ZThn21828_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21147C12D1Ev,_ZThn21828_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C12D0Ev,_ZThn21492_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C12D1Ev,_ZThn21492_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21147C12D0Ev,_ZThn2560_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21147C12D1Ev,_ZThn2560_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21147C12D0Ev,_ZThn24360_N9S21147C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C12D0Ev,_ZThn21604_N9S21147C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21147C12D0Ev,_ZThn1936_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21147C12D1Ev,_ZThn24360_N9S21147C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C12D1Ev,_ZThn21604_N9S21147C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21147C12D1Ev,_ZThn1936_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21147C12D0Ev,_ZThn1748_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21147C12D1Ev,_ZThn1748_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C16D0Ev,_ZThn21492_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C16D1Ev,_ZThn21492_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21147C16D0Ev,_ZThn1748_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21147C16D1Ev,_ZThn1748_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21147C16D0Ev,_ZThn2560_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21147C16D1Ev,_ZThn2560_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C16D0Ev,_ZThn21604_N9S21147C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21147C16D0Ev,_ZThn1936_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C16D1Ev,_ZThn21604_N9S21147C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21147C16D1Ev,_ZThn1936_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21147C17D0Ev,_ZThn1936_N9S21147C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C17D0Ev,_ZThn21604_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21147C17D1Ev,_ZThn1936_N9S21147C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C17D1Ev,_ZThn21604_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C17D0Ev,_ZThn21492_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C17D1Ev,_ZThn21492_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21147C17D0Ev,_ZThn2560_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21147C17D1Ev,_ZThn2560_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S21147C2D0Ev,_ZThn812_N8S21147C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N8S21147C2D0Ev,_ZThn2416_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S21147C2D1Ev,_ZThn812_N8S21147C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N8S21147C2D1Ev,_ZThn2416_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S21147C2D0Ev,_ZThn188_N8S21147C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2968_N8S21147C2D0Ev,_ZThn1792_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S21147C2D1Ev,_ZThn188_N8S21147C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2968_N8S21147C2D1Ev,_ZThn1792_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S21147C6D0Ev,_ZThn812_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N8S21147C6D0Ev,_ZThn2416_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S21147C6D1Ev,_ZThn812_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N8S21147C6D1Ev,_ZThn2416_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21147C18D0Ev,_ZThn1936_N9S21147C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C18D0Ev,_ZThn21604_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21147C18D1Ev,_ZThn1936_N9S21147C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C18D1Ev,_ZThn21604_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C18D0Ev,_ZThn21492_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C18D1Ev,_ZThn21492_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21147C18D0Ev,_ZThn2560_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21147C18D1Ev,_ZThn2560_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C11D0Ev,_ZTv0_n32_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21147C11D0Ev,_ZThn21828_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C11D1Ev,_ZTv0_n32_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21147C11D1Ev,_ZThn21828_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C11D0Ev,_ZTv0_n16_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C11D0Ev,_ZThn21492_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C11D1Ev,_ZTv0_n16_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21147C11D1Ev,_ZThn21492_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C11D0Ev,_ZTv0_n12_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21147C11D0Ev,_ZThn2560_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C11D1Ev,_ZTv0_n12_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21147C11D1Ev,_ZThn2560_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21147C11D0Ev,_ZThn24360_N9S21147C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C11D0Ev,_ZThn21604_N9S21147C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21147C11D0Ev,_ZThn1936_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21147C11D1Ev,_ZThn24360_N9S21147C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21147C11D1Ev,_ZThn21604_N9S21147C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21147C11D1Ev,_ZThn1936_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C11D0Ev,_ZTv0_n24_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21147C11D0Ev,_ZThn1748_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C11D1Ev,_ZTv0_n24_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21147C11D1Ev,_ZThn1748_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C11 = {  "S21147C11", // class name
  bases_S21147C11, 33,
  &(vtc_S21147C11[0]), // expected_vtbl_contents
  &(vtt_S21147C11[0]), // expected_vtt_contents
  ABISELECT(39472,24364), // object size
  NSPAIRA(_ZTI9S21147C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21147C11),94, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21147C11),74, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C21  : virtual S21147C20 {
  ::S21147C2 s21147c21f0;
  void *s21147c21f1;
  long double s21147c21f2;
  int s21147c21f3;
  virtual void  v12(); // _ZN9S21147C213v12Ev
  ~S21147C21(); // tgen
  S21147C21(); // tgen
};
//SIG(-1 S21147C21) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} FD Fp Fp} v1 FC8{ VBC9{ VBC3 VBC5 BC4 v2 v3 FC4 FD[7] FC4 FL Fp[5]} BC5 BC4 Fi Fi Fi:28 Fi Fl} Fp FD Fi}


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

static void Test_S21147C21()
{
  extern Class_Descriptor cd_S21147C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(160,385)];
    init_test(&cd_S21147C21, buf);
    S21147C21 *dp, &lv = *(dp=new (buf) S21147C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2544,1536), "sizeof(S21147C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C21)");
    /*is_ambiguous_... S21147C20::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C20*), ABISELECT(1840,1112), "S21147C21");
    /*is_ambiguous_... S21147C20::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C20*), ABISELECT(1840,1112), "S21147C21");
    /*is_ambiguous_... S21147C21::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(1840,1112), "S21147C21");
    /*is_ambiguous_... S21147C20::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C20*), ABISELECT(1624,984), "S21147C21");
    /*is_ambiguous_... S21147C20::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C20*), ABISELECT(1616,980), "S21147C21");
    /*is_ambiguous_... S21147C21::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(2360,1428), "S21147C21");
    check_base_class_offset(lv, (S21147C6*)(S21147C15*), ABISELECT(2352,1424), "S21147C21");
    /*is_ambiguous_... S21147C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C15*), ABISELECT(1968,1200), "S21147C21");
    check_base_class_offset(lv, (S21147C15*)(S21147C20*), ABISELECT(1968,1200), "S21147C21");
    check_base_class_offset(lv, (S21147C20*), ABISELECT(1616,980), "S21147C21");
    check_field_offset(lv, s21147c21f0, ABISELECT(16,4), "S21147C21.s21147c21f0");
    check_field_offset(lv, s21147c21f1, ABISELECT(1568,960), "S21147C21.s21147c21f1");
    check_field_offset(lv, s21147c21f2, ABISELECT(1584,964), "S21147C21.s21147c21f2");
    check_field_offset(lv, s21147c21f3, ABISELECT(1600,976), "S21147C21.s21147c21f3");
    test_class_info(&lv, &cd_S21147C21);
    dp->~S21147C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C21(Test_S21147C21, "S21147C21", ABISELECT(2544,1536));

#else // __cplusplus

extern void _ZN9S21147C21C1Ev();
extern void _ZN9S21147C21D1Ev();
Name_Map name_map_S21147C21[] = {
  NSPAIR(_ZN9S21147C21C1Ev),
  NSPAIR(_ZN9S21147C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C15;
extern VTBL_ENTRY _ZTI9S21147C15[];
extern  VTBL_ENTRY _ZTV9S21147C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C15[];
extern Class_Descriptor cd_S21147C20;
extern VTBL_ENTRY _ZTI9S21147C20[];
extern  VTBL_ENTRY _ZTV9S21147C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C20[];
static Base_Class bases_S21147C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(1840,1112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1624,984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(1616,980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(2360,1428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21147C6,    ABISELECT(2352,1424), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(1968,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21147C15,    ABISELECT(1968,1200), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21147C20,    ABISELECT(1616,980), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21147C21[];
extern void _ZN9S21147C213v12Ev();
extern void _ZN9S21147C21D1Ev();
extern void _ZN9S21147C21D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S21147C21D1Ev,_ZTv0_n24_N9S21147C21D1Ev)();
extern void ABISELECT(_ZThn1616_N9S21147C21D1Ev,_ZThn980_N9S21147C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C21D0Ev,_ZTv0_n24_N9S21147C21D0Ev)();
extern void ABISELECT(_ZThn1616_N9S21147C21D0Ev,_ZThn980_N9S21147C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C21D1Ev,_ZTv0_n12_N9S21147C21D1Ev)();
extern void ABISELECT(_ZThn1840_N9S21147C21D1Ev,_ZThn1112_N9S21147C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C21D0Ev,_ZTv0_n12_N9S21147C21D0Ev)();
extern void ABISELECT(_ZThn1840_N9S21147C21D0Ev,_ZThn1112_N9S21147C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C21D1Ev,_ZTv0_n20_N9S21147C21D1Ev)();
extern void ABISELECT(_ZThn1968_N9S21147C21D1Ev,_ZThn1200_N9S21147C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C21D0Ev,_ZTv0_n20_N9S21147C21D0Ev)();
extern void ABISELECT(_ZThn1968_N9S21147C21D0Ev,_ZThn1200_N9S21147C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C21D1Ev,_ZTv0_n16_N9S21147C21D1Ev)();
extern void ABISELECT(_ZThn2352_N9S21147C21D1Ev,_ZThn1424_N9S21147C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C21D0Ev,_ZTv0_n16_N9S21147C21D0Ev)();
extern void ABISELECT(_ZThn2352_N9S21147C21D0Ev,_ZThn1424_N9S21147C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C21[] = {
  ABISELECT(2352,1424),
  ABISELECT(1968,1200),
  ABISELECT(1840,1112),
  ABISELECT(1616,980),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C21[0]),
  (VTBL_ENTRY)&_ZN9S21147C213v12Ev,
  (VTBL_ENTRY)&_ZN9S21147C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C21D0Ev,
  ABISELECT(-1616,-980),
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  ABISELECT(-1616,-980),
  (VTBL_ENTRY)&(_ZTI9S21147C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C21D1Ev,_ZTv0_n24_N9S21147C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C21D0Ev,_ZTv0_n24_N9S21147C21D0Ev),
  ABISELECT(-1840,-1112),
  ABISELECT(-1840,-1112),
  (VTBL_ENTRY)&(_ZTI9S21147C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C21D1Ev,_ZTv0_n12_N9S21147C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C21D0Ev,_ZTv0_n12_N9S21147C21D0Ev),
  ABISELECT(-1968,-1200),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-1968,-1200),
  (VTBL_ENTRY)&(_ZTI9S21147C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C21D1Ev,_ZTv0_n20_N9S21147C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C21D0Ev,_ZTv0_n20_N9S21147C21D0Ev),
  ABISELECT(-2352,-1424),
  ABISELECT(-512,-312),
  ABISELECT(-2352,-1424),
  (VTBL_ENTRY)&(_ZTI9S21147C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C21D1Ev,_ZTv0_n16_N9S21147C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C21D0Ev,_ZTv0_n16_N9S21147C21D0Ev),
};
extern VTBL_ENTRY _ZTV9S21147C21[];
extern void _ZN9S21147C20D1Ev();
extern void _ZN9S21147C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C20__9S21147C21[] = {
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C20[0]),
  (VTBL_ENTRY)&_ZN9S21147C20D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C20D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C69S21147C20__9S21147C21[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn224_N8S21147C6D1Ev,_ZThn132_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn224_N8S21147C6D0Ev,_ZThn132_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C69S21147C20__9S21147C21[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C20D1Ev,_ZTv0_n12_N9S21147C20D1Ev)();
extern void ABISELECT(_ZThn224_N9S21147C20D1Ev,_ZThn132_N9S21147C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C20D0Ev,_ZTv0_n12_N9S21147C20D0Ev)();
extern void ABISELECT(_ZThn224_N9S21147C20D0Ev,_ZThn132_N9S21147C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C20__9S21147C21[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S21147C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C20D1Ev,_ZTv0_n12_N9S21147C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C20D0Ev,_ZTv0_n12_N9S21147C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C20D1Ev,_ZTv0_n20_N9S21147C20D1Ev)();
extern void ABISELECT(_ZThn352_N9S21147C20D1Ev,_ZThn220_N9S21147C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C20D0Ev,_ZTv0_n20_N9S21147C20D0Ev)();
extern void ABISELECT(_ZThn352_N9S21147C20D0Ev,_ZThn220_N9S21147C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C20__9S21147C21[] = {
  ABISELECT(-352,-220),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI9S21147C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C20D1Ev,_ZTv0_n20_N9S21147C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C20D0Ev,_ZTv0_n20_N9S21147C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C20D1Ev,_ZTv0_n16_N9S21147C20D1Ev)();
extern void ABISELECT(_ZThn736_N9S21147C20D1Ev,_ZThn444_N9S21147C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C20D0Ev,_ZTv0_n16_N9S21147C20D0Ev)();
extern void ABISELECT(_ZThn736_N9S21147C20D0Ev,_ZThn444_N9S21147C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__A1__9S21147C20__9S21147C21[] = {
  ABISELECT(-736,-444),
  ABISELECT(-512,-312),
  ABISELECT(-736,-444),
  (VTBL_ENTRY)&(_ZTI9S21147C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C20D1Ev,_ZTv0_n16_N9S21147C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C20D0Ev,_ZTv0_n16_N9S21147C20D0Ev),
};
extern void _ZN9S21147C15D1Ev();
extern void _ZN9S21147C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C21[] = {
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&_ZN9S21147C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev)();
extern void ABISELECT(_ZThn384_N9S21147C15D1Ev,_ZThn224_N9S21147C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev)();
extern void ABISELECT(_ZThn384_N9S21147C15D0Ev,_ZThn224_N9S21147C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C15__9S21147C21[] = {
  ABISELECT(-384,-224),
  ABISELECT(-512,-312),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C15__9S21147C21[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev),
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A1__9S21147C21[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__A1__9S21147C21[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
static  VTT_ENTRY vtt_S21147C21[] = {
  {&(_ZTV9S21147C21[6]),  6,35},
  {&(_ZTV9S21147C21[15]),  15,35},
  {&(_ZTV9S21147C21[20]),  20,35},
  {&(_ZTV9S21147C21[27]),  27,35},
  {&(_ZTV9S21147C21[33]),  33,35},
  {&(_tg__ZTV9S21147C20__9S21147C21[5]),  5,7},
  {&(_tg__ZTV8S21147C69S21147C20__9S21147C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C69S21147C20__9S21147C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21147C20__9S21147C21[3]),  3,5},
  {&(_tg__ZTV9S21147C15__9S21147C20__9S21147C21[5]),  5,7},
  {&(_tg__ZTV8S21147C6__A1__9S21147C20__9S21147C21[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C21[4]),  4,6},
  {&(_tg__ZTV8S21147C6__9S21147C15__9S21147C21[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21147C15__9S21147C21[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A1__9S21147C21[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__A1__9S21147C21[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21147C21[];
extern  VTBL_ENTRY _ZTV9S21147C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C21[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21147C15D0Ev,_ZThn224_N9S21147C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21147C15D1Ev,_ZThn224_N9S21147C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C20D0Ev,_ZTv0_n16_N9S21147C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S21147C20D0Ev,_ZThn444_N9S21147C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C20D1Ev,_ZTv0_n16_N9S21147C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S21147C20D1Ev,_ZThn444_N9S21147C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C20D0Ev,_ZTv0_n20_N9S21147C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S21147C20D0Ev,_ZThn220_N9S21147C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C20D1Ev,_ZTv0_n20_N9S21147C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S21147C20D1Ev,_ZThn220_N9S21147C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C20D0Ev,_ZTv0_n12_N9S21147C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21147C20D0Ev,_ZThn132_N9S21147C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C20D1Ev,_ZTv0_n12_N9S21147C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21147C20D1Ev,_ZThn132_N9S21147C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21147C6D0Ev,_ZThn132_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21147C6D1Ev,_ZThn132_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C21D0Ev,_ZTv0_n16_N9S21147C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N9S21147C21D0Ev,_ZThn1424_N9S21147C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C21D1Ev,_ZTv0_n16_N9S21147C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N9S21147C21D1Ev,_ZThn1424_N9S21147C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C21D0Ev,_ZTv0_n20_N9S21147C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N9S21147C21D0Ev,_ZThn1200_N9S21147C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C21D1Ev,_ZTv0_n20_N9S21147C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N9S21147C21D1Ev,_ZThn1200_N9S21147C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C21D0Ev,_ZTv0_n12_N9S21147C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1840_N9S21147C21D0Ev,_ZThn1112_N9S21147C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C21D1Ev,_ZTv0_n12_N9S21147C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1840_N9S21147C21D1Ev,_ZThn1112_N9S21147C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C21D0Ev,_ZTv0_n24_N9S21147C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1616_N9S21147C21D0Ev,_ZThn980_N9S21147C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C21D1Ev,_ZTv0_n24_N9S21147C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1616_N9S21147C21D1Ev,_ZThn980_N9S21147C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C21 = {  "S21147C21", // class name
  bases_S21147C21, 8,
  &(vtc_S21147C21[0]), // expected_vtbl_contents
  &(vtt_S21147C21[0]), // expected_vtt_contents
  ABISELECT(2544,1536), // object size
  NSPAIRA(_ZTI9S21147C21),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21147C21),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21147C21),16, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C10  : S21147C11 {
  int s21147c10f0;
  char  :0;
  int s21147c10f2;
  int s21147c10f3;
  short s21147c10f4;
  ::S21147C2 s21147c10f5;
  int s21147c10f6;
  short s21147c10f7;
  void *s21147c10f8;
  ::S21147C21 s21147c10f9;
  virtual void  v9(); // _ZN9S21147C102v9Ev
  virtual void  v10(); // _ZN9S21147C103v10Ev
  virtual void  v11(); // _ZN9S21147C103v11Ev
  ~S21147C10(); // tgen
  S21147C10(); // tgen
};
//SIG(-1 S21147C10) C1{ BC2{ VBC3{ m Fp[14]} BC4{ VBC5{ VBC6{ VBC7{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3 BC8{ VBC7 BC3 Fs[6] FL[3] FU9{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v4 v5 FC8 FD[7] FC8 FL Fp[5]} BC3 BC8 Fi Fi Fi:28 Fi Fl} VBC10{ m FC11{ VBC12{ VBC7 v13} VBC13{ VBC7 VBC3 BC14{ VBC7 BC3 Fs[6] FL[3] FU9} v14 v15 FC14 FD[7] FC14 FL Fp[5]} vd FC15{ VBC14 BC7 Fc:6 Fc[8] FD FC3 FC3}[5] Fl Fi FC13 Fi Fi FC12}[5] Fp} BC16{ VBC6 VBC5 BC17{ BC18{ VBC7 VBC8 VBC19{ VBC8 BC7 Fc:6 Fc[8] FD FC3 FC3} BC3 VBC6 vd v6 v7 Fi Fi FC3 Fc Fc Fi Fs FL} BC5 v8 v9 FU20{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC7 vd FC3 Fi[10] Fi FC21{ VBC7 v10} Fs Fi FL} VBC22{ VBC3 BC5 BC6 VBC8 VBC21 vd Fi Fi Fi FD Fp Fp FC8 Fp FC6 Fi Fp Fi FC7[8]} FC19 Fi FC23{ VBC7 BC8 VBC19 FD Fp Fp} FD Fs[3] Fi:0 Fi} vd v11 Fi Fi} v1 v2 v3 Fi Fc:0 Fi Fi Fs FC5 Fi Fs Fp FC24{ VBC23 v12 FC5 Fp FD Fi}}


void  S21147C10 ::v9(){vfunc_called(this, "_ZN9S21147C102v9Ev");}
void  S21147C10 ::v10(){vfunc_called(this, "_ZN9S21147C103v10Ev");}
void  S21147C10 ::v11(){vfunc_called(this, "_ZN9S21147C103v11Ev");}
S21147C10 ::~S21147C10(){ note_dtor("S21147C10", this);} // tgen
S21147C10 ::S21147C10(){ note_ctor("S21147C10", this);} // tgen

static void Test_S21147C10()
{
  extern Class_Descriptor cd_S21147C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2727,6722)];
    init_test(&cd_S21147C10, buf);
    S21147C10 *dp, &lv = *(dp=new (buf) S21147C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(43616,26884), "sizeof(S21147C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C10)");
    /*is_ambiguous_... S21147C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C11*), ABISELECT(6928,4212), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*), ABISELECT(6928,4212), "S21147C10");
    /*is_ambiguous_... S21147C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C8*), ABISELECT(6928,4212), "S21147C10");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*)(S21147C8*), ABISELECT(6928,4212), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C3*), ABISELECT(8360,5080), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*), ABISELECT(8360,5080), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*), ABISELECT(8360,5080), "S21147C10");
    /*is_ambiguous_... S21147C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(8360,5080), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(8360,5080), "S21147C10");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(8360,5080), "S21147C10");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(8360,5080), "S21147C10");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C3*)(S21147C8*), ABISELECT(8360,5080), "S21147C10");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(8360,5080), "S21147C10");
    check_base_class_offset(lv, (S19674C5*)(S21147C9*), ABISELECT(8360,5080), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*), ABISELECT(7384,4460), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C3*), ABISELECT(7376,4456), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C3*)(S21147C2*), ABISELECT(7376,4456), "S21147C10");
    check_base_class_offset(lv, (S21147C3*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(7376,4456), "S21147C10");
    check_base_class_offset(lv, (S21147C3*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(7376,4456), "S21147C10");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(7376,4456), "S21147C10");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*)(S21147C8*), ABISELECT(7376,4456), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*), ABISELECT(7232,4380), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*), ABISELECT(7048,4272), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*), ABISELECT(7040,4268), "S21147C10");
    /*is_ambiguous_... S21147C12::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C2*)(S21147C12*)(S21147C11*), ABISELECT(7040,4268), "S21147C10");
    /*is_ambiguous_... S21147C16::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C2*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(7040,4268), "S21147C10");
    check_base_class_offset(lv, (S19674C2*)(S21147C12*)(S21147C11*), ABISELECT(8480,5168), "S21147C10");
    /*is_ambiguous_... S21147C10::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(39136,24016), "S21147C10");
    /*is_ambiguous_... S21147C18::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(39128,24012), "S21147C10");
    check_base_class_offset(lv, (S21147C6*)(S21147C15*), ABISELECT(39128,24012), "S21147C10");
    /*is_ambiguous_... S21147C8::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C8*), ABISELECT(39128,24012), "S21147C10");
    /*is_ambiguous_... S21147C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C15*), ABISELECT(39328,24124), "S21147C10");
    check_base_class_offset(lv, (S21147C15*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(39328,24124), "S21147C10");
    /*is_ambiguous_... S21147C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(8,4), "S21147C10");
    check_base_class_offset(lv, (S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), 0, "S21147C10");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(456,256), "S21147C10");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(272,148), "S21147C10");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(264,144), "S21147C10");
    check_base_class_offset(lv, (S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(264,144), "S21147C10");
    check_base_class_offset(lv, (S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*), 0, "S21147C10");
    /*is_ambiguous_... S21147C16::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C16*)(S21147C12*)(S21147C11*), ABISELECT(672,380), "S21147C10");
    check_base_class_offset(lv, (S21147C16*)(S21147C12*)(S21147C11*), 0, "S21147C10");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*)(S21147C8*), ABISELECT(39904,24460), "S21147C10");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(39720,24352), "S21147C10");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(39712,24348), "S21147C10");
    check_base_class_offset(lv, (S21147C2*)(S21147C8*), ABISELECT(39712,24348), "S21147C10");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(40056,24540), "S21147C10");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(40048,24536), "S21147C10");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C3*)(S21147C8*), ABISELECT(40048,24536), "S21147C10");
    check_base_class_offset(lv, (S21147C9*)(S21147C8*), ABISELECT(43608,26880), "S21147C10");
    check_base_class_offset(lv, (S21147C8*)(S21147C12*)(S21147C11*), ABISELECT(39712,24348), "S21147C10");
    check_base_class_offset(lv, (S21147C12*)(S21147C11*), 0, "S21147C10");
    check_base_class_offset(lv, (S21147C11*), 0, "S21147C10");
    check_field_offset(lv, s21147c10f0, ABISELECT(2788,1692), "S21147C10.s21147c10f0");
    check_field_offset(lv, s21147c10f2, ABISELECT(2792,1696), "S21147C10.s21147c10f2");
    check_field_offset(lv, s21147c10f3, ABISELECT(2796,1700), "S21147C10.s21147c10f3");
    check_field_offset(lv, s21147c10f4, ABISELECT(2800,1704), "S21147C10.s21147c10f4");
    check_field_offset(lv, s21147c10f5, ABISELECT(2816,1708), "S21147C10.s21147c10f5");
    check_field_offset(lv, s21147c10f6, ABISELECT(4368,2664), "S21147C10.s21147c10f6");
    check_field_offset(lv, s21147c10f7, ABISELECT(4372,2668), "S21147C10.s21147c10f7");
    check_field_offset(lv, s21147c10f8, ABISELECT(4376,2672), "S21147C10.s21147c10f8");
    check_field_offset(lv, s21147c10f9, ABISELECT(4384,2676), "S21147C10.s21147c10f9");
    test_class_info(&lv, &cd_S21147C10);
    dp->~S21147C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C10(Test_S21147C10, "S21147C10", ABISELECT(43616,26884));

#else // __cplusplus

extern void _ZN9S21147C10C1Ev();
extern void _ZN9S21147C10D1Ev();
Name_Map name_map_S21147C10[] = {
  NSPAIR(_ZN9S21147C10C1Ev),
  NSPAIR(_ZN9S21147C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C15;
extern VTBL_ENTRY _ZTI9S21147C15[];
extern  VTBL_ENTRY _ZTV9S21147C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C18;
extern VTBL_ENTRY _ZTI9S21147C18[];
extern  VTBL_ENTRY _ZTV9S21147C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S21147C17;
extern VTBL_ENTRY _ZTI9S21147C17[];
extern  VTBL_ENTRY _ZTV9S21147C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C17[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C16;
extern VTBL_ENTRY _ZTI9S21147C16[];
extern  VTBL_ENTRY _ZTV9S21147C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C16[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S21147C9;
extern VTBL_ENTRY _ZTI8S21147C9[];
extern  VTBL_ENTRY _ZTV8S21147C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C9[];
extern Class_Descriptor cd_S21147C8;
extern VTBL_ENTRY _ZTI8S21147C8[];
extern  VTBL_ENTRY _ZTV8S21147C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C8[];
extern Class_Descriptor cd_S21147C12;
extern VTBL_ENTRY _ZTI9S21147C12[];
extern  VTBL_ENTRY _ZTV9S21147C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C12[];
extern Class_Descriptor cd_S21147C11;
extern VTBL_ENTRY _ZTI9S21147C11[];
extern  VTBL_ENTRY _ZTV9S21147C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C11[];
static Base_Class bases_S21147C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(6928,4212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C5,    ABISELECT(8360,5080), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(7384,4460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21147C6,    ABISELECT(7376,4456), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(7376,4456), //bcp->offset
    40, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(7232,4380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(7048,4272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(7040,4268), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(7040,4268), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19674C2,    ABISELECT(8480,5168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(39136,24016), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(39128,24012), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(39328,24124), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21147C15,    ABISELECT(39328,24124), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21147C6,    ABISELECT(264,144), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(264,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21147C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21147C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(39904,24460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(39720,24352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(39712,24348), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(39712,24348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(40056,24540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(40048,24536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(40048,24536), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21147C9,    ABISELECT(43608,26880), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S21147C8,    ABISELECT(39712,24348), //bcp->offset
    69, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S21147C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21147C11,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21147C10[];
extern void _ZN9S21147C10D1Ev();
extern void _ZN9S21147C10D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
extern void _ZN9S21147C112v8Ev();
extern void _ZN9S21147C102v9Ev();
extern void _ZN9S21147C103v10Ev();
extern void _ZN9S21147C103v11Ev();
extern void ABISELECT(_ZThn264_N9S21147C10D1Ev,_ZThn144_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C10D0Ev,_ZThn144_N9S21147C10D0Ev)();
extern void ABISELECT(_ZThn672_N9S21147C10D1Ev,_ZThn380_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn672_N9S21147C10D0Ev,_ZThn380_N9S21147C10D0Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21147C10D1Ev,_ZTv0_n24_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn7040_N9S21147C10D1Ev,_ZThn4268_N9S21147C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C10D0Ev,_ZTv0_n24_N9S21147C10D0Ev)();
extern void ABISELECT(_ZThn7040_N9S21147C10D0Ev,_ZThn4268_N9S21147C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C10D1Ev,_ZThn4456_N9S21147C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C10D0Ev,_ZThn4456_N9S21147C10D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S21147C10D1Ev,_ZTv0_n12_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C10D1Ev,_ZThn5080_N9S21147C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C10D0Ev,_ZTv0_n12_N9S21147C10D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C10D0Ev,_ZThn5080_N9S21147C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C10D1Ev,_ZTv0_n16_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C10D1Ev,_ZThn24012_N9S21147C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C10D0Ev,_ZTv0_n16_N9S21147C10D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C10D0Ev,_ZThn24012_N9S21147C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C10D1Ev,_ZThn24124_N9S21147C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C10D0Ev,_ZThn24124_N9S21147C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21147C10D1Ev,_ZTv0_n32_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn39712_N9S21147C10D1Ev,_ZThn24348_N9S21147C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21147C10D0Ev,_ZTv0_n32_N9S21147C10D0Ev)();
extern void ABISELECT(_ZThn39712_N9S21147C10D0Ev,_ZThn24348_N9S21147C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N9S21147C10D1Ev,_ZTvn188_n32_N9S21147C10D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21147C10D0Ev,_ZTvn188_n32_N9S21147C10D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn43608_N9S21147C10D1Ev,_ZThn26880_N9S21147C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev)();
extern void ABISELECT(_ZThn43608_N9S21147C10D0Ev,_ZThn26880_N9S21147C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C10[] = {
  ABISELECT(43608,26880),
  ABISELECT(39712,24348),
  ABISELECT(8480,5168),
  ABISELECT(7040,4268),
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&_ZN9S21147C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C10D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21147C112v8Ev,
  (VTBL_ENTRY)&_ZN9S21147C102v9Ev,
  (VTBL_ENTRY)&_ZN9S21147C103v10Ev,
  (VTBL_ENTRY)&_ZN9S21147C103v11Ev,
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C10D1Ev,_ZThn144_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C10D0Ev,_ZThn144_N9S21147C10D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21147C10D1Ev,_ZThn380_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21147C10D0Ev,_ZThn380_N9S21147C10D0Ev),
  ABISELECT(-7040,-4268),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-7040,-4268),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C10D1Ev,_ZTv0_n24_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C10D0Ev,_ZTv0_n24_N9S21147C10D0Ev),
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C10D1Ev,_ZTv0_n12_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C10D0Ev,_ZTv0_n12_N9S21147C10D0Ev),
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C10D1Ev,_ZTv0_n16_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C10D0Ev,_ZTv0_n16_N9S21147C10D0Ev),
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-39712,-24348),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-39712,-24348),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C10D1Ev,_ZTv0_n32_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C10D0Ev,_ZTv0_n32_N9S21147C10D0Ev),
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-40048,-24536),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C10D1Ev,_ZTvn188_n32_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C10D0Ev,_ZTvn188_n32_N9S21147C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-43608,-26880),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-43608,-26880),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S21147C10[];
extern void _ZN9S21147C11D1Ev();
extern void _ZN9S21147C11D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
extern void _ZN9S21147C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C11__9S21147C10[] = {
  ABISELECT(43608,26880),
  ABISELECT(39712,24348),
  ABISELECT(8480,5168),
  ABISELECT(7040,4268),
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&_ZN9S21147C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21147C112v8Ev,
};
extern void _ZN9S21147C12D1Ev();
extern void _ZN9S21147C12D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(43608,26880),
  ABISELECT(39712,24348),
  ABISELECT(8480,5168),
  ABISELECT(7040,4268),
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&_ZN9S21147C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C16D1Ev();
extern void _ZN9S21147C16D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(7040,4268),
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&_ZN9S21147C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C16D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C17D1Ev();
extern void _ZN9S21147C17D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&_ZN9S21147C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C18D1Ev();
extern void _ZN9S21147C18D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C189S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&_ZN9S21147C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C18D1Ev,_ZThn5080_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C18D0Ev,_ZThn5080_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C189S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C18D1Ev,_ZThn24012_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C18D0Ev,_ZThn24012_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C189S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C18D1Ev,_ZThn24124_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C18D0Ev,_ZThn24124_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C189S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C18D1Ev,_ZThn4456_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C18D0Ev,_ZThn4456_N9S21147C18D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C189S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C179S21147C169S21147C129S21147C11__A1__9S21147C10[] = {
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C29S21147C179S21147C169S21147C129S21147C11__A3__9S21147C10[] = {
  ABISELECT(8096,4936),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn8096_N8S21147C6D1Ev,_ZThn4936_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn8096_N8S21147C6D0Ev,_ZThn4936_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C29S21147C179S21147C169S21147C129S21147C11__A3__9S21147C10[] = {
  ABISELECT(-8096,-4936),
  ABISELECT(-8096,-4936),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn7112_N8S21147C2D1Ev,_ZThn4312_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn7112_N8S21147C2D0Ev,_ZThn4312_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C29S21147C179S21147C169S21147C129S21147C11__A1__9S21147C10[] = {
  0,
  0,
  ABISELECT(-7112,-4312),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7112,-4312),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn8096_N8S21147C2D1Ev,_ZThn4936_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn8096_N8S21147C2D0Ev,_ZThn4936_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C29S21147C179S21147C169S21147C129S21147C11__A1__9S21147C10[] = {
  ABISELECT(-8096,-4936),
  ABISELECT(-8096,-4936),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C17D1Ev,_ZThn5080_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C17D0Ev,_ZThn5080_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C17D1Ev,_ZThn24012_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C17D0Ev,_ZThn24012_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C17D1Ev,_ZThn24124_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C17D0Ev,_ZThn24124_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C17D1Ev,_ZThn4456_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C17D0Ev,_ZThn4456_N9S21147C17D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C179S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C16D1Ev,_ZThn4456_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C16D0Ev,_ZThn4456_N9S21147C16D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C169S21147C129S21147C11__9S21147C10[] = {
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C16D1Ev,_ZThn5080_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C16D0Ev,_ZThn5080_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn7040_N9S21147C16D1Ev,_ZThn4268_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn7040_N9S21147C16D0Ev,_ZThn4268_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-7040,-4268),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-7040,-4268),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C16D1Ev,_ZThn24012_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C16D0Ev,_ZThn24012_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C16D1Ev,_ZThn24124_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C16D0Ev,_ZThn24124_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21147C16D1Ev,_ZThn144_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C16D0Ev,_ZThn144_N9S21147C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C17__A1__9S21147C169S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C16D1Ev,_ZThn144_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C16D0Ev,_ZThn144_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn7040_N9S21147C12D1Ev,_ZThn4268_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn7040_N9S21147C12D0Ev,_ZThn4268_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-7040,-4268),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-7040,-4268),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C12D1Ev,_ZThn4456_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C12D0Ev,_ZThn4456_N9S21147C12D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C129S21147C11__9S21147C10[] = {
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C12D1Ev,_ZThn5080_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C12D0Ev,_ZThn5080_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C12D1Ev,_ZThn24012_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C12D0Ev,_ZThn24012_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C12D1Ev,_ZThn24124_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C12D0Ev,_ZThn24124_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21147C12D1Ev,_ZThn144_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C12D0Ev,_ZThn144_N9S21147C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C179S21147C16__A1__9S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C12D1Ev,_ZThn144_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C12D0Ev,_ZThn144_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn39712_N9S21147C12D1Ev,_ZThn24348_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn39712_N9S21147C12D0Ev,_ZThn24348_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C8__9S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-39712,-24348),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-39712,-24348),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21147C12D1Ev,_ZTvn188_n32_N9S21147C12D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21147C12D0Ev,_ZTvn188_n32_N9S21147C12D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C38S21147C8__A1__9S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-40048,-24536),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C12D1Ev,_ZTvn188_n32_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C12D0Ev,_ZTvn188_n32_N9S21147C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn43608_N9S21147C12D1Ev,_ZThn26880_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn43608_N9S21147C12D0Ev,_ZThn26880_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C9__9S21147C129S21147C11__9S21147C10[] = {
  ABISELECT(-43608,-26880),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-43608,-26880),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21147C11D1Ev,_ZTv0_n24_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn7040_N9S21147C11D1Ev,_ZThn4268_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21147C11D0Ev,_ZTv0_n24_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn7040_N9S21147C11D0Ev,_ZThn4268_N9S21147C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C11__9S21147C10[] = {
  ABISELECT(-7040,-4268),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-7040,-4268),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C11D1Ev,_ZTv0_n24_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C11D0Ev,_ZTv0_n24_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C11D1Ev,_ZThn4456_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21147C11D0Ev,_ZThn4456_N9S21147C11D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C11__9S21147C10[] = {
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C11D1Ev,_ZTv0_n12_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C11D1Ev,_ZThn5080_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21147C11D0Ev,_ZTv0_n12_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21147C11D0Ev,_ZThn5080_N9S21147C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C11__9S21147C10[] = {
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C11D1Ev,_ZTv0_n12_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C11D0Ev,_ZTv0_n12_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C11D1Ev,_ZTv0_n16_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C11D1Ev,_ZThn24012_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21147C11D0Ev,_ZTv0_n16_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21147C11D0Ev,_ZThn24012_N9S21147C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C11__9S21147C10[] = {
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C11D1Ev,_ZTv0_n16_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C11D0Ev,_ZTv0_n16_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C11D1Ev,_ZThn24124_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21147C11D0Ev,_ZThn24124_N9S21147C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C11__9S21147C10[] = {
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21147C11D1Ev,_ZThn144_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C11D0Ev,_ZThn144_N9S21147C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C179S21147C169S21147C12__A1__9S21147C11__9S21147C10[] = {
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C11D1Ev,_ZThn144_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C11D0Ev,_ZThn144_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21147C11D1Ev,_ZTv0_n32_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn39712_N9S21147C11D1Ev,_ZThn24348_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21147C11D0Ev,_ZTv0_n32_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn39712_N9S21147C11D0Ev,_ZThn24348_N9S21147C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C8__9S21147C11__9S21147C10[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-39712,-24348),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-39712,-24348),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C11D1Ev,_ZTv0_n32_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C11D0Ev,_ZTv0_n32_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21147C11D1Ev,_ZTvn188_n32_N9S21147C11D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21147C11D0Ev,_ZTvn188_n32_N9S21147C11D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C38S21147C8__A1__9S21147C11__9S21147C10[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-40048,-24536),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C11D1Ev,_ZTvn188_n32_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C11D0Ev,_ZTvn188_n32_N9S21147C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn43608_N9S21147C11D1Ev,_ZThn26880_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn43608_N9S21147C11D0Ev,_ZThn26880_N9S21147C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C9__9S21147C11__9S21147C10[] = {
  ABISELECT(-43608,-26880),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-43608,-26880),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev),
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C10[] = {
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C2__A1__9S21147C10[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C6D1Ev,_ZThn812_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C6D0Ev,_ZThn812_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C2__A1__9S21147C10[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21147C2D1Ev,_ZThn188_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21147C2D0Ev,_ZThn188_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C2__9S21147C10[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C2D1Ev,_ZThn812_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C2D0Ev,_ZThn812_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C2__9S21147C10[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C10[] = {
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C3__9S21147C10[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C3__9S21147C10[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C3__9S21147C10[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C10[] = {
  ABISELECT(-30768,-18932),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__A2__9S21147C10[] = {
  ABISELECT(30768,18932),
  ABISELECT(30768,18932),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void _ZN9S21147C15D1Ev();
extern void _ZN9S21147C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C10[] = {
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&_ZN9S21147C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C15__9S21147C10[] = {
  ABISELECT(200,112),
  ABISELECT(-30768,-18932),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C15__9S21147C10[] = {
  ABISELECT(30968,19044),
  ABISELECT(30968,19044),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev),
};
extern void _ZN8S21147C8D1Ev();
extern void _ZN8S21147C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C8__9S21147C10[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&_ZN8S21147C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C8D0Ev,
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C28S21147C8__A2__9S21147C10[] = {
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C28S21147C8__A4__9S21147C10[] = {
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C28S21147C8__A4__9S21147C10[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C28S21147C8__A2__9S21147C10[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C28S21147C8__A2__9S21147C10[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C38S21147C8__A1__9S21147C10[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C38S21147C8__A5__9S21147C10[] = {
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C38S21147C8__A5__9S21147C10[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C38S21147C8__A1__9S21147C10[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C8__9S21147C10[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C8__9S21147C10[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev),
};
extern void ABISELECT(_ZThn336_N8S21147C8D1Ev,_ZThn188_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S21147C8D0Ev,_ZThn188_N8S21147C8D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__A__8S21147C8__9S21147C10[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21147C8D1Ev,_ZThn188_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21147C8D0Ev,_ZThn188_N8S21147C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A3__8S21147C8__9S21147C10[] = {
  ABISELECT(584,336),
  ABISELECT(-30768,-18932),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev),
};
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn3896_N8S21147C8D1Ev,_ZThn2532_N8S21147C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev)();
extern void ABISELECT(_ZThn3896_N8S21147C8D0Ev,_ZThn2532_N8S21147C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C9__8S21147C8__9S21147C10[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev),
};
extern void _ZN8S21147C92v3Ev();
extern void _ZN8S21147C9D1Ev();
extern void _ZN8S21147C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C9__9S21147C10[] = {
  ABISELECT(-35248,-21800),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C9__9S21147C10[] = {
  ABISELECT(35248,21800),
  ABISELECT(35248,21800),
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev),
};
static  VTT_ENTRY vtt_S21147C10[] = {
  {&(_ZTV9S21147C10[11]),  11,97},
  {&(_tg__ZTV9S21147C11__9S21147C10[11]),  11,18},
  {&(_tg__ZTV9S21147C129S21147C11__9S21147C10[11]),  11,17},
  {&(_tg__ZTV9S21147C169S21147C129S21147C11__9S21147C10[8]),  8,14},
  {&(_tg__ZTV9S21147C179S21147C169S21147C129S21147C11__9S21147C10[7]),  7,13},
  {&(_tg__ZTV9S21147C189S21147C179S21147C169S21147C129S21147C11__9S21147C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C189S21147C179S21147C169S21147C129S21147C11__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C189S21147C179S21147C169S21147C129S21147C11__9S21147C10[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C189S21147C179S21147C169S21147C129S21147C11__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C189S21147C179S21147C169S21147C129S21147C11__9S21147C10[7]),  7,11},
  {&(_tg__ZTV8S21147C29S21147C179S21147C169S21147C129S21147C11__A1__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C29S21147C179S21147C169S21147C129S21147C11__A3__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C29S21147C179S21147C169S21147C129S21147C11__A3__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C29S21147C179S21147C169S21147C129S21147C11__A1__9S21147C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C29S21147C179S21147C169S21147C129S21147C11__A1__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21147C179S21147C169S21147C129S21147C11__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C179S21147C169S21147C129S21147C11__9S21147C10[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C179S21147C169S21147C129S21147C11__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C179S21147C169S21147C129S21147C11__9S21147C10[7]),  7,11},
  {&(_tg__ZTV8S21147C2__9S21147C179S21147C169S21147C129S21147C11__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C169S21147C129S21147C11__9S21147C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C169S21147C129S21147C11__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C2__9S21147C169S21147C129S21147C11__9S21147C10[6]),  6,8},
  {&(_tg__ZTV8S21147C6__A2__9S21147C169S21147C129S21147C11__9S21147C10[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C169S21147C129S21147C11__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C29S21147C17__A1__9S21147C169S21147C129S21147C11__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C2__9S21147C129S21147C11__9S21147C10[6]),  6,8},
  {&(_tg__ZTV8S21147C3__9S21147C129S21147C11__9S21147C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C129S21147C11__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A2__9S21147C129S21147C11__9S21147C10[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C129S21147C11__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C29S21147C179S21147C16__A1__9S21147C129S21147C11__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C8__9S21147C129S21147C11__9S21147C10[10]),  10,12},
  {&(_tg__ZTV8S21147C38S21147C8__A1__9S21147C129S21147C11__9S21147C10[4]),  4,8},
  {&(_tg__ZTV8S21147C9__9S21147C129S21147C11__9S21147C10[5]),  5,8},
  {&(_tg__ZTV8S21147C2__9S21147C11__9S21147C10[6]),  6,8},
  {&(_tg__ZTV8S21147C3__9S21147C11__9S21147C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C11__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A2__9S21147C11__9S21147C10[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C11__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C29S21147C179S21147C169S21147C12__A1__9S21147C11__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C8__9S21147C11__9S21147C10[10]),  10,12},
  {&(_tg__ZTV8S21147C38S21147C8__A1__9S21147C11__9S21147C10[4]),  4,8},
  {&(_tg__ZTV8S21147C9__9S21147C11__9S21147C10[5]),  5,8},
  {&(_ZTV9S21147C10[38]),  38,97},
  {&(_ZTV9S21147C10[47]),  47,97},
  {&(_ZTV9S21147C10[54]),  54,97},
  {&(_ZTV9S21147C10[60]),  60,97},
  {&(_ZTV9S21147C10[67]),  67,97},
  {&(_ZTV9S21147C10[26]),  26,97},
  {&(_ZTV9S21147C10[79]),  79,97},
  {&(_ZTV9S21147C10[85]),  85,97},
  {&(_ZTV9S21147C10[94]),  94,97},
  {&(_tg__ZTV8S21147C2__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C2__A1__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C2__A1__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C2__9S21147C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C2__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C3__9S21147C10[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C3__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C3__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C3__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A2__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__A2__9S21147C10[3]),  3,5},
  {&(_tg__ZTV9S21147C15__9S21147C10[4]),  4,6},
  {&(_tg__ZTV8S21147C6__9S21147C15__9S21147C10[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21147C15__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C8__9S21147C10[7]),  7,9},
  {&(_tg__ZTV8S21147C28S21147C8__A2__9S21147C10[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C28S21147C8__A4__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C28S21147C8__A4__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C28S21147C8__A2__9S21147C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C28S21147C8__A2__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C38S21147C8__A1__9S21147C10[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C38S21147C8__A5__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C38S21147C8__A5__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C38S21147C8__A1__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C8__9S21147C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C8__9S21147C10[3]),  3,5},
  {&(_tg__ZTV8S21147C3__A__8S21147C8__9S21147C10[4]),  4,8},
  {&(_tg__ZTV8S21147C6__A3__8S21147C8__9S21147C10[4]),  4,6},
  {&(_tg__ZTV8S21147C9__8S21147C8__9S21147C10[5]),  5,8},
  {&(_tg__ZTV8S21147C9__9S21147C10[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21147C9__9S21147C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21147C10[];
extern  VTBL_ENTRY _ZTV9S21147C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C10[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21147C8D0Ev,_ZThn2532_N8S21147C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21147C8D1Ev,_ZThn2532_N8S21147C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C11D0Ev,_ZTv0_n32_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21147C11D0Ev,_ZThn24348_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C11D1Ev,_ZTv0_n32_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21147C11D1Ev,_ZThn24348_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C11D0Ev,_ZTv0_n16_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C11D0Ev,_ZThn24012_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C11D1Ev,_ZTv0_n16_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C11D1Ev,_ZThn24012_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C11D0Ev,_ZTv0_n12_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C11D0Ev,_ZThn5080_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C11D1Ev,_ZTv0_n12_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C11D1Ev,_ZThn5080_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21147C11D0Ev,_ZThn26880_N9S21147C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C11D0Ev,_ZThn24124_N9S21147C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C11D0Ev,_ZThn4456_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21147C11D1Ev,_ZThn26880_N9S21147C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C11D1Ev,_ZThn24124_N9S21147C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C11D1Ev,_ZThn4456_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C11D0Ev,_ZTv0_n24_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21147C11D0Ev,_ZThn4268_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C11D1Ev,_ZTv0_n24_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21147C11D1Ev,_ZThn4268_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21147C12D0Ev,_ZThn24348_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21147C12D1Ev,_ZThn24348_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C12D0Ev,_ZThn24012_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C12D1Ev,_ZThn24012_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C12D0Ev,_ZThn5080_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C12D1Ev,_ZThn5080_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21147C12D0Ev,_ZThn26880_N9S21147C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C12D0Ev,_ZThn24124_N9S21147C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C12D0Ev,_ZThn4456_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21147C12D1Ev,_ZThn26880_N9S21147C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C12D1Ev,_ZThn24124_N9S21147C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C12D1Ev,_ZThn4456_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21147C12D0Ev,_ZThn4268_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21147C12D1Ev,_ZThn4268_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C16D0Ev,_ZThn24012_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C16D1Ev,_ZThn24012_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21147C16D0Ev,_ZThn4268_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21147C16D1Ev,_ZThn4268_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C16D0Ev,_ZThn5080_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C16D1Ev,_ZThn5080_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C16D0Ev,_ZThn24124_N9S21147C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C16D0Ev,_ZThn4456_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C16D1Ev,_ZThn24124_N9S21147C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C16D1Ev,_ZThn4456_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C17D0Ev,_ZThn4456_N9S21147C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C17D0Ev,_ZThn24124_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C17D1Ev,_ZThn4456_N9S21147C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C17D1Ev,_ZThn24124_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C17D0Ev,_ZThn24012_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C17D1Ev,_ZThn24012_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C17D0Ev,_ZThn5080_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C17D1Ev,_ZThn5080_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C2D0Ev,_ZThn812_N8S21147C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8096_N8S21147C2D0Ev,_ZThn4936_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C2D1Ev,_ZThn812_N8S21147C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8096_N8S21147C2D1Ev,_ZThn4936_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21147C2D0Ev,_ZThn188_N8S21147C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7112_N8S21147C2D0Ev,_ZThn4312_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21147C2D1Ev,_ZThn188_N8S21147C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7112_N8S21147C2D1Ev,_ZThn4312_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C6D0Ev,_ZThn812_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8096_N8S21147C6D0Ev,_ZThn4936_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C6D1Ev,_ZThn812_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8096_N8S21147C6D1Ev,_ZThn4936_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C18D0Ev,_ZThn4456_N9S21147C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C18D0Ev,_ZThn24124_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C18D1Ev,_ZThn4456_N9S21147C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C18D1Ev,_ZThn24124_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C18D0Ev,_ZThn24012_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C18D1Ev,_ZThn24012_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C18D0Ev,_ZThn5080_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C18D1Ev,_ZThn5080_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C10D0Ev,_ZTv0_n32_N9S21147C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21147C10D0Ev,_ZThn24348_N9S21147C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21147C10D1Ev,_ZTv0_n32_N9S21147C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21147C10D1Ev,_ZThn24348_N9S21147C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C10D0Ev,_ZTv0_n16_N9S21147C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C10D0Ev,_ZThn24012_N9S21147C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21147C10D1Ev,_ZTv0_n16_N9S21147C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21147C10D1Ev,_ZThn24012_N9S21147C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C10D0Ev,_ZTv0_n12_N9S21147C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C10D0Ev,_ZThn5080_N9S21147C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21147C10D1Ev,_ZTv0_n12_N9S21147C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21147C10D1Ev,_ZThn5080_N9S21147C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21147C10D0Ev,_ZThn26880_N9S21147C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C10D0Ev,_ZThn24124_N9S21147C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C10D0Ev,_ZThn4456_N9S21147C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21147C10D1Ev,_ZThn26880_N9S21147C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21147C10D1Ev,_ZThn24124_N9S21147C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21147C10D1Ev,_ZThn4456_N9S21147C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C10D0Ev,_ZTv0_n24_N9S21147C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21147C10D0Ev,_ZThn4268_N9S21147C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21147C10D1Ev,_ZTv0_n24_N9S21147C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21147C10D1Ev,_ZThn4268_N9S21147C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C10 = {  "S21147C10", // class name
  bases_S21147C10, 34,
  &(vtc_S21147C10[0]), // expected_vtbl_contents
  &(vtt_S21147C10[0]), // expected_vtt_contents
  ABISELECT(43616,26884), // object size
  NSPAIRA(_ZTI9S21147C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21147C10),97, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21147C10),84, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21147C1  : virtual S21147C2 , virtual S21147C8 , virtual S21147C10 {
  __tsi64 s21147c1f0;
  ::S21147C10 s21147c1f1;
  int s21147c1f2:2;
  void *s21147c1f3;
  ~S21147C1(); // tgen
  S21147C1(); // tgen
};
//SIG(1 S21147C1) C1{ VBC2{ VBC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ m Fp[14]} BC6{ VBC4 BC5 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC5 BC6 Fi Fi Fi:28 Fi Fl} VBC8{ VBC5 BC2 BC3 VBC6 VBC9{ VBC4 v3} vd Fi Fi Fi FD Fp Fp FC6 Fp FC3 Fi Fp Fi FC4[8]} VBC10{ BC11{ VBC5 BC12{ VBC2 VBC13{ m FC14{ VBC15{ VBC4 v13} VBC16{ VBC4 VBC5 BC17{ VBC4 BC5 Fs[6] FL[3] FU7} v14 v15 FC17 FD[7] FC17 FL Fp[5]} vd FC18{ VBC17 BC4 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC16 Fi Fi FC15}[5] Fp} BC19{ VBC3 VBC2 BC20{ BC21{ VBC4 VBC6 VBC22{ VBC6 BC4 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC3 vd v4 v5 Fi Fi FC5 Fc Fc Fi Fs FL} BC2 v6 v7 FU23{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC4 vd FC5 Fi[10] Fi FC9 Fs Fi FL} VBC8 FC22 Fi FC24{ VBC4 BC6 VBC22 FD Fp Fp} FD Fs[3] Fi:0 Fi} vd v8 Fi Fi} v9 v10 v11 Fi Fc:0 Fi Fi Fs FC2 Fi Fs Fp FC25{ VBC24 v12 FC2 Fp FD Fi}} FL FC10 Fi:2 Fp}


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

static void Test_S21147C1()
{
  extern Class_Descriptor cd_S21147C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5455,13447)];
    init_test(&cd_S21147C1, buf);
    S21147C1 *dp, &lv = *(dp=new (buf) S21147C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(87264,53784), "sizeof(S21147C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21147C1)");
    /*is_ambiguous_... S21147C1::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C3*), ABISELECT(44968,27716), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*), ABISELECT(44968,27716), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*), ABISELECT(44968,27716), "S21147C1");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(44968,27716), "S21147C1");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C3*)(S21147C8*), ABISELECT(44968,27716), "S21147C1");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(44968,27716), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*), ABISELECT(44968,27716), "S21147C1");
    check_base_class_offset(lv, (S19674C5*)(S21147C9*), ABISELECT(44968,27716), "S21147C1");
    /*is_ambiguous_... S21147C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(44968,27716), "S21147C1");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(44968,27716), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*), ABISELECT(45088,27804), "S21147C1");
    /*is_ambiguous_... S21147C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C8*), ABISELECT(45088,27804), "S21147C1");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C3*)(S21147C8*), ABISELECT(45088,27804), "S21147C1");
    /*is_ambiguous_... S21147C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C11*)(S21147C10*), ABISELECT(45088,27804), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*), ABISELECT(43992,27096), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C3*), ABISELECT(43984,27092), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C3*)(S21147C2*), ABISELECT(43984,27092), "S21147C1");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*)(S21147C8*), ABISELECT(43984,27092), "S21147C1");
    check_base_class_offset(lv, (S21147C3*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(43984,27092), "S21147C1");
    check_base_class_offset(lv, (S21147C3*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(43984,27092), "S21147C1");
    check_base_class_offset(lv, (S21147C3*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(43984,27092), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*), ABISELECT(43840,27016), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*), ABISELECT(43656,26908), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*), ABISELECT(43648,26904), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C2*), ABISELECT(43648,26904), "S21147C1");
    /*is_ambiguous_... S21147C12::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C2*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(43648,26904), "S21147C1");
    /*is_ambiguous_... S21147C16::S21147C2 */ AMB_check_base_class_offset(lv, (S21147C2*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(43648,26904), "S21147C1");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*)(S21147C8*), ABISELECT(45392,27972), "S21147C1");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(45208,27864), "S21147C1");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*)(S21147C8*), ABISELECT(45200,27860), "S21147C1");
    check_base_class_offset(lv, (S21147C2*)(S21147C8*), ABISELECT(45200,27860), "S21147C1");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(45544,28052), "S21147C1");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C3*)(S21147C8*), ABISELECT(45536,28048), "S21147C1");
    /*is_ambiguous_... S21147C8::S21147C3 */ AMB_check_base_class_offset(lv, (S21147C3*)(S21147C8*), ABISELECT(45536,28048), "S21147C1");
    /*is_ambiguous_... S21147C1::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*), ABISELECT(49104,30396), "S21147C1");
    /*is_ambiguous_... S21147C8::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C8*), ABISELECT(49096,30392), "S21147C1");
    /*is_ambiguous_... S21147C18::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49096,30392), "S21147C1");
    check_base_class_offset(lv, (S21147C6*)(S21147C15*), ABISELECT(49096,30392), "S21147C1");
    check_base_class_offset(lv, (S21147C9*)(S21147C8*), 0, "S21147C1");
    check_base_class_offset(lv, (S21147C8*), ABISELECT(45200,27860), "S21147C1");
    check_base_class_offset(lv, (S21147C8*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(45200,27860), "S21147C1");
    check_base_class_offset(lv, (S19674C2*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(56224,34716), "S21147C1");
    /*is_ambiguous_... S21147C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C15*), ABISELECT(86880,53560), "S21147C1");
    check_base_class_offset(lv, (S21147C15*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(86880,53560), "S21147C1");
    /*is_ambiguous_... S21147C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49304,30508), "S21147C1");
    check_base_class_offset(lv, (S21147C18*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49296,30504), "S21147C1");
    /*is_ambiguous_... S21147C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49752,30760), "S21147C1");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49568,30652), "S21147C1");
    /*is_ambiguous_... S21147C2::S21147C6 */ AMB_check_base_class_offset(lv, (S21147C6*)(S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49560,30648), "S21147C1");
    check_base_class_offset(lv, (S21147C2*)(S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49560,30648), "S21147C1");
    check_base_class_offset(lv, (S21147C17*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49296,30504), "S21147C1");
    /*is_ambiguous_... S21147C16::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49968,30884), "S21147C1");
    check_base_class_offset(lv, (S21147C16*)(S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49296,30504), "S21147C1");
    check_base_class_offset(lv, (S21147C12*)(S21147C11*)(S21147C10*), ABISELECT(49296,30504), "S21147C1");
    check_base_class_offset(lv, (S21147C11*)(S21147C10*), ABISELECT(49296,30504), "S21147C1");
    check_base_class_offset(lv, (S21147C10*), ABISELECT(49296,30504), "S21147C1");
    check_field_offset(lv, s21147c1f0, ABISELECT(8,4), "S21147C1.s21147c1f0");
    check_field_offset(lv, s21147c1f1, ABISELECT(16,12), "S21147C1.s21147c1f1");
    set_bf_and_test(lv, s21147c1f2, ABISELECT(43632,26896), 0, 2, 1, "S21147C1");
    set_bf_and_test(lv, s21147c1f2, ABISELECT(43632,26896), 0, 2, hide_sll(1LL<<1), "S21147C1");
    check_field_offset(lv, s21147c1f3, ABISELECT(43640,26900), "S21147C1.s21147c1f3");
    test_class_info(&lv, &cd_S21147C1);
    dp->~S21147C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21147C1(Test_S21147C1, "S21147C1", ABISELECT(87264,53784));

#else // __cplusplus

extern void _ZN8S21147C1C1Ev();
extern void _ZN8S21147C1D1Ev();
Name_Map name_map_S21147C1[] = {
  NSPAIR(_ZN8S21147C1C1Ev),
  NSPAIR(_ZN8S21147C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C3;
extern VTBL_ENTRY _ZTI8S21147C3[];
extern  VTBL_ENTRY _ZTV8S21147C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C9;
extern VTBL_ENTRY _ZTI8S21147C9[];
extern  VTBL_ENTRY _ZTV8S21147C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C9[];
extern Class_Descriptor cd_S21147C8;
extern VTBL_ENTRY _ZTI8S21147C8[];
extern  VTBL_ENTRY _ZTV8S21147C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C8[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C15;
extern VTBL_ENTRY _ZTI9S21147C15[];
extern  VTBL_ENTRY _ZTV9S21147C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C18;
extern VTBL_ENTRY _ZTI9S21147C18[];
extern  VTBL_ENTRY _ZTV9S21147C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21147C6;
extern VTBL_ENTRY _ZTI8S21147C6[];
extern  VTBL_ENTRY _ZTV8S21147C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C6[];
extern Class_Descriptor cd_S21147C2;
extern VTBL_ENTRY _ZTI8S21147C2[];
extern  VTBL_ENTRY _ZTV8S21147C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C2[];
extern Class_Descriptor cd_S21147C17;
extern VTBL_ENTRY _ZTI9S21147C17[];
extern  VTBL_ENTRY _ZTV9S21147C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C17[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21147C16;
extern VTBL_ENTRY _ZTI9S21147C16[];
extern  VTBL_ENTRY _ZTV9S21147C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C16[];
extern Class_Descriptor cd_S21147C12;
extern VTBL_ENTRY _ZTI9S21147C12[];
extern  VTBL_ENTRY _ZTV9S21147C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C12[];
extern Class_Descriptor cd_S21147C11;
extern VTBL_ENTRY _ZTI9S21147C11[];
extern  VTBL_ENTRY _ZTV9S21147C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C11[];
extern Class_Descriptor cd_S21147C10;
extern VTBL_ENTRY _ZTI9S21147C10[];
extern  VTBL_ENTRY _ZTV9S21147C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21147C10[];
static Base_Class bases_S21147C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(44968,27716), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(45088,27804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(43992,27096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21147C6,    ABISELECT(43984,27092), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(43984,27092), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(43840,27016), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(43656,26908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(43648,26904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(43648,26904), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(45392,27972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(45208,27864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(45200,27860), //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
    12, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(45200,27860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(45544,28052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(45536,28048), //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
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21147C3,    ABISELECT(45536,28048), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(49104,30396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(49096,30392), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21147C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21147C8,    ABISELECT(45200,27860), //bcp->offset
    41, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C2,    ABISELECT(56224,34716), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(86880,53560), //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S21147C15,    ABISELECT(86880,53560), //bcp->offset
    108, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(49304,30508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C18,    ABISELECT(49296,30504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(49752,30760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(49568,30652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21147C6,    ABISELECT(49560,30648), //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
    16, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21147C2,    ABISELECT(49560,30648), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21147C17,    ABISELECT(49296,30504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(49968,30884), //bcp->offset
    104, //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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21147C16,    ABISELECT(49296,30504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21147C12,    ABISELECT(49296,30504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21147C11,    ABISELECT(49296,30504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21147C10,    ABISELECT(49296,30504), //bcp->offset
    67, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21147C1[];
extern void _ZN8S21147C92v3Ev();
extern void _ZN8S21147C1D1Ev();
extern void _ZN8S21147C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S21147C1D1Ev,_ZTv0_n24_N8S21147C1D1Ev)();
extern void ABISELECT(_ZThn43648_N8S21147C1D1Ev,_ZThn26904_N8S21147C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21147C1D0Ev,_ZTv0_n24_N8S21147C1D0Ev)();
extern void ABISELECT(_ZThn43648_N8S21147C1D0Ev,_ZThn26904_N8S21147C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C1D1Ev,_ZTv0_n20_N8S21147C1D1Ev)();
extern void ABISELECT(_ZThn43984_N8S21147C1D1Ev,_ZThn27092_N8S21147C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C1D0Ev,_ZTv0_n20_N8S21147C1D0Ev)();
extern void ABISELECT(_ZThn43984_N8S21147C1D0Ev,_ZThn27092_N8S21147C1D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S21147C1D1Ev,_ZTv0_n12_N8S21147C1D1Ev)();
extern void ABISELECT(_ZThn44968_N8S21147C1D1Ev,_ZThn27716_N8S21147C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C1D0Ev,_ZTv0_n12_N8S21147C1D0Ev)();
extern void ABISELECT(_ZThn44968_N8S21147C1D0Ev,_ZThn27716_N8S21147C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21147C1D1Ev,_ZTv0_n32_N8S21147C1D1Ev)();
extern void ABISELECT(_ZThn45200_N8S21147C1D1Ev,_ZThn27860_N8S21147C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21147C1D0Ev,_ZTv0_n32_N8S21147C1D0Ev)();
extern void ABISELECT(_ZThn45200_N8S21147C1D0Ev,_ZThn27860_N8S21147C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N8S21147C1D1Ev,_ZTvn188_n32_N8S21147C1D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N8S21147C1D0Ev,_ZTvn188_n32_N8S21147C1D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S21147C1D1Ev,_ZTv0_n16_N8S21147C1D1Ev)();
extern void ABISELECT(_ZThn49096_N8S21147C1D1Ev,_ZThn30392_N8S21147C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21147C1D0Ev,_ZTv0_n16_N8S21147C1D0Ev)();
extern void ABISELECT(_ZThn49096_N8S21147C1D0Ev,_ZThn30392_N8S21147C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21147C1D1Ev,_ZTv0_n48_N8S21147C1D1Ev)();
extern void ABISELECT(_ZThn49296_N8S21147C1D1Ev,_ZThn30504_N8S21147C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21147C1D0Ev,_ZTv0_n48_N8S21147C1D0Ev)();
extern void ABISELECT(_ZThn49296_N8S21147C1D0Ev,_ZThn30504_N8S21147C1D0Ev)() __attribute__((weak));
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
extern void _ZN9S21147C112v8Ev();
extern void _ZN9S21147C102v9Ev();
extern void _ZN9S21147C103v10Ev();
extern void _ZN9S21147C103v11Ev();
extern void ABISELECT(_ZTvn264_n96_N8S21147C1D1Ev,_ZTvn144_n48_N8S21147C1D1Ev)();
extern void ABISELECT(_ZTvn264_n96_N8S21147C1D0Ev,_ZTvn144_n48_N8S21147C1D0Ev)();
extern void ABISELECT(_ZTvn672_n96_N8S21147C1D1Ev,_ZTvn380_n48_N8S21147C1D1Ev)();
extern void ABISELECT(_ZTvn672_n96_N8S21147C1D0Ev,_ZTvn380_n48_N8S21147C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C1D1Ev,_ZTv0_n20_N8S21147C1D1Ev)();
extern void ABISELECT(_ZThn86880_N8S21147C1D1Ev,_ZThn53560_N8S21147C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C1D0Ev,_ZTv0_n20_N8S21147C1D0Ev)();
extern void ABISELECT(_ZThn86880_N8S21147C1D0Ev,_ZThn53560_N8S21147C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21147C1[] = {
  ABISELECT(86880,53560),
  ABISELECT(56224,34716),
  ABISELECT(49296,30504),
  0,
  ABISELECT(49096,30392),
  ABISELECT(45200,27860),
  ABISELECT(45088,27804),
  ABISELECT(43984,27092),
  ABISELECT(43648,26904),
  0,
  0,
  ABISELECT(44968,27716),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21147C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C1D0Ev,
  ABISELECT(-43648,-26904),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-43648,-26904),
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21147C1D1Ev,_ZTv0_n24_N8S21147C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21147C1D0Ev,_ZTv0_n24_N8S21147C1D0Ev),
  0,
  0,
  ABISELECT(-43984,-27092),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-43984,-27092),
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C1D1Ev,_ZTv0_n20_N8S21147C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C1D0Ev,_ZTv0_n20_N8S21147C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-44968,-27716),
  ABISELECT(-44968,-27716),
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C1D1Ev,_ZTv0_n12_N8S21147C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C1D0Ev,_ZTv0_n12_N8S21147C1D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-45200,-27860),
  ABISELECT(-45200,-27860),
  ABISELECT(3896,2532),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(-45200,-27860),
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21147C1D1Ev,_ZTv0_n32_N8S21147C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21147C1D0Ev,_ZTv0_n32_N8S21147C1D0Ev),
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  ABISELECT(-45536,-28048),
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21147C1D1Ev,_ZTvn188_n32_N8S21147C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21147C1D0Ev,_ZTvn188_n32_N8S21147C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
  ABISELECT(-49096,-30392),
  ABISELECT(-4128,-2676),
  ABISELECT(-49096,-30392),
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C1D1Ev,_ZTv0_n16_N8S21147C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C1D0Ev,_ZTv0_n16_N8S21147C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-49296,-30504),
  ABISELECT(-49296,-30504),
  ABISELECT(-4096,-2644),
  ABISELECT(6928,4212),
  ABISELECT(-5648,-3600),
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  ABISELECT(-49296,-30504),
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21147C1D1Ev,_ZTv0_n48_N8S21147C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21147C1D0Ev,_ZTv0_n48_N8S21147C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21147C112v8Ev,
  (VTBL_ENTRY)&_ZN9S21147C102v9Ev,
  (VTBL_ENTRY)&_ZN9S21147C103v10Ev,
  (VTBL_ENTRY)&_ZN9S21147C103v11Ev,
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-49560,-30648),
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n96_N8S21147C1D1Ev,_ZTvn144_n48_N8S21147C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n96_N8S21147C1D0Ev,_ZTvn144_n48_N8S21147C1D0Ev),
  ABISELECT(-49968,-30884),
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n96_N8S21147C1D1Ev,_ZTvn380_n48_N8S21147C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n96_N8S21147C1D0Ev,_ZTvn380_n48_N8S21147C1D0Ev),
  ABISELECT(-86880,-53560),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-86880,-53560),
  (VTBL_ENTRY)&(_ZTI8S21147C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C1D1Ev,_ZTv0_n20_N8S21147C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C1D0Ev,_ZTv0_n20_N8S21147C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21147C1[];
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C2__8S21147C1[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C2__A1__8S21147C1[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C6D1Ev,_ZThn812_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C6D0Ev,_ZThn812_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C2__A1__8S21147C1[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21147C2D1Ev,_ZThn188_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21147C2D0Ev,_ZThn188_N8S21147C2D0Ev)() __attribute__((weak));
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C2__8S21147C1[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C2D1Ev,_ZThn812_N8S21147C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21147C2D0Ev,_ZThn812_N8S21147C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C2__8S21147C1[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C1[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C3__8S21147C1[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C3__8S21147C1[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C3__8S21147C1[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void _ZN8S21147C8D1Ev();
extern void _ZN8S21147C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C8__8S21147C1[] = {
  ABISELECT(-45200,-27860),
  ABISELECT(3896,2532),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&_ZN8S21147C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C8D0Ev,
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C28S21147C8__A1__8S21147C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C28S21147C8__A2__8S21147C1[] = {
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C28S21147C8__A2__8S21147C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C28S21147C8__A1__8S21147C1[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C28S21147C8__A1__8S21147C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void _ZN8S21147C3D1Ev();
extern void _ZN8S21147C3D0Ev();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C38S21147C8__A1__8S21147C1[] = {
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&_ZN8S21147C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C38S21147C8__A3__8S21147C1[] = {
  ABISELECT(-568,-332),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C38S21147C8__A3__8S21147C1[] = {
  ABISELECT(568,332),
  ABISELECT(568,332),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C38S21147C8__A1__8S21147C1[] = {
  ABISELECT(568,332),
  ABISELECT(568,332),
  (VTBL_ENTRY)&(_ZTI8S21147C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C8__8S21147C1[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C8__8S21147C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C8D1Ev,_ZTv0_n12_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C8D0Ev,_ZTv0_n12_N8S21147C8D0Ev),
};
extern void ABISELECT(_ZThn336_N8S21147C8D1Ev,_ZThn188_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S21147C8D0Ev,_ZThn188_N8S21147C8D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__A__8S21147C8__8S21147C1[] = {
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21147C8D1Ev,_ZThn188_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21147C8D0Ev,_ZThn188_N8S21147C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev)();
extern void ABISELECT(_ZThn3896_N8S21147C8D1Ev,_ZThn2532_N8S21147C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev)();
extern void ABISELECT(_ZThn3896_N8S21147C8D0Ev,_ZThn2532_N8S21147C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21147C6__A3__8S21147C8__8S21147C1[] = {
  ABISELECT(-3896,-2532),
  ABISELECT(-4128,-2676),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev),
};
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C9__8S21147C8__8S21147C1[] = {
  ABISELECT(45200,27860),
  0,
  ABISELECT(44968,27716),
  ABISELECT(45200,27860),
  (VTBL_ENTRY)&(_ZTI8S21147C8[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D1Ev,_ZTv0_n20_N8S21147C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C8D0Ev,_ZTv0_n20_N8S21147C8D0Ev),
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A4__8S21147C1[] = {
  ABISELECT(-4128,-2676),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C6__A4__8S21147C1[] = {
  ABISELECT(4128,2676),
  ABISELECT(4128,2676),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void _ZN8S21147C92v3Ev();
extern void _ZN8S21147C9D1Ev();
extern void _ZN8S21147C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C9__8S21147C1[] = {
  ABISELECT(44968,27716),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev)();
extern void ABISELECT(_ZThn44968_N8S21147C9D1Ev,_ZThn27716_N8S21147C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev)();
extern void ABISELECT(_ZThn44968_N8S21147C9D0Ev,_ZThn27716_N8S21147C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C9__8S21147C1[] = {
  ABISELECT(-44968,-27716),
  ABISELECT(-44968,-27716),
  (VTBL_ENTRY)&(_ZTI8S21147C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev),
};
extern void _ZN9S21147C10D1Ev();
extern void _ZN9S21147C10D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
extern void _ZN9S21147C112v8Ev();
extern void _ZN9S21147C102v9Ev();
extern void _ZN9S21147C103v10Ev();
extern void _ZN9S21147C103v11Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C10__8S21147C1[] = {
  ABISELECT(-49296,-30504),
  ABISELECT(-4096,-2644),
  ABISELECT(6928,4212),
  ABISELECT(-5648,-3600),
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&_ZN9S21147C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C10D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21147C112v8Ev,
  (VTBL_ENTRY)&_ZN9S21147C102v9Ev,
  (VTBL_ENTRY)&_ZN9S21147C103v10Ev,
  (VTBL_ENTRY)&_ZN9S21147C103v11Ev,
};
extern void _ZN9S21147C11D1Ev();
extern void _ZN9S21147C11D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
extern void _ZN9S21147C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-49296,-30504),
  ABISELECT(-4096,-2644),
  ABISELECT(6928,4212),
  ABISELECT(-5648,-3600),
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&_ZN9S21147C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21147C112v8Ev,
};
extern void _ZN9S21147C12D1Ev();
extern void _ZN9S21147C12D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-49296,-30504),
  ABISELECT(-4096,-2644),
  ABISELECT(6928,4212),
  ABISELECT(-5648,-3600),
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&_ZN9S21147C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C16D1Ev();
extern void _ZN9S21147C16D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-5648,-3600),
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&_ZN9S21147C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C16D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C17D1Ev();
extern void _ZN9S21147C17D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
extern void _ZN9S21147C172v6Ev();
extern void _ZN9S21147C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&_ZN9S21147C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21147C172v7Ev,
};
extern void _ZN9S21147C18D1Ev();
extern void _ZN9S21147C18D0Ev();
extern void _ZN9S21147C182v4Ev();
extern void _ZN9S21147C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C189S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&_ZN9S21147C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21147C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C189S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D1Ev,_ZTv0_n12_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C18D0Ev,_ZTv0_n12_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C189S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D1Ev,_ZTv0_n16_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C18D0Ev,_ZTv0_n16_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C18D1Ev,_ZThn23056_N9S21147C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C18D0Ev,_ZThn23056_N9S21147C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C189S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C189S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21147C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C2D1Ev();
extern void _ZN8S21147C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C179S21147C169S21147C129S21147C119S21147C10__A2__8S21147C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&_ZN8S21147C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C2D0Ev,
};
extern void _ZN8S21147C6D1Ev();
extern void _ZN8S21147C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C68S21147C29S21147C179S21147C169S21147C129S21147C119S21147C10__A5__8S21147C1[] = {
  ABISELECT(-4592,-2932),
  0,
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&_ZN8S21147C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21147C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C68S21147C29S21147C179S21147C169S21147C129S21147C119S21147C10__A5__8S21147C1[] = {
  ABISELECT(4592,2932),
  ABISELECT(4592,2932),
  (VTBL_ENTRY)&(_ZTI8S21147C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__8S21147C29S21147C179S21147C169S21147C129S21147C119S21147C10__A2__8S21147C1[] = {
  0,
  0,
  ABISELECT(5576,3556),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5576,3556),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21147C29S21147C179S21147C169S21147C129S21147C119S21147C10__A2__8S21147C1[] = {
  ABISELECT(4592,2932),
  ABISELECT(4592,2932),
  (VTBL_ENTRY)&(_ZTI8S21147C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D1Ev,_ZTv0_n12_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C17D0Ev,_ZTv0_n12_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D1Ev,_ZTv0_n16_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C17D0Ev,_ZTv0_n16_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C17D1Ev,_ZThn23056_N9S21147C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C17D0Ev,_ZThn23056_N9S21147C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D1Ev,_ZThn144_N9S21147C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C17D0Ev,_ZThn144_N9S21147C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C16D1Ev,_ZTv0_n12_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C16D0Ev,_ZTv0_n12_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(5648,3600),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(5648,3600),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C16D1Ev,_ZTv0_n24_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C16D0Ev,_ZTv0_n24_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C16D1Ev,_ZTv0_n16_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C16D0Ev,_ZTv0_n16_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C16D1Ev,_ZThn23056_N9S21147C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C16D0Ev,_ZThn23056_N9S21147C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21147C16D1Ev,_ZThn144_N9S21147C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C16D0Ev,_ZThn144_N9S21147C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C17__A1__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C16D1Ev,_ZThn144_N9S21147C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C16D0Ev,_ZThn144_N9S21147C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(5648,3600),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(5648,3600),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C12D1Ev,_ZTv0_n24_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C12D0Ev,_ZTv0_n24_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C129S21147C119S21147C10__8S21147C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C12D1Ev,_ZTv0_n12_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C12D0Ev,_ZTv0_n12_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C12D1Ev,_ZTv0_n16_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C12D0Ev,_ZTv0_n16_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C12D1Ev,_ZThn23056_N9S21147C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C12D0Ev,_ZThn23056_N9S21147C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21147C12D1Ev,_ZThn144_N9S21147C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C12D0Ev,_ZThn144_N9S21147C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C179S21147C16__A1__9S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C12D1Ev,_ZThn144_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C12D0Ev,_ZThn144_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C8__9S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(4096,2644),
  ABISELECT(-45200,-27860),
  ABISELECT(3896,2532),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(4096,2644),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C12D1Ev,_ZTv0_n32_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C12D0Ev,_ZTv0_n32_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21147C12D1Ev,_ZTvn188_n32_N9S21147C12D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21147C12D0Ev,_ZTvn188_n32_N9S21147C12D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C38S21147C8__A1__9S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  ABISELECT(3760,2456),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C12D1Ev,_ZTvn188_n32_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C12D0Ev,_ZTvn188_n32_N9S21147C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C9__9S21147C129S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(49296,30504),
  0,
  ABISELECT(44968,27716),
  ABISELECT(49296,30504),
  (VTBL_ENTRY)&(_ZTI9S21147C12[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21147C11D1Ev,_ZTv0_n24_N9S21147C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21147C11D0Ev,_ZTv0_n24_N9S21147C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(5648,3600),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(5648,3600),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C11D1Ev,_ZTv0_n24_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C11D0Ev,_ZTv0_n24_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C119S21147C10__8S21147C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C11D1Ev,_ZTv0_n12_N9S21147C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C11D0Ev,_ZTv0_n12_N9S21147C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C11D1Ev,_ZTv0_n12_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C11D0Ev,_ZTv0_n12_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C11D1Ev,_ZTv0_n16_N9S21147C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C11D0Ev,_ZTv0_n16_N9S21147C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C11D1Ev,_ZTv0_n16_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C11D0Ev,_ZTv0_n16_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C11D1Ev,_ZThn23056_N9S21147C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C11D0Ev,_ZThn23056_N9S21147C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21147C11D1Ev,_ZThn144_N9S21147C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C11D0Ev,_ZThn144_N9S21147C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C179S21147C169S21147C12__A1__9S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C11D1Ev,_ZThn144_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C11D0Ev,_ZThn144_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21147C11D1Ev,_ZTv0_n32_N9S21147C11D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21147C11D0Ev,_ZTv0_n32_N9S21147C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C8__9S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(4096,2644),
  ABISELECT(-45200,-27860),
  ABISELECT(3896,2532),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(4096,2644),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C11D1Ev,_ZTv0_n32_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C11D0Ev,_ZTv0_n32_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21147C11D1Ev,_ZTvn188_n32_N9S21147C11D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21147C11D0Ev,_ZTvn188_n32_N9S21147C11D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C38S21147C8__A1__9S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  ABISELECT(3760,2456),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C11D1Ev,_ZTvn188_n32_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C11D0Ev,_ZTvn188_n32_N9S21147C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C9__9S21147C119S21147C10__8S21147C1[] = {
  ABISELECT(49296,30504),
  0,
  ABISELECT(44968,27716),
  ABISELECT(49296,30504),
  (VTBL_ENTRY)&(_ZTI9S21147C11[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21147C10D1Ev,_ZTv0_n24_N9S21147C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21147C10D0Ev,_ZTv0_n24_N9S21147C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C2__9S21147C10__8S21147C1[] = {
  ABISELECT(5648,3600),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(5648,3600),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C10D1Ev,_ZTv0_n24_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21147C10D0Ev,_ZTv0_n24_N9S21147C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C3__9S21147C10__8S21147C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21147C10D1Ev,_ZTv0_n12_N9S21147C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C10D0Ev,_ZTv0_n12_N9S21147C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C10__8S21147C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C10D1Ev,_ZTv0_n12_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C10D0Ev,_ZTv0_n12_N9S21147C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21147C10D1Ev,_ZTv0_n16_N9S21147C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C10D0Ev,_ZTv0_n16_N9S21147C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__A2__9S21147C10__8S21147C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C10D1Ev,_ZTv0_n16_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C10D0Ev,_ZTv0_n16_N9S21147C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C10D1Ev,_ZThn23056_N9S21147C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21147C10D0Ev,_ZThn23056_N9S21147C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21147C15__9S21147C10__8S21147C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21147C10D1Ev,_ZThn144_N9S21147C10D1Ev)();
extern void ABISELECT(_ZThn264_N9S21147C10D0Ev,_ZThn144_N9S21147C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C29S21147C179S21147C169S21147C129S21147C11__A1__9S21147C10__8S21147C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C10D1Ev,_ZThn144_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21147C10D0Ev,_ZThn144_N9S21147C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21147C10D1Ev,_ZTv0_n32_N9S21147C10D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21147C10D0Ev,_ZTv0_n32_N9S21147C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C8__9S21147C10__8S21147C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(4096,2644),
  ABISELECT(-45200,-27860),
  ABISELECT(3896,2532),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(4096,2644),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C10D1Ev,_ZTv0_n32_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21147C10D0Ev,_ZTv0_n32_N9S21147C10D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21147C10D1Ev,_ZTvn188_n32_N9S21147C10D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21147C10D0Ev,_ZTvn188_n32_N9S21147C10D0Ev)();
extern void _ZN8S21147C32v1Ev();
extern void _ZN8S21147C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21147C38S21147C8__A1__9S21147C10__8S21147C1[] = {
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  ABISELECT(3760,2456),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C10D1Ev,_ZTvn188_n32_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21147C10D0Ev,_ZTvn188_n32_N9S21147C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21147C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21147C32v2Ev,
};
extern void _ZN8S21147C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C9__9S21147C10__8S21147C1[] = {
  ABISELECT(49296,30504),
  0,
  ABISELECT(44968,27716),
  ABISELECT(49296,30504),
  (VTBL_ENTRY)&(_ZTI9S21147C10[0]),
  (VTBL_ENTRY)&_ZN8S21147C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev),
};
extern void _ZN9S21147C15D1Ev();
extern void _ZN9S21147C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21147C15__8S21147C1[] = {
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  0,
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&_ZN9S21147C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21147C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21147C6__9S21147C15__8S21147C1[] = {
  ABISELECT(37784,23168),
  ABISELECT(-4128,-2676),
  ABISELECT(37784,23168),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D1Ev,_ZTv0_n16_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21147C15D0Ev,_ZTv0_n16_N9S21147C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21147C15__8S21147C1[] = {
  ABISELECT(41912,25844),
  ABISELECT(41912,25844),
  (VTBL_ENTRY)&(_ZTI9S21147C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D1Ev,_ZTv0_n12_N9S21147C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21147C15D0Ev,_ZTv0_n12_N9S21147C15D0Ev),
};
static  VTT_ENTRY vtt_S21147C1[] = {
  {&(_ZTV8S21147C1[14]),  14,115},
  {&(_ZTV8S21147C1[23]),  23,115},
  {&(_ZTV8S21147C1[32]),  32,115},
  {&(_ZTV8S21147C1[39]),  39,115},
  {&(_ZTV8S21147C1[51]),  51,115},
  {&(_ZTV8S21147C1[57]),  57,115},
  {&(_ZTV8S21147C1[65]),  65,115},
  {&(_ZTV8S21147C1[14]),  14,115},
  {&(_ZTV8S21147C1[87]),  87,115},
  {&(_ZTV8S21147C1[113]),  113,115},
  {&(_ZTV8S21147C1[102]),  102,115},
  {&(_ZTV8S21147C1[106]),  106,115},
  {&(_tg__ZTV8S21147C2__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C2__A1__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C2__A1__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C2__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C2__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C1[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C3__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C3__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C3__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C8__8S21147C1[7]),  7,9},
  {&(_tg__ZTV8S21147C28S21147C8__A1__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C28S21147C8__A2__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C28S21147C8__A2__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C28S21147C8__A1__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C28S21147C8__A1__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C38S21147C8__A1__8S21147C1[4]),  4,8},
  {&(_tg__ZTV8S21147C68S21147C38S21147C8__A3__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C38S21147C8__A3__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C38S21147C8__A1__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C8__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C8__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C3__A__8S21147C8__8S21147C1[4]),  4,8},
  {&(_tg__ZTV8S21147C6__A3__8S21147C8__8S21147C1[4]),  4,6},
  {&(_tg__ZTV8S21147C9__8S21147C8__8S21147C1[5]),  5,8},
  {&(_tg__ZTV8S21147C6__A4__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C6__A4__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C9__8S21147C1[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21147C9__8S21147C1[3]),  3,5},
  {&(_tg__ZTV9S21147C10__8S21147C1[11]),  11,21},
  {&(_tg__ZTV9S21147C119S21147C10__8S21147C1[11]),  11,18},
  {&(_tg__ZTV9S21147C129S21147C119S21147C10__8S21147C1[11]),  11,17},
  {&(_tg__ZTV9S21147C169S21147C129S21147C119S21147C10__8S21147C1[8]),  8,14},
  {&(_tg__ZTV9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[7]),  7,13},
  {&(_tg__ZTV9S21147C189S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C189S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C189S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C189S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C189S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S21147C29S21147C179S21147C169S21147C129S21147C119S21147C10__A2__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C68S21147C29S21147C179S21147C169S21147C129S21147C119S21147C10__A5__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21147C68S21147C29S21147C179S21147C169S21147C129S21147C119S21147C10__A5__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C3__8S21147C29S21147C179S21147C169S21147C129S21147C119S21147C10__A2__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21147C29S21147C179S21147C169S21147C129S21147C119S21147C10__A2__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C6__9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S21147C2__9S21147C179S21147C169S21147C129S21147C119S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C3__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C2__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[6]),  6,8},
  {&(_tg__ZTV8S21147C6__A2__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C29S21147C17__A1__9S21147C169S21147C129S21147C119S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C2__9S21147C129S21147C119S21147C10__8S21147C1[6]),  6,8},
  {&(_tg__ZTV8S21147C3__9S21147C129S21147C119S21147C10__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C129S21147C119S21147C10__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A2__9S21147C129S21147C119S21147C10__8S21147C1[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C129S21147C119S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C29S21147C179S21147C16__A1__9S21147C129S21147C119S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C8__9S21147C129S21147C119S21147C10__8S21147C1[10]),  10,12},
  {&(_tg__ZTV8S21147C38S21147C8__A1__9S21147C129S21147C119S21147C10__8S21147C1[4]),  4,8},
  {&(_tg__ZTV8S21147C9__9S21147C129S21147C119S21147C10__8S21147C1[5]),  5,8},
  {&(_tg__ZTV8S21147C2__9S21147C119S21147C10__8S21147C1[6]),  6,8},
  {&(_tg__ZTV8S21147C3__9S21147C119S21147C10__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C119S21147C10__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A2__9S21147C119S21147C10__8S21147C1[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C119S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C29S21147C179S21147C169S21147C12__A1__9S21147C119S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C8__9S21147C119S21147C10__8S21147C1[10]),  10,12},
  {&(_tg__ZTV8S21147C38S21147C8__A1__9S21147C119S21147C10__8S21147C1[4]),  4,8},
  {&(_tg__ZTV8S21147C9__9S21147C119S21147C10__8S21147C1[5]),  5,8},
  {&(_tg__ZTV8S21147C2__9S21147C10__8S21147C1[6]),  6,8},
  {&(_tg__ZTV8S21147C3__9S21147C10__8S21147C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21147C10__8S21147C1[3]),  3,5},
  {&(_tg__ZTV8S21147C6__A2__9S21147C10__8S21147C1[4]),  4,6},
  {&(_tg__ZTV9S21147C15__9S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C29S21147C179S21147C169S21147C129S21147C11__A1__9S21147C10__8S21147C1[5]),  5,7},
  {&(_tg__ZTV8S21147C8__9S21147C10__8S21147C1[10]),  10,12},
  {&(_tg__ZTV8S21147C38S21147C8__A1__9S21147C10__8S21147C1[4]),  4,8},
  {&(_tg__ZTV8S21147C9__9S21147C10__8S21147C1[5]),  5,8},
  {&(_tg__ZTV9S21147C15__8S21147C1[4]),  4,6},
  {&(_tg__ZTV8S21147C6__9S21147C15__8S21147C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21147C15__8S21147C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21147C1[];
extern  VTBL_ENTRY _ZTV8S21147C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21147C1[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C10D0Ev,_ZTv0_n20_N9S21147C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C10D0Ev,_ZThn23056_N9S21147C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C10D1Ev,_ZTv0_n20_N9S21147C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C10D1Ev,_ZThn23056_N9S21147C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C11D0Ev,_ZTv0_n20_N9S21147C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C11D0Ev,_ZThn23056_N9S21147C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C11D1Ev,_ZTv0_n20_N9S21147C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C11D1Ev,_ZThn23056_N9S21147C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C12D0Ev,_ZTv0_n20_N9S21147C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C12D0Ev,_ZThn23056_N9S21147C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C12D1Ev,_ZTv0_n20_N9S21147C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C12D1Ev,_ZThn23056_N9S21147C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C16D0Ev,_ZTv0_n20_N9S21147C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C16D0Ev,_ZThn23056_N9S21147C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C16D1Ev,_ZTv0_n20_N9S21147C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C16D1Ev,_ZThn23056_N9S21147C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D0Ev,_ZTv0_n20_N9S21147C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C17D0Ev,_ZThn23056_N9S21147C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C17D1Ev,_ZTv0_n20_N9S21147C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C17D1Ev,_ZThn23056_N9S21147C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D0Ev,_ZTv0_n20_N9S21147C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C18D0Ev,_ZThn23056_N9S21147C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21147C18D1Ev,_ZTv0_n20_N9S21147C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21147C18D1Ev,_ZThn23056_N9S21147C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C9D0Ev,_ZTv0_n12_N8S21147C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44968_N8S21147C9D0Ev,_ZThn27716_N8S21147C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C9D1Ev,_ZTv0_n12_N8S21147C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44968_N8S21147C9D1Ev,_ZThn27716_N8S21147C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21147C8D0Ev,_ZTv0_n16_N8S21147C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21147C8D0Ev,_ZThn2532_N8S21147C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21147C8D1Ev,_ZTv0_n16_N8S21147C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21147C8D1Ev,_ZThn2532_N8S21147C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D0Ev,_ZTv0_n12_N8S21147C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D0Ev,_ZThn624_N8S21147C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C3D1Ev,_ZTv0_n12_N8S21147C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C3D1Ev,_ZThn624_N8S21147C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D0Ev,_ZTv0_n12_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C2D0Ev,_ZThn812_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C2D1Ev,_ZTv0_n12_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C2D1Ev,_ZThn812_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D0Ev,_ZTv0_n20_N8S21147C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21147C2D0Ev,_ZThn188_N8S21147C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C2D1Ev,_ZTv0_n20_N8S21147C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21147C2D1Ev,_ZThn188_N8S21147C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D0Ev,_ZTv0_n12_N8S21147C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D0Ev,_ZThn624_N8S21147C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C6D0Ev,_ZThn812_N8S21147C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C6D1Ev,_ZTv0_n12_N8S21147C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21147C6D1Ev,_ZThn624_N8S21147C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21147C6D1Ev,_ZThn812_N8S21147C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21147C1D0Ev,_ZTv0_n48_N8S21147C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn49296_N8S21147C1D0Ev,_ZThn30504_N8S21147C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21147C1D1Ev,_ZTv0_n48_N8S21147C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn49296_N8S21147C1D1Ev,_ZThn30504_N8S21147C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21147C1D0Ev,_ZTv0_n16_N8S21147C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn49096_N8S21147C1D0Ev,_ZThn30392_N8S21147C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21147C1D1Ev,_ZTv0_n16_N8S21147C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn49096_N8S21147C1D1Ev,_ZThn30392_N8S21147C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21147C1D0Ev,_ZTv0_n32_N8S21147C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn45200_N8S21147C1D0Ev,_ZThn27860_N8S21147C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21147C1D1Ev,_ZTv0_n32_N8S21147C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn45200_N8S21147C1D1Ev,_ZThn27860_N8S21147C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C1D0Ev,_ZTv0_n12_N8S21147C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44968_N8S21147C1D0Ev,_ZThn27716_N8S21147C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21147C1D1Ev,_ZTv0_n12_N8S21147C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44968_N8S21147C1D1Ev,_ZThn27716_N8S21147C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C1D0Ev,_ZTv0_n20_N8S21147C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn86880_N8S21147C1D0Ev,_ZThn53560_N8S21147C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn43984_N8S21147C1D0Ev,_ZThn27092_N8S21147C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21147C1D1Ev,_ZTv0_n20_N8S21147C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn86880_N8S21147C1D1Ev,_ZThn53560_N8S21147C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn43984_N8S21147C1D1Ev,_ZThn27092_N8S21147C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21147C1D0Ev,_ZTv0_n24_N8S21147C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43648_N8S21147C1D0Ev,_ZThn26904_N8S21147C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21147C1D1Ev,_ZTv0_n24_N8S21147C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43648_N8S21147C1D1Ev,_ZThn26904_N8S21147C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21147C1 = {  "S21147C1", // class name
  bases_S21147C1, 35,
  &(vtc_S21147C1[0]), // expected_vtbl_contents
  &(vtt_S21147C1[0]), // expected_vtt_contents
  ABISELECT(87264,53784), // object size
  NSPAIRA(_ZTI8S21147C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21147C1),115, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21147C1),96, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C6  : virtual S19674C5 , S19674C7 {
  short s21148c6f0[6];
  __tsi64 s21148c6f1[3];
  ::S19674C9 s21148c6f2;
  ~S21148C6(); // tgen
  S21148C6(); // tgen
};
//SIG(-1 S21148C6) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ m Fp[14]} Fs[6] FL[3] FU4{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}}


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

static void Test_S21148C6()
{
  extern Class_Descriptor cd_S21148C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,51)];
    init_test(&cd_S21148C6, buf);
    S21148C6 *dp, &lv = *(dp=new (buf) S21148C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,200), "sizeof(S21148C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21148C6)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(192,112), "S21148C6");
    check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21148C6");
    check_field_offset(lv, s21148c6f0, ABISELECT(120,60), "S21148C6.s21148c6f0");
    check_field_offset(lv, s21148c6f1, ABISELECT(136,72), "S21148C6.s21148c6f1");
    check_field_offset(lv, s21148c6f2, ABISELECT(160,96), "S21148C6.s21148c6f2");
    test_class_info(&lv, &cd_S21148C6);
    dp->~S21148C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C6(Test_S21148C6, "S21148C6", ABISELECT(312,200));

#else // __cplusplus

extern void _ZN8S21148C6C1Ev();
extern void _ZN8S21148C6D1Ev();
Name_Map name_map_S21148C6[] = {
  NSPAIR(_ZN8S21148C6C1Ev),
  NSPAIR(_ZN8S21148C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
static Base_Class bases_S21148C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(192,112), //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},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21148C6[];
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S21148C6D1Ev,_ZThn112_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S21148C6D0Ev,_ZThn112_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C6[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21148C6[];
static  VTT_ENTRY vtt_S21148C6[] = {
  {&(_ZTV8S21148C6[3]),  3,10},
  {&(_ZTV8S21148C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21148C6D0Ev,_ZThn112_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21148C6D1Ev,_ZThn112_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C6 = {  "S21148C6", // class name
  bases_S21148C6, 2,
  &(vtc_S21148C6[0]), // expected_vtbl_contents
  &(vtt_S21148C6[0]), // expected_vtt_contents
  ABISELECT(312,200), // object size
  NSPAIRA(_ZTI8S21148C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21148C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21148C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C3  : virtual S19674C5 , virtual S19674C7 , S21148C6 {
  ::S21148C6 s21148c3f0;
  long double s21148c3f1[7];
  ::S21148C6 s21148c3f2;
  __tsi64 s21148c3f3;
  void *s21148c3f4[5];
  virtual void  v1(); // _ZN8S21148C32v1Ev
  virtual void  v2(); // _ZN8S21148C32v2Ev
  ~S21148C3(); // tgen
  S21148C3(); // tgen
};
//SIG(-1 S21148C3) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ m Fp[14]} BC4{ VBC2 BC3 Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC4 FD[7] FC4 FL Fp[5]}


void  S21148C3 ::v1(){vfunc_called(this, "_ZN8S21148C32v1Ev");}
void  S21148C3 ::v2(){vfunc_called(this, "_ZN8S21148C32v2Ev");}
S21148C3 ::~S21148C3(){ note_dtor("S21148C3", this);} // tgen
S21148C3 ::S21148C3(){ note_ctor("S21148C3", this);} // tgen

static void Test_S21148C3()
{
  extern Class_Descriptor cd_S21148C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,193)];
    init_test(&cd_S21148C3, buf);
    S21148C3 *dp, &lv = *(dp=new (buf) S21148C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,768), "sizeof(S21148C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C3)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(984,624), "S21148C3");
    check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(984,624), "S21148C3");
    /*is_ambiguous_... S21148C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(1104,712), "S21148C3");
    check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(8,4), "S21148C3");
    check_base_class_offset(lv, (S21148C6*), 0, "S21148C3");
    check_field_offset(lv, s21148c3f0, ABISELECT(192,112), "S21148C3.s21148c3f0");
    check_field_offset(lv, s21148c3f1, ABISELECT(512,312), "S21148C3.s21148c3f1");
    check_field_offset(lv, s21148c3f2, ABISELECT(624,396), "S21148C3.s21148c3f2");
    check_field_offset(lv, s21148c3f3, ABISELECT(936,596), "S21148C3.s21148c3f3");
    check_field_offset(lv, s21148c3f4, ABISELECT(944,604), "S21148C3.s21148c3f4");
    test_class_info(&lv, &cd_S21148C3);
    dp->~S21148C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C3(Test_S21148C3, "S21148C3", ABISELECT(1216,768));

#else // __cplusplus

extern void _ZN8S21148C3C1Ev();
extern void _ZN8S21148C3D1Ev();
Name_Map name_map_S21148C3[] = {
  NSPAIR(_ZN8S21148C3C1Ev),
  NSPAIR(_ZN8S21148C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
static Base_Class bases_S21148C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(984,624), //bcp->offset
    8, //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_S19674C7,    ABISELECT(1104,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21148C6,    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 _ZTI8S21148C3[];
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C3[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21148C3[];
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__8S21148C3[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__8S21148C3[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
static  VTT_ENTRY vtt_S21148C3[] = {
  {&(_ZTV8S21148C3[4]),  4,13},
  {&(_tg__ZTV8S21148C6__8S21148C3[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__8S21148C3[3]),  3,5},
  {&(_ZTV8S21148C3[11]),  11,13},
};
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C3 = {  "S21148C3", // class name
  bases_S21148C3, 4,
  &(vtc_S21148C3[0]), // expected_vtbl_contents
  &(vtt_S21148C3[0]), // expected_vtt_contents
  ABISELECT(1216,768), // object size
  NSPAIRA(_ZTI8S21148C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21148C3),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21148C3),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C2  : virtual S21148C3 , S19674C7 , S21148C6 {
  int s21148c2f0;
  int s21148c2f1;
  int s21148c2f2:28;
  int s21148c2f3;
  long s21148c2f4;
  ~S21148C2(); // tgen
  S21148C2(); // tgen
};
//SIG(-1 S21148C2) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} BC4 BC5 Fi Fi Fi:28 Fi Fl}


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

static void Test_S21148C2()
{
  extern Class_Descriptor cd_S21148C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,240)];
    init_test(&cd_S21148C2, buf);
    S21148C2 *dp, &lv = *(dp=new (buf) S21148C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,956), "sizeof(S21148C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C2)");
    check_base_class_offset(lv, (S19674C5*)(S21148C3*), ABISELECT(1320,812), "S21148C2");
    check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*), ABISELECT(1320,812), "S21148C2");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(1320,812), "S21148C2");
    /*is_ambiguous_... S21148C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*), ABISELECT(1440,900), "S21148C2");
    check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*), ABISELECT(344,192), "S21148C2");
    check_base_class_offset(lv, (S21148C6*)(S21148C3*), ABISELECT(336,188), "S21148C2");
    check_base_class_offset(lv, (S21148C3*), ABISELECT(336,188), "S21148C2");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(192,112), "S21148C2");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(8,4), "S21148C2");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*), 0, "S21148C2");
    check_field_offset(lv, s21148c2f0, ABISELECT(304,168), "S21148C2.s21148c2f0");
    check_field_offset(lv, s21148c2f1, ABISELECT(308,172), "S21148C2.s21148c2f1");
    set_bf_and_test(lv, s21148c2f2, ABISELECT(312,176), 0, 28, 1, "S21148C2");
    set_bf_and_test(lv, s21148c2f2, ABISELECT(312,176), 0, 28, hide_sll(1LL<<27), "S21148C2");
    check_field_offset(lv, s21148c2f3, ABISELECT(316,180), "S21148C2.s21148c2f3");
    check_field_offset(lv, s21148c2f4, ABISELECT(320,184), "S21148C2.s21148c2f4");
    test_class_info(&lv, &cd_S21148C2);
    dp->~S21148C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C2(Test_S21148C2, "S21148C2", ABISELECT(1552,956));

#else // __cplusplus

extern void _ZN8S21148C2C1Ev();
extern void _ZN8S21148C2D1Ev();
Name_Map name_map_S21148C2[] = {
  NSPAIR(_ZN8S21148C2C1Ev),
  NSPAIR(_ZN8S21148C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
static Base_Class bases_S21148C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(1320,812), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1440,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(344,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
    3, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(336,188), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21148C2[];
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21148C2D1Ev,_ZThn188_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21148C2D0Ev,_ZThn188_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C2D1Ev,_ZThn812_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C2D0Ev,_ZThn812_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C2[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21148C2[];
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A1__8S21148C2[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C6D1Ev,_ZThn812_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C6D0Ev,_ZThn812_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__A1__8S21148C2[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C2[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C3__8S21148C2[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C3__8S21148C2[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C3__8S21148C2[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
static  VTT_ENTRY vtt_S21148C2[] = {
  {&(_ZTV8S21148C2[5]),  5,23},
  {&(_tg__ZTV8S21148C6__A1__8S21148C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__A1__8S21148C2[3]),  3,5},
  {&(_ZTV8S21148C2[14]),  14,23},
  {&(_ZTV8S21148C2[21]),  21,23},
  {&(_tg__ZTV8S21148C3__8S21148C2[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C3__8S21148C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C3__8S21148C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C3__8S21148C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C6D0Ev,_ZThn812_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C6D1Ev,_ZThn812_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C2D0Ev,_ZThn812_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C2D1Ev,_ZThn812_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21148C2D0Ev,_ZThn188_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21148C2D1Ev,_ZThn188_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C2 = {  "S21148C2", // class name
  bases_S21148C2, 8,
  &(vtc_S21148C2[0]), // expected_vtbl_contents
  &(vtt_S21148C2[0]), // expected_vtt_contents
  ABISELECT(1552,956), // object size
  NSPAIRA(_ZTI8S21148C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21148C2),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21148C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C9  : virtual S19674C5 {
  virtual void  v3(); // _ZN8S21148C92v3Ev
  ~S21148C9(); // tgen
  S21148C9(); // tgen
};
//SIG(-1 S21148C9) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1}


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

static void Test_S21148C9()
{
  extern Class_Descriptor cd_S21148C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S21148C9, buf);
    S21148C9 *dp, &lv = *(dp=new (buf) S21148C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S21148C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21148C9)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(8,4), "S21148C9");
    test_class_info(&lv, &cd_S21148C9);
    dp->~S21148C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C9(Test_S21148C9, "S21148C9", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S21148C9C1Ev();
extern void _ZN8S21148C9D1Ev();
Name_Map name_map_S21148C9[] = {
  NSPAIR(_ZN8S21148C9C1Ev),
  NSPAIR(_ZN8S21148C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21148C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21148C9[];
extern void _ZN8S21148C92v3Ev();
extern void _ZN8S21148C9D1Ev();
extern void _ZN8S21148C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21148C9D1Ev,_ZThn4_N8S21148C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21148C9D0Ev,_ZThn4_N8S21148C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21148C9[];
static  VTT_ENTRY vtt_S21148C9[] = {
  {&(_ZTV8S21148C9[3]),  3,11},
  {&(_ZTV8S21148C9[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21148C9[];
extern  VTBL_ENTRY _ZTV8S21148C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C9[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21148C9D0Ev,_ZThn4_N8S21148C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21148C9D1Ev,_ZThn4_N8S21148C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C9 = {  "S21148C9", // class name
  bases_S21148C9, 1,
  &(vtc_S21148C9[0]), // expected_vtbl_contents
  &(vtt_S21148C9[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S21148C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21148C9),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21148C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C8  : virtual S19674C7 , S21148C2 , S21148C3 , virtual S21148C6 , virtual S21148C9 {
  int s21148c8f0;
  int s21148c8f1;
  int s21148c8f2;
  long double s21148c8f3;
  void *s21148c8f4;
  void *s21148c8f5;
  ::S21148C6 s21148c8f6;
  void *s21148c8f7;
  ::S21148C3 s21148c8f8;
  int s21148c8f9;
  void *s21148c8f10;
  int s21148c8f11;
  ::S19674C5 s21148c8f12[8];
  virtual  ~S21148C8(); // _ZN8S21148C8D2Ev
  S21148C8(); // tgen
};
//SIG(-1 S21148C8) C1{ VBC2{ m Fp[14]} BC3{ VBC4{ VBC5{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC2 BC6{ VBC5 BC2 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC2 BC6 Fi Fi Fi:28 Fi Fl} BC4 VBC6 VBC8{ VBC5 v3} vd Fi Fi Fi FD Fp Fp FC6 Fp FC4 Fi Fp Fi FC5[8]}


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

static void Test_S21148C8()
{
  extern Class_Descriptor cd_S21148C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(334,855)];
    init_test(&cd_S21148C8, buf);
    S21148C8 *dp, &lv = *(dp=new (buf) S21148C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5328,3416), "sizeof(S21148C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C8)");
    /*is_ambiguous_... S21148C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(3896,2532), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*), ABISELECT(3896,2532), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*), ABISELECT(3896,2532), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C3*), ABISELECT(5000,3212), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*), ABISELECT(5000,3212), "S21148C8");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*), ABISELECT(5000,3212), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C3*), ABISELECT(5000,3212), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*), ABISELECT(5000,3212), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(5000,3212), "S21148C8");
    check_base_class_offset(lv, (S19674C5*)(S21148C9*), ABISELECT(5000,3212), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*), ABISELECT(4024,2592), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C3*), ABISELECT(4016,2588), "S21148C8");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*), ABISELECT(4016,2588), "S21148C8");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*), ABISELECT(192,112), "S21148C8");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*), ABISELECT(8,4), "S21148C8");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*), 0, "S21148C8");
    check_base_class_offset(lv, (S21148C2*), 0, "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*), ABISELECT(344,192), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C3*), ABISELECT(336,188), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C3*), ABISELECT(336,188), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(5128,3304), "S21148C8");
    /*is_ambiguous_... S21148C8::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*), ABISELECT(5120,3300), "S21148C8");
    check_base_class_offset(lv, (S21148C9*), ABISELECT(5312,3412), "S21148C8");
    check_field_offset(lv, s21148c8f0, ABISELECT(1320,812), "S21148C8.s21148c8f0");
    check_field_offset(lv, s21148c8f1, ABISELECT(1324,816), "S21148C8.s21148c8f1");
    check_field_offset(lv, s21148c8f2, ABISELECT(1328,820), "S21148C8.s21148c8f2");
    check_field_offset(lv, s21148c8f3, ABISELECT(1344,824), "S21148C8.s21148c8f3");
    check_field_offset(lv, s21148c8f4, ABISELECT(1360,836), "S21148C8.s21148c8f4");
    check_field_offset(lv, s21148c8f5, ABISELECT(1368,840), "S21148C8.s21148c8f5");
    check_field_offset(lv, s21148c8f6, ABISELECT(1376,844), "S21148C8.s21148c8f6");
    check_field_offset(lv, s21148c8f7, ABISELECT(1688,1044), "S21148C8.s21148c8f7");
    check_field_offset(lv, s21148c8f8, ABISELECT(1696,1048), "S21148C8.s21148c8f8");
    check_field_offset(lv, s21148c8f9, ABISELECT(2912,1816), "S21148C8.s21148c8f9");
    check_field_offset(lv, s21148c8f10, ABISELECT(2920,1820), "S21148C8.s21148c8f10");
    check_field_offset(lv, s21148c8f11, ABISELECT(2928,1824), "S21148C8.s21148c8f11");
    check_field_offset(lv, s21148c8f12, ABISELECT(2936,1828), "S21148C8.s21148c8f12");
    test_class_info(&lv, &cd_S21148C8);
    dp->~S21148C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C8(Test_S21148C8, "S21148C8", ABISELECT(5328,3416));

#else // __cplusplus

extern void _ZN8S21148C8C1Ev();
extern void _ZN8S21148C8D2Ev();
Name_Map name_map_S21148C8[] = {
  NSPAIR(_ZN8S21148C8C1Ev),
  NSPAIR(_ZN8S21148C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C9;
extern VTBL_ENTRY _ZTI8S21148C9[];
extern  VTBL_ENTRY _ZTV8S21148C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C9[];
static Base_Class bases_S21148C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(3896,2532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(5000,3212), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4024,2592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21148C6,    ABISELECT(4016,2588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(4016,2588), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(192,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
    8, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21148C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(344,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(336,188), //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
    11, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(336,188), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(5128,3304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(5120,3300), //bcp->offset
    33, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21148C9,    ABISELECT(5312,3412), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21148C8[];
extern void _ZN8S21148C8D1Ev();
extern void _ZN8S21148C8D0Ev();
extern void ABISELECT(_ZThn336_N8S21148C8D1Ev,_ZThn188_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S21148C8D0Ev,_ZThn188_N8S21148C8D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn4016_N8S21148C8D1Ev,_ZThn2588_N8S21148C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev)();
extern void ABISELECT(_ZThn4016_N8S21148C8D0Ev,_ZThn2588_N8S21148C8D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21148C8D1Ev,_ZThn3212_N8S21148C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21148C8D0Ev,_ZThn3212_N8S21148C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn5120_N8S21148C8D1Ev,_ZThn3300_N8S21148C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev)();
extern void ABISELECT(_ZThn5120_N8S21148C8D0Ev,_ZThn3300_N8S21148C8D0Ev)() __attribute__((weak));
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn5312_N8S21148C8D1Ev,_ZThn3412_N8S21148C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev)();
extern void ABISELECT(_ZThn5312_N8S21148C8D0Ev,_ZThn3412_N8S21148C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C8[] = {
  ABISELECT(5312,3412),
  ABISELECT(5120,3300),
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&_ZN8S21148C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C8D0Ev,
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21148C8D1Ev,_ZThn188_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21148C8D0Ev,_ZThn188_N8S21148C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev),
  ABISELECT(-5120,-3300),
  ABISELECT(-120,-88),
  ABISELECT(-5120,-3300),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev),
  ABISELECT(-5312,-3412),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-5312,-3412),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21148C8[];
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C2__8S21148C8[] = {
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C2__A1__8S21148C8[] = {
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21148C6D1Ev,_ZThn3212_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21148C6D0Ev,_ZThn3212_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C2__A1__8S21148C8[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn4016_N8S21148C2D1Ev,_ZThn2588_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn4016_N8S21148C2D0Ev,_ZThn2588_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C2__8S21148C8[] = {
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21148C2D1Ev,_ZThn3212_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21148C2D0Ev,_ZThn3212_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C2__8S21148C8[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__A__8S21148C8[] = {
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C3__A2__8S21148C8[] = {
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn4664_N8S21148C6D1Ev,_ZThn3024_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn4664_N8S21148C6D0Ev,_ZThn3024_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C3__A2__8S21148C8[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZThn4664_N8S21148C3D1Ev,_ZThn3024_N8S21148C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
extern void ABISELECT(_ZThn4664_N8S21148C3D0Ev,_ZThn3024_N8S21148C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C3__A__8S21148C8[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C8[] = {
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C3__8S21148C8[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C3__8S21148C8[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C3__8S21148C8[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A3__8S21148C8[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__A3__8S21148C8[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void _ZN8S21148C92v3Ev();
extern void _ZN8S21148C9D1Ev();
extern void _ZN8S21148C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C9__8S21148C8[] = {
  ABISELECT(-312,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C9__8S21148C8[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev),
};
static  VTT_ENTRY vtt_S21148C8[] = {
  {&(_ZTV8S21148C8[7]),  7,47},
  {&(_tg__ZTV8S21148C2__8S21148C8[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C2__A1__8S21148C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C2__A1__8S21148C8[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C2__8S21148C8[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C2__8S21148C8[3]),  3,5},
  {&(_tg__ZTV8S21148C3__A__8S21148C8[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C3__A2__8S21148C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C3__A2__8S21148C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C3__A__8S21148C8[3]),  3,5},
  {&(_ZTV8S21148C8[24]),  24,47},
  {&(_ZTV8S21148C8[31]),  31,47},
  {&(_ZTV8S21148C8[13]),  13,47},
  {&(_ZTV8S21148C8[37]),  37,47},
  {&(_ZTV8S21148C8[44]),  44,47},
  {&(_tg__ZTV8S21148C3__8S21148C8[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C3__8S21148C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C3__8S21148C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C3__8S21148C8[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A3__8S21148C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__A3__8S21148C8[3]),  3,5},
  {&(_tg__ZTV8S21148C9__8S21148C8[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21148C9__8S21148C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21148C8[];
extern  VTBL_ENTRY _ZTV8S21148C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C8[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21148C3D0Ev,_ZThn3024_N8S21148C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21148C3D1Ev,_ZThn3024_N8S21148C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21148C2D0Ev,_ZThn3212_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21148C2D1Ev,_ZThn3212_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21148C2D0Ev,_ZThn2588_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21148C2D1Ev,_ZThn2588_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21148C6D0Ev,_ZThn3024_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21148C6D0Ev,_ZThn3212_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21148C6D1Ev,_ZThn3024_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21148C6D1Ev,_ZThn3212_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N8S21148C8D0Ev,_ZThn3300_N8S21148C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N8S21148C8D1Ev,_ZThn3300_N8S21148C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21148C8D0Ev,_ZThn3212_N8S21148C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21148C8D1Ev,_ZThn3212_N8S21148C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N8S21148C8D0Ev,_ZThn3412_N8S21148C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21148C8D0Ev,_ZThn2588_N8S21148C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N8S21148C8D1Ev,_ZThn3412_N8S21148C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21148C8D1Ev,_ZThn2588_N8S21148C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C8 = {  "S21148C8", // class name
  bases_S21148C8, 15,
  &(vtc_S21148C8[0]), // expected_vtbl_contents
  &(vtt_S21148C8[0]), // expected_vtt_contents
  ABISELECT(5328,3416), // object size
  NSPAIRA(_ZTI8S21148C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21148C8),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21148C8),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C15  : virtual S21148C6 , S19674C5 {
  char s21148c15f0:6;
  char s21148c15f1[8];
  long double s21148c15f2;
  ::S19674C7 s21148c15f3;
  ::S19674C7 s21148c15f4;
  ~S21148C15(); // tgen
  S21148C15(); // tgen
};
//SIG(-1 S21148C15) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC3 Fc:6 Fc[8] FD FC4 FC4}


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

static void Test_S21148C15()
{
  extern Class_Descriptor cd_S21148C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,107)];
    init_test(&cd_S21148C15, buf);
    S21148C15 *dp, &lv = *(dp=new (buf) S21148C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,424), "sizeof(S21148C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C15)");
    check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(576,336), "S21148C15");
    check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(392,228), "S21148C15");
    check_base_class_offset(lv, (S21148C6*), ABISELECT(384,224), "S21148C15");
    /*is_ambiguous_... S21148C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), 0, "S21148C15");
    set_bf_and_test(lv, s21148c15f0, ABISELECT(120,88), 0, 6, 1, "S21148C15");
    set_bf_and_test(lv, s21148c15f0, ABISELECT(120,88), 0, 6, hide_sll(1LL<<5), "S21148C15");
    check_field_offset(lv, s21148c15f1, ABISELECT(121,89), "S21148C15.s21148c15f1");
    check_field_offset(lv, s21148c15f2, ABISELECT(144,100), "S21148C15.s21148c15f2");
    check_field_offset(lv, s21148c15f3, ABISELECT(160,112), "S21148C15.s21148c15f3");
    check_field_offset(lv, s21148c15f4, ABISELECT(272,168), "S21148C15.s21148c15f4");
    test_class_info(&lv, &cd_S21148C15);
    dp->~S21148C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C15(Test_S21148C15, "S21148C15", ABISELECT(704,424));

#else // __cplusplus

extern void _ZN9S21148C15C1Ev();
extern void _ZN9S21148C15D1Ev();
Name_Map name_map_S21148C15[] = {
  NSPAIR(_ZN9S21148C15C1Ev),
  NSPAIR(_ZN9S21148C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21148C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(576,336), //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(384,224), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S21148C15[];
extern void _ZN9S21148C15D1Ev();
extern void _ZN9S21148C15D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev)();
extern void ABISELECT(_ZThn384_N9S21148C15D1Ev,_ZThn224_N9S21148C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev)();
extern void ABISELECT(_ZThn384_N9S21148C15D0Ev,_ZThn224_N9S21148C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev)();
extern void ABISELECT(_ZThn576_N9S21148C15D1Ev,_ZThn336_N9S21148C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev)();
extern void ABISELECT(_ZThn576_N9S21148C15D0Ev,_ZThn336_N9S21148C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C15[] = {
  ABISELECT(576,336),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&_ZN9S21148C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C15D0Ev,
  ABISELECT(-384,-224),
  ABISELECT(192,112),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev),
  ABISELECT(-576,-336),
  ABISELECT(-576,-336),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21148C15[];
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C15[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S21148C6D1Ev,_ZThn112_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S21148C6D0Ev,_ZThn112_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__9S21148C15[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
static  VTT_ENTRY vtt_S21148C15[] = {
  {&(_ZTV9S21148C15[4]),  4,17},
  {&(_ZTV9S21148C15[10]),  10,17},
  {&(_ZTV9S21148C15[15]),  15,17},
  {&(_tg__ZTV8S21148C6__9S21148C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__9S21148C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21148C15[];
extern  VTBL_ENTRY _ZTV9S21148C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C15[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21148C6D0Ev,_ZThn112_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21148C6D1Ev,_ZThn112_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21148C15D0Ev,_ZThn336_N9S21148C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21148C15D1Ev,_ZThn336_N9S21148C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21148C15D0Ev,_ZThn224_N9S21148C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21148C15D1Ev,_ZThn224_N9S21148C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C15 = {  "S21148C15", // class name
  bases_S21148C15, 4,
  &(vtc_S21148C15[0]), // expected_vtbl_contents
  &(vtt_S21148C15[0]), // expected_vtt_contents
  ABISELECT(704,424), // object size
  NSPAIRA(_ZTI9S21148C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21148C15),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21148C15),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C18  : virtual S19674C5 , virtual S21148C6 , virtual S21148C15 , S19674C7 , virtual S21148C3 {
  int s21148c18f0;
  int s21148c18f1;
  ::S19674C7 s21148c18f2;
  char s21148c18f3;
  char s21148c18f4;
  int s21148c18f5;
  short s21148c18f6;
  __tsi64 s21148c18f7;
  virtual  ~S21148C18(); // _ZN9S21148C18D2Ev
  virtual void  v4(); // _ZN9S21148C182v4Ev
  virtual void  v5(); // _ZN9S21148C182v5Ev
  S21148C18(); // tgen
};
//SIG(-1 S21148C18) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC7{ VBC2 VBC4 BC3 v3 v4 FC3 FD[7] FC3 FL Fp[5]} vd v1 v2 Fi Fi FC4 Fc Fc Fi Fs FL}


 S21148C18 ::~S21148C18(){ note_dtor("S21148C18", this);}
void  S21148C18 ::v4(){vfunc_called(this, "_ZN9S21148C182v4Ev");}
void  S21148C18 ::v5(){vfunc_called(this, "_ZN9S21148C182v5Ev");}
S21148C18 ::S21148C18(){ note_ctor("S21148C18", this);} // tgen

static void Test_S21148C18()
{
  extern Class_Descriptor cd_S21148C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,313)];
    init_test(&cd_S21148C18, buf);
    S21148C18 *dp, &lv = *(dp=new (buf) S21148C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1248), "sizeof(S21148C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C18)");
    /*is_ambiguous_... S21148C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(264,144), "S21148C18");
    /*is_ambiguous_... S21148C18::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(264,144), "S21148C18");
    check_base_class_offset(lv, (S19674C5*)(S21148C3*), ABISELECT(264,144), "S21148C18");
    check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*), ABISELECT(264,144), "S21148C18");
    /*is_ambiguous_... S21148C18::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(392,236), "S21148C18");
    /*is_ambiguous_... S21148C18::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*), ABISELECT(384,232), "S21148C18");
    check_base_class_offset(lv, (S21148C6*)(S21148C15*), ABISELECT(384,232), "S21148C18");
    /*is_ambiguous_... S21148C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C15*), ABISELECT(576,344), "S21148C18");
    check_base_class_offset(lv, (S21148C15*), ABISELECT(576,344), "S21148C18");
    /*is_ambiguous_... S21148C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21148C18");
    /*is_ambiguous_... S21148C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*), ABISELECT(1944,1192), "S21148C18");
    check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*), ABISELECT(968,572), "S21148C18");
    check_base_class_offset(lv, (S21148C6*)(S21148C3*), ABISELECT(960,568), "S21148C18");
    check_base_class_offset(lv, (S21148C3*), ABISELECT(960,568), "S21148C18");
    check_field_offset(lv, s21148c18f0, ABISELECT(120,60), "S21148C18.s21148c18f0");
    check_field_offset(lv, s21148c18f1, ABISELECT(124,64), "S21148C18.s21148c18f1");
    check_field_offset(lv, s21148c18f2, ABISELECT(128,68), "S21148C18.s21148c18f2");
    check_field_offset(lv, s21148c18f3, ABISELECT(240,124), "S21148C18.s21148c18f3");
    check_field_offset(lv, s21148c18f4, ABISELECT(241,125), "S21148C18.s21148c18f4");
    check_field_offset(lv, s21148c18f5, ABISELECT(244,128), "S21148C18.s21148c18f5");
    check_field_offset(lv, s21148c18f6, ABISELECT(248,132), "S21148C18.s21148c18f6");
    check_field_offset(lv, s21148c18f7, ABISELECT(256,136), "S21148C18.s21148c18f7");
    test_class_info(&lv, &cd_S21148C18);
    dp->~S21148C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C18(Test_S21148C18, "S21148C18", ABISELECT(2064,1248));

#else // __cplusplus

extern void _ZN9S21148C18C1Ev();
extern void _ZN9S21148C18D2Ev();
Name_Map name_map_S21148C18[] = {
  NSPAIR(_ZN9S21148C18C1Ev),
  NSPAIR(_ZN9S21148C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C15;
extern VTBL_ENTRY _ZTI9S21148C15[];
extern  VTBL_ENTRY _ZTV9S21148C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
static Base_Class bases_S21148C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(264,144), //bcp->offset
    11, //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_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(384,232), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21148C15,    ABISELECT(576,344), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(1944,1192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(968,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(960,568), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(960,568), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21148C18[];
extern void _ZN9S21148C18D1Ev();
extern void _ZN9S21148C18D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C18D1Ev,_ZThn144_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn264_N9S21148C18D0Ev,_ZThn144_N9S21148C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn384_N9S21148C18D1Ev,_ZThn232_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn384_N9S21148C18D0Ev,_ZThn232_N9S21148C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn576_N9S21148C18D1Ev,_ZThn344_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn576_N9S21148C18D0Ev,_ZThn344_N9S21148C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn960_N9S21148C18D1Ev,_ZThn568_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn960_N9S21148C18D0Ev,_ZThn568_N9S21148C18D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY vtc_S21148C18[] = {
  ABISELECT(1944,1192),
  ABISELECT(960,568),
  ABISELECT(576,344),
  ABISELECT(384,232),
  ABISELECT(264,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&_ZN9S21148C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev),
  ABISELECT(-384,-232),
  ABISELECT(-120,-88),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev),
  ABISELECT(-576,-344),
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  ABISELECT(-576,-344),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
  0,
  0,
  ABISELECT(-960,-568),
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  ABISELECT(-960,-568),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern VTBL_ENTRY _ZTV9S21148C18[];
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C18[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__9S21148C18[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void _ZN9S21148C15D1Ev();
extern void _ZN9S21148C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C18[] = {
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&_ZN9S21148C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C15__9S21148C18[] = {
  ABISELECT(192,112),
  ABISELECT(-120,-88),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C15__9S21148C18[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C18[] = {
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C3__A1__9S21148C18[] = {
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C3__A1__9S21148C18[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C3__9S21148C18[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
static  VTT_ENTRY vtt_S21148C18[] = {
  {&(_ZTV9S21148C18[7]),  7,40},
  {&(_ZTV9S21148C18[14]),  14,40},
  {&(_ZTV9S21148C18[20]),  20,40},
  {&(_ZTV9S21148C18[27]),  27,40},
  {&(_ZTV9S21148C18[36]),  36,40},
  {&(_tg__ZTV8S21148C6__9S21148C18[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__9S21148C18[3]),  3,5},
  {&(_tg__ZTV9S21148C15__9S21148C18[4]),  4,6},
  {&(_tg__ZTV8S21148C6__9S21148C15__9S21148C18[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21148C15__9S21148C18[3]),  3,5},
  {&(_tg__ZTV8S21148C3__9S21148C18[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C3__A1__9S21148C18[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C3__A1__9S21148C18[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C3__9S21148C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21148C18[];
extern  VTBL_ENTRY _ZTV9S21148C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C18[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S21148C18D0Ev,_ZThn568_N9S21148C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21148C18D0Ev,_ZThn344_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S21148C18D1Ev,_ZThn568_N9S21148C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21148C18D1Ev,_ZThn344_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21148C18D0Ev,_ZThn232_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21148C18D1Ev,_ZThn232_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21148C18D0Ev,_ZThn144_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21148C18D1Ev,_ZThn144_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C18 = {  "S21148C18", // class name
  bases_S21148C18, 10,
  &(vtc_S21148C18[0]), // expected_vtbl_contents
  &(vtt_S21148C18[0]), // expected_vtt_contents
  ABISELECT(2064,1248), // object size
  NSPAIRA(_ZTI9S21148C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21148C18),40, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21148C18),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C17  : S21148C18 , S21148C2 {
  ::S19674C18 s21148c17f0;
  int s21148c17f1;
  int s21148c17f2;
  int s21148c17f3;
  short s21148c17f4;
  virtual void  v6(); // _ZN9S21148C172v6Ev
  virtual void  v7(); // _ZN9S21148C172v7Ev
  ~S21148C17(); // tgen
  S21148C17(); // tgen
};
//SIG(-1 S21148C17) C1{ BC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC8{ VBC3 VBC5 BC4 v3 v4 FC4 FD[7] FC4 FL Fp[5]} vd v5 v6 Fi Fi FC5 Fc Fc Fi Fs FL} BC9{ VBC8 BC5 BC4 Fi Fi Fi:28 Fi Fl} v1 v2 FU10{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs}


void  S21148C17 ::v6(){vfunc_called(this, "_ZN9S21148C172v6Ev");}
void  S21148C17 ::v7(){vfunc_called(this, "_ZN9S21148C172v7Ev");}
S21148C17 ::~S21148C17(){ note_dtor("S21148C17", this);} // tgen
S21148C17 ::S21148C17(){ note_ctor("S21148C17", this);} // tgen

static void Test_S21148C17()
{
  extern Class_Descriptor cd_S21148C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(156,372)];
    init_test(&cd_S21148C17, buf);
    S21148C17 *dp, &lv = *(dp=new (buf) S21148C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2480,1484), "sizeof(S21148C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C17)");
    /*is_ambiguous_... S21148C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C18*), ABISELECT(672,380), "S21148C17");
    /*is_ambiguous_... S21148C17::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(672,380), "S21148C17");
    check_base_class_offset(lv, (S19674C5*)(S21148C3*), ABISELECT(672,380), "S21148C17");
    check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*), ABISELECT(672,380), "S21148C17");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*), ABISELECT(672,380), "S21148C17");
    /*is_ambiguous_... S21148C17::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(800,472), "S21148C17");
    /*is_ambiguous_... S21148C18::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C18*), ABISELECT(792,468), "S21148C17");
    check_base_class_offset(lv, (S21148C6*)(S21148C15*), ABISELECT(792,468), "S21148C17");
    /*is_ambiguous_... S21148C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C15*), ABISELECT(992,580), "S21148C17");
    check_base_class_offset(lv, (S21148C15*)(S21148C18*), ABISELECT(992,580), "S21148C17");
    /*is_ambiguous_... S21148C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C18*), ABISELECT(8,4), "S21148C17");
    /*is_ambiguous_... S21148C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*), ABISELECT(2360,1428), "S21148C17");
    check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*), ABISELECT(1384,808), "S21148C17");
    check_base_class_offset(lv, (S21148C6*)(S21148C3*), ABISELECT(1376,804), "S21148C17");
    check_base_class_offset(lv, (S21148C3*)(S21148C18*), ABISELECT(1376,804), "S21148C17");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*), ABISELECT(1376,804), "S21148C17");
    check_base_class_offset(lv, (S21148C18*), 0, "S21148C17");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*), ABISELECT(456,256), "S21148C17");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*), ABISELECT(272,148), "S21148C17");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*), ABISELECT(264,144), "S21148C17");
    check_base_class_offset(lv, (S21148C2*), ABISELECT(264,144), "S21148C17");
    check_field_offset(lv, s21148c17f0, ABISELECT(592,332), "S21148C17.s21148c17f0");
    check_field_offset(lv, s21148c17f1, ABISELECT(656,364), "S21148C17.s21148c17f1");
    check_field_offset(lv, s21148c17f2, ABISELECT(660,368), "S21148C17.s21148c17f2");
    check_field_offset(lv, s21148c17f3, ABISELECT(664,372), "S21148C17.s21148c17f3");
    check_field_offset(lv, s21148c17f4, ABISELECT(668,376), "S21148C17.s21148c17f4");
    test_class_info(&lv, &cd_S21148C17);
    dp->~S21148C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C17(Test_S21148C17, "S21148C17", ABISELECT(2480,1484));

#else // __cplusplus

extern void _ZN9S21148C17C1Ev();
extern void _ZN9S21148C17D1Ev();
Name_Map name_map_S21148C17[] = {
  NSPAIR(_ZN9S21148C17C1Ev),
  NSPAIR(_ZN9S21148C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C15;
extern VTBL_ENTRY _ZTI9S21148C15[];
extern  VTBL_ENTRY _ZTV9S21148C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S21148C18;
extern VTBL_ENTRY _ZTI9S21148C18[];
extern  VTBL_ENTRY _ZTV9S21148C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
static Base_Class bases_S21148C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(800,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
    2, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(792,468), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(992,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21148C15,    ABISELECT(992,580), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2360,1428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1384,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(1376,804), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(1376,804), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21148C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(264,144), //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
    14, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(264,144), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //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 _ZTI9S21148C17[];
extern void _ZN9S21148C17D1Ev();
extern void _ZN9S21148C17D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
extern void ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn672_N9S21148C17D1Ev,_ZThn380_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn672_N9S21148C17D0Ev,_ZThn380_N9S21148C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn792_N9S21148C17D1Ev,_ZThn468_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn792_N9S21148C17D0Ev,_ZThn468_N9S21148C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn992_N9S21148C17D1Ev,_ZThn580_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn992_N9S21148C17D0Ev,_ZThn580_N9S21148C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn1376_N9S21148C17D1Ev,_ZThn804_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn1376_N9S21148C17D0Ev,_ZThn804_N9S21148C17D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY vtc_S21148C17[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&_ZN9S21148C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev),
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev),
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern VTBL_ENTRY _ZTV9S21148C17[];
extern void _ZN9S21148C18D1Ev();
extern void _ZN9S21148C18D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C18__9S21148C17[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&_ZN9S21148C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn672_N9S21148C18D1Ev,_ZThn380_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn672_N9S21148C18D0Ev,_ZThn380_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C18__9S21148C17[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn792_N9S21148C18D1Ev,_ZThn468_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn792_N9S21148C18D0Ev,_ZThn468_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C18__9S21148C17[] = {
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn992_N9S21148C18D1Ev,_ZThn580_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn992_N9S21148C18D0Ev,_ZThn580_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C18__9S21148C17[] = {
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn1376_N9S21148C18D1Ev,_ZThn804_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn1376_N9S21148C18D0Ev,_ZThn804_N9S21148C18D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C18__9S21148C17[] = {
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C17[] = {
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C2__A2__9S21148C17[] = {
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn408_N8S21148C6D1Ev,_ZThn236_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn408_N8S21148C6D0Ev,_ZThn236_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C2__A2__9S21148C17[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn1112_N8S21148C2D1Ev,_ZThn660_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn1112_N8S21148C2D0Ev,_ZThn660_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C2__9S21148C17[] = {
  0,
  0,
  ABISELECT(-1112,-660),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1112,-660),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn408_N8S21148C2D1Ev,_ZThn236_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn408_N8S21148C2D0Ev,_ZThn236_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C2__9S21148C17[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C17[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__9S21148C17[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void _ZN9S21148C15D1Ev();
extern void _ZN9S21148C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C17[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&_ZN9S21148C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C15__9S21148C17[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C15__9S21148C17[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C17[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C3__A1__9S21148C17[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C3__A1__9S21148C17[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C3__9S21148C17[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
static  VTT_ENTRY vtt_S21148C17[] = {
  {&(_ZTV9S21148C17[7]),  7,49},
  {&(_tg__ZTV9S21148C18__9S21148C17[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C18__9S21148C17[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C18__9S21148C17[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C18__9S21148C17[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C18__9S21148C17[7]),  7,11},
  {&(_tg__ZTV8S21148C2__9S21148C17[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C2__A2__9S21148C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C2__A2__9S21148C17[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C2__9S21148C17[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C2__9S21148C17[3]),  3,5},
  {&(_ZTV9S21148C17[23]),  23,49},
  {&(_ZTV9S21148C17[29]),  29,49},
  {&(_ZTV9S21148C17[36]),  36,49},
  {&(_ZTV9S21148C17[45]),  45,49},
  {&(_ZTV9S21148C17[18]),  18,49},
  {&(_tg__ZTV8S21148C6__9S21148C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__9S21148C17[3]),  3,5},
  {&(_tg__ZTV9S21148C15__9S21148C17[4]),  4,6},
  {&(_tg__ZTV8S21148C6__9S21148C15__9S21148C17[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21148C15__9S21148C17[3]),  3,5},
  {&(_tg__ZTV8S21148C3__9S21148C17[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C3__A1__9S21148C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C3__A1__9S21148C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C3__9S21148C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21148C17[];
extern  VTBL_ENTRY _ZTV9S21148C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C17[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21148C2D0Ev,_ZThn236_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21148C2D1Ev,_ZThn236_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N8S21148C2D0Ev,_ZThn660_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N8S21148C2D1Ev,_ZThn660_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21148C6D0Ev,_ZThn236_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21148C6D1Ev,_ZThn236_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21148C18D0Ev,_ZThn804_N9S21148C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21148C18D0Ev,_ZThn580_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21148C18D1Ev,_ZThn804_N9S21148C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21148C18D1Ev,_ZThn580_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21148C18D0Ev,_ZThn468_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21148C18D1Ev,_ZThn468_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21148C18D0Ev,_ZThn380_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21148C18D1Ev,_ZThn380_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21148C17D0Ev,_ZThn804_N9S21148C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21148C17D0Ev,_ZThn580_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21148C17D1Ev,_ZThn804_N9S21148C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21148C17D1Ev,_ZThn580_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21148C17D0Ev,_ZThn468_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21148C17D1Ev,_ZThn468_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21148C17D0Ev,_ZThn380_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21148C17D1Ev,_ZThn380_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C17 = {  "S21148C17", // class name
  bases_S21148C17, 15,
  &(vtc_S21148C17[0]), // expected_vtbl_contents
  &(vtt_S21148C17[0]), // expected_vtt_contents
  ABISELECT(2480,1484), // object size
  NSPAIRA(_ZTI9S21148C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21148C17),49, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21148C17),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C16  : virtual S21148C3 , virtual S21148C2 , S21148C17 , S19674C5 {
  ::S19674C7 s21148c16f0;
  int s21148c16f1[10];
  int s21148c16f2;
  ::S21148C9 s21148c16f3;
  short s21148c16f4;
  int s21148c16f5;
  __tsi64 s21148c16f6;
  virtual  ~S21148C16(); // _ZN9S21148C16D2Ev
  S21148C16(); // tgen
};
//SIG(-1 S21148C16) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} VBC7{ VBC2 BC4 BC5 Fi Fi Fi:28 Fi Fl} BC8{ BC9{ VBC3 VBC5 VBC10{ VBC5 BC3 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC2 vd v3 v4 Fi Fi FC4 Fc Fc Fi Fs FL} BC7 v5 v6 FU11{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC3 vd FC4 Fi[10] Fi FC12{ VBC3 v7} Fs Fi FL}


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

static void Test_S21148C16()
{
  extern Class_Descriptor cd_S21148C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(203,493)];
    init_test(&cd_S21148C16, buf);
    S21148C16 *dp, &lv = *(dp=new (buf) S21148C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3232,1968), "sizeof(S21148C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C16)");
    check_base_class_offset(lv, (S19674C5*)(S21148C3*), ABISELECT(2088,1300), "S21148C16");
    check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*), ABISELECT(2088,1300), "S21148C16");
    /*is_ambiguous_... S21148C16::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*), ABISELECT(2088,1300), "S21148C16");
    /*is_ambiguous_... S21148C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C18*)(S21148C17*), ABISELECT(2088,1300), "S21148C16");
    /*is_ambiguous_... S21148C16::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(2088,1300), "S21148C16");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*)(S21148C17*), ABISELECT(2088,1300), "S21148C16");
    /*is_ambiguous_... S21148C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*), ABISELECT(2208,1388), "S21148C16");
    check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*), ABISELECT(1112,680), "S21148C16");
    check_base_class_offset(lv, (S21148C6*)(S21148C3*), ABISELECT(1104,676), "S21148C16");
    check_base_class_offset(lv, (S21148C3*), ABISELECT(1104,676), "S21148C16");
    /*is_ambiguous_... S21148C16::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C3*)(S21148C2*), ABISELECT(1104,676), "S21148C16");
    check_base_class_offset(lv, (S21148C3*)(S21148C18*)(S21148C17*), ABISELECT(1104,676), "S21148C16");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*)(S21148C17*), ABISELECT(1104,676), "S21148C16");
    /*is_ambiguous_... S21148C16::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*), ABISELECT(2512,1556), "S21148C16");
    /*is_ambiguous_... S21148C16::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*), ABISELECT(2328,1448), "S21148C16");
    /*is_ambiguous_... S21148C16::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*), ABISELECT(2320,1444), "S21148C16");
    /*is_ambiguous_... S21148C16::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C2*), ABISELECT(2320,1444), "S21148C16");
    /*is_ambiguous_... S21148C16::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(2656,1636), "S21148C16");
    /*is_ambiguous_... S21148C18::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C18*)(S21148C17*), ABISELECT(2648,1632), "S21148C16");
    check_base_class_offset(lv, (S21148C6*)(S21148C15*), ABISELECT(2648,1632), "S21148C16");
    /*is_ambiguous_... S21148C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C15*), ABISELECT(2848,1744), "S21148C16");
    check_base_class_offset(lv, (S21148C15*)(S21148C18*)(S21148C17*), ABISELECT(2848,1744), "S21148C16");
    /*is_ambiguous_... S21148C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C18*)(S21148C17*), ABISELECT(8,4), "S21148C16");
    check_base_class_offset(lv, (S21148C18*)(S21148C17*), 0, "S21148C16");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*)(S21148C17*), ABISELECT(456,256), "S21148C16");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*)(S21148C17*), ABISELECT(272,148), "S21148C16");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*)(S21148C17*), ABISELECT(264,144), "S21148C16");
    check_base_class_offset(lv, (S21148C2*)(S21148C17*), ABISELECT(264,144), "S21148C16");
    check_base_class_offset(lv, (S21148C17*), 0, "S21148C16");
    /*is_ambiguous_... S21148C16::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(672,380), "S21148C16");
    check_field_offset(lv, s21148c16f0, ABISELECT(792,468), "S21148C16.s21148c16f0");
    check_field_offset(lv, s21148c16f1, ABISELECT(904,524), "S21148C16.s21148c16f1");
    check_field_offset(lv, s21148c16f2, ABISELECT(944,564), "S21148C16.s21148c16f2");
    check_field_offset(lv, s21148c16f3, ABISELECT(952,568), "S21148C16.s21148c16f3");
    check_field_offset(lv, s21148c16f4, ABISELECT(1080,660), "S21148C16.s21148c16f4");
    check_field_offset(lv, s21148c16f5, ABISELECT(1084,664), "S21148C16.s21148c16f5");
    check_field_offset(lv, s21148c16f6, ABISELECT(1088,668), "S21148C16.s21148c16f6");
    test_class_info(&lv, &cd_S21148C16);
    dp->~S21148C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C16(Test_S21148C16, "S21148C16", ABISELECT(3232,1968));

#else // __cplusplus

extern void _ZN9S21148C16C1Ev();
extern void _ZN9S21148C16D2Ev();
Name_Map name_map_S21148C16[] = {
  NSPAIR(_ZN9S21148C16C1Ev),
  NSPAIR(_ZN9S21148C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C15;
extern VTBL_ENTRY _ZTI9S21148C15[];
extern  VTBL_ENTRY _ZTV9S21148C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C18;
extern VTBL_ENTRY _ZTI9S21148C18[];
extern  VTBL_ENTRY _ZTV9S21148C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S21148C17;
extern VTBL_ENTRY _ZTI9S21148C17[];
extern  VTBL_ENTRY _ZTV9S21148C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C17[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21148C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(2088,1300), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2208,1388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(1112,680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(1104,676), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(1104,676), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(2512,1556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2328,1448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(2320,1444), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(2320,1444), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(2656,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21148C6,    ABISELECT(2648,1632), //bcp->offset
    49, //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
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(2848,1744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21148C15,    ABISELECT(2848,1744), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(264,144), //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
    18, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(264,144), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21148C17,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21148C16[];
extern void _ZN9S21148C16D1Ev();
extern void _ZN9S21148C16D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
extern void ABISELECT(_ZThn264_N9S21148C16D1Ev,_ZThn144_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C16D0Ev,_ZThn144_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn672_N9S21148C16D1Ev,_ZThn380_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn672_N9S21148C16D0Ev,_ZThn380_N9S21148C16D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn1104_N9S21148C16D1Ev,_ZThn676_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn1104_N9S21148C16D0Ev,_ZThn676_N9S21148C16D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn2088_N9S21148C16D1Ev,_ZThn1300_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn2088_N9S21148C16D0Ev,_ZThn1300_N9S21148C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn2320_N9S21148C16D1Ev,_ZThn1444_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn2320_N9S21148C16D0Ev,_ZThn1444_N9S21148C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn2648_N9S21148C16D1Ev,_ZThn1632_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn2648_N9S21148C16D0Ev,_ZThn1632_N9S21148C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn2848_N9S21148C16D1Ev,_ZThn1744_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn2848_N9S21148C16D0Ev,_ZThn1744_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C16[] = {
  ABISELECT(2320,1444),
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&_ZN9S21148C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C16D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C16D1Ev,_ZThn144_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C16D0Ev,_ZThn144_N9S21148C16D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21148C16D1Ev,_ZThn380_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21148C16D0Ev,_ZThn380_N9S21148C16D0Ev),
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev),
  ABISELECT(-2320,-1444),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(-2320,-1444),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev),
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev),
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21148C16[];
extern void _ZN9S21148C17D1Ev();
extern void _ZN9S21148C17D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C17__9S21148C16[] = {
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&_ZN9S21148C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C18D1Ev();
extern void _ZN9S21148C18D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C189S21148C17__9S21148C16[] = {
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&_ZN9S21148C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn2088_N9S21148C18D1Ev,_ZThn1300_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn2088_N9S21148C18D0Ev,_ZThn1300_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C189S21148C17__9S21148C16[] = {
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn2648_N9S21148C18D1Ev,_ZThn1632_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn2648_N9S21148C18D0Ev,_ZThn1632_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C189S21148C17__9S21148C16[] = {
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn2848_N9S21148C18D1Ev,_ZThn1744_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn2848_N9S21148C18D0Ev,_ZThn1744_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C189S21148C17__9S21148C16[] = {
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn1104_N9S21148C18D1Ev,_ZThn676_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn1104_N9S21148C18D0Ev,_ZThn676_N9S21148C18D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C189S21148C17__9S21148C16[] = {
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C17__A1__9S21148C16[] = {
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C29S21148C17__A3__9S21148C16[] = {
  ABISELECT(1824,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn1824_N8S21148C6D1Ev,_ZThn1156_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn1824_N8S21148C6D0Ev,_ZThn1156_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C29S21148C17__A3__9S21148C16[] = {
  ABISELECT(-1824,-1156),
  ABISELECT(-1824,-1156),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn840_N8S21148C2D1Ev,_ZThn532_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn840_N8S21148C2D0Ev,_ZThn532_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C29S21148C17__A1__9S21148C16[] = {
  0,
  0,
  ABISELECT(-840,-532),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn1824_N8S21148C2D1Ev,_ZThn1156_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn1824_N8S21148C2D0Ev,_ZThn1156_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C29S21148C17__A1__9S21148C16[] = {
  ABISELECT(-1824,-1156),
  ABISELECT(-1824,-1156),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn2088_N9S21148C17D1Ev,_ZThn1300_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn2088_N9S21148C17D0Ev,_ZThn1300_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C17__9S21148C16[] = {
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn2648_N9S21148C17D1Ev,_ZThn1632_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn2648_N9S21148C17D0Ev,_ZThn1632_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C17__9S21148C16[] = {
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn2848_N9S21148C17D1Ev,_ZThn1744_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn2848_N9S21148C17D0Ev,_ZThn1744_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C17__9S21148C16[] = {
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn1104_N9S21148C17D1Ev,_ZThn676_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn1104_N9S21148C17D0Ev,_ZThn676_N9S21148C17D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C17__9S21148C16[] = {
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C17__9S21148C16[] = {
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C16[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C3__9S21148C16[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C3__9S21148C16[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C3__9S21148C16[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C16[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C2__A1__9S21148C16[] = {
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C2__A1__9S21148C16[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C2__9S21148C16[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C2__9S21148C16[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C16[] = {
  ABISELECT(-560,-332),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__A2__9S21148C16[] = {
  ABISELECT(560,332),
  ABISELECT(560,332),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void _ZN9S21148C15D1Ev();
extern void _ZN9S21148C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C16[] = {
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&_ZN9S21148C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C15__9S21148C16[] = {
  ABISELECT(200,112),
  ABISELECT(-560,-332),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C15__9S21148C16[] = {
  ABISELECT(760,444),
  ABISELECT(760,444),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev),
};
static  VTT_ENTRY vtt_S21148C16[] = {
  {&(_ZTV9S21148C16[8]),  8,62},
  {&(_tg__ZTV9S21148C17__9S21148C16[7]),  7,13},
  {&(_tg__ZTV9S21148C189S21148C17__9S21148C16[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C189S21148C17__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C189S21148C17__9S21148C16[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C189S21148C17__9S21148C16[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C189S21148C17__9S21148C16[7]),  7,11},
  {&(_tg__ZTV8S21148C29S21148C17__A1__9S21148C16[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C29S21148C17__A3__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C29S21148C17__A3__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C29S21148C17__A1__9S21148C16[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C29S21148C17__A1__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21148C17__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C17__9S21148C16[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C17__9S21148C16[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C17__9S21148C16[7]),  7,11},
  {&(_tg__ZTV8S21148C2__9S21148C17__9S21148C16[5]),  5,7},
  {&(_ZTV9S21148C16[32]),  32,62},
  {&(_ZTV9S21148C16[39]),  39,62},
  {&(_ZTV9S21148C16[47]),  47,62},
  {&(_ZTV9S21148C16[53]),  53,62},
  {&(_ZTV9S21148C16[60]),  60,62},
  {&(_ZTV9S21148C16[19]),  19,62},
  {&(_tg__ZTV8S21148C3__9S21148C16[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C3__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C3__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C3__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S21148C2__9S21148C16[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C2__A1__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C2__A1__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C2__9S21148C16[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C2__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A2__9S21148C16[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__A2__9S21148C16[3]),  3,5},
  {&(_tg__ZTV9S21148C15__9S21148C16[4]),  4,6},
  {&(_tg__ZTV8S21148C6__9S21148C15__9S21148C16[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21148C15__9S21148C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21148C16[];
extern  VTBL_ENTRY _ZTV9S21148C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C16[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21148C17D0Ev,_ZThn676_N9S21148C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21148C17D0Ev,_ZThn1744_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21148C17D1Ev,_ZThn676_N9S21148C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21148C17D1Ev,_ZThn1744_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21148C17D0Ev,_ZThn1632_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21148C17D1Ev,_ZThn1632_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21148C17D0Ev,_ZThn1300_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21148C17D1Ev,_ZThn1300_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21148C2D0Ev,_ZThn1156_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21148C2D1Ev,_ZThn1156_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn840_N8S21148C2D0Ev,_ZThn532_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn840_N8S21148C2D1Ev,_ZThn532_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21148C6D0Ev,_ZThn1156_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N8S21148C6D1Ev,_ZThn1156_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21148C18D0Ev,_ZThn676_N9S21148C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21148C18D0Ev,_ZThn1744_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21148C18D1Ev,_ZThn676_N9S21148C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21148C18D1Ev,_ZThn1744_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21148C18D0Ev,_ZThn1632_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21148C18D1Ev,_ZThn1632_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21148C18D0Ev,_ZThn1300_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21148C18D1Ev,_ZThn1300_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21148C16D0Ev,_ZThn1632_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N9S21148C16D1Ev,_ZThn1632_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2320_N9S21148C16D0Ev,_ZThn1444_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2320_N9S21148C16D1Ev,_ZThn1444_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21148C16D0Ev,_ZThn1300_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N9S21148C16D1Ev,_ZThn1300_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21148C16D0Ev,_ZThn1744_N9S21148C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21148C16D0Ev,_ZThn676_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S21148C16D1Ev,_ZThn1744_N9S21148C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S21148C16D1Ev,_ZThn676_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C16 = {  "S21148C16", // class name
  bases_S21148C16, 21,
  &(vtc_S21148C16[0]), // expected_vtbl_contents
  &(vtt_S21148C16[0]), // expected_vtt_contents
  ABISELECT(3232,1968), // object size
  NSPAIRA(_ZTI9S21148C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21148C16),62, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21148C16),37, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C20  : virtual S19674C5 , S21148C6 , virtual S21148C15 {
  long double s21148c20f0;
  void *s21148c20f1;
  void *s21148c20f2;
  ~S21148C20(); // tgen
  S21148C20(); // tgen
};
//SIG(-1 S21148C20) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} FD Fp Fp}


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

static void Test_S21148C20()
{
  extern Class_Descriptor cd_S21148C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,140)];
    init_test(&cd_S21148C20, buf);
    S21148C20 *dp, &lv = *(dp=new (buf) S21148C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,556), "sizeof(S21148C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C20)");
    /*is_ambiguous_... S21148C20::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(224,132), "S21148C20");
    /*is_ambiguous_... S21148C20::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(224,132), "S21148C20");
    /*is_ambiguous_... S21148C20::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(224,132), "S21148C20");
    /*is_ambiguous_... S21148C20::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(8,4), "S21148C20");
    /*is_ambiguous_... S21148C20::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*), 0, "S21148C20");
    /*is_ambiguous_... S21148C20::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(744,448), "S21148C20");
    check_base_class_offset(lv, (S21148C6*)(S21148C15*), ABISELECT(736,444), "S21148C20");
    /*is_ambiguous_... S21148C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C15*), ABISELECT(352,220), "S21148C20");
    check_base_class_offset(lv, (S21148C15*), ABISELECT(352,220), "S21148C20");
    check_field_offset(lv, s21148c20f0, ABISELECT(192,112), "S21148C20.s21148c20f0");
    check_field_offset(lv, s21148c20f1, ABISELECT(208,124), "S21148C20.s21148c20f1");
    check_field_offset(lv, s21148c20f2, ABISELECT(216,128), "S21148C20.s21148c20f2");
    test_class_info(&lv, &cd_S21148C20);
    dp->~S21148C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C20(Test_S21148C20, "S21148C20", ABISELECT(928,556));

#else // __cplusplus

extern void _ZN9S21148C20C1Ev();
extern void _ZN9S21148C20D1Ev();
Name_Map name_map_S21148C20[] = {
  NSPAIR(_ZN9S21148C20C1Ev),
  NSPAIR(_ZN9S21148C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C15;
extern VTBL_ENTRY _ZTI9S21148C15[];
extern  VTBL_ENTRY _ZTV9S21148C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C15[];
static Base_Class bases_S21148C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(224,132), //bcp->offset
    7, //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_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21148C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(744,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(736,444), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(352,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21148C15,    ABISELECT(352,220), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21148C20[];
extern void _ZN9S21148C20D1Ev();
extern void _ZN9S21148C20D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21148C20D1Ev,_ZTv0_n12_N9S21148C20D1Ev)();
extern void ABISELECT(_ZThn224_N9S21148C20D1Ev,_ZThn132_N9S21148C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C20D0Ev,_ZTv0_n12_N9S21148C20D0Ev)();
extern void ABISELECT(_ZThn224_N9S21148C20D0Ev,_ZThn132_N9S21148C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C20D1Ev,_ZTv0_n20_N9S21148C20D1Ev)();
extern void ABISELECT(_ZThn352_N9S21148C20D1Ev,_ZThn220_N9S21148C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C20D0Ev,_ZTv0_n20_N9S21148C20D0Ev)();
extern void ABISELECT(_ZThn352_N9S21148C20D0Ev,_ZThn220_N9S21148C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C20D1Ev,_ZTv0_n16_N9S21148C20D1Ev)();
extern void ABISELECT(_ZThn736_N9S21148C20D1Ev,_ZThn444_N9S21148C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C20D0Ev,_ZTv0_n16_N9S21148C20D0Ev)();
extern void ABISELECT(_ZThn736_N9S21148C20D0Ev,_ZThn444_N9S21148C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C20[] = {
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C20[0]),
  (VTBL_ENTRY)&_ZN9S21148C20D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C20D0Ev,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S21148C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C20D1Ev,_ZTv0_n12_N9S21148C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C20D0Ev,_ZTv0_n12_N9S21148C20D0Ev),
  ABISELECT(-352,-220),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI9S21148C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C20D1Ev,_ZTv0_n20_N9S21148C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C20D0Ev,_ZTv0_n20_N9S21148C20D0Ev),
  ABISELECT(-736,-444),
  ABISELECT(-512,-312),
  ABISELECT(-736,-444),
  (VTBL_ENTRY)&(_ZTI9S21148C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C20D1Ev,_ZTv0_n16_N9S21148C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C20D0Ev,_ZTv0_n16_N9S21148C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S21148C20[];
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A__9S21148C20[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn224_N8S21148C6D1Ev,_ZThn132_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn224_N8S21148C6D0Ev,_ZThn132_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__A__9S21148C20[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void _ZN9S21148C15D1Ev();
extern void _ZN9S21148C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C20[] = {
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&_ZN9S21148C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev)();
extern void ABISELECT(_ZThn384_N9S21148C15D1Ev,_ZThn224_N9S21148C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev)();
extern void ABISELECT(_ZThn384_N9S21148C15D0Ev,_ZThn224_N9S21148C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C15__9S21148C20[] = {
  ABISELECT(-384,-224),
  ABISELECT(-512,-312),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C15__9S21148C20[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev),
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A1__9S21148C20[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__A1__9S21148C20[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
static  VTT_ENTRY vtt_S21148C20[] = {
  {&(_ZTV9S21148C20[5]),  5,25},
  {&(_tg__ZTV8S21148C6__A__9S21148C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__A__9S21148C20[3]),  3,5},
  {&(_ZTV9S21148C20[10]),  10,25},
  {&(_ZTV9S21148C20[17]),  17,25},
  {&(_ZTV9S21148C20[23]),  23,25},
  {&(_tg__ZTV9S21148C15__9S21148C20[4]),  4,6},
  {&(_tg__ZTV8S21148C6__9S21148C15__9S21148C20[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21148C15__9S21148C20[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A1__9S21148C20[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__A1__9S21148C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21148C20[];
extern  VTBL_ENTRY _ZTV9S21148C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C20[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21148C15D0Ev,_ZThn224_N9S21148C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21148C15D1Ev,_ZThn224_N9S21148C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21148C6D0Ev,_ZThn132_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21148C6D1Ev,_ZThn132_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C20D0Ev,_ZTv0_n16_N9S21148C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S21148C20D0Ev,_ZThn444_N9S21148C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C20D1Ev,_ZTv0_n16_N9S21148C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S21148C20D1Ev,_ZThn444_N9S21148C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C20D0Ev,_ZTv0_n20_N9S21148C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S21148C20D0Ev,_ZThn220_N9S21148C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C20D1Ev,_ZTv0_n20_N9S21148C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S21148C20D1Ev,_ZThn220_N9S21148C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C20D0Ev,_ZTv0_n12_N9S21148C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21148C20D0Ev,_ZThn132_N9S21148C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C20D1Ev,_ZTv0_n12_N9S21148C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21148C20D1Ev,_ZThn132_N9S21148C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C20 = {  "S21148C20", // class name
  bases_S21148C20, 7,
  &(vtc_S21148C20[0]), // expected_vtbl_contents
  &(vtt_S21148C20[0]), // expected_vtt_contents
  ABISELECT(928,556), // object size
  NSPAIRA(_ZTI9S21148C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21148C20),25, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21148C20),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C12  : virtual S21148C2 , virtual S19674C2 , S21148C16 , virtual S21148C8 {
  ::S21148C15 s21148c12f0;
  int s21148c12f1;
  ::S21148C20 s21148c12f2;
  long double s21148c12f3;
  short s21148c12f4[3];
  int  :0;
  int s21148c12f6;
  ~S21148C12(); // tgen
  S21148C12(); // tgen
};
//SIG(-1 S21148C12) C1{ VBC2{ VBC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ m Fp[14]} BC6{ VBC4 BC5 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC5 BC6 Fi Fi Fi:28 Fi Fl} VBC8{ m FC9{ VBC10{ VBC4 v8} VBC11{ VBC4 VBC5 BC12{ VBC4 BC5 Fs[6] FL[3] FU7} v9 v10 FC12 FD[7] FC12 FL Fp[5]} vd FC13{ VBC12 BC4 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC11 Fi Fi FC10}[5] Fp} BC14{ VBC3 VBC2 BC15{ BC16{ VBC4 VBC6 VBC17{ VBC6 BC4 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC3 vd v3 v4 Fi Fi FC5 Fc Fc Fi Fs FL} BC2 v5 v6 FU18{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC4 vd FC5 Fi[10] Fi FC19{ VBC4 v7} Fs Fi FL} VBC20{ VBC5 BC2 BC3 VBC6 VBC19 vd Fi Fi Fi FD Fp Fp FC6 Fp FC3 Fi Fp Fi FC4[8]} FC17 Fi FC21{ VBC4 BC6 VBC17 FD Fp Fp} FD Fs[3] Fi:0 Fi}


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

static void Test_S21148C12()
{
  extern Class_Descriptor cd_S21148C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2468,6090)];
    init_test(&cd_S21148C12, buf);
    S21148C12 *dp, &lv = *(dp=new (buf) S21148C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39472,24356), "sizeof(S21148C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C12)");
    /*is_ambiguous_... S21148C12::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C3*), ABISELECT(4104,2496), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*), ABISELECT(4104,2496), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*), ABISELECT(4104,2496), "S21148C12");
    /*is_ambiguous_... S21148C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C18*)(S21148C17*)(S21148C16*), ABISELECT(4104,2496), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(4104,2496), "S21148C12");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*), ABISELECT(4104,2496), "S21148C12");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(4104,2496), "S21148C12");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C3*)(S21148C8*), ABISELECT(4104,2496), "S21148C12");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(4104,2496), "S21148C12");
    check_base_class_offset(lv, (S19674C5*)(S21148C9*), ABISELECT(4104,2496), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*), ABISELECT(4224,2584), "S21148C12");
    /*is_ambiguous_... S21148C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C8*), ABISELECT(4224,2584), "S21148C12");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*)(S21148C8*), ABISELECT(4224,2584), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*), ABISELECT(3128,1876), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C3*), ABISELECT(3120,1872), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C3*)(S21148C2*), ABISELECT(3120,1872), "S21148C12");
    check_base_class_offset(lv, (S21148C3*)(S21148C16*), ABISELECT(3120,1872), "S21148C12");
    check_base_class_offset(lv, (S21148C3*)(S21148C18*)(S21148C17*)(S21148C16*), ABISELECT(3120,1872), "S21148C12");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*)(S21148C17*)(S21148C16*), ABISELECT(3120,1872), "S21148C12");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*)(S21148C8*), ABISELECT(3120,1872), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*), ABISELECT(2976,1796), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*), ABISELECT(2792,1688), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*), ABISELECT(2784,1684), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C2*), ABISELECT(2784,1684), "S21148C12");
    /*is_ambiguous_... S21148C16::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C2*)(S21148C16*), ABISELECT(2784,1684), "S21148C12");
    check_base_class_offset(lv, (S19674C2*), ABISELECT(4336,2640), "S21148C12");
    /*is_ambiguous_... S21148C12::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(34992,21488), "S21148C12");
    /*is_ambiguous_... S21148C18::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C18*)(S21148C17*)(S21148C16*), ABISELECT(34984,21484), "S21148C12");
    check_base_class_offset(lv, (S21148C6*)(S21148C15*), ABISELECT(34984,21484), "S21148C12");
    /*is_ambiguous_... S21148C8::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C8*), ABISELECT(34984,21484), "S21148C12");
    /*is_ambiguous_... S21148C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C15*), ABISELECT(35184,21596), "S21148C12");
    check_base_class_offset(lv, (S21148C15*)(S21148C18*)(S21148C17*)(S21148C16*), ABISELECT(35184,21596), "S21148C12");
    /*is_ambiguous_... S21148C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C18*)(S21148C17*)(S21148C16*), ABISELECT(8,4), "S21148C12");
    check_base_class_offset(lv, (S21148C18*)(S21148C17*)(S21148C16*), 0, "S21148C12");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*)(S21148C17*)(S21148C16*), ABISELECT(456,256), "S21148C12");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*), ABISELECT(272,148), "S21148C12");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*), ABISELECT(264,144), "S21148C12");
    check_base_class_offset(lv, (S21148C2*)(S21148C17*)(S21148C16*), ABISELECT(264,144), "S21148C12");
    check_base_class_offset(lv, (S21148C17*)(S21148C16*), 0, "S21148C12");
    /*is_ambiguous_... S21148C16::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C16*), ABISELECT(672,380), "S21148C12");
    check_base_class_offset(lv, (S21148C16*), 0, "S21148C12");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*)(S21148C8*), ABISELECT(35760,21932), "S21148C12");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(35576,21824), "S21148C12");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(35568,21820), "S21148C12");
    check_base_class_offset(lv, (S21148C2*)(S21148C8*), ABISELECT(35568,21820), "S21148C12");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(35912,22012), "S21148C12");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(35904,22008), "S21148C12");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C3*)(S21148C8*), ABISELECT(35904,22008), "S21148C12");
    check_base_class_offset(lv, (S21148C9*)(S21148C8*), ABISELECT(39464,24352), "S21148C12");
    check_base_class_offset(lv, (S21148C8*), ABISELECT(35568,21820), "S21148C12");
    check_field_offset(lv, s21148c12f0, ABISELECT(1104,676), "S21148C12.s21148c12f0");
    check_field_offset(lv, s21148c12f1, ABISELECT(1808,1100), "S21148C12.s21148c12f1");
    check_field_offset(lv, s21148c12f2, ABISELECT(1824,1104), "S21148C12.s21148c12f2");
    check_field_offset(lv, s21148c12f3, ABISELECT(2752,1660), "S21148C12.s21148c12f3");
    check_field_offset(lv, s21148c12f4, ABISELECT(2768,1672), "S21148C12.s21148c12f4");
    check_field_offset(lv, s21148c12f6, ABISELECT(2776,1680), "S21148C12.s21148c12f6");
    test_class_info(&lv, &cd_S21148C12);
    dp->~S21148C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C12(Test_S21148C12, "S21148C12", ABISELECT(39472,24356));

#else // __cplusplus

extern void _ZN9S21148C12C1Ev();
extern void _ZN9S21148C12D1Ev();
Name_Map name_map_S21148C12[] = {
  NSPAIR(_ZN9S21148C12C1Ev),
  NSPAIR(_ZN9S21148C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C15;
extern VTBL_ENTRY _ZTI9S21148C15[];
extern  VTBL_ENTRY _ZTV9S21148C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C18;
extern VTBL_ENTRY _ZTI9S21148C18[];
extern  VTBL_ENTRY _ZTV9S21148C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S21148C17;
extern VTBL_ENTRY _ZTI9S21148C17[];
extern  VTBL_ENTRY _ZTV9S21148C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C17[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C16;
extern VTBL_ENTRY _ZTI9S21148C16[];
extern  VTBL_ENTRY _ZTV9S21148C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C16[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S21148C9;
extern VTBL_ENTRY _ZTI8S21148C9[];
extern  VTBL_ENTRY _ZTV8S21148C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C9[];
extern Class_Descriptor cd_S21148C8;
extern VTBL_ENTRY _ZTI8S21148C8[];
extern  VTBL_ENTRY _ZTV8S21148C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C8[];
static Base_Class bases_S21148C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(4104,2496), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4224,2584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(3128,1876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21148C6,    ABISELECT(3120,1872), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(3120,1872), //bcp->offset
    36, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2976,1796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2792,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(2784,1684), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(2784,1684), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C2,    ABISELECT(4336,2640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(34992,21488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(34984,21484), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(35184,21596), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21148C15,    ABISELECT(35184,21596), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(264,144), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(264,144), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21148C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21148C16,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(35760,21932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(35576,21824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(35568,21820), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(35568,21820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35912,22012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(35904,22008), //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
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(35904,22008), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21148C9,    ABISELECT(39464,24352), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S21148C8,    ABISELECT(35568,21820), //bcp->offset
    65, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21148C12[];
extern void _ZN9S21148C12D1Ev();
extern void _ZN9S21148C12D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
extern void ABISELECT(_ZThn264_N9S21148C12D1Ev,_ZThn144_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C12D0Ev,_ZThn144_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn672_N9S21148C12D1Ev,_ZThn380_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn672_N9S21148C12D0Ev,_ZThn380_N9S21148C12D0Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn2784_N9S21148C12D1Ev,_ZThn1684_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn2784_N9S21148C12D0Ev,_ZThn1684_N9S21148C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21148C12D1Ev,_ZThn1872_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21148C12D0Ev,_ZThn1872_N9S21148C12D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21148C12D1Ev,_ZThn2496_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21148C12D0Ev,_ZThn2496_N9S21148C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C12D1Ev,_ZThn21484_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C12D0Ev,_ZThn21484_N9S21148C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C12D1Ev,_ZThn21596_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C12D0Ev,_ZThn21596_N9S21148C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn35568_N9S21148C12D1Ev,_ZThn21820_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn35568_N9S21148C12D0Ev,_ZThn21820_N9S21148C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N9S21148C12D1Ev,_ZTvn188_n32_N9S21148C12D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21148C12D0Ev,_ZTvn188_n32_N9S21148C12D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn39464_N9S21148C12D1Ev,_ZThn24352_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn39464_N9S21148C12D0Ev,_ZThn24352_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C12[] = {
  ABISELECT(39464,24352),
  ABISELECT(35568,21820),
  ABISELECT(4336,2640),
  ABISELECT(2784,1684),
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&_ZN9S21148C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C12D1Ev,_ZThn144_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C12D0Ev,_ZThn144_N9S21148C12D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21148C12D1Ev,_ZThn380_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21148C12D0Ev,_ZThn380_N9S21148C12D0Ev),
  ABISELECT(-2784,-1684),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev),
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev),
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev),
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21820),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  ABISELECT(-35568,-21820),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev),
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  ABISELECT(-35904,-22008),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C12D1Ev,_ZTvn188_n32_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C12D0Ev,_ZTvn188_n32_N9S21148C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-39464,-24352),
  0,
  ABISELECT(-35360,-21856),
  ABISELECT(-39464,-24352),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S21148C12[];
extern void _ZN9S21148C16D1Ev();
extern void _ZN9S21148C16D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C16__9S21148C12[] = {
  ABISELECT(2784,1684),
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&_ZN9S21148C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C16D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C17D1Ev();
extern void _ZN9S21148C17D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C179S21148C16__9S21148C12[] = {
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&_ZN9S21148C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C18D1Ev();
extern void _ZN9S21148C18D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C189S21148C179S21148C16__9S21148C12[] = {
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&_ZN9S21148C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21148C18D1Ev,_ZThn2496_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21148C18D0Ev,_ZThn2496_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C189S21148C179S21148C16__9S21148C12[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C18D1Ev,_ZThn21484_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C18D0Ev,_ZThn21484_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C189S21148C179S21148C16__9S21148C12[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C18D1Ev,_ZThn21596_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C18D0Ev,_ZThn21596_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C189S21148C179S21148C16__9S21148C12[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21148C18D1Ev,_ZThn1872_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21148C18D0Ev,_ZThn1872_N9S21148C18D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C189S21148C179S21148C16__9S21148C12[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C179S21148C16__A1__9S21148C12[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C29S21148C179S21148C16__A3__9S21148C12[] = {
  ABISELECT(3840,2352),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn3840_N8S21148C6D1Ev,_ZThn2352_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn3840_N8S21148C6D0Ev,_ZThn2352_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C29S21148C179S21148C16__A3__9S21148C12[] = {
  ABISELECT(-3840,-2352),
  ABISELECT(-3840,-2352),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn2856_N8S21148C2D1Ev,_ZThn1728_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn2856_N8S21148C2D0Ev,_ZThn1728_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C29S21148C179S21148C16__A1__9S21148C12[] = {
  0,
  0,
  ABISELECT(-2856,-1728),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-2856,-1728),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn3840_N8S21148C2D1Ev,_ZThn2352_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn3840_N8S21148C2D0Ev,_ZThn2352_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C29S21148C179S21148C16__A1__9S21148C12[] = {
  ABISELECT(-3840,-2352),
  ABISELECT(-3840,-2352),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21148C17D1Ev,_ZThn2496_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21148C17D0Ev,_ZThn2496_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C179S21148C16__9S21148C12[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C17D1Ev,_ZThn21484_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C17D0Ev,_ZThn21484_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C179S21148C16__9S21148C12[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C17D1Ev,_ZThn21596_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C17D0Ev,_ZThn21596_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C179S21148C16__9S21148C12[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21148C17D1Ev,_ZThn1872_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21148C17D0Ev,_ZThn1872_N9S21148C17D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C179S21148C16__9S21148C12[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C179S21148C16__9S21148C12[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn3120_N9S21148C16D1Ev,_ZThn1872_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn3120_N9S21148C16D0Ev,_ZThn1872_N9S21148C16D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C16__9S21148C12[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn4104_N9S21148C16D1Ev,_ZThn2496_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn4104_N9S21148C16D0Ev,_ZThn2496_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C16__9S21148C12[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn2784_N9S21148C16D1Ev,_ZThn1684_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn2784_N9S21148C16D0Ev,_ZThn1684_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C16__9S21148C12[] = {
  ABISELECT(-2784,-1684),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C16D1Ev,_ZThn21484_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C16D0Ev,_ZThn21484_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C16__9S21148C12[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C16D1Ev,_ZThn21596_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C16D0Ev,_ZThn21596_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C16__9S21148C12[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21148C16D1Ev,_ZThn144_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C16D0Ev,_ZThn144_N9S21148C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C17__A1__9S21148C16__9S21148C12[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C16D1Ev,_ZThn144_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C16D0Ev,_ZThn144_N9S21148C16D0Ev),
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C12[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C2__A1__9S21148C12[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C6D1Ev,_ZThn812_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C6D0Ev,_ZThn812_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C2__A1__9S21148C12[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21148C2D1Ev,_ZThn188_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21148C2D0Ev,_ZThn188_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C2__9S21148C12[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C2D1Ev,_ZThn812_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C2D0Ev,_ZThn812_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C2__9S21148C12[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C12[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C3__9S21148C12[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C3__9S21148C12[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C3__9S21148C12[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C12[] = {
  ABISELECT(-30880,-18988),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__A2__9S21148C12[] = {
  ABISELECT(30880,18988),
  ABISELECT(30880,18988),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void _ZN9S21148C15D1Ev();
extern void _ZN9S21148C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C12[] = {
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&_ZN9S21148C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C15__9S21148C12[] = {
  ABISELECT(200,112),
  ABISELECT(-30880,-18988),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C15__9S21148C12[] = {
  ABISELECT(31080,19100),
  ABISELECT(31080,19100),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev),
};
extern void _ZN8S21148C8D1Ev();
extern void _ZN8S21148C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C8__9S21148C12[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&_ZN8S21148C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C8D0Ev,
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C28S21148C8__A2__9S21148C12[] = {
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C28S21148C8__A4__9S21148C12[] = {
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C28S21148C8__A4__9S21148C12[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C28S21148C8__A2__9S21148C12[] = {
  0,
  0,
  ABISELECT(32448,19948),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(32448,19948),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C28S21148C8__A2__9S21148C12[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C38S21148C8__A1__9S21148C12[] = {
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C38S21148C8__A5__9S21148C12[] = {
  ABISELECT(-31800,-19512),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C38S21148C8__A5__9S21148C12[] = {
  ABISELECT(31800,19512),
  ABISELECT(31800,19512),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C38S21148C8__A1__9S21148C12[] = {
  ABISELECT(31800,19512),
  ABISELECT(31800,19512),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C8__9S21148C12[] = {
  0,
  0,
  ABISELECT(32448,19948),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(32448,19948),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C8__9S21148C12[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev),
};
extern void ABISELECT(_ZThn336_N8S21148C8D1Ev,_ZThn188_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S21148C8D0Ev,_ZThn188_N8S21148C8D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__A__8S21148C8__9S21148C12[] = {
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21148C8D1Ev,_ZThn188_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21148C8D0Ev,_ZThn188_N8S21148C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A3__8S21148C8__9S21148C12[] = {
  ABISELECT(584,336),
  ABISELECT(-30880,-18988),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev),
};
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn3896_N8S21148C8D1Ev,_ZThn2532_N8S21148C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev)();
extern void ABISELECT(_ZThn3896_N8S21148C8D0Ev,_ZThn2532_N8S21148C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C9__8S21148C8__9S21148C12[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35360,-21856),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev),
};
extern void _ZN8S21148C92v3Ev();
extern void _ZN8S21148C9D1Ev();
extern void _ZN8S21148C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C9__9S21148C12[] = {
  ABISELECT(-35360,-21856),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C9__9S21148C12[] = {
  ABISELECT(35360,21856),
  ABISELECT(35360,21856),
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev),
};
static  VTT_ENTRY vtt_S21148C12[] = {
  {&(_ZTV9S21148C12[11]),  11,93},
  {&(_tg__ZTV9S21148C16__9S21148C12[8]),  8,14},
  {&(_tg__ZTV9S21148C179S21148C16__9S21148C12[7]),  7,13},
  {&(_tg__ZTV9S21148C189S21148C179S21148C16__9S21148C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C189S21148C179S21148C16__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C189S21148C179S21148C16__9S21148C12[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C189S21148C179S21148C16__9S21148C12[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C189S21148C179S21148C16__9S21148C12[7]),  7,11},
  {&(_tg__ZTV8S21148C29S21148C179S21148C16__A1__9S21148C12[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C29S21148C179S21148C16__A3__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C29S21148C179S21148C16__A3__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C29S21148C179S21148C16__A1__9S21148C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C29S21148C179S21148C16__A1__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21148C179S21148C16__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C179S21148C16__9S21148C12[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C179S21148C16__9S21148C12[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C179S21148C16__9S21148C12[7]),  7,11},
  {&(_tg__ZTV8S21148C2__9S21148C179S21148C16__9S21148C12[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C16__9S21148C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C16__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C2__9S21148C16__9S21148C12[6]),  6,8},
  {&(_tg__ZTV8S21148C6__A2__9S21148C16__9S21148C12[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C16__9S21148C12[5]),  5,7},
  {&(_tg__ZTV8S21148C29S21148C17__A1__9S21148C16__9S21148C12[5]),  5,7},
  {&(_ZTV9S21148C12[34]),  34,93},
  {&(_ZTV9S21148C12[43]),  43,93},
  {&(_ZTV9S21148C12[50]),  50,93},
  {&(_ZTV9S21148C12[56]),  56,93},
  {&(_ZTV9S21148C12[63]),  63,93},
  {&(_ZTV9S21148C12[22]),  22,93},
  {&(_ZTV9S21148C12[75]),  75,93},
  {&(_ZTV9S21148C12[81]),  81,93},
  {&(_ZTV9S21148C12[90]),  90,93},
  {&(_tg__ZTV8S21148C2__9S21148C12[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C2__A1__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C2__A1__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C2__9S21148C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C2__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C3__9S21148C12[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C3__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C3__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C3__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A2__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__A2__9S21148C12[3]),  3,5},
  {&(_tg__ZTV9S21148C15__9S21148C12[4]),  4,6},
  {&(_tg__ZTV8S21148C6__9S21148C15__9S21148C12[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21148C15__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C8__9S21148C12[7]),  7,9},
  {&(_tg__ZTV8S21148C28S21148C8__A2__9S21148C12[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C28S21148C8__A4__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C28S21148C8__A4__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C28S21148C8__A2__9S21148C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C28S21148C8__A2__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C38S21148C8__A1__9S21148C12[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C38S21148C8__A5__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C38S21148C8__A5__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C38S21148C8__A1__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C8__9S21148C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C8__9S21148C12[3]),  3,5},
  {&(_tg__ZTV8S21148C3__A__8S21148C8__9S21148C12[4]),  4,8},
  {&(_tg__ZTV8S21148C6__A3__8S21148C8__9S21148C12[4]),  4,6},
  {&(_tg__ZTV8S21148C9__8S21148C8__9S21148C12[5]),  5,8},
  {&(_tg__ZTV8S21148C9__9S21148C12[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21148C9__9S21148C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21148C12[];
extern  VTBL_ENTRY _ZTV9S21148C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C12[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21148C8D0Ev,_ZThn2532_N8S21148C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21148C8D1Ev,_ZThn2532_N8S21148C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C16D0Ev,_ZThn21484_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C16D1Ev,_ZThn21484_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21148C16D0Ev,_ZThn1684_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21148C16D1Ev,_ZThn1684_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21148C16D0Ev,_ZThn2496_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21148C16D1Ev,_ZThn2496_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C16D0Ev,_ZThn21596_N9S21148C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21148C16D0Ev,_ZThn1872_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C16D1Ev,_ZThn21596_N9S21148C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21148C16D1Ev,_ZThn1872_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21148C17D0Ev,_ZThn1872_N9S21148C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C17D0Ev,_ZThn21596_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21148C17D1Ev,_ZThn1872_N9S21148C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C17D1Ev,_ZThn21596_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C17D0Ev,_ZThn21484_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C17D1Ev,_ZThn21484_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21148C17D0Ev,_ZThn2496_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21148C17D1Ev,_ZThn2496_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C2D0Ev,_ZThn812_N8S21148C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21148C2D0Ev,_ZThn2352_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C2D1Ev,_ZThn812_N8S21148C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21148C2D1Ev,_ZThn2352_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21148C2D0Ev,_ZThn188_N8S21148C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S21148C2D0Ev,_ZThn1728_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21148C2D1Ev,_ZThn188_N8S21148C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S21148C2D1Ev,_ZThn1728_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C6D0Ev,_ZThn812_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21148C6D0Ev,_ZThn2352_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C6D1Ev,_ZThn812_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S21148C6D1Ev,_ZThn2352_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21148C18D0Ev,_ZThn1872_N9S21148C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C18D0Ev,_ZThn21596_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21148C18D1Ev,_ZThn1872_N9S21148C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C18D1Ev,_ZThn21596_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C18D0Ev,_ZThn21484_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C18D1Ev,_ZThn21484_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21148C18D0Ev,_ZThn2496_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21148C18D1Ev,_ZThn2496_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21148C12D0Ev,_ZThn21820_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21148C12D1Ev,_ZThn21820_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C12D0Ev,_ZThn21484_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C12D1Ev,_ZThn21484_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21148C12D0Ev,_ZThn2496_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N9S21148C12D1Ev,_ZThn2496_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21148C12D0Ev,_ZThn24352_N9S21148C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C12D0Ev,_ZThn21596_N9S21148C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21148C12D0Ev,_ZThn1872_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21148C12D1Ev,_ZThn24352_N9S21148C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C12D1Ev,_ZThn21596_N9S21148C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N9S21148C12D1Ev,_ZThn1872_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21148C12D0Ev,_ZThn1684_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S21148C12D1Ev,_ZThn1684_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C12 = {  "S21148C12", // class name
  bases_S21148C12, 32,
  &(vtc_S21148C12[0]), // expected_vtbl_contents
  &(vtt_S21148C12[0]), // expected_vtt_contents
  ABISELECT(39472,24356), // object size
  NSPAIRA(_ZTI9S21148C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21148C12),93, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21148C12),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C11  : virtual S19674C7 , S21148C12 {
  int s21148c11f0;
  int s21148c11f1;
  virtual  ~S21148C11(); // _ZN9S21148C11D2Ev
  virtual void  v8(); // _ZN9S21148C112v8Ev
  S21148C11(); // tgen
};
//SIG(-1 S21148C11) C1{ VBC2{ m Fp[14]} BC3{ VBC4{ VBC5{ VBC6{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC2 BC7{ VBC6 BC2 Fs[6] FL[3] FU8{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v2 v3 FC7 FD[7] FC7 FL Fp[5]} BC2 BC7 Fi Fi Fi:28 Fi Fl} VBC9{ m FC10{ VBC11{ VBC6 v9} VBC12{ VBC6 VBC2 BC13{ VBC6 BC2 Fs[6] FL[3] FU8} v10 v11 FC13 FD[7] FC13 FL Fp[5]} vd FC14{ VBC13 BC6 Fc:6 Fc[8] FD FC2 FC2}[5] Fl Fi FC12 Fi Fi FC11}[5] Fp} BC15{ VBC5 VBC4 BC16{ BC17{ VBC6 VBC7 VBC18{ VBC7 BC6 Fc:6 Fc[8] FD FC2 FC2} BC2 VBC5 vd v4 v5 Fi Fi FC2 Fc Fc Fi Fs FL} BC4 v6 v7 FU19{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC6 vd FC2 Fi[10] Fi FC20{ VBC6 v8} Fs Fi FL} VBC21{ VBC2 BC4 BC5 VBC7 VBC20 vd Fi Fi Fi FD Fp Fp FC7 Fp FC5 Fi Fp Fi FC6[8]} FC18 Fi FC22{ VBC6 BC7 VBC18 FD Fp Fp} FD Fs[3] Fi:0 Fi} vd v1 Fi Fi}


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

static void Test_S21148C11()
{
  extern Class_Descriptor cd_S21148C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2468,6092)];
    init_test(&cd_S21148C11, buf);
    S21148C11 *dp, &lv = *(dp=new (buf) S21148C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39472,24364), "sizeof(S21148C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C11)");
    /*is_ambiguous_... S21148C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(2792,1692), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*), ABISELECT(2792,1692), "S21148C11");
    /*is_ambiguous_... S21148C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C8*), ABISELECT(2792,1692), "S21148C11");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*)(S21148C8*), ABISELECT(2792,1692), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C3*), ABISELECT(4216,2560), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*), ABISELECT(4216,2560), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*), ABISELECT(4216,2560), "S21148C11");
    /*is_ambiguous_... S21148C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(4216,2560), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(4216,2560), "S21148C11");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(4216,2560), "S21148C11");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(4216,2560), "S21148C11");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C3*)(S21148C8*), ABISELECT(4216,2560), "S21148C11");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(4216,2560), "S21148C11");
    check_base_class_offset(lv, (S19674C5*)(S21148C9*), ABISELECT(4216,2560), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*), ABISELECT(3240,1940), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C3*), ABISELECT(3232,1936), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C3*)(S21148C2*), ABISELECT(3232,1936), "S21148C11");
    check_base_class_offset(lv, (S21148C3*)(S21148C16*)(S21148C12*), ABISELECT(3232,1936), "S21148C11");
    check_base_class_offset(lv, (S21148C3*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(3232,1936), "S21148C11");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(3232,1936), "S21148C11");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*)(S21148C8*), ABISELECT(3232,1936), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*), ABISELECT(3096,1860), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*), ABISELECT(2912,1752), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*), ABISELECT(2904,1748), "S21148C11");
    /*is_ambiguous_... S21148C12::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C2*)(S21148C12*), ABISELECT(2904,1748), "S21148C11");
    /*is_ambiguous_... S21148C16::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C2*)(S21148C16*)(S21148C12*), ABISELECT(2904,1748), "S21148C11");
    check_base_class_offset(lv, (S19674C2*)(S21148C12*), ABISELECT(4336,2648), "S21148C11");
    /*is_ambiguous_... S21148C11::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(34992,21496), "S21148C11");
    /*is_ambiguous_... S21148C18::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(34984,21492), "S21148C11");
    check_base_class_offset(lv, (S21148C6*)(S21148C15*), ABISELECT(34984,21492), "S21148C11");
    /*is_ambiguous_... S21148C8::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C8*), ABISELECT(34984,21492), "S21148C11");
    /*is_ambiguous_... S21148C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C15*), ABISELECT(35184,21604), "S21148C11");
    check_base_class_offset(lv, (S21148C15*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(35184,21604), "S21148C11");
    /*is_ambiguous_... S21148C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(8,4), "S21148C11");
    check_base_class_offset(lv, (S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*), 0, "S21148C11");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(456,256), "S21148C11");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(272,148), "S21148C11");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(264,144), "S21148C11");
    check_base_class_offset(lv, (S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*), ABISELECT(264,144), "S21148C11");
    check_base_class_offset(lv, (S21148C17*)(S21148C16*)(S21148C12*), 0, "S21148C11");
    /*is_ambiguous_... S21148C16::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C16*)(S21148C12*), ABISELECT(672,380), "S21148C11");
    check_base_class_offset(lv, (S21148C16*)(S21148C12*), 0, "S21148C11");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*)(S21148C8*), ABISELECT(35760,21940), "S21148C11");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(35576,21832), "S21148C11");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(35568,21828), "S21148C11");
    check_base_class_offset(lv, (S21148C2*)(S21148C8*), ABISELECT(35568,21828), "S21148C11");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(35912,22020), "S21148C11");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(35904,22016), "S21148C11");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C3*)(S21148C8*), ABISELECT(35904,22016), "S21148C11");
    check_base_class_offset(lv, (S21148C9*)(S21148C8*), ABISELECT(39464,24360), "S21148C11");
    check_base_class_offset(lv, (S21148C8*)(S21148C12*), ABISELECT(35568,21828), "S21148C11");
    check_base_class_offset(lv, (S21148C12*), 0, "S21148C11");
    check_field_offset(lv, s21148c11f0, ABISELECT(2780,1684), "S21148C11.s21148c11f0");
    check_field_offset(lv, s21148c11f1, ABISELECT(2784,1688), "S21148C11.s21148c11f1");
    test_class_info(&lv, &cd_S21148C11);
    dp->~S21148C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C11(Test_S21148C11, "S21148C11", ABISELECT(39472,24364));

#else // __cplusplus

extern void _ZN9S21148C11C1Ev();
extern void _ZN9S21148C11D2Ev();
Name_Map name_map_S21148C11[] = {
  NSPAIR(_ZN9S21148C11C1Ev),
  NSPAIR(_ZN9S21148C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C15;
extern VTBL_ENTRY _ZTI9S21148C15[];
extern  VTBL_ENTRY _ZTV9S21148C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C18;
extern VTBL_ENTRY _ZTI9S21148C18[];
extern  VTBL_ENTRY _ZTV9S21148C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S21148C17;
extern VTBL_ENTRY _ZTI9S21148C17[];
extern  VTBL_ENTRY _ZTV9S21148C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C17[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C16;
extern VTBL_ENTRY _ZTI9S21148C16[];
extern  VTBL_ENTRY _ZTV9S21148C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C16[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S21148C9;
extern VTBL_ENTRY _ZTI8S21148C9[];
extern  VTBL_ENTRY _ZTV8S21148C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C9[];
extern Class_Descriptor cd_S21148C8;
extern VTBL_ENTRY _ZTI8S21148C8[];
extern  VTBL_ENTRY _ZTV8S21148C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C8[];
extern Class_Descriptor cd_S21148C12;
extern VTBL_ENTRY _ZTI9S21148C12[];
extern  VTBL_ENTRY _ZTV9S21148C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C12[];
static Base_Class bases_S21148C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(2792,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(4216,2560), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(3240,1940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21148C6,    ABISELECT(3232,1936), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(3232,1936), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(3096,1860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2912,1752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(2904,1748), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(2904,1748), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19674C2,    ABISELECT(4336,2648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(34992,21496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(34984,21492), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(35184,21604), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21148C15,    ABISELECT(35184,21604), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(264,144), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(264,144), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21148C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //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
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21148C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35760,21940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(35576,21832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(35568,21828), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(35568,21828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35912,22020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(35904,22016), //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
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(35904,22016), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21148C9,    ABISELECT(39464,24360), //bcp->offset
    86, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S21148C8,    ABISELECT(35568,21828), //bcp->offset
    66, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S21148C12,    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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21148C11[];
extern void _ZN9S21148C11D1Ev();
extern void _ZN9S21148C11D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
extern void _ZN9S21148C112v8Ev();
extern void ABISELECT(_ZThn264_N9S21148C11D1Ev,_ZThn144_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C11D0Ev,_ZThn144_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn672_N9S21148C11D1Ev,_ZThn380_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn672_N9S21148C11D0Ev,_ZThn380_N9S21148C11D0Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21148C11D1Ev,_ZTv0_n24_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn2904_N9S21148C11D1Ev,_ZThn1748_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C11D0Ev,_ZTv0_n24_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn2904_N9S21148C11D0Ev,_ZThn1748_N9S21148C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn3232_N9S21148C11D1Ev,_ZThn1936_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn3232_N9S21148C11D0Ev,_ZThn1936_N9S21148C11D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S21148C11D1Ev,_ZTv0_n12_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn4216_N9S21148C11D1Ev,_ZThn2560_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C11D0Ev,_ZTv0_n12_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn4216_N9S21148C11D0Ev,_ZThn2560_N9S21148C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C11D1Ev,_ZTv0_n16_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C11D1Ev,_ZThn21492_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C11D0Ev,_ZTv0_n16_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C11D0Ev,_ZThn21492_N9S21148C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C11D1Ev,_ZThn21604_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C11D0Ev,_ZThn21604_N9S21148C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21148C11D1Ev,_ZTv0_n32_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn35568_N9S21148C11D1Ev,_ZThn21828_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21148C11D0Ev,_ZTv0_n32_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn35568_N9S21148C11D0Ev,_ZThn21828_N9S21148C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N9S21148C11D1Ev,_ZTvn188_n32_N9S21148C11D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21148C11D0Ev,_ZTvn188_n32_N9S21148C11D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn39464_N9S21148C11D1Ev,_ZThn24360_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn39464_N9S21148C11D0Ev,_ZThn24360_N9S21148C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C11[] = {
  ABISELECT(39464,24360),
  ABISELECT(35568,21828),
  ABISELECT(4336,2648),
  ABISELECT(2904,1748),
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&_ZN9S21148C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21148C112v8Ev,
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C11D1Ev,_ZThn144_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C11D0Ev,_ZThn144_N9S21148C11D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21148C11D1Ev,_ZThn380_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21148C11D0Ev,_ZThn380_N9S21148C11D0Ev),
  ABISELECT(-2904,-1748),
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  ABISELECT(-2904,-1748),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C11D1Ev,_ZTv0_n24_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C11D0Ev,_ZTv0_n24_N9S21148C11D0Ev),
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C11D1Ev,_ZTv0_n12_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C11D0Ev,_ZTv0_n12_N9S21148C11D0Ev),
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C11D1Ev,_ZTv0_n16_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C11D0Ev,_ZTv0_n16_N9S21148C11D0Ev),
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21828),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-35568,-21828),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C11D1Ev,_ZTv0_n32_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C11D0Ev,_ZTv0_n32_N9S21148C11D0Ev),
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-35904,-22016),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C11D1Ev,_ZTvn188_n32_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C11D0Ev,_ZTvn188_n32_N9S21148C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-39464,-24360),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-39464,-24360),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21148C11[];
extern void _ZN9S21148C12D1Ev();
extern void _ZN9S21148C12D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C12__9S21148C11[] = {
  ABISELECT(39464,24360),
  ABISELECT(35568,21828),
  ABISELECT(4336,2648),
  ABISELECT(2904,1748),
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&_ZN9S21148C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C16D1Ev();
extern void _ZN9S21148C16D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(2904,1748),
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&_ZN9S21148C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C16D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C17D1Ev();
extern void _ZN9S21148C17D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C179S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&_ZN9S21148C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C18D1Ev();
extern void _ZN9S21148C18D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C189S21148C179S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(2792,1692),
  ABISELECT(3232,1936),
  ABISELECT(35184,21604),
  ABISELECT(34984,21492),
  ABISELECT(4216,2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&_ZN9S21148C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn4216_N9S21148C18D1Ev,_ZThn2560_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn4216_N9S21148C18D0Ev,_ZThn2560_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C189S21148C179S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C18D1Ev,_ZThn21492_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C18D0Ev,_ZThn21492_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C189S21148C179S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C18D1Ev,_ZThn21604_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C18D0Ev,_ZThn21604_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C189S21148C179S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn3232_N9S21148C18D1Ev,_ZThn1936_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn3232_N9S21148C18D0Ev,_ZThn1936_N9S21148C18D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C189S21148C179S21148C169S21148C12__9S21148C11[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C179S21148C169S21148C12__A1__9S21148C11[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C29S21148C179S21148C169S21148C12__A3__9S21148C11[] = {
  ABISELECT(3952,2416),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn3952_N8S21148C6D1Ev,_ZThn2416_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn3952_N8S21148C6D0Ev,_ZThn2416_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C29S21148C179S21148C169S21148C12__A3__9S21148C11[] = {
  ABISELECT(-3952,-2416),
  ABISELECT(-3952,-2416),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn2968_N8S21148C2D1Ev,_ZThn1792_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn2968_N8S21148C2D0Ev,_ZThn1792_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C29S21148C179S21148C169S21148C12__A1__9S21148C11[] = {
  0,
  0,
  ABISELECT(-2968,-1792),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-2968,-1792),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn3952_N8S21148C2D1Ev,_ZThn2416_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn3952_N8S21148C2D0Ev,_ZThn2416_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C29S21148C179S21148C169S21148C12__A1__9S21148C11[] = {
  ABISELECT(-3952,-2416),
  ABISELECT(-3952,-2416),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn4216_N9S21148C17D1Ev,_ZThn2560_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn4216_N9S21148C17D0Ev,_ZThn2560_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C179S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C17D1Ev,_ZThn21492_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C17D0Ev,_ZThn21492_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C179S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C17D1Ev,_ZThn21604_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C17D0Ev,_ZThn21604_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C179S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn3232_N9S21148C17D1Ev,_ZThn1936_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn3232_N9S21148C17D0Ev,_ZThn1936_N9S21148C17D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C179S21148C169S21148C12__9S21148C11[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C179S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn3232_N9S21148C16D1Ev,_ZThn1936_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn3232_N9S21148C16D0Ev,_ZThn1936_N9S21148C16D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C169S21148C12__9S21148C11[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn4216_N9S21148C16D1Ev,_ZThn2560_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn4216_N9S21148C16D0Ev,_ZThn2560_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn2904_N9S21148C16D1Ev,_ZThn1748_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn2904_N9S21148C16D0Ev,_ZThn1748_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(-2904,-1748),
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  ABISELECT(-2904,-1748),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C16D1Ev,_ZThn21492_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C16D0Ev,_ZThn21492_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C16D1Ev,_ZThn21604_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C16D0Ev,_ZThn21604_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21148C16D1Ev,_ZThn144_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C16D0Ev,_ZThn144_N9S21148C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C17__A1__9S21148C169S21148C12__9S21148C11[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C16D1Ev,_ZThn144_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C16D0Ev,_ZThn144_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn2904_N9S21148C12D1Ev,_ZThn1748_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn2904_N9S21148C12D0Ev,_ZThn1748_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C12__9S21148C11[] = {
  ABISELECT(-2904,-1748),
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  ABISELECT(-2904,-1748),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn3232_N9S21148C12D1Ev,_ZThn1936_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn3232_N9S21148C12D0Ev,_ZThn1936_N9S21148C12D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C12__9S21148C11[] = {
  0,
  0,
  ABISELECT(-3232,-1936),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-3232,-1936),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn4216_N9S21148C12D1Ev,_ZThn2560_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn4216_N9S21148C12D0Ev,_ZThn2560_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C12__9S21148C11[] = {
  ABISELECT(-4216,-2560),
  ABISELECT(-4216,-2560),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C12D1Ev,_ZThn21492_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn34984_N9S21148C12D0Ev,_ZThn21492_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C12__9S21148C11[] = {
  ABISELECT(-34984,-21492),
  ABISELECT(-30768,-18932),
  ABISELECT(-34984,-21492),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C12D1Ev,_ZThn21604_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn35184_N9S21148C12D0Ev,_ZThn21604_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C12__9S21148C11[] = {
  ABISELECT(-35184,-21604),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21604),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21148C12D1Ev,_ZThn144_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C12D0Ev,_ZThn144_N9S21148C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C179S21148C16__A1__9S21148C12__9S21148C11[] = {
  ABISELECT(2528,1548),
  ABISELECT(2968,1792),
  ABISELECT(3952,2416),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C12D1Ev,_ZThn144_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C12D0Ev,_ZThn144_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn35568_N9S21148C12D1Ev,_ZThn21828_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn35568_N9S21148C12D0Ev,_ZThn21828_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C8__9S21148C12__9S21148C11[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21828),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-35568,-21828),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21148C12D1Ev,_ZTvn188_n32_N9S21148C12D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21148C12D0Ev,_ZTvn188_n32_N9S21148C12D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C38S21148C8__A1__9S21148C12__9S21148C11[] = {
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-35904,-22016),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C12D1Ev,_ZTvn188_n32_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C12D0Ev,_ZTvn188_n32_N9S21148C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn39464_N9S21148C12D1Ev,_ZThn24360_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn39464_N9S21148C12D0Ev,_ZThn24360_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C9__9S21148C12__9S21148C11[] = {
  ABISELECT(-39464,-24360),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-39464,-24360),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C11[] = {
  ABISELECT(-112,-56),
  ABISELECT(328,188),
  ABISELECT(1312,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C2__A1__9S21148C11[] = {
  ABISELECT(1312,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn1312_N8S21148C6D1Ev,_ZThn812_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn1312_N8S21148C6D0Ev,_ZThn812_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C2__A1__9S21148C11[] = {
  ABISELECT(-1312,-812),
  ABISELECT(-1312,-812),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn328_N8S21148C2D1Ev,_ZThn188_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn328_N8S21148C2D0Ev,_ZThn188_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C2__9S21148C11[] = {
  0,
  0,
  ABISELECT(-328,-188),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(-328,-188),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn1312_N8S21148C2D1Ev,_ZThn812_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn1312_N8S21148C2D0Ev,_ZThn812_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C2__9S21148C11[] = {
  ABISELECT(-1312,-812),
  ABISELECT(-1312,-812),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C11[] = {
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C3__9S21148C11[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C3__9S21148C11[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C3__9S21148C11[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C11[] = {
  ABISELECT(-30768,-18932),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__A2__9S21148C11[] = {
  ABISELECT(30768,18932),
  ABISELECT(30768,18932),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void _ZN9S21148C15D1Ev();
extern void _ZN9S21148C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C11[] = {
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&_ZN9S21148C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C15__9S21148C11[] = {
  ABISELECT(200,112),
  ABISELECT(-30768,-18932),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C15__9S21148C11[] = {
  ABISELECT(30968,19044),
  ABISELECT(30968,19044),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev),
};
extern void _ZN8S21148C8D1Ev();
extern void _ZN8S21148C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C8__9S21148C11[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&_ZN8S21148C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C8D0Ev,
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C28S21148C8__A2__9S21148C11[] = {
  ABISELECT(-32776,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C28S21148C8__A4__9S21148C11[] = {
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C28S21148C8__A4__9S21148C11[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C28S21148C8__A2__9S21148C11[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C28S21148C8__A2__9S21148C11[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C38S21148C8__A1__9S21148C11[] = {
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C38S21148C8__A5__9S21148C11[] = {
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C38S21148C8__A5__9S21148C11[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C38S21148C8__A1__9S21148C11[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C8__9S21148C11[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-440,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C8__9S21148C11[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev),
};
extern void ABISELECT(_ZThn336_N8S21148C8D1Ev,_ZThn188_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S21148C8D0Ev,_ZThn188_N8S21148C8D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__A__8S21148C8__9S21148C11[] = {
  ABISELECT(-33112,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21148C8D1Ev,_ZThn188_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21148C8D0Ev,_ZThn188_N8S21148C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A3__8S21148C8__9S21148C11[] = {
  ABISELECT(584,336),
  ABISELECT(-30768,-18932),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev),
};
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn3896_N8S21148C8D1Ev,_ZThn2532_N8S21148C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev)();
extern void ABISELECT(_ZThn3896_N8S21148C8D0Ev,_ZThn2532_N8S21148C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C9__8S21148C8__9S21148C11[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev),
};
extern void _ZN8S21148C92v3Ev();
extern void _ZN8S21148C9D1Ev();
extern void _ZN8S21148C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C9__9S21148C11[] = {
  ABISELECT(-35248,-21800),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C9__9S21148C11[] = {
  ABISELECT(35248,21800),
  ABISELECT(35248,21800),
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev),
};
static  VTT_ENTRY vtt_S21148C11[] = {
  {&(_ZTV9S21148C11[11]),  11,94},
  {&(_tg__ZTV9S21148C12__9S21148C11[11]),  11,17},
  {&(_tg__ZTV9S21148C169S21148C12__9S21148C11[8]),  8,14},
  {&(_tg__ZTV9S21148C179S21148C169S21148C12__9S21148C11[7]),  7,13},
  {&(_tg__ZTV9S21148C189S21148C179S21148C169S21148C12__9S21148C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C189S21148C179S21148C169S21148C12__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C189S21148C179S21148C169S21148C12__9S21148C11[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C189S21148C179S21148C169S21148C12__9S21148C11[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C189S21148C179S21148C169S21148C12__9S21148C11[7]),  7,11},
  {&(_tg__ZTV8S21148C29S21148C179S21148C169S21148C12__A1__9S21148C11[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C29S21148C179S21148C169S21148C12__A3__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C29S21148C179S21148C169S21148C12__A3__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C29S21148C179S21148C169S21148C12__A1__9S21148C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C29S21148C179S21148C169S21148C12__A1__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21148C179S21148C169S21148C12__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C179S21148C169S21148C12__9S21148C11[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C179S21148C169S21148C12__9S21148C11[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C179S21148C169S21148C12__9S21148C11[7]),  7,11},
  {&(_tg__ZTV8S21148C2__9S21148C179S21148C169S21148C12__9S21148C11[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C169S21148C12__9S21148C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C169S21148C12__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C2__9S21148C169S21148C12__9S21148C11[6]),  6,8},
  {&(_tg__ZTV8S21148C6__A2__9S21148C169S21148C12__9S21148C11[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C169S21148C12__9S21148C11[5]),  5,7},
  {&(_tg__ZTV8S21148C29S21148C17__A1__9S21148C169S21148C12__9S21148C11[5]),  5,7},
  {&(_tg__ZTV8S21148C2__9S21148C12__9S21148C11[6]),  6,8},
  {&(_tg__ZTV8S21148C3__9S21148C12__9S21148C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C12__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A2__9S21148C12__9S21148C11[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C12__9S21148C11[5]),  5,7},
  {&(_tg__ZTV8S21148C29S21148C179S21148C16__A1__9S21148C12__9S21148C11[5]),  5,7},
  {&(_tg__ZTV8S21148C8__9S21148C12__9S21148C11[10]),  10,12},
  {&(_tg__ZTV8S21148C38S21148C8__A1__9S21148C12__9S21148C11[4]),  4,8},
  {&(_tg__ZTV8S21148C9__9S21148C12__9S21148C11[5]),  5,8},
  {&(_ZTV9S21148C11[35]),  35,94},
  {&(_ZTV9S21148C11[44]),  44,94},
  {&(_ZTV9S21148C11[51]),  51,94},
  {&(_ZTV9S21148C11[57]),  57,94},
  {&(_ZTV9S21148C11[64]),  64,94},
  {&(_ZTV9S21148C11[23]),  23,94},
  {&(_ZTV9S21148C11[76]),  76,94},
  {&(_ZTV9S21148C11[82]),  82,94},
  {&(_ZTV9S21148C11[91]),  91,94},
  {&(_tg__ZTV8S21148C2__9S21148C11[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C2__A1__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C2__A1__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C2__9S21148C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C2__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C3__9S21148C11[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C3__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C3__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C3__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A2__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__A2__9S21148C11[3]),  3,5},
  {&(_tg__ZTV9S21148C15__9S21148C11[4]),  4,6},
  {&(_tg__ZTV8S21148C6__9S21148C15__9S21148C11[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21148C15__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C8__9S21148C11[7]),  7,9},
  {&(_tg__ZTV8S21148C28S21148C8__A2__9S21148C11[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C28S21148C8__A4__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C28S21148C8__A4__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C28S21148C8__A2__9S21148C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C28S21148C8__A2__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C38S21148C8__A1__9S21148C11[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C38S21148C8__A5__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C38S21148C8__A5__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C38S21148C8__A1__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C8__9S21148C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C8__9S21148C11[3]),  3,5},
  {&(_tg__ZTV8S21148C3__A__8S21148C8__9S21148C11[4]),  4,8},
  {&(_tg__ZTV8S21148C6__A3__8S21148C8__9S21148C11[4]),  4,6},
  {&(_tg__ZTV8S21148C9__8S21148C8__9S21148C11[5]),  5,8},
  {&(_tg__ZTV8S21148C9__9S21148C11[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21148C9__9S21148C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21148C11[];
extern  VTBL_ENTRY _ZTV9S21148C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C11[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21148C8D0Ev,_ZThn2532_N8S21148C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21148C8D1Ev,_ZThn2532_N8S21148C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21148C12D0Ev,_ZThn21828_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21148C12D1Ev,_ZThn21828_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C12D0Ev,_ZThn21492_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C12D1Ev,_ZThn21492_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21148C12D0Ev,_ZThn2560_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21148C12D1Ev,_ZThn2560_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21148C12D0Ev,_ZThn24360_N9S21148C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C12D0Ev,_ZThn21604_N9S21148C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21148C12D0Ev,_ZThn1936_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21148C12D1Ev,_ZThn24360_N9S21148C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C12D1Ev,_ZThn21604_N9S21148C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21148C12D1Ev,_ZThn1936_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21148C12D0Ev,_ZThn1748_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21148C12D1Ev,_ZThn1748_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C16D0Ev,_ZThn21492_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C16D1Ev,_ZThn21492_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21148C16D0Ev,_ZThn1748_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21148C16D1Ev,_ZThn1748_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21148C16D0Ev,_ZThn2560_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21148C16D1Ev,_ZThn2560_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C16D0Ev,_ZThn21604_N9S21148C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21148C16D0Ev,_ZThn1936_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C16D1Ev,_ZThn21604_N9S21148C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21148C16D1Ev,_ZThn1936_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21148C17D0Ev,_ZThn1936_N9S21148C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C17D0Ev,_ZThn21604_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21148C17D1Ev,_ZThn1936_N9S21148C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C17D1Ev,_ZThn21604_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C17D0Ev,_ZThn21492_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C17D1Ev,_ZThn21492_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21148C17D0Ev,_ZThn2560_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21148C17D1Ev,_ZThn2560_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S21148C2D0Ev,_ZThn812_N8S21148C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N8S21148C2D0Ev,_ZThn2416_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S21148C2D1Ev,_ZThn812_N8S21148C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N8S21148C2D1Ev,_ZThn2416_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S21148C2D0Ev,_ZThn188_N8S21148C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2968_N8S21148C2D0Ev,_ZThn1792_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S21148C2D1Ev,_ZThn188_N8S21148C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2968_N8S21148C2D1Ev,_ZThn1792_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S21148C6D0Ev,_ZThn812_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N8S21148C6D0Ev,_ZThn2416_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S21148C6D1Ev,_ZThn812_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3952_N8S21148C6D1Ev,_ZThn2416_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21148C18D0Ev,_ZThn1936_N9S21148C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C18D0Ev,_ZThn21604_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21148C18D1Ev,_ZThn1936_N9S21148C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C18D1Ev,_ZThn21604_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C18D0Ev,_ZThn21492_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C18D1Ev,_ZThn21492_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21148C18D0Ev,_ZThn2560_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21148C18D1Ev,_ZThn2560_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C11D0Ev,_ZTv0_n32_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21148C11D0Ev,_ZThn21828_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C11D1Ev,_ZTv0_n32_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N9S21148C11D1Ev,_ZThn21828_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C11D0Ev,_ZTv0_n16_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C11D0Ev,_ZThn21492_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C11D1Ev,_ZTv0_n16_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N9S21148C11D1Ev,_ZThn21492_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C11D0Ev,_ZTv0_n12_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21148C11D0Ev,_ZThn2560_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C11D1Ev,_ZTv0_n12_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4216_N9S21148C11D1Ev,_ZThn2560_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21148C11D0Ev,_ZThn24360_N9S21148C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C11D0Ev,_ZThn21604_N9S21148C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21148C11D0Ev,_ZThn1936_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N9S21148C11D1Ev,_ZThn24360_N9S21148C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N9S21148C11D1Ev,_ZThn21604_N9S21148C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3232_N9S21148C11D1Ev,_ZThn1936_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C11D0Ev,_ZTv0_n24_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21148C11D0Ev,_ZThn1748_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C11D1Ev,_ZTv0_n24_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S21148C11D1Ev,_ZThn1748_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C11 = {  "S21148C11", // class name
  bases_S21148C11, 33,
  &(vtc_S21148C11[0]), // expected_vtbl_contents
  &(vtt_S21148C11[0]), // expected_vtt_contents
  ABISELECT(39472,24364), // object size
  NSPAIRA(_ZTI9S21148C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21148C11),94, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21148C11),74, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C10  : S21148C11 {
  int s21148c10f0;
  char  :0;
  int s21148c10f2;
  int s21148c10f3;
  short s21148c10f4;
  ::S21148C2 s21148c10f5;
  int s21148c10f6;
  short s21148c10f7;
  void *s21148c10f8;
  ::S21147C21 s21148c10f9;
  virtual void  v9(); // _ZN9S21148C102v9Ev
  virtual void  v10(); // _ZN9S21148C103v10Ev
  virtual void  v11(); // _ZN9S21148C103v11Ev
  ~S21148C10(); // tgen
  S21148C10(); // tgen
};
//SIG(-1 S21148C10) C1{ BC2{ VBC3{ m Fp[14]} BC4{ VBC5{ VBC6{ VBC7{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3 BC8{ VBC7 BC3 Fs[6] FL[3] FU9{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v4 v5 FC8 FD[7] FC8 FL Fp[5]} BC3 BC8 Fi Fi Fi:28 Fi Fl} VBC10{ m FC11{ VBC12{ VBC7 v15} VBC13{ VBC7 VBC3 BC14{ VBC7 BC3 Fs[6] FL[3] FU9} v16 v17 FC14 FD[7] FC14 FL Fp[5]} vd FC15{ VBC14 BC7 Fc:6 Fc[8] FD FC3 FC3}[5] Fl Fi FC13 Fi Fi FC12}[5] Fp} BC16{ VBC6 VBC5 BC17{ BC18{ VBC7 VBC8 VBC19{ VBC8 BC7 Fc:6 Fc[8] FD FC3 FC3} BC3 VBC6 vd v6 v7 Fi Fi FC3 Fc Fc Fi Fs FL} BC5 v8 v9 FU20{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC7 vd FC3 Fi[10] Fi FC21{ VBC7 v10} Fs Fi FL} VBC22{ VBC3 BC5 BC6 VBC8 VBC21 vd Fi Fi Fi FD Fp Fp FC8 Fp FC6 Fi Fp Fi FC7[8]} FC19 Fi FC23{ VBC7 BC8 VBC19 FD Fp Fp} FD Fs[3] Fi:0 Fi} vd v11 Fi Fi} v1 v2 v3 Fi Fc:0 Fi Fi Fs FC5 Fi Fs Fp FC24{ VBC25{ VBC7 BC26{ VBC7 BC3 Fs[6] FL[3] FU9} VBC27{ VBC26 BC7 Fc:6 Fc[8] FD FC3 FC3} FD Fp Fp} v12 FC28{ VBC29{ VBC7 VBC3 BC26 v13 v14 FC26 FD[7] FC26 FL Fp[5]} BC3 BC26 Fi Fi Fi:28 Fi Fl} Fp FD Fi}}


void  S21148C10 ::v9(){vfunc_called(this, "_ZN9S21148C102v9Ev");}
void  S21148C10 ::v10(){vfunc_called(this, "_ZN9S21148C103v10Ev");}
void  S21148C10 ::v11(){vfunc_called(this, "_ZN9S21148C103v11Ev");}
S21148C10 ::~S21148C10(){ note_dtor("S21148C10", this);} // tgen
S21148C10 ::S21148C10(){ note_ctor("S21148C10", this);} // tgen

static void Test_S21148C10()
{
  extern Class_Descriptor cd_S21148C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2727,6722)];
    init_test(&cd_S21148C10, buf);
    S21148C10 *dp, &lv = *(dp=new (buf) S21148C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(43616,26884), "sizeof(S21148C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C10)");
    /*is_ambiguous_... S21148C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C11*), ABISELECT(6928,4212), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*), ABISELECT(6928,4212), "S21148C10");
    /*is_ambiguous_... S21148C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C8*), ABISELECT(6928,4212), "S21148C10");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*)(S21148C8*), ABISELECT(6928,4212), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C3*), ABISELECT(8360,5080), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*), ABISELECT(8360,5080), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*), ABISELECT(8360,5080), "S21148C10");
    /*is_ambiguous_... S21148C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(8360,5080), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(8360,5080), "S21148C10");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(8360,5080), "S21148C10");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(8360,5080), "S21148C10");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C3*)(S21148C8*), ABISELECT(8360,5080), "S21148C10");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(8360,5080), "S21148C10");
    check_base_class_offset(lv, (S19674C5*)(S21148C9*), ABISELECT(8360,5080), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*), ABISELECT(7384,4460), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C3*), ABISELECT(7376,4456), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C3*)(S21148C2*), ABISELECT(7376,4456), "S21148C10");
    check_base_class_offset(lv, (S21148C3*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(7376,4456), "S21148C10");
    check_base_class_offset(lv, (S21148C3*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(7376,4456), "S21148C10");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(7376,4456), "S21148C10");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*)(S21148C8*), ABISELECT(7376,4456), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*), ABISELECT(7232,4380), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*), ABISELECT(7048,4272), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*), ABISELECT(7040,4268), "S21148C10");
    /*is_ambiguous_... S21148C12::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C2*)(S21148C12*)(S21148C11*), ABISELECT(7040,4268), "S21148C10");
    /*is_ambiguous_... S21148C16::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C2*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(7040,4268), "S21148C10");
    check_base_class_offset(lv, (S19674C2*)(S21148C12*)(S21148C11*), ABISELECT(8480,5168), "S21148C10");
    /*is_ambiguous_... S21148C10::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(39136,24016), "S21148C10");
    /*is_ambiguous_... S21148C18::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(39128,24012), "S21148C10");
    check_base_class_offset(lv, (S21148C6*)(S21148C15*), ABISELECT(39128,24012), "S21148C10");
    /*is_ambiguous_... S21148C8::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C8*), ABISELECT(39128,24012), "S21148C10");
    /*is_ambiguous_... S21148C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C15*), ABISELECT(39328,24124), "S21148C10");
    check_base_class_offset(lv, (S21148C15*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(39328,24124), "S21148C10");
    /*is_ambiguous_... S21148C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(8,4), "S21148C10");
    check_base_class_offset(lv, (S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), 0, "S21148C10");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(456,256), "S21148C10");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(272,148), "S21148C10");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(264,144), "S21148C10");
    check_base_class_offset(lv, (S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(264,144), "S21148C10");
    check_base_class_offset(lv, (S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*), 0, "S21148C10");
    /*is_ambiguous_... S21148C16::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C16*)(S21148C12*)(S21148C11*), ABISELECT(672,380), "S21148C10");
    check_base_class_offset(lv, (S21148C16*)(S21148C12*)(S21148C11*), 0, "S21148C10");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*)(S21148C8*), ABISELECT(39904,24460), "S21148C10");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(39720,24352), "S21148C10");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(39712,24348), "S21148C10");
    check_base_class_offset(lv, (S21148C2*)(S21148C8*), ABISELECT(39712,24348), "S21148C10");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(40056,24540), "S21148C10");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(40048,24536), "S21148C10");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C3*)(S21148C8*), ABISELECT(40048,24536), "S21148C10");
    check_base_class_offset(lv, (S21148C9*)(S21148C8*), ABISELECT(43608,26880), "S21148C10");
    check_base_class_offset(lv, (S21148C8*)(S21148C12*)(S21148C11*), ABISELECT(39712,24348), "S21148C10");
    check_base_class_offset(lv, (S21148C12*)(S21148C11*), 0, "S21148C10");
    check_base_class_offset(lv, (S21148C11*), 0, "S21148C10");
    check_field_offset(lv, s21148c10f0, ABISELECT(2788,1692), "S21148C10.s21148c10f0");
    check_field_offset(lv, s21148c10f2, ABISELECT(2792,1696), "S21148C10.s21148c10f2");
    check_field_offset(lv, s21148c10f3, ABISELECT(2796,1700), "S21148C10.s21148c10f3");
    check_field_offset(lv, s21148c10f4, ABISELECT(2800,1704), "S21148C10.s21148c10f4");
    check_field_offset(lv, s21148c10f5, ABISELECT(2816,1708), "S21148C10.s21148c10f5");
    check_field_offset(lv, s21148c10f6, ABISELECT(4368,2664), "S21148C10.s21148c10f6");
    check_field_offset(lv, s21148c10f7, ABISELECT(4372,2668), "S21148C10.s21148c10f7");
    check_field_offset(lv, s21148c10f8, ABISELECT(4376,2672), "S21148C10.s21148c10f8");
    check_field_offset(lv, s21148c10f9, ABISELECT(4384,2676), "S21148C10.s21148c10f9");
    test_class_info(&lv, &cd_S21148C10);
    dp->~S21148C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C10(Test_S21148C10, "S21148C10", ABISELECT(43616,26884));

#else // __cplusplus

extern void _ZN9S21148C10C1Ev();
extern void _ZN9S21148C10D1Ev();
Name_Map name_map_S21148C10[] = {
  NSPAIR(_ZN9S21148C10C1Ev),
  NSPAIR(_ZN9S21148C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C15;
extern VTBL_ENTRY _ZTI9S21148C15[];
extern  VTBL_ENTRY _ZTV9S21148C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C18;
extern VTBL_ENTRY _ZTI9S21148C18[];
extern  VTBL_ENTRY _ZTV9S21148C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S21148C17;
extern VTBL_ENTRY _ZTI9S21148C17[];
extern  VTBL_ENTRY _ZTV9S21148C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C17[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C16;
extern VTBL_ENTRY _ZTI9S21148C16[];
extern  VTBL_ENTRY _ZTV9S21148C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C16[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S21148C9;
extern VTBL_ENTRY _ZTI8S21148C9[];
extern  VTBL_ENTRY _ZTV8S21148C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C9[];
extern Class_Descriptor cd_S21148C8;
extern VTBL_ENTRY _ZTI8S21148C8[];
extern  VTBL_ENTRY _ZTV8S21148C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C8[];
extern Class_Descriptor cd_S21148C12;
extern VTBL_ENTRY _ZTI9S21148C12[];
extern  VTBL_ENTRY _ZTV9S21148C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C12[];
extern Class_Descriptor cd_S21148C11;
extern VTBL_ENTRY _ZTI9S21148C11[];
extern  VTBL_ENTRY _ZTV9S21148C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C11[];
static Base_Class bases_S21148C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(6928,4212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C5,    ABISELECT(8360,5080), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(7384,4460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21148C6,    ABISELECT(7376,4456), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(7376,4456), //bcp->offset
    40, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(7232,4380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(7048,4272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(7040,4268), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(7040,4268), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19674C2,    ABISELECT(8480,5168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(39136,24016), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(39128,24012), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(39328,24124), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21148C15,    ABISELECT(39328,24124), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21148C6,    ABISELECT(264,144), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(264,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21148C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21148C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(39904,24460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(39720,24352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(39712,24348), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(39712,24348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(40056,24540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(40048,24536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(40048,24536), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21148C9,    ABISELECT(43608,26880), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S21148C8,    ABISELECT(39712,24348), //bcp->offset
    69, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S21148C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21148C11,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21148C10[];
extern void _ZN9S21148C10D1Ev();
extern void _ZN9S21148C10D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
extern void _ZN9S21148C112v8Ev();
extern void _ZN9S21148C102v9Ev();
extern void _ZN9S21148C103v10Ev();
extern void _ZN9S21148C103v11Ev();
extern void ABISELECT(_ZThn264_N9S21148C10D1Ev,_ZThn144_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C10D0Ev,_ZThn144_N9S21148C10D0Ev)();
extern void ABISELECT(_ZThn672_N9S21148C10D1Ev,_ZThn380_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn672_N9S21148C10D0Ev,_ZThn380_N9S21148C10D0Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21148C10D1Ev,_ZTv0_n24_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn7040_N9S21148C10D1Ev,_ZThn4268_N9S21148C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C10D0Ev,_ZTv0_n24_N9S21148C10D0Ev)();
extern void ABISELECT(_ZThn7040_N9S21148C10D0Ev,_ZThn4268_N9S21148C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C10D1Ev,_ZThn4456_N9S21148C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C10D0Ev,_ZThn4456_N9S21148C10D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S21148C10D1Ev,_ZTv0_n12_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C10D1Ev,_ZThn5080_N9S21148C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C10D0Ev,_ZTv0_n12_N9S21148C10D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C10D0Ev,_ZThn5080_N9S21148C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C10D1Ev,_ZTv0_n16_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C10D1Ev,_ZThn24012_N9S21148C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C10D0Ev,_ZTv0_n16_N9S21148C10D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C10D0Ev,_ZThn24012_N9S21148C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C10D1Ev,_ZThn24124_N9S21148C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C10D0Ev,_ZThn24124_N9S21148C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21148C10D1Ev,_ZTv0_n32_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn39712_N9S21148C10D1Ev,_ZThn24348_N9S21148C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21148C10D0Ev,_ZTv0_n32_N9S21148C10D0Ev)();
extern void ABISELECT(_ZThn39712_N9S21148C10D0Ev,_ZThn24348_N9S21148C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N9S21148C10D1Ev,_ZTvn188_n32_N9S21148C10D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21148C10D0Ev,_ZTvn188_n32_N9S21148C10D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn43608_N9S21148C10D1Ev,_ZThn26880_N9S21148C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev)();
extern void ABISELECT(_ZThn43608_N9S21148C10D0Ev,_ZThn26880_N9S21148C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C10[] = {
  ABISELECT(43608,26880),
  ABISELECT(39712,24348),
  ABISELECT(8480,5168),
  ABISELECT(7040,4268),
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&_ZN9S21148C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C10D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21148C112v8Ev,
  (VTBL_ENTRY)&_ZN9S21148C102v9Ev,
  (VTBL_ENTRY)&_ZN9S21148C103v10Ev,
  (VTBL_ENTRY)&_ZN9S21148C103v11Ev,
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C10D1Ev,_ZThn144_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C10D0Ev,_ZThn144_N9S21148C10D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21148C10D1Ev,_ZThn380_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21148C10D0Ev,_ZThn380_N9S21148C10D0Ev),
  ABISELECT(-7040,-4268),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-7040,-4268),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C10D1Ev,_ZTv0_n24_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C10D0Ev,_ZTv0_n24_N9S21148C10D0Ev),
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C10D1Ev,_ZTv0_n12_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C10D0Ev,_ZTv0_n12_N9S21148C10D0Ev),
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C10D1Ev,_ZTv0_n16_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C10D0Ev,_ZTv0_n16_N9S21148C10D0Ev),
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-39712,-24348),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-39712,-24348),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C10D1Ev,_ZTv0_n32_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C10D0Ev,_ZTv0_n32_N9S21148C10D0Ev),
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-40048,-24536),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C10D1Ev,_ZTvn188_n32_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C10D0Ev,_ZTvn188_n32_N9S21148C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-43608,-26880),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-43608,-26880),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S21148C10[];
extern void _ZN9S21148C11D1Ev();
extern void _ZN9S21148C11D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
extern void _ZN9S21148C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C11__9S21148C10[] = {
  ABISELECT(43608,26880),
  ABISELECT(39712,24348),
  ABISELECT(8480,5168),
  ABISELECT(7040,4268),
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&_ZN9S21148C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21148C112v8Ev,
};
extern void _ZN9S21148C12D1Ev();
extern void _ZN9S21148C12D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(43608,26880),
  ABISELECT(39712,24348),
  ABISELECT(8480,5168),
  ABISELECT(7040,4268),
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&_ZN9S21148C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C16D1Ev();
extern void _ZN9S21148C16D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(7040,4268),
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&_ZN9S21148C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C16D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C17D1Ev();
extern void _ZN9S21148C17D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&_ZN9S21148C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C18D1Ev();
extern void _ZN9S21148C18D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C189S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(6928,4212),
  ABISELECT(7376,4456),
  ABISELECT(39328,24124),
  ABISELECT(39128,24012),
  ABISELECT(8360,5080),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&_ZN9S21148C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C18D1Ev,_ZThn5080_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C18D0Ev,_ZThn5080_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C189S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C18D1Ev,_ZThn24012_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C18D0Ev,_ZThn24012_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C189S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C18D1Ev,_ZThn24124_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C18D0Ev,_ZThn24124_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C189S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C18D1Ev,_ZThn4456_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C18D0Ev,_ZThn4456_N9S21148C18D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C189S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C179S21148C169S21148C129S21148C11__A1__9S21148C10[] = {
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C29S21148C179S21148C169S21148C129S21148C11__A3__9S21148C10[] = {
  ABISELECT(8096,4936),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn8096_N8S21148C6D1Ev,_ZThn4936_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn8096_N8S21148C6D0Ev,_ZThn4936_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C29S21148C179S21148C169S21148C129S21148C11__A3__9S21148C10[] = {
  ABISELECT(-8096,-4936),
  ABISELECT(-8096,-4936),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn7112_N8S21148C2D1Ev,_ZThn4312_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn7112_N8S21148C2D0Ev,_ZThn4312_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C29S21148C179S21148C169S21148C129S21148C11__A1__9S21148C10[] = {
  0,
  0,
  ABISELECT(-7112,-4312),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7112,-4312),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn8096_N8S21148C2D1Ev,_ZThn4936_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn8096_N8S21148C2D0Ev,_ZThn4936_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C29S21148C179S21148C169S21148C129S21148C11__A1__9S21148C10[] = {
  ABISELECT(-8096,-4936),
  ABISELECT(-8096,-4936),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C17D1Ev,_ZThn5080_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C17D0Ev,_ZThn5080_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C17D1Ev,_ZThn24012_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C17D0Ev,_ZThn24012_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C17D1Ev,_ZThn24124_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C17D0Ev,_ZThn24124_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C17D1Ev,_ZThn4456_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C17D0Ev,_ZThn4456_N9S21148C17D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C179S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C16D1Ev,_ZThn4456_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C16D0Ev,_ZThn4456_N9S21148C16D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C169S21148C129S21148C11__9S21148C10[] = {
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C16D1Ev,_ZThn5080_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C16D0Ev,_ZThn5080_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn7040_N9S21148C16D1Ev,_ZThn4268_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn7040_N9S21148C16D0Ev,_ZThn4268_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-7040,-4268),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-7040,-4268),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C16D1Ev,_ZThn24012_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C16D0Ev,_ZThn24012_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C16D1Ev,_ZThn24124_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C16D0Ev,_ZThn24124_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21148C16D1Ev,_ZThn144_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C16D0Ev,_ZThn144_N9S21148C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C17__A1__9S21148C169S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C16D1Ev,_ZThn144_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C16D0Ev,_ZThn144_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn7040_N9S21148C12D1Ev,_ZThn4268_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn7040_N9S21148C12D0Ev,_ZThn4268_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-7040,-4268),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-7040,-4268),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C12D1Ev,_ZThn4456_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C12D0Ev,_ZThn4456_N9S21148C12D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C129S21148C11__9S21148C10[] = {
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C12D1Ev,_ZThn5080_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C12D0Ev,_ZThn5080_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C12D1Ev,_ZThn24012_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C12D0Ev,_ZThn24012_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C12D1Ev,_ZThn24124_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C12D0Ev,_ZThn24124_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21148C12D1Ev,_ZThn144_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C12D0Ev,_ZThn144_N9S21148C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C179S21148C16__A1__9S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C12D1Ev,_ZThn144_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C12D0Ev,_ZThn144_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn39712_N9S21148C12D1Ev,_ZThn24348_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn39712_N9S21148C12D0Ev,_ZThn24348_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C8__9S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-39712,-24348),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-39712,-24348),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21148C12D1Ev,_ZTvn188_n32_N9S21148C12D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21148C12D0Ev,_ZTvn188_n32_N9S21148C12D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C38S21148C8__A1__9S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-40048,-24536),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C12D1Ev,_ZTvn188_n32_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C12D0Ev,_ZTvn188_n32_N9S21148C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn43608_N9S21148C12D1Ev,_ZThn26880_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn43608_N9S21148C12D0Ev,_ZThn26880_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C9__9S21148C129S21148C11__9S21148C10[] = {
  ABISELECT(-43608,-26880),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-43608,-26880),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21148C11D1Ev,_ZTv0_n24_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn7040_N9S21148C11D1Ev,_ZThn4268_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21148C11D0Ev,_ZTv0_n24_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn7040_N9S21148C11D0Ev,_ZThn4268_N9S21148C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C11__9S21148C10[] = {
  ABISELECT(-7040,-4268),
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-7040,-4268),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C11D1Ev,_ZTv0_n24_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C11D0Ev,_ZTv0_n24_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C11D1Ev,_ZThn4456_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn7376_N9S21148C11D0Ev,_ZThn4456_N9S21148C11D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C11__9S21148C10[] = {
  0,
  0,
  ABISELECT(-7376,-4456),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-7376,-4456),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C11D1Ev,_ZTv0_n12_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C11D1Ev,_ZThn5080_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21148C11D0Ev,_ZTv0_n12_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn8360_N9S21148C11D0Ev,_ZThn5080_N9S21148C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C11__9S21148C10[] = {
  ABISELECT(-8360,-5080),
  ABISELECT(-8360,-5080),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C11D1Ev,_ZTv0_n12_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C11D0Ev,_ZTv0_n12_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C11D1Ev,_ZTv0_n16_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C11D1Ev,_ZThn24012_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21148C11D0Ev,_ZTv0_n16_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn39128_N9S21148C11D0Ev,_ZThn24012_N9S21148C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C11__9S21148C10[] = {
  ABISELECT(-39128,-24012),
  ABISELECT(-30768,-18932),
  ABISELECT(-39128,-24012),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C11D1Ev,_ZTv0_n16_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C11D0Ev,_ZTv0_n16_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C11D1Ev,_ZThn24124_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn39328_N9S21148C11D0Ev,_ZThn24124_N9S21148C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C11__9S21148C10[] = {
  ABISELECT(-39328,-24124),
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  ABISELECT(-39328,-24124),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21148C11D1Ev,_ZThn144_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C11D0Ev,_ZThn144_N9S21148C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C179S21148C169S21148C12__A1__9S21148C11__9S21148C10[] = {
  ABISELECT(6664,4068),
  ABISELECT(7112,4312),
  ABISELECT(8096,4936),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C11D1Ev,_ZThn144_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C11D0Ev,_ZThn144_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21148C11D1Ev,_ZTv0_n32_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn39712_N9S21148C11D1Ev,_ZThn24348_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21148C11D0Ev,_ZTv0_n32_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn39712_N9S21148C11D0Ev,_ZThn24348_N9S21148C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C8__9S21148C11__9S21148C10[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-39712,-24348),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  ABISELECT(-39712,-24348),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C11D1Ev,_ZTv0_n32_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C11D0Ev,_ZTv0_n32_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21148C11D1Ev,_ZTvn188_n32_N9S21148C11D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21148C11D0Ev,_ZTvn188_n32_N9S21148C11D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C38S21148C8__A1__9S21148C11__9S21148C10[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-40048,-24536),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C11D1Ev,_ZTvn188_n32_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C11D0Ev,_ZTvn188_n32_N9S21148C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn43608_N9S21148C11D1Ev,_ZThn26880_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn43608_N9S21148C11D0Ev,_ZThn26880_N9S21148C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C9__9S21148C11__9S21148C10[] = {
  ABISELECT(-43608,-26880),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-43608,-26880),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev),
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C10[] = {
  ABISELECT(-112,-56),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C2__A1__9S21148C10[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C6D1Ev,_ZThn812_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C6D0Ev,_ZThn812_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C2__A1__9S21148C10[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21148C2D1Ev,_ZThn188_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21148C2D0Ev,_ZThn188_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C2__9S21148C10[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C2D1Ev,_ZThn812_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C2D0Ev,_ZThn812_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C2__9S21148C10[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C10[] = {
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C3__9S21148C10[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C3__9S21148C10[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C3__9S21148C10[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C10[] = {
  ABISELECT(-30768,-18932),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__A2__9S21148C10[] = {
  ABISELECT(30768,18932),
  ABISELECT(30768,18932),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void _ZN9S21148C15D1Ev();
extern void _ZN9S21148C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C10[] = {
  ABISELECT(-30968,-19044),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&_ZN9S21148C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C15__9S21148C10[] = {
  ABISELECT(200,112),
  ABISELECT(-30768,-18932),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C15__9S21148C10[] = {
  ABISELECT(30968,19044),
  ABISELECT(30968,19044),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev),
};
extern void _ZN8S21148C8D1Ev();
extern void _ZN8S21148C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C8__9S21148C10[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&_ZN8S21148C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C8D0Ev,
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C28S21148C8__A2__9S21148C10[] = {
  ABISELECT(-32784,-20136),
  ABISELECT(-32336,-19892),
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C28S21148C8__A4__9S21148C10[] = {
  ABISELECT(-31352,-19268),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C28S21148C8__A4__9S21148C10[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C28S21148C8__A2__9S21148C10[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C28S21148C8__A2__9S21148C10[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C38S21148C8__A1__9S21148C10[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C38S21148C8__A5__9S21148C10[] = {
  ABISELECT(-31688,-19456),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C38S21148C8__A5__9S21148C10[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C38S21148C8__A1__9S21148C10[] = {
  ABISELECT(31688,19456),
  ABISELECT(31688,19456),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C8__9S21148C10[] = {
  0,
  0,
  ABISELECT(32336,19892),
  ABISELECT(-448,-244),
  ABISELECT(984,624),
  ABISELECT(32336,19892),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C8__9S21148C10[] = {
  ABISELECT(31352,19268),
  ABISELECT(31352,19268),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev),
};
extern void ABISELECT(_ZThn336_N8S21148C8D1Ev,_ZThn188_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S21148C8D0Ev,_ZThn188_N8S21148C8D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__A__8S21148C8__9S21148C10[] = {
  ABISELECT(-33120,-20324),
  ABISELECT(-31688,-19456),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21148C8D1Ev,_ZThn188_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21148C8D0Ev,_ZThn188_N8S21148C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A3__8S21148C8__9S21148C10[] = {
  ABISELECT(584,336),
  ABISELECT(-30768,-18932),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev),
};
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn3896_N8S21148C8D1Ev,_ZThn2532_N8S21148C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev)();
extern void ABISELECT(_ZThn3896_N8S21148C8D0Ev,_ZThn2532_N8S21148C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C9__8S21148C8__9S21148C10[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35248,-21800),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev),
};
extern void _ZN8S21148C92v3Ev();
extern void _ZN8S21148C9D1Ev();
extern void _ZN8S21148C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C9__9S21148C10[] = {
  ABISELECT(-35248,-21800),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C9__9S21148C10[] = {
  ABISELECT(35248,21800),
  ABISELECT(35248,21800),
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev),
};
static  VTT_ENTRY vtt_S21148C10[] = {
  {&(_ZTV9S21148C10[11]),  11,97},
  {&(_tg__ZTV9S21148C11__9S21148C10[11]),  11,18},
  {&(_tg__ZTV9S21148C129S21148C11__9S21148C10[11]),  11,17},
  {&(_tg__ZTV9S21148C169S21148C129S21148C11__9S21148C10[8]),  8,14},
  {&(_tg__ZTV9S21148C179S21148C169S21148C129S21148C11__9S21148C10[7]),  7,13},
  {&(_tg__ZTV9S21148C189S21148C179S21148C169S21148C129S21148C11__9S21148C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C189S21148C179S21148C169S21148C129S21148C11__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C189S21148C179S21148C169S21148C129S21148C11__9S21148C10[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C189S21148C179S21148C169S21148C129S21148C11__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C189S21148C179S21148C169S21148C129S21148C11__9S21148C10[7]),  7,11},
  {&(_tg__ZTV8S21148C29S21148C179S21148C169S21148C129S21148C11__A1__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C29S21148C179S21148C169S21148C129S21148C11__A3__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C29S21148C179S21148C169S21148C129S21148C11__A3__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C29S21148C179S21148C169S21148C129S21148C11__A1__9S21148C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C29S21148C179S21148C169S21148C129S21148C11__A1__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21148C179S21148C169S21148C129S21148C11__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C179S21148C169S21148C129S21148C11__9S21148C10[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C179S21148C169S21148C129S21148C11__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C179S21148C169S21148C129S21148C11__9S21148C10[7]),  7,11},
  {&(_tg__ZTV8S21148C2__9S21148C179S21148C169S21148C129S21148C11__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C169S21148C129S21148C11__9S21148C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C169S21148C129S21148C11__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C2__9S21148C169S21148C129S21148C11__9S21148C10[6]),  6,8},
  {&(_tg__ZTV8S21148C6__A2__9S21148C169S21148C129S21148C11__9S21148C10[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C169S21148C129S21148C11__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C29S21148C17__A1__9S21148C169S21148C129S21148C11__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C2__9S21148C129S21148C11__9S21148C10[6]),  6,8},
  {&(_tg__ZTV8S21148C3__9S21148C129S21148C11__9S21148C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C129S21148C11__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A2__9S21148C129S21148C11__9S21148C10[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C129S21148C11__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C29S21148C179S21148C16__A1__9S21148C129S21148C11__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C8__9S21148C129S21148C11__9S21148C10[10]),  10,12},
  {&(_tg__ZTV8S21148C38S21148C8__A1__9S21148C129S21148C11__9S21148C10[4]),  4,8},
  {&(_tg__ZTV8S21148C9__9S21148C129S21148C11__9S21148C10[5]),  5,8},
  {&(_tg__ZTV8S21148C2__9S21148C11__9S21148C10[6]),  6,8},
  {&(_tg__ZTV8S21148C3__9S21148C11__9S21148C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C11__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A2__9S21148C11__9S21148C10[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C11__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C29S21148C179S21148C169S21148C12__A1__9S21148C11__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C8__9S21148C11__9S21148C10[10]),  10,12},
  {&(_tg__ZTV8S21148C38S21148C8__A1__9S21148C11__9S21148C10[4]),  4,8},
  {&(_tg__ZTV8S21148C9__9S21148C11__9S21148C10[5]),  5,8},
  {&(_ZTV9S21148C10[38]),  38,97},
  {&(_ZTV9S21148C10[47]),  47,97},
  {&(_ZTV9S21148C10[54]),  54,97},
  {&(_ZTV9S21148C10[60]),  60,97},
  {&(_ZTV9S21148C10[67]),  67,97},
  {&(_ZTV9S21148C10[26]),  26,97},
  {&(_ZTV9S21148C10[79]),  79,97},
  {&(_ZTV9S21148C10[85]),  85,97},
  {&(_ZTV9S21148C10[94]),  94,97},
  {&(_tg__ZTV8S21148C2__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C2__A1__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C2__A1__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C2__9S21148C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C2__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C3__9S21148C10[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C3__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C3__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C3__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A2__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__A2__9S21148C10[3]),  3,5},
  {&(_tg__ZTV9S21148C15__9S21148C10[4]),  4,6},
  {&(_tg__ZTV8S21148C6__9S21148C15__9S21148C10[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21148C15__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C8__9S21148C10[7]),  7,9},
  {&(_tg__ZTV8S21148C28S21148C8__A2__9S21148C10[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C28S21148C8__A4__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C28S21148C8__A4__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C28S21148C8__A2__9S21148C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C28S21148C8__A2__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C38S21148C8__A1__9S21148C10[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C38S21148C8__A5__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C38S21148C8__A5__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C38S21148C8__A1__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C8__9S21148C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C8__9S21148C10[3]),  3,5},
  {&(_tg__ZTV8S21148C3__A__8S21148C8__9S21148C10[4]),  4,8},
  {&(_tg__ZTV8S21148C6__A3__8S21148C8__9S21148C10[4]),  4,6},
  {&(_tg__ZTV8S21148C9__8S21148C8__9S21148C10[5]),  5,8},
  {&(_tg__ZTV8S21148C9__9S21148C10[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21148C9__9S21148C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21148C10[];
extern  VTBL_ENTRY _ZTV9S21148C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C10[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21148C8D0Ev,_ZThn2532_N8S21148C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21148C8D1Ev,_ZThn2532_N8S21148C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C11D0Ev,_ZTv0_n32_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21148C11D0Ev,_ZThn24348_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C11D1Ev,_ZTv0_n32_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21148C11D1Ev,_ZThn24348_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C11D0Ev,_ZTv0_n16_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C11D0Ev,_ZThn24012_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C11D1Ev,_ZTv0_n16_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C11D1Ev,_ZThn24012_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C11D0Ev,_ZTv0_n12_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C11D0Ev,_ZThn5080_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C11D1Ev,_ZTv0_n12_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C11D1Ev,_ZThn5080_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21148C11D0Ev,_ZThn26880_N9S21148C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C11D0Ev,_ZThn24124_N9S21148C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C11D0Ev,_ZThn4456_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21148C11D1Ev,_ZThn26880_N9S21148C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C11D1Ev,_ZThn24124_N9S21148C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C11D1Ev,_ZThn4456_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C11D0Ev,_ZTv0_n24_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21148C11D0Ev,_ZThn4268_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C11D1Ev,_ZTv0_n24_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21148C11D1Ev,_ZThn4268_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21148C12D0Ev,_ZThn24348_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21148C12D1Ev,_ZThn24348_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C12D0Ev,_ZThn24012_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C12D1Ev,_ZThn24012_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C12D0Ev,_ZThn5080_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C12D1Ev,_ZThn5080_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21148C12D0Ev,_ZThn26880_N9S21148C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C12D0Ev,_ZThn24124_N9S21148C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C12D0Ev,_ZThn4456_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21148C12D1Ev,_ZThn26880_N9S21148C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C12D1Ev,_ZThn24124_N9S21148C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C12D1Ev,_ZThn4456_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21148C12D0Ev,_ZThn4268_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21148C12D1Ev,_ZThn4268_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C16D0Ev,_ZThn24012_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C16D1Ev,_ZThn24012_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21148C16D0Ev,_ZThn4268_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21148C16D1Ev,_ZThn4268_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C16D0Ev,_ZThn5080_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C16D1Ev,_ZThn5080_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C16D0Ev,_ZThn24124_N9S21148C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C16D0Ev,_ZThn4456_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C16D1Ev,_ZThn24124_N9S21148C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C16D1Ev,_ZThn4456_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C17D0Ev,_ZThn4456_N9S21148C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C17D0Ev,_ZThn24124_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C17D1Ev,_ZThn4456_N9S21148C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C17D1Ev,_ZThn24124_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C17D0Ev,_ZThn24012_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C17D1Ev,_ZThn24012_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C17D0Ev,_ZThn5080_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C17D1Ev,_ZThn5080_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C2D0Ev,_ZThn812_N8S21148C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8096_N8S21148C2D0Ev,_ZThn4936_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C2D1Ev,_ZThn812_N8S21148C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8096_N8S21148C2D1Ev,_ZThn4936_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21148C2D0Ev,_ZThn188_N8S21148C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7112_N8S21148C2D0Ev,_ZThn4312_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21148C2D1Ev,_ZThn188_N8S21148C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7112_N8S21148C2D1Ev,_ZThn4312_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C6D0Ev,_ZThn812_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8096_N8S21148C6D0Ev,_ZThn4936_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C6D1Ev,_ZThn812_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8096_N8S21148C6D1Ev,_ZThn4936_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C18D0Ev,_ZThn4456_N9S21148C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C18D0Ev,_ZThn24124_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C18D1Ev,_ZThn4456_N9S21148C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C18D1Ev,_ZThn24124_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C18D0Ev,_ZThn24012_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C18D1Ev,_ZThn24012_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C18D0Ev,_ZThn5080_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C18D1Ev,_ZThn5080_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C10D0Ev,_ZTv0_n32_N9S21148C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21148C10D0Ev,_ZThn24348_N9S21148C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21148C10D1Ev,_ZTv0_n32_N9S21148C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39712_N9S21148C10D1Ev,_ZThn24348_N9S21148C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C10D0Ev,_ZTv0_n16_N9S21148C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C10D0Ev,_ZThn24012_N9S21148C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21148C10D1Ev,_ZTv0_n16_N9S21148C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39128_N9S21148C10D1Ev,_ZThn24012_N9S21148C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C10D0Ev,_ZTv0_n12_N9S21148C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C10D0Ev,_ZThn5080_N9S21148C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21148C10D1Ev,_ZTv0_n12_N9S21148C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8360_N9S21148C10D1Ev,_ZThn5080_N9S21148C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21148C10D0Ev,_ZThn26880_N9S21148C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C10D0Ev,_ZThn24124_N9S21148C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C10D0Ev,_ZThn4456_N9S21148C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43608_N9S21148C10D1Ev,_ZThn26880_N9S21148C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn39328_N9S21148C10D1Ev,_ZThn24124_N9S21148C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn7376_N9S21148C10D1Ev,_ZThn4456_N9S21148C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C10D0Ev,_ZTv0_n24_N9S21148C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21148C10D0Ev,_ZThn4268_N9S21148C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21148C10D1Ev,_ZTv0_n24_N9S21148C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7040_N9S21148C10D1Ev,_ZThn4268_N9S21148C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C10 = {  "S21148C10", // class name
  bases_S21148C10, 34,
  &(vtc_S21148C10[0]), // expected_vtbl_contents
  &(vtt_S21148C10[0]), // expected_vtt_contents
  ABISELECT(43616,26884), // object size
  NSPAIRA(_ZTI9S21148C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21148C10),97, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21148C10),84, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21148C1  : virtual S21148C2 , virtual S21148C8 , virtual S21148C10 {
  __tsi64 s21148c1f0;
  ::S21148C10 s21148c1f1;
  __tsi64 s21148c1f2:2;
  void *s21148c1f3;
  ~S21148C1(); // tgen
  S21148C1(); // tgen
};
//SIG(1 S21148C1) C1{ VBC2{ VBC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ m Fp[14]} BC6{ VBC4 BC5 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC5 BC6 Fi Fi Fi:28 Fi Fl} VBC8{ VBC5 BC2 BC3 VBC6 VBC9{ VBC4 v3} vd Fi Fi Fi FD Fp Fp FC6 Fp FC3 Fi Fp Fi FC4[8]} VBC10{ BC11{ VBC5 BC12{ VBC2 VBC13{ m FC14{ VBC15{ VBC4 v15} VBC16{ VBC4 VBC5 BC17{ VBC4 BC5 Fs[6] FL[3] FU7} v16 v17 FC17 FD[7] FC17 FL Fp[5]} vd FC18{ VBC17 BC4 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC16 Fi Fi FC15}[5] Fp} BC19{ VBC3 VBC2 BC20{ BC21{ VBC4 VBC6 VBC22{ VBC6 BC4 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC3 vd v4 v5 Fi Fi FC5 Fc Fc Fi Fs FL} BC2 v6 v7 FU23{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC4 vd FC5 Fi[10] Fi FC9 Fs Fi FL} VBC8 FC22 Fi FC24{ VBC4 BC6 VBC22 FD Fp Fp} FD Fs[3] Fi:0 Fi} vd v8 Fi Fi} v9 v10 v11 Fi Fc:0 Fi Fi Fs FC2 Fi Fs Fp FC25{ VBC26{ VBC4 BC27{ VBC4 BC5 Fs[6] FL[3] FU7} VBC28{ VBC27 BC4 Fc:6 Fc[8] FD FC5 FC5} FD Fp Fp} v12 FC29{ VBC30{ VBC4 VBC5 BC27 v13 v14 FC27 FD[7] FC27 FL Fp[5]} BC5 BC27 Fi Fi Fi:28 Fi Fl} Fp FD Fi}} FL FC10 FL:2 Fp}


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

static void Test_S21148C1()
{
  extern Class_Descriptor cd_S21148C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5455,13447)];
    init_test(&cd_S21148C1, buf);
    S21148C1 *dp, &lv = *(dp=new (buf) S21148C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(87264,53784), "sizeof(S21148C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21148C1)");
    /*is_ambiguous_... S21148C1::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C3*), ABISELECT(44968,27716), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*), ABISELECT(44968,27716), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*), ABISELECT(44968,27716), "S21148C1");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(44968,27716), "S21148C1");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C3*)(S21148C8*), ABISELECT(44968,27716), "S21148C1");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(44968,27716), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*), ABISELECT(44968,27716), "S21148C1");
    check_base_class_offset(lv, (S19674C5*)(S21148C9*), ABISELECT(44968,27716), "S21148C1");
    /*is_ambiguous_... S21148C18::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(44968,27716), "S21148C1");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(44968,27716), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*), ABISELECT(45088,27804), "S21148C1");
    /*is_ambiguous_... S21148C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C8*), ABISELECT(45088,27804), "S21148C1");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C3*)(S21148C8*), ABISELECT(45088,27804), "S21148C1");
    /*is_ambiguous_... S21148C11::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C11*)(S21148C10*), ABISELECT(45088,27804), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*), ABISELECT(43992,27096), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C3*), ABISELECT(43984,27092), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C3*)(S21148C2*), ABISELECT(43984,27092), "S21148C1");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*)(S21148C8*), ABISELECT(43984,27092), "S21148C1");
    check_base_class_offset(lv, (S21148C3*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(43984,27092), "S21148C1");
    check_base_class_offset(lv, (S21148C3*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(43984,27092), "S21148C1");
    check_base_class_offset(lv, (S21148C3*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(43984,27092), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*), ABISELECT(43840,27016), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*), ABISELECT(43656,26908), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*), ABISELECT(43648,26904), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C2*), ABISELECT(43648,26904), "S21148C1");
    /*is_ambiguous_... S21148C12::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C2*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(43648,26904), "S21148C1");
    /*is_ambiguous_... S21148C16::S21148C2 */ AMB_check_base_class_offset(lv, (S21148C2*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(43648,26904), "S21148C1");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*)(S21148C8*), ABISELECT(45392,27972), "S21148C1");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(45208,27864), "S21148C1");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*)(S21148C8*), ABISELECT(45200,27860), "S21148C1");
    check_base_class_offset(lv, (S21148C2*)(S21148C8*), ABISELECT(45200,27860), "S21148C1");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(45544,28052), "S21148C1");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C3*)(S21148C8*), ABISELECT(45536,28048), "S21148C1");
    /*is_ambiguous_... S21148C8::S21148C3 */ AMB_check_base_class_offset(lv, (S21148C3*)(S21148C8*), ABISELECT(45536,28048), "S21148C1");
    /*is_ambiguous_... S21148C1::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*), ABISELECT(49104,30396), "S21148C1");
    /*is_ambiguous_... S21148C8::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C8*), ABISELECT(49096,30392), "S21148C1");
    /*is_ambiguous_... S21148C18::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49096,30392), "S21148C1");
    check_base_class_offset(lv, (S21148C6*)(S21148C15*), ABISELECT(49096,30392), "S21148C1");
    check_base_class_offset(lv, (S21148C9*)(S21148C8*), 0, "S21148C1");
    check_base_class_offset(lv, (S21148C8*), ABISELECT(45200,27860), "S21148C1");
    check_base_class_offset(lv, (S21148C8*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(45200,27860), "S21148C1");
    check_base_class_offset(lv, (S19674C2*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(56224,34716), "S21148C1");
    /*is_ambiguous_... S21148C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C15*), ABISELECT(86880,53560), "S21148C1");
    check_base_class_offset(lv, (S21148C15*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(86880,53560), "S21148C1");
    /*is_ambiguous_... S21148C18::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49304,30508), "S21148C1");
    check_base_class_offset(lv, (S21148C18*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49296,30504), "S21148C1");
    /*is_ambiguous_... S21148C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49752,30760), "S21148C1");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49568,30652), "S21148C1");
    /*is_ambiguous_... S21148C2::S21148C6 */ AMB_check_base_class_offset(lv, (S21148C6*)(S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49560,30648), "S21148C1");
    check_base_class_offset(lv, (S21148C2*)(S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49560,30648), "S21148C1");
    check_base_class_offset(lv, (S21148C17*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49296,30504), "S21148C1");
    /*is_ambiguous_... S21148C16::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49968,30884), "S21148C1");
    check_base_class_offset(lv, (S21148C16*)(S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49296,30504), "S21148C1");
    check_base_class_offset(lv, (S21148C12*)(S21148C11*)(S21148C10*), ABISELECT(49296,30504), "S21148C1");
    check_base_class_offset(lv, (S21148C11*)(S21148C10*), ABISELECT(49296,30504), "S21148C1");
    check_base_class_offset(lv, (S21148C10*), ABISELECT(49296,30504), "S21148C1");
    check_field_offset(lv, s21148c1f0, ABISELECT(8,4), "S21148C1.s21148c1f0");
    check_field_offset(lv, s21148c1f1, ABISELECT(16,12), "S21148C1.s21148c1f1");
    set_bf_and_test(lv, s21148c1f2, ABISELECT(43632,26896), 0, 2, 1, "S21148C1");
    set_bf_and_test(lv, s21148c1f2, ABISELECT(43632,26896), 0, 2, hide_sll(1LL<<1), "S21148C1");
    check_field_offset(lv, s21148c1f3, ABISELECT(43640,26900), "S21148C1.s21148c1f3");
    test_class_info(&lv, &cd_S21148C1);
    dp->~S21148C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21148C1(Test_S21148C1, "S21148C1", ABISELECT(87264,53784));

#else // __cplusplus

extern void _ZN8S21148C1C1Ev();
extern void _ZN8S21148C1D1Ev();
Name_Map name_map_S21148C1[] = {
  NSPAIR(_ZN8S21148C1C1Ev),
  NSPAIR(_ZN8S21148C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C3;
extern VTBL_ENTRY _ZTI8S21148C3[];
extern  VTBL_ENTRY _ZTV8S21148C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C9;
extern VTBL_ENTRY _ZTI8S21148C9[];
extern  VTBL_ENTRY _ZTV8S21148C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C9[];
extern Class_Descriptor cd_S21148C8;
extern VTBL_ENTRY _ZTI8S21148C8[];
extern  VTBL_ENTRY _ZTV8S21148C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C8[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C15;
extern VTBL_ENTRY _ZTI9S21148C15[];
extern  VTBL_ENTRY _ZTV9S21148C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C18;
extern VTBL_ENTRY _ZTI9S21148C18[];
extern  VTBL_ENTRY _ZTV9S21148C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C18[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21148C6;
extern VTBL_ENTRY _ZTI8S21148C6[];
extern  VTBL_ENTRY _ZTV8S21148C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C6[];
extern Class_Descriptor cd_S21148C2;
extern VTBL_ENTRY _ZTI8S21148C2[];
extern  VTBL_ENTRY _ZTV8S21148C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C2[];
extern Class_Descriptor cd_S21148C17;
extern VTBL_ENTRY _ZTI9S21148C17[];
extern  VTBL_ENTRY _ZTV9S21148C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C17[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21148C16;
extern VTBL_ENTRY _ZTI9S21148C16[];
extern  VTBL_ENTRY _ZTV9S21148C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C16[];
extern Class_Descriptor cd_S21148C12;
extern VTBL_ENTRY _ZTI9S21148C12[];
extern  VTBL_ENTRY _ZTV9S21148C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C12[];
extern Class_Descriptor cd_S21148C11;
extern VTBL_ENTRY _ZTI9S21148C11[];
extern  VTBL_ENTRY _ZTV9S21148C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C11[];
extern Class_Descriptor cd_S21148C10;
extern VTBL_ENTRY _ZTI9S21148C10[];
extern  VTBL_ENTRY _ZTV9S21148C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21148C10[];
static Base_Class bases_S21148C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(44968,27716), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(45088,27804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(43992,27096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21148C6,    ABISELECT(43984,27092), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(43984,27092), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(43840,27016), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(43656,26908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(43648,26904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(43648,26904), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(45392,27972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(45208,27864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(45200,27860), //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
    12, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(45200,27860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(45544,28052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(45536,28048), //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
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21148C3,    ABISELECT(45536,28048), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(49104,30396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(49096,30392), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21148C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21148C8,    ABISELECT(45200,27860), //bcp->offset
    41, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C2,    ABISELECT(56224,34716), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(86880,53560), //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S21148C15,    ABISELECT(86880,53560), //bcp->offset
    108, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(49304,30508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C18,    ABISELECT(49296,30504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(49752,30760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(49568,30652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21148C6,    ABISELECT(49560,30648), //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
    16, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21148C2,    ABISELECT(49560,30648), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S21148C17,    ABISELECT(49296,30504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(49968,30884), //bcp->offset
    104, //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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21148C16,    ABISELECT(49296,30504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21148C12,    ABISELECT(49296,30504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21148C11,    ABISELECT(49296,30504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21148C10,    ABISELECT(49296,30504), //bcp->offset
    67, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21148C1[];
extern void _ZN8S21148C92v3Ev();
extern void _ZN8S21148C1D1Ev();
extern void _ZN8S21148C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S21148C1D1Ev,_ZTv0_n24_N8S21148C1D1Ev)();
extern void ABISELECT(_ZThn43648_N8S21148C1D1Ev,_ZThn26904_N8S21148C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21148C1D0Ev,_ZTv0_n24_N8S21148C1D0Ev)();
extern void ABISELECT(_ZThn43648_N8S21148C1D0Ev,_ZThn26904_N8S21148C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C1D1Ev,_ZTv0_n20_N8S21148C1D1Ev)();
extern void ABISELECT(_ZThn43984_N8S21148C1D1Ev,_ZThn27092_N8S21148C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C1D0Ev,_ZTv0_n20_N8S21148C1D0Ev)();
extern void ABISELECT(_ZThn43984_N8S21148C1D0Ev,_ZThn27092_N8S21148C1D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S21148C1D1Ev,_ZTv0_n12_N8S21148C1D1Ev)();
extern void ABISELECT(_ZThn44968_N8S21148C1D1Ev,_ZThn27716_N8S21148C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C1D0Ev,_ZTv0_n12_N8S21148C1D0Ev)();
extern void ABISELECT(_ZThn44968_N8S21148C1D0Ev,_ZThn27716_N8S21148C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21148C1D1Ev,_ZTv0_n32_N8S21148C1D1Ev)();
extern void ABISELECT(_ZThn45200_N8S21148C1D1Ev,_ZThn27860_N8S21148C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21148C1D0Ev,_ZTv0_n32_N8S21148C1D0Ev)();
extern void ABISELECT(_ZThn45200_N8S21148C1D0Ev,_ZThn27860_N8S21148C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N8S21148C1D1Ev,_ZTvn188_n32_N8S21148C1D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N8S21148C1D0Ev,_ZTvn188_n32_N8S21148C1D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S21148C1D1Ev,_ZTv0_n16_N8S21148C1D1Ev)();
extern void ABISELECT(_ZThn49096_N8S21148C1D1Ev,_ZThn30392_N8S21148C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21148C1D0Ev,_ZTv0_n16_N8S21148C1D0Ev)();
extern void ABISELECT(_ZThn49096_N8S21148C1D0Ev,_ZThn30392_N8S21148C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21148C1D1Ev,_ZTv0_n48_N8S21148C1D1Ev)();
extern void ABISELECT(_ZThn49296_N8S21148C1D1Ev,_ZThn30504_N8S21148C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S21148C1D0Ev,_ZTv0_n48_N8S21148C1D0Ev)();
extern void ABISELECT(_ZThn49296_N8S21148C1D0Ev,_ZThn30504_N8S21148C1D0Ev)() __attribute__((weak));
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
extern void _ZN9S21148C112v8Ev();
extern void _ZN9S21148C102v9Ev();
extern void _ZN9S21148C103v10Ev();
extern void _ZN9S21148C103v11Ev();
extern void ABISELECT(_ZTvn264_n96_N8S21148C1D1Ev,_ZTvn144_n48_N8S21148C1D1Ev)();
extern void ABISELECT(_ZTvn264_n96_N8S21148C1D0Ev,_ZTvn144_n48_N8S21148C1D0Ev)();
extern void ABISELECT(_ZTvn672_n96_N8S21148C1D1Ev,_ZTvn380_n48_N8S21148C1D1Ev)();
extern void ABISELECT(_ZTvn672_n96_N8S21148C1D0Ev,_ZTvn380_n48_N8S21148C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C1D1Ev,_ZTv0_n20_N8S21148C1D1Ev)();
extern void ABISELECT(_ZThn86880_N8S21148C1D1Ev,_ZThn53560_N8S21148C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C1D0Ev,_ZTv0_n20_N8S21148C1D0Ev)();
extern void ABISELECT(_ZThn86880_N8S21148C1D0Ev,_ZThn53560_N8S21148C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21148C1[] = {
  ABISELECT(86880,53560),
  ABISELECT(56224,34716),
  ABISELECT(49296,30504),
  0,
  ABISELECT(49096,30392),
  ABISELECT(45200,27860),
  ABISELECT(45088,27804),
  ABISELECT(43984,27092),
  ABISELECT(43648,26904),
  0,
  0,
  ABISELECT(44968,27716),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21148C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C1D0Ev,
  ABISELECT(-43648,-26904),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-43648,-26904),
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21148C1D1Ev,_ZTv0_n24_N8S21148C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21148C1D0Ev,_ZTv0_n24_N8S21148C1D0Ev),
  0,
  0,
  ABISELECT(-43984,-27092),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-43984,-27092),
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C1D1Ev,_ZTv0_n20_N8S21148C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C1D0Ev,_ZTv0_n20_N8S21148C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-44968,-27716),
  ABISELECT(-44968,-27716),
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C1D1Ev,_ZTv0_n12_N8S21148C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C1D0Ev,_ZTv0_n12_N8S21148C1D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-45200,-27860),
  ABISELECT(-45200,-27860),
  ABISELECT(3896,2532),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(-45200,-27860),
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21148C1D1Ev,_ZTv0_n32_N8S21148C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21148C1D0Ev,_ZTv0_n32_N8S21148C1D0Ev),
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  ABISELECT(-45536,-28048),
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21148C1D1Ev,_ZTvn188_n32_N8S21148C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21148C1D0Ev,_ZTvn188_n32_N8S21148C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
  ABISELECT(-49096,-30392),
  ABISELECT(-4128,-2676),
  ABISELECT(-49096,-30392),
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C1D1Ev,_ZTv0_n16_N8S21148C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C1D0Ev,_ZTv0_n16_N8S21148C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-49296,-30504),
  ABISELECT(-49296,-30504),
  ABISELECT(-4096,-2644),
  ABISELECT(6928,4212),
  ABISELECT(-5648,-3600),
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  ABISELECT(-49296,-30504),
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21148C1D1Ev,_ZTv0_n48_N8S21148C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S21148C1D0Ev,_ZTv0_n48_N8S21148C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21148C112v8Ev,
  (VTBL_ENTRY)&_ZN9S21148C102v9Ev,
  (VTBL_ENTRY)&_ZN9S21148C103v10Ev,
  (VTBL_ENTRY)&_ZN9S21148C103v11Ev,
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-49560,-30648),
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n96_N8S21148C1D1Ev,_ZTvn144_n48_N8S21148C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n96_N8S21148C1D0Ev,_ZTvn144_n48_N8S21148C1D0Ev),
  ABISELECT(-49968,-30884),
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n96_N8S21148C1D1Ev,_ZTvn380_n48_N8S21148C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n96_N8S21148C1D0Ev,_ZTvn380_n48_N8S21148C1D0Ev),
  ABISELECT(-86880,-53560),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-86880,-53560),
  (VTBL_ENTRY)&(_ZTI8S21148C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C1D1Ev,_ZTv0_n20_N8S21148C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C1D0Ev,_ZTv0_n20_N8S21148C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21148C1[];
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C2__8S21148C1[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C2__A1__8S21148C1[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C6D1Ev,_ZThn812_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C6D0Ev,_ZThn812_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C2__A1__8S21148C1[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21148C2D1Ev,_ZThn188_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21148C2D0Ev,_ZThn188_N8S21148C2D0Ev)() __attribute__((weak));
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C2__8S21148C1[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C2D1Ev,_ZThn812_N8S21148C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21148C2D0Ev,_ZThn812_N8S21148C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C2__8S21148C1[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C1[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C3__8S21148C1[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C3__8S21148C1[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
extern void ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C3__8S21148C1[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void _ZN8S21148C8D1Ev();
extern void _ZN8S21148C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C8__8S21148C1[] = {
  ABISELECT(-45200,-27860),
  ABISELECT(3896,2532),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&_ZN8S21148C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C8D0Ev,
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C28S21148C8__A1__8S21148C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C28S21148C8__A2__8S21148C1[] = {
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C28S21148C8__A2__8S21148C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C28S21148C8__A1__8S21148C1[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C28S21148C8__A1__8S21148C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void _ZN8S21148C3D1Ev();
extern void _ZN8S21148C3D0Ev();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C38S21148C8__A1__8S21148C1[] = {
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&_ZN8S21148C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C38S21148C8__A3__8S21148C1[] = {
  ABISELECT(-568,-332),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C38S21148C8__A3__8S21148C1[] = {
  ABISELECT(568,332),
  ABISELECT(568,332),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C38S21148C8__A1__8S21148C1[] = {
  ABISELECT(568,332),
  ABISELECT(568,332),
  (VTBL_ENTRY)&(_ZTI8S21148C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C8__8S21148C1[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C8__8S21148C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C8D1Ev,_ZTv0_n12_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C8D0Ev,_ZTv0_n12_N8S21148C8D0Ev),
};
extern void ABISELECT(_ZThn336_N8S21148C8D1Ev,_ZThn188_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn336_N8S21148C8D0Ev,_ZThn188_N8S21148C8D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__A__8S21148C8__8S21148C1[] = {
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21148C8D1Ev,_ZThn188_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21148C8D0Ev,_ZThn188_N8S21148C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev)();
extern void ABISELECT(_ZThn3896_N8S21148C8D1Ev,_ZThn2532_N8S21148C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev)();
extern void ABISELECT(_ZThn3896_N8S21148C8D0Ev,_ZThn2532_N8S21148C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21148C6__A3__8S21148C8__8S21148C1[] = {
  ABISELECT(-3896,-2532),
  ABISELECT(-4128,-2676),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev),
};
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C9__8S21148C8__8S21148C1[] = {
  ABISELECT(45200,27860),
  0,
  ABISELECT(44968,27716),
  ABISELECT(45200,27860),
  (VTBL_ENTRY)&(_ZTI8S21148C8[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D1Ev,_ZTv0_n20_N8S21148C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C8D0Ev,_ZTv0_n20_N8S21148C8D0Ev),
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A4__8S21148C1[] = {
  ABISELECT(-4128,-2676),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C6__A4__8S21148C1[] = {
  ABISELECT(4128,2676),
  ABISELECT(4128,2676),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void _ZN8S21148C92v3Ev();
extern void _ZN8S21148C9D1Ev();
extern void _ZN8S21148C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C9__8S21148C1[] = {
  ABISELECT(44968,27716),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev)();
extern void ABISELECT(_ZThn44968_N8S21148C9D1Ev,_ZThn27716_N8S21148C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev)();
extern void ABISELECT(_ZThn44968_N8S21148C9D0Ev,_ZThn27716_N8S21148C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C9__8S21148C1[] = {
  ABISELECT(-44968,-27716),
  ABISELECT(-44968,-27716),
  (VTBL_ENTRY)&(_ZTI8S21148C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev),
};
extern void _ZN9S21148C10D1Ev();
extern void _ZN9S21148C10D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
extern void _ZN9S21148C112v8Ev();
extern void _ZN9S21148C102v9Ev();
extern void _ZN9S21148C103v10Ev();
extern void _ZN9S21148C103v11Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C10__8S21148C1[] = {
  ABISELECT(-49296,-30504),
  ABISELECT(-4096,-2644),
  ABISELECT(6928,4212),
  ABISELECT(-5648,-3600),
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&_ZN9S21148C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C10D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21148C112v8Ev,
  (VTBL_ENTRY)&_ZN9S21148C102v9Ev,
  (VTBL_ENTRY)&_ZN9S21148C103v10Ev,
  (VTBL_ENTRY)&_ZN9S21148C103v11Ev,
};
extern void _ZN9S21148C11D1Ev();
extern void _ZN9S21148C11D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
extern void _ZN9S21148C112v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-49296,-30504),
  ABISELECT(-4096,-2644),
  ABISELECT(6928,4212),
  ABISELECT(-5648,-3600),
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&_ZN9S21148C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
  (VTBL_ENTRY)&_ZN9S21148C112v8Ev,
};
extern void _ZN9S21148C12D1Ev();
extern void _ZN9S21148C12D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-49296,-30504),
  ABISELECT(-4096,-2644),
  ABISELECT(6928,4212),
  ABISELECT(-5648,-3600),
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&_ZN9S21148C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C16D1Ev();
extern void _ZN9S21148C16D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-5648,-3600),
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&_ZN9S21148C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C16D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C17D1Ev();
extern void _ZN9S21148C17D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
extern void _ZN9S21148C172v6Ev();
extern void _ZN9S21148C172v7Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&_ZN9S21148C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C17D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v6Ev,
  (VTBL_ENTRY)&_ZN9S21148C172v7Ev,
};
extern void _ZN9S21148C18D1Ev();
extern void _ZN9S21148C18D0Ev();
extern void _ZN9S21148C182v4Ev();
extern void _ZN9S21148C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C189S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-4208,-2700),
  ABISELECT(-5312,-3412),
  ABISELECT(37584,23056),
  ABISELECT(-200,-112),
  ABISELECT(-4328,-2788),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&_ZN9S21148C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C18D0Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v4Ev,
  (VTBL_ENTRY)&_ZN9S21148C182v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C189S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D1Ev,_ZTv0_n12_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C18D0Ev,_ZTv0_n12_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C189S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D1Ev,_ZTv0_n16_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C18D0Ev,_ZTv0_n16_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C18D1Ev,_ZThn23056_N9S21148C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C18D0Ev,_ZThn23056_N9S21148C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C189S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C189S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21148C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C2D1Ev();
extern void _ZN8S21148C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C179S21148C169S21148C129S21148C119S21148C10__A2__8S21148C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&_ZN8S21148C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C2D0Ev,
};
extern void _ZN8S21148C6D1Ev();
extern void _ZN8S21148C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C68S21148C29S21148C179S21148C169S21148C129S21148C119S21148C10__A5__8S21148C1[] = {
  ABISELECT(-4592,-2932),
  0,
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&_ZN8S21148C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21148C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C68S21148C29S21148C179S21148C169S21148C129S21148C119S21148C10__A5__8S21148C1[] = {
  ABISELECT(4592,2932),
  ABISELECT(4592,2932),
  (VTBL_ENTRY)&(_ZTI8S21148C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__8S21148C29S21148C179S21148C169S21148C129S21148C119S21148C10__A2__8S21148C1[] = {
  0,
  0,
  ABISELECT(5576,3556),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5576,3556),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21148C29S21148C179S21148C169S21148C129S21148C119S21148C10__A2__8S21148C1[] = {
  ABISELECT(4592,2932),
  ABISELECT(4592,2932),
  (VTBL_ENTRY)&(_ZTI8S21148C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D1Ev,_ZTv0_n12_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C17D0Ev,_ZTv0_n12_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D1Ev,_ZTv0_n16_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C17D0Ev,_ZTv0_n16_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C17D1Ev,_ZThn23056_N9S21148C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C17D0Ev,_ZThn23056_N9S21148C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D1Ev,_ZThn144_N9S21148C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C17D0Ev,_ZThn144_N9S21148C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C16D1Ev,_ZTv0_n12_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C16D0Ev,_ZTv0_n12_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(5648,3600),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(5648,3600),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C16D1Ev,_ZTv0_n24_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C16D0Ev,_ZTv0_n24_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C16D1Ev,_ZTv0_n16_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C16D0Ev,_ZTv0_n16_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C16D1Ev,_ZThn23056_N9S21148C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C16D0Ev,_ZThn23056_N9S21148C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21148C16D1Ev,_ZThn144_N9S21148C16D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C16D0Ev,_ZThn144_N9S21148C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C17__A1__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C16D1Ev,_ZThn144_N9S21148C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C16D0Ev,_ZThn144_N9S21148C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(5648,3600),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(5648,3600),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C12D1Ev,_ZTv0_n24_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C12D0Ev,_ZTv0_n24_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C129S21148C119S21148C10__8S21148C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C12D1Ev,_ZTv0_n12_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C12D0Ev,_ZTv0_n12_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C12D1Ev,_ZTv0_n16_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C12D0Ev,_ZTv0_n16_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C12D1Ev,_ZThn23056_N9S21148C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C12D0Ev,_ZThn23056_N9S21148C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21148C12D1Ev,_ZThn144_N9S21148C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C12D0Ev,_ZThn144_N9S21148C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C179S21148C16__A1__9S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C12D1Ev,_ZThn144_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C12D0Ev,_ZThn144_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C8__9S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(4096,2644),
  ABISELECT(-45200,-27860),
  ABISELECT(3896,2532),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(4096,2644),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C12D1Ev,_ZTv0_n32_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C12D0Ev,_ZTv0_n32_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21148C12D1Ev,_ZTvn188_n32_N9S21148C12D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21148C12D0Ev,_ZTvn188_n32_N9S21148C12D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C38S21148C8__A1__9S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  ABISELECT(3760,2456),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C12D1Ev,_ZTvn188_n32_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C12D0Ev,_ZTvn188_n32_N9S21148C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C9__9S21148C129S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(49296,30504),
  0,
  ABISELECT(44968,27716),
  ABISELECT(49296,30504),
  (VTBL_ENTRY)&(_ZTI9S21148C12[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21148C11D1Ev,_ZTv0_n24_N9S21148C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21148C11D0Ev,_ZTv0_n24_N9S21148C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(5648,3600),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(5648,3600),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C11D1Ev,_ZTv0_n24_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C11D0Ev,_ZTv0_n24_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C119S21148C10__8S21148C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C11D1Ev,_ZTv0_n12_N9S21148C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C11D0Ev,_ZTv0_n12_N9S21148C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C11D1Ev,_ZTv0_n12_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C11D0Ev,_ZTv0_n12_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C11D1Ev,_ZTv0_n16_N9S21148C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C11D0Ev,_ZTv0_n16_N9S21148C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C11D1Ev,_ZTv0_n16_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C11D0Ev,_ZTv0_n16_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C11D1Ev,_ZThn23056_N9S21148C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C11D0Ev,_ZThn23056_N9S21148C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21148C11D1Ev,_ZThn144_N9S21148C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C11D0Ev,_ZThn144_N9S21148C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C179S21148C169S21148C12__A1__9S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C11D1Ev,_ZThn144_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C11D0Ev,_ZThn144_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21148C11D1Ev,_ZTv0_n32_N9S21148C11D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21148C11D0Ev,_ZTv0_n32_N9S21148C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C8__9S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(4096,2644),
  ABISELECT(-45200,-27860),
  ABISELECT(3896,2532),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(4096,2644),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C11D1Ev,_ZTv0_n32_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C11D0Ev,_ZTv0_n32_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21148C11D1Ev,_ZTvn188_n32_N9S21148C11D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21148C11D0Ev,_ZTvn188_n32_N9S21148C11D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C38S21148C8__A1__9S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  ABISELECT(3760,2456),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C11D1Ev,_ZTvn188_n32_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C11D0Ev,_ZTvn188_n32_N9S21148C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C9__9S21148C119S21148C10__8S21148C1[] = {
  ABISELECT(49296,30504),
  0,
  ABISELECT(44968,27716),
  ABISELECT(49296,30504),
  (VTBL_ENTRY)&(_ZTI9S21148C11[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21148C10D1Ev,_ZTv0_n24_N9S21148C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21148C10D0Ev,_ZTv0_n24_N9S21148C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C2__9S21148C10__8S21148C1[] = {
  ABISELECT(5648,3600),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(5648,3600),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C10D1Ev,_ZTv0_n24_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21148C10D0Ev,_ZTv0_n24_N9S21148C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C3__9S21148C10__8S21148C1[] = {
  0,
  0,
  ABISELECT(5312,3412),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(5312,3412),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21148C10D1Ev,_ZTv0_n12_N9S21148C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C10D0Ev,_ZTv0_n12_N9S21148C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C10__8S21148C1[] = {
  ABISELECT(4328,2788),
  ABISELECT(4328,2788),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C10D1Ev,_ZTv0_n12_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C10D0Ev,_ZTv0_n12_N9S21148C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21148C10D1Ev,_ZTv0_n16_N9S21148C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C10D0Ev,_ZTv0_n16_N9S21148C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__A2__9S21148C10__8S21148C1[] = {
  ABISELECT(200,112),
  ABISELECT(-4128,-2676),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C10D1Ev,_ZTv0_n16_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C10D0Ev,_ZTv0_n16_N9S21148C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C10D1Ev,_ZThn23056_N9S21148C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev)();
extern void ABISELECT(_ZThn37584_N9S21148C10D0Ev,_ZThn23056_N9S21148C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21148C15__9S21148C10__8S21148C1[] = {
  ABISELECT(-37584,-23056),
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  ABISELECT(-37584,-23056),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev),
};
extern void ABISELECT(_ZThn264_N9S21148C10D1Ev,_ZThn144_N9S21148C10D1Ev)();
extern void ABISELECT(_ZThn264_N9S21148C10D0Ev,_ZThn144_N9S21148C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C29S21148C179S21148C169S21148C129S21148C11__A1__9S21148C10__8S21148C1[] = {
  ABISELECT(-4472,-2844),
  ABISELECT(-5576,-3556),
  ABISELECT(-4592,-2932),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C10D1Ev,_ZThn144_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21148C10D0Ev,_ZThn144_N9S21148C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21148C10D1Ev,_ZTv0_n32_N9S21148C10D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21148C10D0Ev,_ZTv0_n32_N9S21148C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C8__9S21148C10__8S21148C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(4096,2644),
  ABISELECT(-45200,-27860),
  ABISELECT(3896,2532),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(4096,2644),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C10D1Ev,_ZTv0_n32_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21148C10D0Ev,_ZTv0_n32_N9S21148C10D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N9S21148C10D1Ev,_ZTvn188_n32_N9S21148C10D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N9S21148C10D0Ev,_ZTvn188_n32_N9S21148C10D0Ev)();
extern void _ZN8S21148C32v1Ev();
extern void _ZN8S21148C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21148C38S21148C8__A1__9S21148C10__8S21148C1[] = {
  ABISELECT(-448,-244),
  ABISELECT(-568,-332),
  ABISELECT(3760,2456),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C10D1Ev,_ZTvn188_n32_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N9S21148C10D0Ev,_ZTvn188_n32_N9S21148C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21148C32v1Ev,
  (VTBL_ENTRY)&_ZN8S21148C32v2Ev,
};
extern void _ZN8S21148C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C9__9S21148C10__8S21148C1[] = {
  ABISELECT(49296,30504),
  0,
  ABISELECT(44968,27716),
  ABISELECT(49296,30504),
  (VTBL_ENTRY)&(_ZTI9S21148C10[0]),
  (VTBL_ENTRY)&_ZN8S21148C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev),
};
extern void _ZN9S21148C15D1Ev();
extern void _ZN9S21148C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21148C15__8S21148C1[] = {
  ABISELECT(-41912,-25844),
  ABISELECT(-37784,-23168),
  0,
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&_ZN9S21148C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21148C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21148C6__9S21148C15__8S21148C1[] = {
  ABISELECT(37784,23168),
  ABISELECT(-4128,-2676),
  ABISELECT(37784,23168),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D1Ev,_ZTv0_n16_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21148C15D0Ev,_ZTv0_n16_N9S21148C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21148C15__8S21148C1[] = {
  ABISELECT(41912,25844),
  ABISELECT(41912,25844),
  (VTBL_ENTRY)&(_ZTI9S21148C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D1Ev,_ZTv0_n12_N9S21148C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21148C15D0Ev,_ZTv0_n12_N9S21148C15D0Ev),
};
static  VTT_ENTRY vtt_S21148C1[] = {
  {&(_ZTV8S21148C1[14]),  14,115},
  {&(_ZTV8S21148C1[23]),  23,115},
  {&(_ZTV8S21148C1[32]),  32,115},
  {&(_ZTV8S21148C1[39]),  39,115},
  {&(_ZTV8S21148C1[51]),  51,115},
  {&(_ZTV8S21148C1[57]),  57,115},
  {&(_ZTV8S21148C1[65]),  65,115},
  {&(_ZTV8S21148C1[14]),  14,115},
  {&(_ZTV8S21148C1[87]),  87,115},
  {&(_ZTV8S21148C1[113]),  113,115},
  {&(_ZTV8S21148C1[102]),  102,115},
  {&(_ZTV8S21148C1[106]),  106,115},
  {&(_tg__ZTV8S21148C2__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C2__A1__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C2__A1__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C2__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C2__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C1[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C3__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C3__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C3__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C8__8S21148C1[7]),  7,9},
  {&(_tg__ZTV8S21148C28S21148C8__A1__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C28S21148C8__A2__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C28S21148C8__A2__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C28S21148C8__A1__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C28S21148C8__A1__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C38S21148C8__A1__8S21148C1[4]),  4,8},
  {&(_tg__ZTV8S21148C68S21148C38S21148C8__A3__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C38S21148C8__A3__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C38S21148C8__A1__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C8__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C8__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C3__A__8S21148C8__8S21148C1[4]),  4,8},
  {&(_tg__ZTV8S21148C6__A3__8S21148C8__8S21148C1[4]),  4,6},
  {&(_tg__ZTV8S21148C9__8S21148C8__8S21148C1[5]),  5,8},
  {&(_tg__ZTV8S21148C6__A4__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C6__A4__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C9__8S21148C1[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21148C9__8S21148C1[3]),  3,5},
  {&(_tg__ZTV9S21148C10__8S21148C1[11]),  11,21},
  {&(_tg__ZTV9S21148C119S21148C10__8S21148C1[11]),  11,18},
  {&(_tg__ZTV9S21148C129S21148C119S21148C10__8S21148C1[11]),  11,17},
  {&(_tg__ZTV9S21148C169S21148C129S21148C119S21148C10__8S21148C1[8]),  8,14},
  {&(_tg__ZTV9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[7]),  7,13},
  {&(_tg__ZTV9S21148C189S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C189S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C189S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C189S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C189S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S21148C29S21148C179S21148C169S21148C129S21148C119S21148C10__A2__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C68S21148C29S21148C179S21148C169S21148C129S21148C119S21148C10__A5__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21148C68S21148C29S21148C179S21148C169S21148C129S21148C119S21148C10__A5__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C3__8S21148C29S21148C179S21148C169S21148C129S21148C119S21148C10__A2__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21148C29S21148C179S21148C169S21148C129S21148C119S21148C10__A2__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C6__9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S21148C2__9S21148C179S21148C169S21148C129S21148C119S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C3__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C2__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[6]),  6,8},
  {&(_tg__ZTV8S21148C6__A2__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C29S21148C17__A1__9S21148C169S21148C129S21148C119S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C2__9S21148C129S21148C119S21148C10__8S21148C1[6]),  6,8},
  {&(_tg__ZTV8S21148C3__9S21148C129S21148C119S21148C10__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C129S21148C119S21148C10__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A2__9S21148C129S21148C119S21148C10__8S21148C1[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C129S21148C119S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C29S21148C179S21148C16__A1__9S21148C129S21148C119S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C8__9S21148C129S21148C119S21148C10__8S21148C1[10]),  10,12},
  {&(_tg__ZTV8S21148C38S21148C8__A1__9S21148C129S21148C119S21148C10__8S21148C1[4]),  4,8},
  {&(_tg__ZTV8S21148C9__9S21148C129S21148C119S21148C10__8S21148C1[5]),  5,8},
  {&(_tg__ZTV8S21148C2__9S21148C119S21148C10__8S21148C1[6]),  6,8},
  {&(_tg__ZTV8S21148C3__9S21148C119S21148C10__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C119S21148C10__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A2__9S21148C119S21148C10__8S21148C1[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C119S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C29S21148C179S21148C169S21148C12__A1__9S21148C119S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C8__9S21148C119S21148C10__8S21148C1[10]),  10,12},
  {&(_tg__ZTV8S21148C38S21148C8__A1__9S21148C119S21148C10__8S21148C1[4]),  4,8},
  {&(_tg__ZTV8S21148C9__9S21148C119S21148C10__8S21148C1[5]),  5,8},
  {&(_tg__ZTV8S21148C2__9S21148C10__8S21148C1[6]),  6,8},
  {&(_tg__ZTV8S21148C3__9S21148C10__8S21148C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21148C10__8S21148C1[3]),  3,5},
  {&(_tg__ZTV8S21148C6__A2__9S21148C10__8S21148C1[4]),  4,6},
  {&(_tg__ZTV9S21148C15__9S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C29S21148C179S21148C169S21148C129S21148C11__A1__9S21148C10__8S21148C1[5]),  5,7},
  {&(_tg__ZTV8S21148C8__9S21148C10__8S21148C1[10]),  10,12},
  {&(_tg__ZTV8S21148C38S21148C8__A1__9S21148C10__8S21148C1[4]),  4,8},
  {&(_tg__ZTV8S21148C9__9S21148C10__8S21148C1[5]),  5,8},
  {&(_tg__ZTV9S21148C15__8S21148C1[4]),  4,6},
  {&(_tg__ZTV8S21148C6__9S21148C15__8S21148C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21148C15__8S21148C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21148C1[];
extern  VTBL_ENTRY _ZTV8S21148C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21148C1[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C10D0Ev,_ZTv0_n20_N9S21148C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C10D0Ev,_ZThn23056_N9S21148C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C10D1Ev,_ZTv0_n20_N9S21148C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C10D1Ev,_ZThn23056_N9S21148C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C11D0Ev,_ZTv0_n20_N9S21148C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C11D0Ev,_ZThn23056_N9S21148C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C11D1Ev,_ZTv0_n20_N9S21148C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C11D1Ev,_ZThn23056_N9S21148C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C12D0Ev,_ZTv0_n20_N9S21148C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C12D0Ev,_ZThn23056_N9S21148C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C12D1Ev,_ZTv0_n20_N9S21148C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C12D1Ev,_ZThn23056_N9S21148C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C16D0Ev,_ZTv0_n20_N9S21148C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C16D0Ev,_ZThn23056_N9S21148C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C16D1Ev,_ZTv0_n20_N9S21148C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C16D1Ev,_ZThn23056_N9S21148C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D0Ev,_ZTv0_n20_N9S21148C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C17D0Ev,_ZThn23056_N9S21148C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C17D1Ev,_ZTv0_n20_N9S21148C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C17D1Ev,_ZThn23056_N9S21148C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D0Ev,_ZTv0_n20_N9S21148C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C18D0Ev,_ZThn23056_N9S21148C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21148C18D1Ev,_ZTv0_n20_N9S21148C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37584_N9S21148C18D1Ev,_ZThn23056_N9S21148C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C9D0Ev,_ZTv0_n12_N8S21148C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44968_N8S21148C9D0Ev,_ZThn27716_N8S21148C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C9D1Ev,_ZTv0_n12_N8S21148C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44968_N8S21148C9D1Ev,_ZThn27716_N8S21148C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21148C8D0Ev,_ZTv0_n16_N8S21148C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21148C8D0Ev,_ZThn2532_N8S21148C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21148C8D1Ev,_ZTv0_n16_N8S21148C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S21148C8D1Ev,_ZThn2532_N8S21148C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D0Ev,_ZTv0_n12_N8S21148C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D0Ev,_ZThn624_N8S21148C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C3D1Ev,_ZTv0_n12_N8S21148C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C3D1Ev,_ZThn624_N8S21148C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D0Ev,_ZTv0_n12_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C2D0Ev,_ZThn812_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C2D1Ev,_ZTv0_n12_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C2D1Ev,_ZThn812_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D0Ev,_ZTv0_n20_N8S21148C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21148C2D0Ev,_ZThn188_N8S21148C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C2D1Ev,_ZTv0_n20_N8S21148C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21148C2D1Ev,_ZThn188_N8S21148C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D0Ev,_ZTv0_n12_N8S21148C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D0Ev,_ZThn624_N8S21148C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C6D0Ev,_ZThn812_N8S21148C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C6D1Ev,_ZTv0_n12_N8S21148C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21148C6D1Ev,_ZThn624_N8S21148C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21148C6D1Ev,_ZThn812_N8S21148C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21148C1D0Ev,_ZTv0_n48_N8S21148C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn49296_N8S21148C1D0Ev,_ZThn30504_N8S21148C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S21148C1D1Ev,_ZTv0_n48_N8S21148C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn49296_N8S21148C1D1Ev,_ZThn30504_N8S21148C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21148C1D0Ev,_ZTv0_n16_N8S21148C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn49096_N8S21148C1D0Ev,_ZThn30392_N8S21148C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21148C1D1Ev,_ZTv0_n16_N8S21148C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn49096_N8S21148C1D1Ev,_ZThn30392_N8S21148C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21148C1D0Ev,_ZTv0_n32_N8S21148C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn45200_N8S21148C1D0Ev,_ZThn27860_N8S21148C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21148C1D1Ev,_ZTv0_n32_N8S21148C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn45200_N8S21148C1D1Ev,_ZThn27860_N8S21148C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C1D0Ev,_ZTv0_n12_N8S21148C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44968_N8S21148C1D0Ev,_ZThn27716_N8S21148C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21148C1D1Ev,_ZTv0_n12_N8S21148C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44968_N8S21148C1D1Ev,_ZThn27716_N8S21148C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C1D0Ev,_ZTv0_n20_N8S21148C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn86880_N8S21148C1D0Ev,_ZThn53560_N8S21148C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn43984_N8S21148C1D0Ev,_ZThn27092_N8S21148C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21148C1D1Ev,_ZTv0_n20_N8S21148C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn86880_N8S21148C1D1Ev,_ZThn53560_N8S21148C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn43984_N8S21148C1D1Ev,_ZThn27092_N8S21148C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21148C1D0Ev,_ZTv0_n24_N8S21148C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43648_N8S21148C1D0Ev,_ZThn26904_N8S21148C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21148C1D1Ev,_ZTv0_n24_N8S21148C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43648_N8S21148C1D1Ev,_ZThn26904_N8S21148C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21148C1 = {  "S21148C1", // class name
  bases_S21148C1, 35,
  &(vtc_S21148C1[0]), // expected_vtbl_contents
  &(vtt_S21148C1[0]), // expected_vtt_contents
  ABISELECT(87264,53784), // object size
  NSPAIRA(_ZTI8S21148C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21148C1),115, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21148C1),96, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4232C3  {
  ::S2213C25 s4232c3f0;
  int s4232c3f1;
  ::S2137C9 s4232c3f2;
  void *s4232c3f3;
  ::S2213C5_nt s4232c3f4;
  void *s4232c3f5[3];
  ::S2213C37 s4232c3f6;
  void *s4232c3f7[4];
  ::S2137C18 s4232c3f8;
  ::S2137C19_nt s4232c3f9;
  int s4232c3f10;
  __tsi64 s4232c3f11;
  char s4232c3f12;
  int s4232c3f13;
  __tsi64 s4232c3f14;
  ::S2137C23_nt s4232c3f15[5];
  void *s4232c3f16[2];
  virtual  ~S4232C3(); // _ZN7S4232C3D1Ev
  virtual void  v11(); // _ZN7S4232C33v11Ev
  virtual void  v12(); // _ZN7S4232C33v12Ev
  virtual void  v13(); // _ZN7S4232C33v13Ev
  virtual void  v14(); // _ZN7S4232C33v14Ev
  virtual void  v15(); // _ZN7S4232C33v15Ev
  virtual void  v16(); // _ZN7S4232C33v16Ev
  virtual void  v17(); // _ZN7S4232C33v17Ev
  virtual void  v18(); // _ZN7S4232C33v18Ev
  virtual void  v19(); // _ZN7S4232C33v19Ev
  virtual void  v20(); // _ZN7S4232C33v20Ev
  virtual void  v21(); // _ZN7S4232C33v21Ev
  virtual void  v22(); // _ZN7S4232C33v22Ev
  virtual void  v23(); // _ZN7S4232C33v23Ev
  virtual void  v24(); // _ZN7S4232C33v24Ev
  virtual void  v25(); // _ZN7S4232C33v25Ev
  virtual void  v26(); // _ZN7S4232C33v26Ev
  virtual void  v27(); // _ZN7S4232C33v27Ev
  virtual void  v28(); // _ZN7S4232C33v28Ev
  virtual void  v29(); // _ZN7S4232C33v29Ev
  virtual void  v30(); // _ZN7S4232C33v30Ev
  virtual void  v31(); // _ZN7S4232C33v31Ev
  virtual void  v32(); // _ZN7S4232C33v32Ev
  virtual void  v33(); // _ZN7S4232C33v33Ev
  virtual void  v34(); // _ZN7S4232C33v34Ev
  virtual void  v35(); // _ZN7S4232C33v35Ev
  virtual void  v36(); // _ZN7S4232C33v36Ev
  virtual void  v37(); // _ZN7S4232C33v37Ev
  virtual void  v38(); // _ZN7S4232C33v38Ev
  virtual void  v39(); // _ZN7S4232C33v39Ev
  virtual void  v40(); // _ZN7S4232C33v40Ev
  virtual void  v41(); // _ZN7S4232C33v41Ev
  virtual void  v42(); // _ZN7S4232C33v42Ev
  virtual void  v43(); // _ZN7S4232C33v43Ev
  virtual void  v44(); // _ZN7S4232C33v44Ev
  virtual void  v45(); // _ZN7S4232C33v45Ev
  virtual void  v46(); // _ZN7S4232C33v46Ev
  virtual void  v47(); // _ZN7S4232C33v47Ev
  virtual void  v48(); // _ZN7S4232C33v48Ev
  virtual void  v49(); // _ZN7S4232C33v49Ev
  virtual void  v50(); // _ZN7S4232C33v50Ev
  virtual void  v51(); // _ZN7S4232C33v51Ev
  virtual void  v52(); // _ZN7S4232C33v52Ev
  virtual void  v53(); // _ZN7S4232C33v53Ev
  virtual void  v54(); // _ZN7S4232C33v54Ev
  virtual void  v55(); // _ZN7S4232C33v55Ev
  virtual void  v56(); // _ZN7S4232C33v56Ev
  virtual void  v57(); // _ZN7S4232C33v57Ev
  virtual void  v58(); // _ZN7S4232C33v58Ev
  virtual void  v59(); // _ZN7S4232C33v59Ev
  virtual void  v60(); // _ZN7S4232C33v60Ev
  virtual void  v61(); // _ZN7S4232C33v61Ev
  virtual void  v62(); // _ZN7S4232C33v62Ev
  virtual void  v63(); // _ZN7S4232C33v63Ev
  virtual void  v64(); // _ZN7S4232C33v64Ev
  virtual void  v65(); // _ZN7S4232C33v65Ev
  virtual void  v66(); // _ZN7S4232C33v66Ev
  virtual void  v67(); // _ZN7S4232C33v67Ev
  virtual void  v68(); // _ZN7S4232C33v68Ev
  virtual void  v69(); // _ZN7S4232C33v69Ev
  virtual void  v70(); // _ZN7S4232C33v70Ev
  virtual void  v71(); // _ZN7S4232C33v71Ev
  virtual void  v72(); // _ZN7S4232C33v72Ev
  virtual void  v73(); // _ZN7S4232C33v73Ev
  virtual void  v74(); // _ZN7S4232C33v74Ev
  virtual void  v75(); // _ZN7S4232C33v75Ev
  virtual void  v76(); // _ZN7S4232C33v76Ev
  virtual void  v77(); // _ZN7S4232C33v77Ev
  virtual void  v78(); // _ZN7S4232C33v78Ev
  virtual void  v79(); // _ZN7S4232C33v79Ev
  virtual void  v80(); // _ZN7S4232C33v80Ev
  virtual void  v81(); // _ZN7S4232C33v81Ev
  virtual void  v82(); // _ZN7S4232C33v82Ev
  virtual void  v83(); // _ZN7S4232C33v83Ev
  virtual void  v84(); // _ZN7S4232C33v84Ev
  virtual void  v85(); // _ZN7S4232C33v85Ev
  S4232C3(); // tgen
};
//SIG(-1 S4232C3) 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 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 FC2{ BC3{ m Fp Fi FC4{ m} FC4}} Fi FC5{ m Fi Fp Fc[8] Fp FC6{ m Fi[2]} FC7{ m Fc Fi[8] Fp[4]} Fi Fp} Fp FC8{ BC9{ m Fp Fi FC10{ m} FC11{ m}}} Fp[3] FC12{ m Fp Fi[2] FC13{ m}} Fp[4] FC14{ BC5 Fp[2]} FC15{ BC3} Fi FL Fc Fi FL FC16{ m Fp[2]}[5] Fp[2]}


 S4232C3 ::~S4232C3(){ note_dtor("S4232C3", this);}
void  S4232C3 ::v11(){vfunc_called(this, "_ZN7S4232C33v11Ev");}
void  S4232C3 ::v12(){vfunc_called(this, "_ZN7S4232C33v12Ev");}
void  S4232C3 ::v13(){vfunc_called(this, "_ZN7S4232C33v13Ev");}
void  S4232C3 ::v14(){vfunc_called(this, "_ZN7S4232C33v14Ev");}
void  S4232C3 ::v15(){vfunc_called(this, "_ZN7S4232C33v15Ev");}
void  S4232C3 ::v16(){vfunc_called(this, "_ZN7S4232C33v16Ev");}
void  S4232C3 ::v17(){vfunc_called(this, "_ZN7S4232C33v17Ev");}
void  S4232C3 ::v18(){vfunc_called(this, "_ZN7S4232C33v18Ev");}
void  S4232C3 ::v19(){vfunc_called(this, "_ZN7S4232C33v19Ev");}
void  S4232C3 ::v20(){vfunc_called(this, "_ZN7S4232C33v20Ev");}
void  S4232C3 ::v21(){vfunc_called(this, "_ZN7S4232C33v21Ev");}
void  S4232C3 ::v22(){vfunc_called(this, "_ZN7S4232C33v22Ev");}
void  S4232C3 ::v23(){vfunc_called(this, "_ZN7S4232C33v23Ev");}
void  S4232C3 ::v24(){vfunc_called(this, "_ZN7S4232C33v24Ev");}
void  S4232C3 ::v25(){vfunc_called(this, "_ZN7S4232C33v25Ev");}
void  S4232C3 ::v26(){vfunc_called(this, "_ZN7S4232C33v26Ev");}
void  S4232C3 ::v27(){vfunc_called(this, "_ZN7S4232C33v27Ev");}
void  S4232C3 ::v28(){vfunc_called(this, "_ZN7S4232C33v28Ev");}
void  S4232C3 ::v29(){vfunc_called(this, "_ZN7S4232C33v29Ev");}
void  S4232C3 ::v30(){vfunc_called(this, "_ZN7S4232C33v30Ev");}
void  S4232C3 ::v31(){vfunc_called(this, "_ZN7S4232C33v31Ev");}
void  S4232C3 ::v32(){vfunc_called(this, "_ZN7S4232C33v32Ev");}
void  S4232C3 ::v33(){vfunc_called(this, "_ZN7S4232C33v33Ev");}
void  S4232C3 ::v34(){vfunc_called(this, "_ZN7S4232C33v34Ev");}
void  S4232C3 ::v35(){vfunc_called(this, "_ZN7S4232C33v35Ev");}
void  S4232C3 ::v36(){vfunc_called(this, "_ZN7S4232C33v36Ev");}
void  S4232C3 ::v37(){vfunc_called(this, "_ZN7S4232C33v37Ev");}
void  S4232C3 ::v38(){vfunc_called(this, "_ZN7S4232C33v38Ev");}
void  S4232C3 ::v39(){vfunc_called(this, "_ZN7S4232C33v39Ev");}
void  S4232C3 ::v40(){vfunc_called(this, "_ZN7S4232C33v40Ev");}
void  S4232C3 ::v41(){vfunc_called(this, "_ZN7S4232C33v41Ev");}
void  S4232C3 ::v42(){vfunc_called(this, "_ZN7S4232C33v42Ev");}
void  S4232C3 ::v43(){vfunc_called(this, "_ZN7S4232C33v43Ev");}
void  S4232C3 ::v44(){vfunc_called(this, "_ZN7S4232C33v44Ev");}
void  S4232C3 ::v45(){vfunc_called(this, "_ZN7S4232C33v45Ev");}
void  S4232C3 ::v46(){vfunc_called(this, "_ZN7S4232C33v46Ev");}
void  S4232C3 ::v47(){vfunc_called(this, "_ZN7S4232C33v47Ev");}
void  S4232C3 ::v48(){vfunc_called(this, "_ZN7S4232C33v48Ev");}
void  S4232C3 ::v49(){vfunc_called(this, "_ZN7S4232C33v49Ev");}
void  S4232C3 ::v50(){vfunc_called(this, "_ZN7S4232C33v50Ev");}
void  S4232C3 ::v51(){vfunc_called(this, "_ZN7S4232C33v51Ev");}
void  S4232C3 ::v52(){vfunc_called(this, "_ZN7S4232C33v52Ev");}
void  S4232C3 ::v53(){vfunc_called(this, "_ZN7S4232C33v53Ev");}
void  S4232C3 ::v54(){vfunc_called(this, "_ZN7S4232C33v54Ev");}
void  S4232C3 ::v55(){vfunc_called(this, "_ZN7S4232C33v55Ev");}
void  S4232C3 ::v56(){vfunc_called(this, "_ZN7S4232C33v56Ev");}
void  S4232C3 ::v57(){vfunc_called(this, "_ZN7S4232C33v57Ev");}
void  S4232C3 ::v58(){vfunc_called(this, "_ZN7S4232C33v58Ev");}
void  S4232C3 ::v59(){vfunc_called(this, "_ZN7S4232C33v59Ev");}
void  S4232C3 ::v60(){vfunc_called(this, "_ZN7S4232C33v60Ev");}
void  S4232C3 ::v61(){vfunc_called(this, "_ZN7S4232C33v61Ev");}
void  S4232C3 ::v62(){vfunc_called(this, "_ZN7S4232C33v62Ev");}
void  S4232C3 ::v63(){vfunc_called(this, "_ZN7S4232C33v63Ev");}
void  S4232C3 ::v64(){vfunc_called(this, "_ZN7S4232C33v64Ev");}
void  S4232C3 ::v65(){vfunc_called(this, "_ZN7S4232C33v65Ev");}
void  S4232C3 ::v66(){vfunc_called(this, "_ZN7S4232C33v66Ev");}
void  S4232C3 ::v67(){vfunc_called(this, "_ZN7S4232C33v67Ev");}
void  S4232C3 ::v68(){vfunc_called(this, "_ZN7S4232C33v68Ev");}
void  S4232C3 ::v69(){vfunc_called(this, "_ZN7S4232C33v69Ev");}
void  S4232C3 ::v70(){vfunc_called(this, "_ZN7S4232C33v70Ev");}
void  S4232C3 ::v71(){vfunc_called(this, "_ZN7S4232C33v71Ev");}
void  S4232C3 ::v72(){vfunc_called(this, "_ZN7S4232C33v72Ev");}
void  S4232C3 ::v73(){vfunc_called(this, "_ZN7S4232C33v73Ev");}
void  S4232C3 ::v74(){vfunc_called(this, "_ZN7S4232C33v74Ev");}
void  S4232C3 ::v75(){vfunc_called(this, "_ZN7S4232C33v75Ev");}
void  S4232C3 ::v76(){vfunc_called(this, "_ZN7S4232C33v76Ev");}
void  S4232C3 ::v77(){vfunc_called(this, "_ZN7S4232C33v77Ev");}
void  S4232C3 ::v78(){vfunc_called(this, "_ZN7S4232C33v78Ev");}
void  S4232C3 ::v79(){vfunc_called(this, "_ZN7S4232C33v79Ev");}
void  S4232C3 ::v80(){vfunc_called(this, "_ZN7S4232C33v80Ev");}
void  S4232C3 ::v81(){vfunc_called(this, "_ZN7S4232C33v81Ev");}
void  S4232C3 ::v82(){vfunc_called(this, "_ZN7S4232C33v82Ev");}
void  S4232C3 ::v83(){vfunc_called(this, "_ZN7S4232C33v83Ev");}
void  S4232C3 ::v84(){vfunc_called(this, "_ZN7S4232C33v84Ev");}
void  S4232C3 ::v85(){vfunc_called(this, "_ZN7S4232C33v85Ev");}
S4232C3 ::S4232C3(){ note_ctor("S4232C3", this);} // tgen

static void Test_S4232C3()
{
  extern Class_Descriptor cd_S4232C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(70,89)];
    init_test(&cd_S4232C3, buf);
    S4232C3 *dp, &lv = *(dp=new (buf) S4232C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(552,352), "sizeof(S4232C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4232C3)");
    check_field_offset(lv, s4232c3f0, ABISELECT(8,4), "S4232C3.s4232c3f0");
    check_field_offset(lv, s4232c3f1, ABISELECT(24,16), "S4232C3.s4232c3f1");
    check_field_offset(lv, s4232c3f2, ABISELECT(32,20), "S4232C3.s4232c3f2");
    check_field_offset(lv, s4232c3f3, ABISELECT(160,108), "S4232C3.s4232c3f3");
    check_field_offset(lv, s4232c3f4, ABISELECT(168,112), "S4232C3.s4232c3f4");
    check_field_offset(lv, s4232c3f5, ABISELECT(184,124), "S4232C3.s4232c3f5");
    check_field_offset(lv, s4232c3f6, ABISELECT(208,136), "S4232C3.s4232c3f6");
    check_field_offset(lv, s4232c3f7, ABISELECT(232,152), "S4232C3.s4232c3f7");
    check_field_offset(lv, s4232c3f8, ABISELECT(264,168), "S4232C3.s4232c3f8");
    check_field_offset(lv, s4232c3f9, ABISELECT(408,264), "S4232C3.s4232c3f9");
    check_field_offset(lv, s4232c3f10, ABISELECT(424,276), "S4232C3.s4232c3f10");
    check_field_offset(lv, s4232c3f11, ABISELECT(432,280), "S4232C3.s4232c3f11");
    check_field_offset(lv, s4232c3f12, ABISELECT(440,288), "S4232C3.s4232c3f12");
    check_field_offset(lv, s4232c3f13, ABISELECT(444,292), "S4232C3.s4232c3f13");
    check_field_offset(lv, s4232c3f14, ABISELECT(448,296), "S4232C3.s4232c3f14");
    check_field_offset(lv, s4232c3f15, ABISELECT(456,304), "S4232C3.s4232c3f15");
    check_field_offset(lv, s4232c3f16, ABISELECT(536,344), "S4232C3.s4232c3f16");
    test_class_info(&lv, &cd_S4232C3);
    dp->~S4232C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4232C3(Test_S4232C3, "S4232C3", ABISELECT(552,352));

#else // __cplusplus

extern void _ZN7S4232C3C1Ev();
extern void _ZN7S4232C3D1Ev();
Name_Map name_map_S4232C3[] = {
  NSPAIR(_ZN7S4232C3C1Ev),
  NSPAIR(_ZN7S4232C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4232C3[];
extern void _ZN7S4232C3D1Ev();
extern void _ZN7S4232C3D0Ev();
extern void _ZN7S4232C33v11Ev();
extern void _ZN7S4232C33v12Ev();
extern void _ZN7S4232C33v13Ev();
extern void _ZN7S4232C33v14Ev();
extern void _ZN7S4232C33v15Ev();
extern void _ZN7S4232C33v16Ev();
extern void _ZN7S4232C33v17Ev();
extern void _ZN7S4232C33v18Ev();
extern void _ZN7S4232C33v19Ev();
extern void _ZN7S4232C33v20Ev();
extern void _ZN7S4232C33v21Ev();
extern void _ZN7S4232C33v22Ev();
extern void _ZN7S4232C33v23Ev();
extern void _ZN7S4232C33v24Ev();
extern void _ZN7S4232C33v25Ev();
extern void _ZN7S4232C33v26Ev();
extern void _ZN7S4232C33v27Ev();
extern void _ZN7S4232C33v28Ev();
extern void _ZN7S4232C33v29Ev();
extern void _ZN7S4232C33v30Ev();
extern void _ZN7S4232C33v31Ev();
extern void _ZN7S4232C33v32Ev();
extern void _ZN7S4232C33v33Ev();
extern void _ZN7S4232C33v34Ev();
extern void _ZN7S4232C33v35Ev();
extern void _ZN7S4232C33v36Ev();
extern void _ZN7S4232C33v37Ev();
extern void _ZN7S4232C33v38Ev();
extern void _ZN7S4232C33v39Ev();
extern void _ZN7S4232C33v40Ev();
extern void _ZN7S4232C33v41Ev();
extern void _ZN7S4232C33v42Ev();
extern void _ZN7S4232C33v43Ev();
extern void _ZN7S4232C33v44Ev();
extern void _ZN7S4232C33v45Ev();
extern void _ZN7S4232C33v46Ev();
extern void _ZN7S4232C33v47Ev();
extern void _ZN7S4232C33v48Ev();
extern void _ZN7S4232C33v49Ev();
extern void _ZN7S4232C33v50Ev();
extern void _ZN7S4232C33v51Ev();
extern void _ZN7S4232C33v52Ev();
extern void _ZN7S4232C33v53Ev();
extern void _ZN7S4232C33v54Ev();
extern void _ZN7S4232C33v55Ev();
extern void _ZN7S4232C33v56Ev();
extern void _ZN7S4232C33v57Ev();
extern void _ZN7S4232C33v58Ev();
extern void _ZN7S4232C33v59Ev();
extern void _ZN7S4232C33v60Ev();
extern void _ZN7S4232C33v61Ev();
extern void _ZN7S4232C33v62Ev();
extern void _ZN7S4232C33v63Ev();
extern void _ZN7S4232C33v64Ev();
extern void _ZN7S4232C33v65Ev();
extern void _ZN7S4232C33v66Ev();
extern void _ZN7S4232C33v67Ev();
extern void _ZN7S4232C33v68Ev();
extern void _ZN7S4232C33v69Ev();
extern void _ZN7S4232C33v70Ev();
extern void _ZN7S4232C33v71Ev();
extern void _ZN7S4232C33v72Ev();
extern void _ZN7S4232C33v73Ev();
extern void _ZN7S4232C33v74Ev();
extern void _ZN7S4232C33v75Ev();
extern void _ZN7S4232C33v76Ev();
extern void _ZN7S4232C33v77Ev();
extern void _ZN7S4232C33v78Ev();
extern void _ZN7S4232C33v79Ev();
extern void _ZN7S4232C33v80Ev();
extern void _ZN7S4232C33v81Ev();
extern void _ZN7S4232C33v82Ev();
extern void _ZN7S4232C33v83Ev();
extern void _ZN7S4232C33v84Ev();
extern void _ZN7S4232C33v85Ev();
static  VTBL_ENTRY vtc_S4232C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4232C3[0]),
  (VTBL_ENTRY)&_ZN7S4232C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4232C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v45Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v46Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v47Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v48Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v49Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v50Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v51Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v52Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v53Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v54Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v55Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v56Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v57Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v58Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v59Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v60Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v61Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v62Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v63Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v64Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v65Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v66Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v67Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v68Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v69Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v70Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v71Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v72Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v73Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v74Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v75Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v76Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v77Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v78Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v79Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v80Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v81Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v82Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v83Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v84Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v85Ev,
};
extern VTBL_ENTRY _ZTI7S4232C3[];
extern  VTBL_ENTRY _ZTV7S4232C3[];
Class_Descriptor cd_S4232C3 = {  "S4232C3", // class name
  0,0,//no base classes
  &(vtc_S4232C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(552,352), // object size
  NSPAIRA(_ZTI7S4232C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4232C3),79, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4232C2  : S4232C3 {
  virtual  ~S4232C2(); // _ZN7S4232C2D1Ev
  virtual void  v86(); // _ZN7S4232C23v86Ev
  virtual void  v87(); // _ZN7S4232C23v87Ev
  virtual void  v88(); // _ZN7S4232C23v88Ev
  virtual void  v89(); // _ZN7S4232C23v89Ev
  virtual void  v90(); // _ZN7S4232C23v90Ev
  virtual void  v91(); // _ZN7S4232C23v91Ev
  virtual void  v92(); // _ZN7S4232C23v92Ev
  S4232C2(); // tgen
};
//SIG(-1 S4232C2) C1{ BC2{ 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 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 FC3{ BC4{ m Fp Fi FC5{ m} FC5}} Fi FC6{ m Fi Fp Fc[8] Fp FC7{ m Fi[2]} FC8{ m Fc Fi[8] Fp[4]} Fi Fp} Fp FC9{ BC10{ m Fp Fi FC11{ m} FC12{ m}}} Fp[3] FC13{ m Fp Fi[2] FC14{ m}} Fp[4] FC15{ BC6 Fp[2]} FC16{ BC4} Fi FL Fc Fi FL FC17{ m Fp[2]}[5] Fp[2]} vd v1 v2 v3 v4 v5 v6 v7}


 S4232C2 ::~S4232C2(){ note_dtor("S4232C2", this);}
void  S4232C2 ::v86(){vfunc_called(this, "_ZN7S4232C23v86Ev");}
void  S4232C2 ::v87(){vfunc_called(this, "_ZN7S4232C23v87Ev");}
void  S4232C2 ::v88(){vfunc_called(this, "_ZN7S4232C23v88Ev");}
void  S4232C2 ::v89(){vfunc_called(this, "_ZN7S4232C23v89Ev");}
void  S4232C2 ::v90(){vfunc_called(this, "_ZN7S4232C23v90Ev");}
void  S4232C2 ::v91(){vfunc_called(this, "_ZN7S4232C23v91Ev");}
void  S4232C2 ::v92(){vfunc_called(this, "_ZN7S4232C23v92Ev");}
S4232C2 ::S4232C2(){ note_ctor("S4232C2", this);} // tgen

static void Test_S4232C2()
{
  extern Class_Descriptor cd_S4232C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(70,89)];
    init_test(&cd_S4232C2, buf);
    S4232C2 *dp, &lv = *(dp=new (buf) S4232C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(552,352), "sizeof(S4232C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4232C2)");
    check_base_class_offset(lv, (S4232C3*), 0, "S4232C2");
    test_class_info(&lv, &cd_S4232C2);
    dp->~S4232C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4232C2(Test_S4232C2, "S4232C2", ABISELECT(552,352));

#else // __cplusplus

extern void _ZN7S4232C2C1Ev();
extern void _ZN7S4232C2D1Ev();
Name_Map name_map_S4232C2[] = {
  NSPAIR(_ZN7S4232C2C1Ev),
  NSPAIR(_ZN7S4232C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4232C3;
extern VTBL_ENTRY _ZTI7S4232C3[];
extern  VTBL_ENTRY _ZTV7S4232C3[];
static Base_Class bases_S4232C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4232C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4232C2[];
extern void _ZN7S4232C2D1Ev();
extern void _ZN7S4232C2D0Ev();
extern void _ZN7S4232C33v11Ev();
extern void _ZN7S4232C33v12Ev();
extern void _ZN7S4232C33v13Ev();
extern void _ZN7S4232C33v14Ev();
extern void _ZN7S4232C33v15Ev();
extern void _ZN7S4232C33v16Ev();
extern void _ZN7S4232C33v17Ev();
extern void _ZN7S4232C33v18Ev();
extern void _ZN7S4232C33v19Ev();
extern void _ZN7S4232C33v20Ev();
extern void _ZN7S4232C33v21Ev();
extern void _ZN7S4232C33v22Ev();
extern void _ZN7S4232C33v23Ev();
extern void _ZN7S4232C33v24Ev();
extern void _ZN7S4232C33v25Ev();
extern void _ZN7S4232C33v26Ev();
extern void _ZN7S4232C33v27Ev();
extern void _ZN7S4232C33v28Ev();
extern void _ZN7S4232C33v29Ev();
extern void _ZN7S4232C33v30Ev();
extern void _ZN7S4232C33v31Ev();
extern void _ZN7S4232C33v32Ev();
extern void _ZN7S4232C33v33Ev();
extern void _ZN7S4232C33v34Ev();
extern void _ZN7S4232C33v35Ev();
extern void _ZN7S4232C33v36Ev();
extern void _ZN7S4232C33v37Ev();
extern void _ZN7S4232C33v38Ev();
extern void _ZN7S4232C33v39Ev();
extern void _ZN7S4232C33v40Ev();
extern void _ZN7S4232C33v41Ev();
extern void _ZN7S4232C33v42Ev();
extern void _ZN7S4232C33v43Ev();
extern void _ZN7S4232C33v44Ev();
extern void _ZN7S4232C33v45Ev();
extern void _ZN7S4232C33v46Ev();
extern void _ZN7S4232C33v47Ev();
extern void _ZN7S4232C33v48Ev();
extern void _ZN7S4232C33v49Ev();
extern void _ZN7S4232C33v50Ev();
extern void _ZN7S4232C33v51Ev();
extern void _ZN7S4232C33v52Ev();
extern void _ZN7S4232C33v53Ev();
extern void _ZN7S4232C33v54Ev();
extern void _ZN7S4232C33v55Ev();
extern void _ZN7S4232C33v56Ev();
extern void _ZN7S4232C33v57Ev();
extern void _ZN7S4232C33v58Ev();
extern void _ZN7S4232C33v59Ev();
extern void _ZN7S4232C33v60Ev();
extern void _ZN7S4232C33v61Ev();
extern void _ZN7S4232C33v62Ev();
extern void _ZN7S4232C33v63Ev();
extern void _ZN7S4232C33v64Ev();
extern void _ZN7S4232C33v65Ev();
extern void _ZN7S4232C33v66Ev();
extern void _ZN7S4232C33v67Ev();
extern void _ZN7S4232C33v68Ev();
extern void _ZN7S4232C33v69Ev();
extern void _ZN7S4232C33v70Ev();
extern void _ZN7S4232C33v71Ev();
extern void _ZN7S4232C33v72Ev();
extern void _ZN7S4232C33v73Ev();
extern void _ZN7S4232C33v74Ev();
extern void _ZN7S4232C33v75Ev();
extern void _ZN7S4232C33v76Ev();
extern void _ZN7S4232C33v77Ev();
extern void _ZN7S4232C33v78Ev();
extern void _ZN7S4232C33v79Ev();
extern void _ZN7S4232C33v80Ev();
extern void _ZN7S4232C33v81Ev();
extern void _ZN7S4232C33v82Ev();
extern void _ZN7S4232C33v83Ev();
extern void _ZN7S4232C33v84Ev();
extern void _ZN7S4232C33v85Ev();
extern void _ZN7S4232C23v86Ev();
extern void _ZN7S4232C23v87Ev();
extern void _ZN7S4232C23v88Ev();
extern void _ZN7S4232C23v89Ev();
extern void _ZN7S4232C23v90Ev();
extern void _ZN7S4232C23v91Ev();
extern void _ZN7S4232C23v92Ev();
static  VTBL_ENTRY vtc_S4232C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4232C2[0]),
  (VTBL_ENTRY)&_ZN7S4232C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4232C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v45Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v46Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v47Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v48Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v49Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v50Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v51Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v52Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v53Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v54Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v55Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v56Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v57Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v58Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v59Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v60Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v61Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v62Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v63Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v64Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v65Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v66Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v67Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v68Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v69Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v70Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v71Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v72Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v73Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v74Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v75Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v76Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v77Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v78Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v79Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v80Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v81Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v82Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v83Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v84Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v85Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v86Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v87Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v88Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v89Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v90Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v91Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v92Ev,
};
extern VTBL_ENTRY _ZTI7S4232C2[];
extern  VTBL_ENTRY _ZTV7S4232C2[];
Class_Descriptor cd_S4232C2 = {  "S4232C2", // class name
  bases_S4232C2, 1,
  &(vtc_S4232C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(552,352), // object size
  NSPAIRA(_ZTI7S4232C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4232C2),86, //virtual function table var
  2, // 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  S4232C1  : S4232C2 {
  virtual  ~S4232C1(); // _ZN7S4232C1D1Ev
  virtual void  v1(); // _ZN7S4232C12v1Ev
  virtual void  v2(); // _ZN7S4232C12v2Ev
  virtual void  v3(); // _ZN7S4232C12v3Ev
  virtual void  v4(); // _ZN7S4232C12v4Ev
  virtual void  v5(); // _ZN7S4232C12v5Ev
  virtual void  v6(); // _ZN7S4232C12v6Ev
  virtual void  v7(); // _ZN7S4232C12v7Ev
  virtual void  v8(); // _ZN7S4232C12v8Ev
  virtual void  v9(); // _ZN7S4232C12v9Ev
  virtual void  v10(); // _ZN7S4232C13v10Ev
  S4232C1(); // tgen
};
//SIG(1 S4232C1) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 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 FC4{ BC5{ m Fp Fi FC6{ m} FC6}} Fi FC7{ m Fi Fp Fc[8] Fp FC8{ m Fi[2]} FC9{ m Fc Fi[8] Fp[4]} Fi Fp} Fp FC10{ BC11{ m Fp Fi FC12{ m} FC13{ m}}} Fp[3] FC14{ m Fp Fi[2] FC15{ m}} Fp[4] FC16{ BC7 Fp[2]} FC17{ BC5} Fi FL Fc Fi FL FC18{ m Fp[2]}[5] Fp[2]} vd v86 v87 v88 v89 v90 v91 v92} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


 S4232C1 ::~S4232C1(){ note_dtor("S4232C1", this);}
void  S4232C1 ::v1(){vfunc_called(this, "_ZN7S4232C12v1Ev");}
void  S4232C1 ::v2(){vfunc_called(this, "_ZN7S4232C12v2Ev");}
void  S4232C1 ::v3(){vfunc_called(this, "_ZN7S4232C12v3Ev");}
void  S4232C1 ::v4(){vfunc_called(this, "_ZN7S4232C12v4Ev");}
void  S4232C1 ::v5(){vfunc_called(this, "_ZN7S4232C12v5Ev");}
void  S4232C1 ::v6(){vfunc_called(this, "_ZN7S4232C12v6Ev");}
void  S4232C1 ::v7(){vfunc_called(this, "_ZN7S4232C12v7Ev");}
void  S4232C1 ::v8(){vfunc_called(this, "_ZN7S4232C12v8Ev");}
void  S4232C1 ::v9(){vfunc_called(this, "_ZN7S4232C12v9Ev");}
void  S4232C1 ::v10(){vfunc_called(this, "_ZN7S4232C13v10Ev");}
S4232C1 ::S4232C1(){ note_ctor("S4232C1", this);} // tgen

static void Test_S4232C1()
{
  extern Class_Descriptor cd_S4232C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(70,89)];
    init_test(&cd_S4232C1, buf);
    S4232C1 *dp, &lv = *(dp=new (buf) S4232C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(552,352), "sizeof(S4232C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4232C1)");
    check_base_class_offset(lv, (S4232C3*)(S4232C2*), 0, "S4232C1");
    check_base_class_offset(lv, (S4232C2*), 0, "S4232C1");
    test_class_info(&lv, &cd_S4232C1);
    dp->~S4232C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4232C1(Test_S4232C1, "S4232C1", ABISELECT(552,352));

#else // __cplusplus

extern void _ZN7S4232C1C1Ev();
extern void _ZN7S4232C1D1Ev();
Name_Map name_map_S4232C1[] = {
  NSPAIR(_ZN7S4232C1C1Ev),
  NSPAIR(_ZN7S4232C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4232C3;
extern VTBL_ENTRY _ZTI7S4232C3[];
extern  VTBL_ENTRY _ZTV7S4232C3[];
extern Class_Descriptor cd_S4232C2;
extern VTBL_ENTRY _ZTI7S4232C2[];
extern  VTBL_ENTRY _ZTV7S4232C2[];
static Base_Class bases_S4232C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4232C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4232C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4232C1[];
extern void _ZN7S4232C1D1Ev();
extern void _ZN7S4232C1D0Ev();
extern void _ZN7S4232C33v11Ev();
extern void _ZN7S4232C33v12Ev();
extern void _ZN7S4232C33v13Ev();
extern void _ZN7S4232C33v14Ev();
extern void _ZN7S4232C33v15Ev();
extern void _ZN7S4232C33v16Ev();
extern void _ZN7S4232C33v17Ev();
extern void _ZN7S4232C33v18Ev();
extern void _ZN7S4232C33v19Ev();
extern void _ZN7S4232C33v20Ev();
extern void _ZN7S4232C33v21Ev();
extern void _ZN7S4232C33v22Ev();
extern void _ZN7S4232C33v23Ev();
extern void _ZN7S4232C33v24Ev();
extern void _ZN7S4232C33v25Ev();
extern void _ZN7S4232C33v26Ev();
extern void _ZN7S4232C33v27Ev();
extern void _ZN7S4232C33v28Ev();
extern void _ZN7S4232C33v29Ev();
extern void _ZN7S4232C33v30Ev();
extern void _ZN7S4232C33v31Ev();
extern void _ZN7S4232C33v32Ev();
extern void _ZN7S4232C33v33Ev();
extern void _ZN7S4232C33v34Ev();
extern void _ZN7S4232C33v35Ev();
extern void _ZN7S4232C33v36Ev();
extern void _ZN7S4232C33v37Ev();
extern void _ZN7S4232C33v38Ev();
extern void _ZN7S4232C33v39Ev();
extern void _ZN7S4232C33v40Ev();
extern void _ZN7S4232C33v41Ev();
extern void _ZN7S4232C33v42Ev();
extern void _ZN7S4232C33v43Ev();
extern void _ZN7S4232C33v44Ev();
extern void _ZN7S4232C33v45Ev();
extern void _ZN7S4232C33v46Ev();
extern void _ZN7S4232C33v47Ev();
extern void _ZN7S4232C33v48Ev();
extern void _ZN7S4232C33v49Ev();
extern void _ZN7S4232C33v50Ev();
extern void _ZN7S4232C33v51Ev();
extern void _ZN7S4232C33v52Ev();
extern void _ZN7S4232C33v53Ev();
extern void _ZN7S4232C33v54Ev();
extern void _ZN7S4232C33v55Ev();
extern void _ZN7S4232C33v56Ev();
extern void _ZN7S4232C33v57Ev();
extern void _ZN7S4232C33v58Ev();
extern void _ZN7S4232C33v59Ev();
extern void _ZN7S4232C33v60Ev();
extern void _ZN7S4232C33v61Ev();
extern void _ZN7S4232C33v62Ev();
extern void _ZN7S4232C33v63Ev();
extern void _ZN7S4232C33v64Ev();
extern void _ZN7S4232C33v65Ev();
extern void _ZN7S4232C33v66Ev();
extern void _ZN7S4232C33v67Ev();
extern void _ZN7S4232C33v68Ev();
extern void _ZN7S4232C33v69Ev();
extern void _ZN7S4232C33v70Ev();
extern void _ZN7S4232C33v71Ev();
extern void _ZN7S4232C33v72Ev();
extern void _ZN7S4232C33v73Ev();
extern void _ZN7S4232C33v74Ev();
extern void _ZN7S4232C33v75Ev();
extern void _ZN7S4232C33v76Ev();
extern void _ZN7S4232C33v77Ev();
extern void _ZN7S4232C33v78Ev();
extern void _ZN7S4232C33v79Ev();
extern void _ZN7S4232C33v80Ev();
extern void _ZN7S4232C33v81Ev();
extern void _ZN7S4232C33v82Ev();
extern void _ZN7S4232C33v83Ev();
extern void _ZN7S4232C33v84Ev();
extern void _ZN7S4232C33v85Ev();
extern void _ZN7S4232C23v86Ev();
extern void _ZN7S4232C23v87Ev();
extern void _ZN7S4232C23v88Ev();
extern void _ZN7S4232C23v89Ev();
extern void _ZN7S4232C23v90Ev();
extern void _ZN7S4232C23v91Ev();
extern void _ZN7S4232C23v92Ev();
extern void _ZN7S4232C12v1Ev();
extern void _ZN7S4232C12v2Ev();
extern void _ZN7S4232C12v3Ev();
extern void _ZN7S4232C12v4Ev();
extern void _ZN7S4232C12v5Ev();
extern void _ZN7S4232C12v6Ev();
extern void _ZN7S4232C12v7Ev();
extern void _ZN7S4232C12v8Ev();
extern void _ZN7S4232C12v9Ev();
extern void _ZN7S4232C13v10Ev();
static  VTBL_ENTRY vtc_S4232C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4232C1[0]),
  (VTBL_ENTRY)&_ZN7S4232C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4232C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v45Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v46Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v47Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v48Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v49Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v50Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v51Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v52Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v53Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v54Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v55Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v56Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v57Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v58Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v59Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v60Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v61Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v62Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v63Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v64Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v65Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v66Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v67Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v68Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v69Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v70Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v71Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v72Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v73Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v74Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v75Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v76Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v77Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v78Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v79Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v80Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v81Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v82Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v83Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v84Ev,
  (VTBL_ENTRY)&_ZN7S4232C33v85Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v86Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v87Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v88Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v89Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v90Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v91Ev,
  (VTBL_ENTRY)&_ZN7S4232C23v92Ev,
  (VTBL_ENTRY)&_ZN7S4232C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4232C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4232C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4232C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4232C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4232C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4232C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4232C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4232C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4232C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S4232C1[];
extern  VTBL_ENTRY _ZTV7S4232C1[];
Class_Descriptor cd_S4232C1 = {  "S4232C1", // class name
  bases_S4232C1, 2,
  &(vtc_S4232C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(552,352), // object size
  NSPAIRA(_ZTI7S4232C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4232C1),96, //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  S7862C6  : virtual S19674C5 , S19674C7 {
  short s7862c6f0[6];
  __tsi64 s7862c6f1[3];
  ::S19674C9 s7862c6f2;
  ~S7862C6(); // tgen
  S7862C6(); // tgen
};
//SIG(-1 S7862C6) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ m Fp[14]} Fs[6] FL[3] FU4{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}}


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

static void Test_S7862C6()
{
  extern Class_Descriptor cd_S7862C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,51)];
    init_test(&cd_S7862C6, buf);
    S7862C6 *dp, &lv = *(dp=new (buf) S7862C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,200), "sizeof(S7862C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7862C6)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(192,112), "S7862C6");
    check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S7862C6");
    check_field_offset(lv, s7862c6f0, ABISELECT(120,60), "S7862C6.s7862c6f0");
    check_field_offset(lv, s7862c6f1, ABISELECT(136,72), "S7862C6.s7862c6f1");
    check_field_offset(lv, s7862c6f2, ABISELECT(160,96), "S7862C6.s7862c6f2");
    test_class_info(&lv, &cd_S7862C6);
    dp->~S7862C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C6(Test_S7862C6, "S7862C6", ABISELECT(312,200));

#else // __cplusplus

extern void _ZN7S7862C6C1Ev();
extern void _ZN7S7862C6D1Ev();
Name_Map name_map_S7862C6[] = {
  NSPAIR(_ZN7S7862C6C1Ev),
  NSPAIR(_ZN7S7862C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
static Base_Class bases_S7862C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(192,112), //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},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7862C6[];
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn192_N7S7862C6D1Ev,_ZThn112_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn192_N7S7862C6D0Ev,_ZThn112_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7862C6[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7862C6[];
static  VTT_ENTRY vtt_S7862C6[] = {
  {&(_ZTV7S7862C6[3]),  3,10},
  {&(_ZTV7S7862C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7862C6D0Ev,_ZThn112_N7S7862C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7862C6D1Ev,_ZThn112_N7S7862C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C6 = {  "S7862C6", // class name
  bases_S7862C6, 2,
  &(vtc_S7862C6[0]), // expected_vtbl_contents
  &(vtt_S7862C6[0]), // expected_vtt_contents
  ABISELECT(312,200), // object size
  NSPAIRA(_ZTI7S7862C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7862C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7862C6),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  S7862C3  : virtual S19674C5 , virtual S19674C7 , S7862C6 {
  ::S7862C6 s7862c3f0;
  long double s7862c3f1[7];
  ::S7862C6 s7862c3f2;
  __tsi64 s7862c3f3;
  void *s7862c3f4[5];
  virtual void  v1(); // _ZN7S7862C32v1Ev
  virtual void  v2(); // _ZN7S7862C32v2Ev
  ~S7862C3(); // tgen
  S7862C3(); // tgen
};
//SIG(-1 S7862C3) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ m Fp[14]} BC4{ VBC2 BC3 Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC4 FD[7] FC4 FL Fp[5]}


void  S7862C3 ::v1(){vfunc_called(this, "_ZN7S7862C32v1Ev");}
void  S7862C3 ::v2(){vfunc_called(this, "_ZN7S7862C32v2Ev");}
S7862C3 ::~S7862C3(){ note_dtor("S7862C3", this);} // tgen
S7862C3 ::S7862C3(){ note_ctor("S7862C3", this);} // tgen

static void Test_S7862C3()
{
  extern Class_Descriptor cd_S7862C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,193)];
    init_test(&cd_S7862C3, buf);
    S7862C3 *dp, &lv = *(dp=new (buf) S7862C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,768), "sizeof(S7862C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7862C3)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(984,624), "S7862C3");
    check_base_class_offset(lv, (S19674C5*)(S7862C6*), ABISELECT(984,624), "S7862C3");
    /*is_ambiguous_... S7862C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(1104,712), "S7862C3");
    check_base_class_offset(lv, (S19674C7*)(S7862C6*), ABISELECT(8,4), "S7862C3");
    check_base_class_offset(lv, (S7862C6*), 0, "S7862C3");
    check_field_offset(lv, s7862c3f0, ABISELECT(192,112), "S7862C3.s7862c3f0");
    check_field_offset(lv, s7862c3f1, ABISELECT(512,312), "S7862C3.s7862c3f1");
    check_field_offset(lv, s7862c3f2, ABISELECT(624,396), "S7862C3.s7862c3f2");
    check_field_offset(lv, s7862c3f3, ABISELECT(936,596), "S7862C3.s7862c3f3");
    check_field_offset(lv, s7862c3f4, ABISELECT(944,604), "S7862C3.s7862c3f4");
    test_class_info(&lv, &cd_S7862C3);
    dp->~S7862C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C3(Test_S7862C3, "S7862C3", ABISELECT(1216,768));

#else // __cplusplus

extern void _ZN7S7862C3C1Ev();
extern void _ZN7S7862C3D1Ev();
Name_Map name_map_S7862C3[] = {
  NSPAIR(_ZN7S7862C3C1Ev),
  NSPAIR(_ZN7S7862C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
static Base_Class bases_S7862C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(984,624), //bcp->offset
    8, //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_S19674C7,    ABISELECT(1104,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7862C6,    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 _ZTI7S7862C3[];
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7862C3[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S7862C3[];
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C6__7S7862C3[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C6__7S7862C3[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
static  VTT_ENTRY vtt_S7862C3[] = {
  {&(_ZTV7S7862C3[4]),  4,13},
  {&(_tg__ZTV7S7862C6__7S7862C3[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C6__7S7862C3[3]),  3,5},
  {&(_ZTV7S7862C3[11]),  11,13},
};
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C3 = {  "S7862C3", // class name
  bases_S7862C3, 4,
  &(vtc_S7862C3[0]), // expected_vtbl_contents
  &(vtt_S7862C3[0]), // expected_vtt_contents
  ABISELECT(1216,768), // object size
  NSPAIRA(_ZTI7S7862C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7862C3),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7862C3),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7862C2  : virtual S7862C3 , S19674C7 , S7862C6 {
  int s7862c2f0;
  int s7862c2f1;
  int s7862c2f2:28;
  int s7862c2f3;
  long s7862c2f4;
  ~S7862C2(); // tgen
  S7862C2(); // tgen
};
//SIG(-1 S7862C2) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} BC4 BC5 Fi Fi Fi:28 Fi Fl}


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

static void Test_S7862C2()
{
  extern Class_Descriptor cd_S7862C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,240)];
    init_test(&cd_S7862C2, buf);
    S7862C2 *dp, &lv = *(dp=new (buf) S7862C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,956), "sizeof(S7862C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7862C2)");
    check_base_class_offset(lv, (S19674C5*)(S7862C3*), ABISELECT(1320,812), "S7862C2");
    check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C3*), ABISELECT(1320,812), "S7862C2");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*), ABISELECT(1320,812), "S7862C2");
    /*is_ambiguous_... S7862C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C3*), ABISELECT(1440,900), "S7862C2");
    check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C3*), ABISELECT(344,192), "S7862C2");
    check_base_class_offset(lv, (S7862C6*)(S7862C3*), ABISELECT(336,188), "S7862C2");
    check_base_class_offset(lv, (S7862C3*), ABISELECT(336,188), "S7862C2");
    /*is_ambiguous_... S7862C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(192,112), "S7862C2");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*), ABISELECT(8,4), "S7862C2");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*), 0, "S7862C2");
    check_field_offset(lv, s7862c2f0, ABISELECT(304,168), "S7862C2.s7862c2f0");
    check_field_offset(lv, s7862c2f1, ABISELECT(308,172), "S7862C2.s7862c2f1");
    set_bf_and_test(lv, s7862c2f2, ABISELECT(312,176), 0, 28, 1, "S7862C2");
    set_bf_and_test(lv, s7862c2f2, ABISELECT(312,176), 0, 28, hide_sll(1LL<<27), "S7862C2");
    check_field_offset(lv, s7862c2f3, ABISELECT(316,180), "S7862C2.s7862c2f3");
    check_field_offset(lv, s7862c2f4, ABISELECT(320,184), "S7862C2.s7862c2f4");
    test_class_info(&lv, &cd_S7862C2);
    dp->~S7862C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C2(Test_S7862C2, "S7862C2", ABISELECT(1552,956));

#else // __cplusplus

extern void _ZN7S7862C2C1Ev();
extern void _ZN7S7862C2D1Ev();
Name_Map name_map_S7862C2[] = {
  NSPAIR(_ZN7S7862C2C1Ev),
  NSPAIR(_ZN7S7862C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C3;
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
static Base_Class bases_S7862C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(1320,812), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1440,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(344,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
    3, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7862C3,    ABISELECT(336,188), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7862C2[];
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn336_N7S7862C2D1Ev,_ZThn188_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn336_N7S7862C2D0Ev,_ZThn188_N7S7862C2D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn1320_N7S7862C2D1Ev,_ZThn812_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn1320_N7S7862C2D0Ev,_ZThn812_N7S7862C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7862C2[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7862C2[];
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C6__A1__7S7862C2[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn1320_N7S7862C6D1Ev,_ZThn812_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn1320_N7S7862C6D0Ev,_ZThn812_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C6__A1__7S7862C2[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C2[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C3__7S7862C2[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C3__7S7862C2[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C3__7S7862C2[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
static  VTT_ENTRY vtt_S7862C2[] = {
  {&(_ZTV7S7862C2[5]),  5,23},
  {&(_tg__ZTV7S7862C6__A1__7S7862C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C6__A1__7S7862C2[3]),  3,5},
  {&(_ZTV7S7862C2[14]),  14,23},
  {&(_ZTV7S7862C2[21]),  21,23},
  {&(_tg__ZTV7S7862C3__7S7862C2[4]),  4,8},
  {&(_tg__ZTV7S7862C67S7862C3__7S7862C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C3__7S7862C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C3__7S7862C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N7S7862C6D0Ev,_ZThn812_N7S7862C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N7S7862C6D1Ev,_ZThn812_N7S7862C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N7S7862C2D0Ev,_ZThn812_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N7S7862C2D1Ev,_ZThn812_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7862C2D0Ev,_ZThn188_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7862C2D1Ev,_ZThn188_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C2 = {  "S7862C2", // class name
  bases_S7862C2, 8,
  &(vtc_S7862C2[0]), // expected_vtbl_contents
  &(vtt_S7862C2[0]), // expected_vtt_contents
  ABISELECT(1552,956), // object size
  NSPAIRA(_ZTI7S7862C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7862C2),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7862C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7862C12  : virtual S7862C6 , S19674C5 {
  char s7862c12f0:6;
  char s7862c12f1[8];
  long double s7862c12f2;
  ::S19674C7 s7862c12f3;
  ::S19674C7 s7862c12f4;
  ~S7862C12(); // tgen
  S7862C12(); // tgen
};
//SIG(-1 S7862C12) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC3 Fc:6 Fc[8] FD FC4 FC4}


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

static void Test_S7862C12()
{
  extern Class_Descriptor cd_S7862C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,107)];
    init_test(&cd_S7862C12, buf);
    S7862C12 *dp, &lv = *(dp=new (buf) S7862C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,424), "sizeof(S7862C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7862C12)");
    check_base_class_offset(lv, (S19674C5*)(S7862C6*), ABISELECT(576,336), "S7862C12");
    check_base_class_offset(lv, (S19674C7*)(S7862C6*), ABISELECT(392,228), "S7862C12");
    check_base_class_offset(lv, (S7862C6*), ABISELECT(384,224), "S7862C12");
    /*is_ambiguous_... S7862C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), 0, "S7862C12");
    set_bf_and_test(lv, s7862c12f0, ABISELECT(120,88), 0, 6, 1, "S7862C12");
    set_bf_and_test(lv, s7862c12f0, ABISELECT(120,88), 0, 6, hide_sll(1LL<<5), "S7862C12");
    check_field_offset(lv, s7862c12f1, ABISELECT(121,89), "S7862C12.s7862c12f1");
    check_field_offset(lv, s7862c12f2, ABISELECT(144,100), "S7862C12.s7862c12f2");
    check_field_offset(lv, s7862c12f3, ABISELECT(160,112), "S7862C12.s7862c12f3");
    check_field_offset(lv, s7862c12f4, ABISELECT(272,168), "S7862C12.s7862c12f4");
    test_class_info(&lv, &cd_S7862C12);
    dp->~S7862C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C12(Test_S7862C12, "S7862C12", ABISELECT(704,424));

#else // __cplusplus

extern void _ZN8S7862C12C1Ev();
extern void _ZN8S7862C12D1Ev();
Name_Map name_map_S7862C12[] = {
  NSPAIR(_ZN8S7862C12C1Ev),
  NSPAIR(_ZN8S7862C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S7862C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(576,336), //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(384,224), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S7862C12[];
extern void _ZN8S7862C12D1Ev();
extern void _ZN8S7862C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev)();
extern void ABISELECT(_ZThn384_N8S7862C12D1Ev,_ZThn224_N8S7862C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev)();
extern void ABISELECT(_ZThn384_N8S7862C12D0Ev,_ZThn224_N8S7862C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev)();
extern void ABISELECT(_ZThn576_N8S7862C12D1Ev,_ZThn336_N8S7862C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev)();
extern void ABISELECT(_ZThn576_N8S7862C12D0Ev,_ZThn336_N8S7862C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7862C12[] = {
  ABISELECT(576,336),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&_ZN8S7862C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C12D0Ev,
  ABISELECT(-384,-224),
  ABISELECT(192,112),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev),
  ABISELECT(-576,-336),
  ABISELECT(-576,-336),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7862C12[];
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C12[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn192_N7S7862C6D1Ev,_ZThn112_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn192_N7S7862C6D0Ev,_ZThn112_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C6__8S7862C12[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
static  VTT_ENTRY vtt_S7862C12[] = {
  {&(_ZTV8S7862C12[4]),  4,17},
  {&(_ZTV8S7862C12[10]),  10,17},
  {&(_ZTV8S7862C12[15]),  15,17},
  {&(_tg__ZTV7S7862C6__8S7862C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C6__8S7862C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7862C12[];
extern  VTBL_ENTRY _ZTV8S7862C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C12[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7862C6D0Ev,_ZThn112_N7S7862C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7862C6D1Ev,_ZThn112_N7S7862C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S7862C12D0Ev,_ZThn336_N8S7862C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S7862C12D1Ev,_ZThn336_N8S7862C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7862C12D0Ev,_ZThn224_N8S7862C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7862C12D1Ev,_ZThn224_N8S7862C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C12 = {  "S7862C12", // class name
  bases_S7862C12, 4,
  &(vtc_S7862C12[0]), // expected_vtbl_contents
  &(vtt_S7862C12[0]), // expected_vtt_contents
  ABISELECT(704,424), // object size
  NSPAIRA(_ZTI8S7862C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7862C12),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7862C12),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7862C15  : virtual S19674C5 , virtual S7862C6 , virtual S7862C12 , S19674C7 , virtual S7862C3 {
  int s7862c15f0;
  int s7862c15f1;
  ::S19674C7 s7862c15f2;
  char s7862c15f3;
  char s7862c15f4;
  int s7862c15f5;
  short s7862c15f6;
  __tsi64 s7862c15f7;
  virtual  ~S7862C15(); // _ZN8S7862C15D2Ev
  virtual void  v3(); // _ZN8S7862C152v3Ev
  virtual void  v4(); // _ZN8S7862C152v4Ev
  S7862C15(); // tgen
};
//SIG(-1 S7862C15) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC7{ VBC2 VBC4 BC3 v3 v4 FC3 FD[7] FC3 FL Fp[5]} vd v1 v2 Fi Fi FC4 Fc Fc Fi Fs FL}


 S7862C15 ::~S7862C15(){ note_dtor("S7862C15", this);}
void  S7862C15 ::v3(){vfunc_called(this, "_ZN8S7862C152v3Ev");}
void  S7862C15 ::v4(){vfunc_called(this, "_ZN8S7862C152v4Ev");}
S7862C15 ::S7862C15(){ note_ctor("S7862C15", this);} // tgen

static void Test_S7862C15()
{
  extern Class_Descriptor cd_S7862C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,313)];
    init_test(&cd_S7862C15, buf);
    S7862C15 *dp, &lv = *(dp=new (buf) S7862C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1248), "sizeof(S7862C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7862C15)");
    /*is_ambiguous_... S7862C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(264,144), "S7862C15");
    /*is_ambiguous_... S7862C15::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*), ABISELECT(264,144), "S7862C15");
    check_base_class_offset(lv, (S19674C5*)(S7862C3*), ABISELECT(264,144), "S7862C15");
    check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C3*), ABISELECT(264,144), "S7862C15");
    /*is_ambiguous_... S7862C15::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*), ABISELECT(392,236), "S7862C15");
    /*is_ambiguous_... S7862C15::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*), ABISELECT(384,232), "S7862C15");
    check_base_class_offset(lv, (S7862C6*)(S7862C12*), ABISELECT(384,232), "S7862C15");
    /*is_ambiguous_... S7862C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C12*), ABISELECT(576,344), "S7862C15");
    check_base_class_offset(lv, (S7862C12*), ABISELECT(576,344), "S7862C15");
    /*is_ambiguous_... S7862C15::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S7862C15");
    /*is_ambiguous_... S7862C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C3*), ABISELECT(1944,1192), "S7862C15");
    check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C3*), ABISELECT(968,572), "S7862C15");
    check_base_class_offset(lv, (S7862C6*)(S7862C3*), ABISELECT(960,568), "S7862C15");
    check_base_class_offset(lv, (S7862C3*), ABISELECT(960,568), "S7862C15");
    check_field_offset(lv, s7862c15f0, ABISELECT(120,60), "S7862C15.s7862c15f0");
    check_field_offset(lv, s7862c15f1, ABISELECT(124,64), "S7862C15.s7862c15f1");
    check_field_offset(lv, s7862c15f2, ABISELECT(128,68), "S7862C15.s7862c15f2");
    check_field_offset(lv, s7862c15f3, ABISELECT(240,124), "S7862C15.s7862c15f3");
    check_field_offset(lv, s7862c15f4, ABISELECT(241,125), "S7862C15.s7862c15f4");
    check_field_offset(lv, s7862c15f5, ABISELECT(244,128), "S7862C15.s7862c15f5");
    check_field_offset(lv, s7862c15f6, ABISELECT(248,132), "S7862C15.s7862c15f6");
    check_field_offset(lv, s7862c15f7, ABISELECT(256,136), "S7862C15.s7862c15f7");
    test_class_info(&lv, &cd_S7862C15);
    dp->~S7862C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C15(Test_S7862C15, "S7862C15", ABISELECT(2064,1248));

#else // __cplusplus

extern void _ZN8S7862C15C1Ev();
extern void _ZN8S7862C15D2Ev();
Name_Map name_map_S7862C15[] = {
  NSPAIR(_ZN8S7862C15C1Ev),
  NSPAIR(_ZN8S7862C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S7862C12;
extern VTBL_ENTRY _ZTI8S7862C12[];
extern  VTBL_ENTRY _ZTV8S7862C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C3;
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
static Base_Class bases_S7862C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(264,144), //bcp->offset
    11, //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_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(384,232), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7862C12,    ABISELECT(576,344), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(1944,1192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(968,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(960,568), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7862C3,    ABISELECT(960,568), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7862C15[];
extern void _ZN8S7862C15D1Ev();
extern void _ZN8S7862C15D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn264_N8S7862C15D1Ev,_ZThn144_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn264_N8S7862C15D0Ev,_ZThn144_N8S7862C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn384_N8S7862C15D1Ev,_ZThn232_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn384_N8S7862C15D0Ev,_ZThn232_N8S7862C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn576_N8S7862C15D1Ev,_ZThn344_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn576_N8S7862C15D0Ev,_ZThn344_N8S7862C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn960_N8S7862C15D1Ev,_ZThn568_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn960_N8S7862C15D0Ev,_ZThn568_N8S7862C15D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY vtc_S7862C15[] = {
  ABISELECT(1944,1192),
  ABISELECT(960,568),
  ABISELECT(576,344),
  ABISELECT(384,232),
  ABISELECT(264,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&_ZN8S7862C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev),
  ABISELECT(-384,-232),
  ABISELECT(-120,-88),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev),
  ABISELECT(-576,-344),
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  ABISELECT(-576,-344),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev),
  0,
  0,
  ABISELECT(-960,-568),
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  ABISELECT(-960,-568),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S7862C15[];
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C15[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C6__8S7862C15[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void _ZN8S7862C12D1Ev();
extern void _ZN8S7862C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C15[] = {
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&_ZN8S7862C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C12__8S7862C15[] = {
  ABISELECT(192,112),
  ABISELECT(-120,-88),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C12__8S7862C15[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev),
};
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C15[] = {
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C3__A1__8S7862C15[] = {
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C3__A1__8S7862C15[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C3__8S7862C15[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
static  VTT_ENTRY vtt_S7862C15[] = {
  {&(_ZTV8S7862C15[7]),  7,40},
  {&(_ZTV8S7862C15[14]),  14,40},
  {&(_ZTV8S7862C15[20]),  20,40},
  {&(_ZTV8S7862C15[27]),  27,40},
  {&(_ZTV8S7862C15[36]),  36,40},
  {&(_tg__ZTV7S7862C6__8S7862C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C6__8S7862C15[3]),  3,5},
  {&(_tg__ZTV8S7862C12__8S7862C15[4]),  4,6},
  {&(_tg__ZTV7S7862C6__8S7862C12__8S7862C15[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S7862C12__8S7862C15[3]),  3,5},
  {&(_tg__ZTV7S7862C3__8S7862C15[4]),  4,8},
  {&(_tg__ZTV7S7862C67S7862C3__A1__8S7862C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C3__A1__8S7862C15[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C3__8S7862C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7862C15[];
extern  VTBL_ENTRY _ZTV8S7862C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C15[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N8S7862C15D0Ev,_ZThn568_N8S7862C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S7862C15D0Ev,_ZThn344_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N8S7862C15D1Ev,_ZThn568_N8S7862C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S7862C15D1Ev,_ZThn344_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7862C15D0Ev,_ZThn232_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7862C15D1Ev,_ZThn232_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7862C15D0Ev,_ZThn144_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7862C15D1Ev,_ZThn144_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C15 = {  "S7862C15", // class name
  bases_S7862C15, 10,
  &(vtc_S7862C15[0]), // expected_vtbl_contents
  &(vtt_S7862C15[0]), // expected_vtt_contents
  ABISELECT(2064,1248), // object size
  NSPAIRA(_ZTI8S7862C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7862C15),40, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7862C15),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7862C14  : S7862C15 , S7862C2 {
  ::S19674C18 s7862c14f0;
  int s7862c14f1;
  int s7862c14f2;
  int s7862c14f3;
  short s7862c14f4;
  virtual void  v5(); // _ZN8S7862C142v5Ev
  virtual void  v6(); // _ZN8S7862C142v6Ev
  ~S7862C14(); // tgen
  S7862C14(); // tgen
};
//SIG(-1 S7862C14) C1{ BC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC8{ VBC3 VBC5 BC4 v3 v4 FC4 FD[7] FC4 FL Fp[5]} vd v5 v6 Fi Fi FC5 Fc Fc Fi Fs FL} BC9{ VBC8 BC5 BC4 Fi Fi Fi:28 Fi Fl} v1 v2 FU10{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs}


void  S7862C14 ::v5(){vfunc_called(this, "_ZN8S7862C142v5Ev");}
void  S7862C14 ::v6(){vfunc_called(this, "_ZN8S7862C142v6Ev");}
S7862C14 ::~S7862C14(){ note_dtor("S7862C14", this);} // tgen
S7862C14 ::S7862C14(){ note_ctor("S7862C14", this);} // tgen

static void Test_S7862C14()
{
  extern Class_Descriptor cd_S7862C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(156,372)];
    init_test(&cd_S7862C14, buf);
    S7862C14 *dp, &lv = *(dp=new (buf) S7862C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2480,1484), "sizeof(S7862C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7862C14)");
    /*is_ambiguous_... S7862C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C15*), ABISELECT(672,380), "S7862C14");
    /*is_ambiguous_... S7862C14::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*), ABISELECT(672,380), "S7862C14");
    check_base_class_offset(lv, (S19674C5*)(S7862C3*), ABISELECT(672,380), "S7862C14");
    check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C3*), ABISELECT(672,380), "S7862C14");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*), ABISELECT(672,380), "S7862C14");
    /*is_ambiguous_... S7862C14::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*), ABISELECT(800,472), "S7862C14");
    /*is_ambiguous_... S7862C15::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C15*), ABISELECT(792,468), "S7862C14");
    check_base_class_offset(lv, (S7862C6*)(S7862C12*), ABISELECT(792,468), "S7862C14");
    /*is_ambiguous_... S7862C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C12*), ABISELECT(992,580), "S7862C14");
    check_base_class_offset(lv, (S7862C12*)(S7862C15*), ABISELECT(992,580), "S7862C14");
    /*is_ambiguous_... S7862C15::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C15*), ABISELECT(8,4), "S7862C14");
    /*is_ambiguous_... S7862C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C3*), ABISELECT(2360,1428), "S7862C14");
    check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C3*), ABISELECT(1384,808), "S7862C14");
    check_base_class_offset(lv, (S7862C6*)(S7862C3*), ABISELECT(1376,804), "S7862C14");
    check_base_class_offset(lv, (S7862C3*)(S7862C15*), ABISELECT(1376,804), "S7862C14");
    check_base_class_offset(lv, (S7862C3*)(S7862C2*), ABISELECT(1376,804), "S7862C14");
    check_base_class_offset(lv, (S7862C15*), 0, "S7862C14");
    /*is_ambiguous_... S7862C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*), ABISELECT(456,256), "S7862C14");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*), ABISELECT(272,148), "S7862C14");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*), ABISELECT(264,144), "S7862C14");
    check_base_class_offset(lv, (S7862C2*), ABISELECT(264,144), "S7862C14");
    check_field_offset(lv, s7862c14f0, ABISELECT(592,332), "S7862C14.s7862c14f0");
    check_field_offset(lv, s7862c14f1, ABISELECT(656,364), "S7862C14.s7862c14f1");
    check_field_offset(lv, s7862c14f2, ABISELECT(660,368), "S7862C14.s7862c14f2");
    check_field_offset(lv, s7862c14f3, ABISELECT(664,372), "S7862C14.s7862c14f3");
    check_field_offset(lv, s7862c14f4, ABISELECT(668,376), "S7862C14.s7862c14f4");
    test_class_info(&lv, &cd_S7862C14);
    dp->~S7862C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C14(Test_S7862C14, "S7862C14", ABISELECT(2480,1484));

#else // __cplusplus

extern void _ZN8S7862C14C1Ev();
extern void _ZN8S7862C14D1Ev();
Name_Map name_map_S7862C14[] = {
  NSPAIR(_ZN8S7862C14C1Ev),
  NSPAIR(_ZN8S7862C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S7862C12;
extern VTBL_ENTRY _ZTI8S7862C12[];
extern  VTBL_ENTRY _ZTV8S7862C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C3;
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
extern Class_Descriptor cd_S7862C15;
extern VTBL_ENTRY _ZTI8S7862C15[];
extern  VTBL_ENTRY _ZTV8S7862C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
static Base_Class bases_S7862C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(800,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
    2, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(792,468), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(992,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7862C12,    ABISELECT(992,580), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2360,1428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1384,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(1376,804), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7862C3,    ABISELECT(1376,804), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7862C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(264,144), //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
    14, //immediately_derived
  0, 0},
  {&cd_S7862C2,    ABISELECT(264,144), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //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 _ZTI8S7862C14[];
extern void _ZN8S7862C14D1Ev();
extern void _ZN8S7862C14D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void _ZN8S7862C142v5Ev();
extern void _ZN8S7862C142v6Ev();
extern void ABISELECT(_ZThn264_N8S7862C14D1Ev,_ZThn144_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn264_N8S7862C14D0Ev,_ZThn144_N8S7862C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn672_N8S7862C14D1Ev,_ZThn380_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn672_N8S7862C14D0Ev,_ZThn380_N8S7862C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn792_N8S7862C14D1Ev,_ZThn468_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn792_N8S7862C14D0Ev,_ZThn468_N8S7862C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn992_N8S7862C14D1Ev,_ZThn580_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn992_N8S7862C14D0Ev,_ZThn580_N8S7862C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn1376_N8S7862C14D1Ev,_ZThn804_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn1376_N8S7862C14D0Ev,_ZThn804_N8S7862C14D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY vtc_S7862C14[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&_ZN8S7862C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v5Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v6Ev,
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C14D1Ev,_ZThn144_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C14D0Ev,_ZThn144_N8S7862C14D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev),
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev),
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev),
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S7862C14[];
extern void _ZN8S7862C15D1Ev();
extern void _ZN8S7862C15D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C15__8S7862C14[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&_ZN8S7862C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn672_N8S7862C15D1Ev,_ZThn380_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn672_N8S7862C15D0Ev,_ZThn380_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C15__8S7862C14[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn792_N8S7862C15D1Ev,_ZThn468_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn792_N8S7862C15D0Ev,_ZThn468_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C15__8S7862C14[] = {
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn992_N8S7862C15D1Ev,_ZThn580_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn992_N8S7862C15D0Ev,_ZThn580_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C15__8S7862C14[] = {
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn1376_N8S7862C15D1Ev,_ZThn804_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn1376_N8S7862C15D0Ev,_ZThn804_N8S7862C15D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C15__8S7862C14[] = {
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C2__8S7862C14[] = {
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C2__A2__8S7862C14[] = {
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn408_N7S7862C6D1Ev,_ZThn236_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn408_N7S7862C6D0Ev,_ZThn236_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C2__A2__8S7862C14[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn1112_N7S7862C2D1Ev,_ZThn660_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn1112_N7S7862C2D0Ev,_ZThn660_N7S7862C2D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C2__8S7862C14[] = {
  0,
  0,
  ABISELECT(-1112,-660),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1112,-660),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn408_N7S7862C2D1Ev,_ZThn236_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn408_N7S7862C2D0Ev,_ZThn236_N7S7862C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C2__8S7862C14[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C14[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C6__8S7862C14[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void _ZN8S7862C12D1Ev();
extern void _ZN8S7862C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C14[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&_ZN8S7862C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C12__8S7862C14[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C12__8S7862C14[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev),
};
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C14[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C3__A1__8S7862C14[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C3__A1__8S7862C14[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C3__8S7862C14[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
static  VTT_ENTRY vtt_S7862C14[] = {
  {&(_ZTV8S7862C14[7]),  7,49},
  {&(_tg__ZTV8S7862C15__8S7862C14[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S7862C15__8S7862C14[3]),  3,5},
  {&(_tg__ZTV7S7862C6__8S7862C15__8S7862C14[4]),  4,6},
  {&(_tg__ZTV8S7862C12__8S7862C15__8S7862C14[5]),  5,7},
  {&(_tg__ZTV7S7862C3__8S7862C15__8S7862C14[7]),  7,11},
  {&(_tg__ZTV7S7862C2__8S7862C14[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C2__A2__8S7862C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C2__A2__8S7862C14[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C2__8S7862C14[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C2__8S7862C14[3]),  3,5},
  {&(_ZTV8S7862C14[23]),  23,49},
  {&(_ZTV8S7862C14[29]),  29,49},
  {&(_ZTV8S7862C14[36]),  36,49},
  {&(_ZTV8S7862C14[45]),  45,49},
  {&(_ZTV8S7862C14[18]),  18,49},
  {&(_tg__ZTV7S7862C6__8S7862C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C6__8S7862C14[3]),  3,5},
  {&(_tg__ZTV8S7862C12__8S7862C14[4]),  4,6},
  {&(_tg__ZTV7S7862C6__8S7862C12__8S7862C14[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S7862C12__8S7862C14[3]),  3,5},
  {&(_tg__ZTV7S7862C3__8S7862C14[4]),  4,8},
  {&(_tg__ZTV7S7862C67S7862C3__A1__8S7862C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C3__A1__8S7862C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C3__8S7862C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7862C14[];
extern  VTBL_ENTRY _ZTV8S7862C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C14[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7862C2D0Ev,_ZThn236_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7862C2D1Ev,_ZThn236_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N7S7862C2D0Ev,_ZThn660_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N7S7862C2D1Ev,_ZThn660_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7862C6D0Ev,_ZThn236_N7S7862C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7862C6D1Ev,_ZThn236_N7S7862C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N8S7862C15D0Ev,_ZThn804_N8S7862C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S7862C15D0Ev,_ZThn580_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N8S7862C15D1Ev,_ZThn804_N8S7862C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S7862C15D1Ev,_ZThn580_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S7862C15D0Ev,_ZThn468_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S7862C15D1Ev,_ZThn468_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S7862C15D0Ev,_ZThn380_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S7862C15D1Ev,_ZThn380_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N8S7862C14D0Ev,_ZThn804_N8S7862C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S7862C14D0Ev,_ZThn580_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N8S7862C14D1Ev,_ZThn804_N8S7862C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S7862C14D1Ev,_ZThn580_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S7862C14D0Ev,_ZThn468_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S7862C14D1Ev,_ZThn468_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S7862C14D0Ev,_ZThn380_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S7862C14D1Ev,_ZThn380_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C14 = {  "S7862C14", // class name
  bases_S7862C14, 15,
  &(vtc_S7862C14[0]), // expected_vtbl_contents
  &(vtt_S7862C14[0]), // expected_vtt_contents
  ABISELECT(2480,1484), // object size
  NSPAIRA(_ZTI8S7862C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7862C14),49, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7862C14),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7862C11  : virtual S19674C5 {
  virtual void  v7(); // _ZN8S7862C112v7Ev
  ~S7862C11(); // tgen
  S7862C11(); // tgen
};
//SIG(-1 S7862C11) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1}


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

static void Test_S7862C11()
{
  extern Class_Descriptor cd_S7862C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S7862C11, buf);
    S7862C11 *dp, &lv = *(dp=new (buf) S7862C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S7862C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7862C11)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(8,4), "S7862C11");
    test_class_info(&lv, &cd_S7862C11);
    dp->~S7862C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C11(Test_S7862C11, "S7862C11", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S7862C11C1Ev();
extern void _ZN8S7862C11D1Ev();
Name_Map name_map_S7862C11[] = {
  NSPAIR(_ZN8S7862C11C1Ev),
  NSPAIR(_ZN8S7862C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S7862C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7862C11[];
extern void _ZN8S7862C112v7Ev();
extern void _ZN8S7862C11D1Ev();
extern void _ZN8S7862C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7862C11D1Ev,_ZTv0_n12_N8S7862C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S7862C11D1Ev,_ZThn4_N8S7862C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C11D0Ev,_ZTv0_n12_N8S7862C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S7862C11D0Ev,_ZThn4_N8S7862C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7862C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C11[0]),
  (VTBL_ENTRY)&_ZN8S7862C112v7Ev,
  (VTBL_ENTRY)&_ZN8S7862C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C11D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7862C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C11D1Ev,_ZTv0_n12_N8S7862C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C11D0Ev,_ZTv0_n12_N8S7862C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7862C11[];
static  VTT_ENTRY vtt_S7862C11[] = {
  {&(_ZTV8S7862C11[3]),  3,11},
  {&(_ZTV8S7862C11[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S7862C11[];
extern  VTBL_ENTRY _ZTV8S7862C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C11[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C11D0Ev,_ZTv0_n12_N8S7862C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7862C11D0Ev,_ZThn4_N8S7862C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C11D1Ev,_ZTv0_n12_N8S7862C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7862C11D1Ev,_ZThn4_N8S7862C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C11 = {  "S7862C11", // class name
  bases_S7862C11, 1,
  &(vtc_S7862C11[0]), // expected_vtbl_contents
  &(vtt_S7862C11[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S7862C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7862C11),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7862C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7862C13  : virtual S7862C3 , virtual S7862C2 , S7862C14 , S19674C5 {
  ::S19674C7 s7862c13f0;
  int s7862c13f1[10];
  int s7862c13f2;
  ::S7862C11 s7862c13f3;
  short s7862c13f4;
  int s7862c13f5;
  __tsi64 s7862c13f6;
  virtual  ~S7862C13(); // _ZN8S7862C13D2Ev
  S7862C13(); // tgen
};
//SIG(-1 S7862C13) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} VBC7{ VBC2 BC4 BC5 Fi Fi Fi:28 Fi Fl} BC8{ BC9{ VBC3 VBC5 VBC10{ VBC5 BC3 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC2 vd v3 v4 Fi Fi FC4 Fc Fc Fi Fs FL} BC7 v5 v6 FU11{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC3 vd FC4 Fi[10] Fi FC12{ VBC3 v7} Fs Fi FL}


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

static void Test_S7862C13()
{
  extern Class_Descriptor cd_S7862C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(203,493)];
    init_test(&cd_S7862C13, buf);
    S7862C13 *dp, &lv = *(dp=new (buf) S7862C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3232,1968), "sizeof(S7862C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7862C13)");
    check_base_class_offset(lv, (S19674C5*)(S7862C3*), ABISELECT(2088,1300), "S7862C13");
    check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C3*), ABISELECT(2088,1300), "S7862C13");
    /*is_ambiguous_... S7862C13::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*), ABISELECT(2088,1300), "S7862C13");
    /*is_ambiguous_... S7862C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C15*)(S7862C14*), ABISELECT(2088,1300), "S7862C13");
    /*is_ambiguous_... S7862C13::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*), ABISELECT(2088,1300), "S7862C13");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*)(S7862C14*), ABISELECT(2088,1300), "S7862C13");
    /*is_ambiguous_... S7862C3::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C3*), ABISELECT(2208,1388), "S7862C13");
    check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C3*), ABISELECT(1112,680), "S7862C13");
    check_base_class_offset(lv, (S7862C6*)(S7862C3*), ABISELECT(1104,676), "S7862C13");
    check_base_class_offset(lv, (S7862C3*), ABISELECT(1104,676), "S7862C13");
    /*is_ambiguous_... S7862C13::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C3*)(S7862C2*), ABISELECT(1104,676), "S7862C13");
    check_base_class_offset(lv, (S7862C3*)(S7862C15*)(S7862C14*), ABISELECT(1104,676), "S7862C13");
    check_base_class_offset(lv, (S7862C3*)(S7862C2*)(S7862C14*), ABISELECT(1104,676), "S7862C13");
    /*is_ambiguous_... S7862C13::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*), ABISELECT(2512,1556), "S7862C13");
    /*is_ambiguous_... S7862C13::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*), ABISELECT(2328,1448), "S7862C13");
    /*is_ambiguous_... S7862C13::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*), ABISELECT(2320,1444), "S7862C13");
    /*is_ambiguous_... S7862C13::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C2*), ABISELECT(2320,1444), "S7862C13");
    /*is_ambiguous_... S7862C13::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*), ABISELECT(2656,1636), "S7862C13");
    /*is_ambiguous_... S7862C15::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C15*)(S7862C14*), ABISELECT(2648,1632), "S7862C13");
    check_base_class_offset(lv, (S7862C6*)(S7862C12*), ABISELECT(2648,1632), "S7862C13");
    /*is_ambiguous_... S7862C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C12*), ABISELECT(2848,1744), "S7862C13");
    check_base_class_offset(lv, (S7862C12*)(S7862C15*)(S7862C14*), ABISELECT(2848,1744), "S7862C13");
    /*is_ambiguous_... S7862C15::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C15*)(S7862C14*), ABISELECT(8,4), "S7862C13");
    check_base_class_offset(lv, (S7862C15*)(S7862C14*), 0, "S7862C13");
    /*is_ambiguous_... S7862C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*)(S7862C14*), ABISELECT(456,256), "S7862C13");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*)(S7862C14*), ABISELECT(272,148), "S7862C13");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*)(S7862C14*), ABISELECT(264,144), "S7862C13");
    check_base_class_offset(lv, (S7862C2*)(S7862C14*), ABISELECT(264,144), "S7862C13");
    check_base_class_offset(lv, (S7862C14*), 0, "S7862C13");
    /*is_ambiguous_... S7862C13::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(672,380), "S7862C13");
    check_field_offset(lv, s7862c13f0, ABISELECT(792,468), "S7862C13.s7862c13f0");
    check_field_offset(lv, s7862c13f1, ABISELECT(904,524), "S7862C13.s7862c13f1");
    check_field_offset(lv, s7862c13f2, ABISELECT(944,564), "S7862C13.s7862c13f2");
    check_field_offset(lv, s7862c13f3, ABISELECT(952,568), "S7862C13.s7862c13f3");
    check_field_offset(lv, s7862c13f4, ABISELECT(1080,660), "S7862C13.s7862c13f4");
    check_field_offset(lv, s7862c13f5, ABISELECT(1084,664), "S7862C13.s7862c13f5");
    check_field_offset(lv, s7862c13f6, ABISELECT(1088,668), "S7862C13.s7862c13f6");
    test_class_info(&lv, &cd_S7862C13);
    dp->~S7862C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C13(Test_S7862C13, "S7862C13", ABISELECT(3232,1968));

#else // __cplusplus

extern void _ZN8S7862C13C1Ev();
extern void _ZN8S7862C13D2Ev();
Name_Map name_map_S7862C13[] = {
  NSPAIR(_ZN8S7862C13C1Ev),
  NSPAIR(_ZN8S7862C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C3;
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S7862C12;
extern VTBL_ENTRY _ZTI8S7862C12[];
extern  VTBL_ENTRY _ZTV8S7862C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C15;
extern VTBL_ENTRY _ZTI8S7862C15[];
extern  VTBL_ENTRY _ZTV8S7862C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
extern Class_Descriptor cd_S7862C14;
extern VTBL_ENTRY _ZTI8S7862C14[];
extern  VTBL_ENTRY _ZTV8S7862C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C14[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S7862C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(2088,1300), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2208,1388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(1112,680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(1104,676), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7862C3,    ABISELECT(1104,676), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(2512,1556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2328,1448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(2320,1444), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7862C2,    ABISELECT(2320,1444), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(2656,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7862C6,    ABISELECT(2648,1632), //bcp->offset
    49, //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
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(2848,1744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7862C12,    ABISELECT(2848,1744), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(264,144), //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
    18, //immediately_derived
  0, 0},
  {&cd_S7862C2,    ABISELECT(264,144), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7862C14,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7862C13[];
extern void _ZN8S7862C13D1Ev();
extern void _ZN8S7862C13D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void _ZN8S7862C142v5Ev();
extern void _ZN8S7862C142v6Ev();
extern void ABISELECT(_ZThn264_N8S7862C13D1Ev,_ZThn144_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn264_N8S7862C13D0Ev,_ZThn144_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn672_N8S7862C13D1Ev,_ZThn380_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn672_N8S7862C13D0Ev,_ZThn380_N8S7862C13D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn1104_N8S7862C13D1Ev,_ZThn676_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn1104_N8S7862C13D0Ev,_ZThn676_N8S7862C13D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S7862C13D1Ev,_ZTv0_n12_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn2088_N8S7862C13D1Ev,_ZThn1300_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C13D0Ev,_ZTv0_n12_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn2088_N8S7862C13D0Ev,_ZThn1300_N8S7862C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7862C13D1Ev,_ZTv0_n24_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn2320_N8S7862C13D1Ev,_ZThn1444_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7862C13D0Ev,_ZTv0_n24_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn2320_N8S7862C13D0Ev,_ZThn1444_N8S7862C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C13D1Ev,_ZTv0_n16_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn2648_N8S7862C13D1Ev,_ZThn1632_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C13D0Ev,_ZTv0_n16_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn2648_N8S7862C13D0Ev,_ZThn1632_N8S7862C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn2848_N8S7862C13D1Ev,_ZThn1744_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn2848_N8S7862C13D0Ev,_ZThn1744_N8S7862C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7862C13[] = {
  ABISELECT(2320,1444),
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&_ZN8S7862C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v5Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v6Ev,
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C13D1Ev,_ZThn144_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C13D0Ev,_ZThn144_N8S7862C13D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N8S7862C13D1Ev,_ZThn380_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N8S7862C13D0Ev,_ZThn380_N8S7862C13D0Ev),
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C13D1Ev,_ZTv0_n12_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C13D0Ev,_ZTv0_n12_N8S7862C13D0Ev),
  ABISELECT(-2320,-1444),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  ABISELECT(-2320,-1444),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7862C13D1Ev,_ZTv0_n24_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7862C13D0Ev,_ZTv0_n24_N8S7862C13D0Ev),
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C13D1Ev,_ZTv0_n16_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C13D0Ev,_ZTv0_n16_N8S7862C13D0Ev),
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7862C13[];
extern void _ZN8S7862C14D1Ev();
extern void _ZN8S7862C14D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void _ZN8S7862C142v5Ev();
extern void _ZN8S7862C142v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C14__8S7862C13[] = {
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&_ZN8S7862C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v5Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v6Ev,
};
extern void _ZN8S7862C15D1Ev();
extern void _ZN8S7862C15D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C158S7862C14__8S7862C13[] = {
  ABISELECT(2208,1388),
  ABISELECT(1104,676),
  ABISELECT(2848,1744),
  ABISELECT(2648,1632),
  ABISELECT(2088,1300),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&_ZN8S7862C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn2088_N8S7862C15D1Ev,_ZThn1300_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn2088_N8S7862C15D0Ev,_ZThn1300_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C158S7862C14__8S7862C13[] = {
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn2648_N8S7862C15D1Ev,_ZThn1632_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn2648_N8S7862C15D0Ev,_ZThn1632_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C158S7862C14__8S7862C13[] = {
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn2848_N8S7862C15D1Ev,_ZThn1744_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn2848_N8S7862C15D0Ev,_ZThn1744_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C158S7862C14__8S7862C13[] = {
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn1104_N8S7862C15D1Ev,_ZThn676_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn1104_N8S7862C15D0Ev,_ZThn676_N8S7862C15D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C158S7862C14__8S7862C13[] = {
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C28S7862C14__A1__8S7862C13[] = {
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C28S7862C14__A3__8S7862C13[] = {
  ABISELECT(1824,1156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn1824_N7S7862C6D1Ev,_ZThn1156_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn1824_N7S7862C6D0Ev,_ZThn1156_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C28S7862C14__A3__8S7862C13[] = {
  ABISELECT(-1824,-1156),
  ABISELECT(-1824,-1156),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn840_N7S7862C2D1Ev,_ZThn532_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn840_N7S7862C2D0Ev,_ZThn532_N7S7862C2D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C28S7862C14__A1__8S7862C13[] = {
  0,
  0,
  ABISELECT(-840,-532),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn1824_N7S7862C2D1Ev,_ZThn1156_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn1824_N7S7862C2D0Ev,_ZThn1156_N7S7862C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C28S7862C14__A1__8S7862C13[] = {
  ABISELECT(-1824,-1156),
  ABISELECT(-1824,-1156),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn2088_N8S7862C14D1Ev,_ZThn1300_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn2088_N8S7862C14D0Ev,_ZThn1300_N8S7862C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C14__8S7862C13[] = {
  ABISELECT(-2088,-1300),
  ABISELECT(-2088,-1300),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn2648_N8S7862C14D1Ev,_ZThn1632_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn2648_N8S7862C14D0Ev,_ZThn1632_N8S7862C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C14__8S7862C13[] = {
  ABISELECT(-2648,-1632),
  ABISELECT(-560,-332),
  ABISELECT(-2648,-1632),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn2848_N8S7862C14D1Ev,_ZThn1744_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn2848_N8S7862C14D0Ev,_ZThn1744_N8S7862C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C14__8S7862C13[] = {
  ABISELECT(-2848,-1744),
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  ABISELECT(-2848,-1744),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn1104_N8S7862C14D1Ev,_ZThn676_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn1104_N8S7862C14D0Ev,_ZThn676_N8S7862C14D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C14__8S7862C13[] = {
  0,
  0,
  ABISELECT(-1104,-676),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-1104,-676),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZThn264_N8S7862C14D1Ev,_ZThn144_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn264_N8S7862C14D0Ev,_ZThn144_N8S7862C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C2__8S7862C14__8S7862C13[] = {
  ABISELECT(1944,1244),
  ABISELECT(840,532),
  ABISELECT(1824,1156),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C14D1Ev,_ZThn144_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C14D0Ev,_ZThn144_N8S7862C14D0Ev),
};
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C13[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C3__8S7862C13[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C3__8S7862C13[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C3__8S7862C13[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C2__8S7862C13[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C2__A1__8S7862C13[] = {
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C2__A1__8S7862C13[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C2__8S7862C13[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C2__8S7862C13[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C6__A2__8S7862C13[] = {
  ABISELECT(-560,-332),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C6__A2__8S7862C13[] = {
  ABISELECT(560,332),
  ABISELECT(560,332),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void _ZN8S7862C12D1Ev();
extern void _ZN8S7862C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C13[] = {
  ABISELECT(-760,-444),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&_ZN8S7862C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C12__8S7862C13[] = {
  ABISELECT(200,112),
  ABISELECT(-560,-332),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C12__8S7862C13[] = {
  ABISELECT(760,444),
  ABISELECT(760,444),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev),
};
static  VTT_ENTRY vtt_S7862C13[] = {
  {&(_ZTV8S7862C13[8]),  8,62},
  {&(_tg__ZTV8S7862C14__8S7862C13[7]),  7,13},
  {&(_tg__ZTV8S7862C158S7862C14__8S7862C13[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S7862C158S7862C14__8S7862C13[3]),  3,5},
  {&(_tg__ZTV7S7862C6__8S7862C158S7862C14__8S7862C13[4]),  4,6},
  {&(_tg__ZTV8S7862C12__8S7862C158S7862C14__8S7862C13[5]),  5,7},
  {&(_tg__ZTV7S7862C3__8S7862C158S7862C14__8S7862C13[7]),  7,11},
  {&(_tg__ZTV7S7862C28S7862C14__A1__8S7862C13[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C28S7862C14__A3__8S7862C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C28S7862C14__A3__8S7862C13[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C28S7862C14__A1__8S7862C13[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C28S7862C14__A1__8S7862C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S7862C14__8S7862C13[3]),  3,5},
  {&(_tg__ZTV7S7862C6__8S7862C14__8S7862C13[4]),  4,6},
  {&(_tg__ZTV8S7862C12__8S7862C14__8S7862C13[5]),  5,7},
  {&(_tg__ZTV7S7862C3__8S7862C14__8S7862C13[7]),  7,11},
  {&(_tg__ZTV7S7862C2__8S7862C14__8S7862C13[5]),  5,7},
  {&(_ZTV8S7862C13[32]),  32,62},
  {&(_ZTV8S7862C13[39]),  39,62},
  {&(_ZTV8S7862C13[47]),  47,62},
  {&(_ZTV8S7862C13[53]),  53,62},
  {&(_ZTV8S7862C13[60]),  60,62},
  {&(_ZTV8S7862C13[19]),  19,62},
  {&(_tg__ZTV7S7862C3__8S7862C13[4]),  4,8},
  {&(_tg__ZTV7S7862C67S7862C3__8S7862C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C3__8S7862C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C3__8S7862C13[3]),  3,5},
  {&(_tg__ZTV7S7862C2__8S7862C13[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C2__A1__8S7862C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C2__A1__8S7862C13[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C2__8S7862C13[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C2__8S7862C13[3]),  3,5},
  {&(_tg__ZTV7S7862C6__A2__8S7862C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C6__A2__8S7862C13[3]),  3,5},
  {&(_tg__ZTV8S7862C12__8S7862C13[4]),  4,6},
  {&(_tg__ZTV7S7862C6__8S7862C12__8S7862C13[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S7862C12__8S7862C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7862C13[];
extern  VTBL_ENTRY _ZTV8S7862C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C13[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S7862C14D0Ev,_ZThn676_N8S7862C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N8S7862C14D0Ev,_ZThn1744_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S7862C14D1Ev,_ZThn676_N8S7862C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N8S7862C14D1Ev,_ZThn1744_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N8S7862C14D0Ev,_ZThn1632_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N8S7862C14D1Ev,_ZThn1632_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N8S7862C14D0Ev,_ZThn1300_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N8S7862C14D1Ev,_ZThn1300_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N7S7862C2D0Ev,_ZThn1156_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N7S7862C2D1Ev,_ZThn1156_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn840_N7S7862C2D0Ev,_ZThn532_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn840_N7S7862C2D1Ev,_ZThn532_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N7S7862C6D0Ev,_ZThn1156_N7S7862C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1824_N7S7862C6D1Ev,_ZThn1156_N7S7862C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S7862C15D0Ev,_ZThn676_N8S7862C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N8S7862C15D0Ev,_ZThn1744_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S7862C15D1Ev,_ZThn676_N8S7862C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N8S7862C15D1Ev,_ZThn1744_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N8S7862C15D0Ev,_ZThn1632_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N8S7862C15D1Ev,_ZThn1632_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N8S7862C15D0Ev,_ZThn1300_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N8S7862C15D1Ev,_ZThn1300_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C13D0Ev,_ZTv0_n16_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N8S7862C13D0Ev,_ZThn1632_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C13D1Ev,_ZTv0_n16_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2648_N8S7862C13D1Ev,_ZThn1632_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7862C13D0Ev,_ZTv0_n24_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2320_N8S7862C13D0Ev,_ZThn1444_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7862C13D1Ev,_ZTv0_n24_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2320_N8S7862C13D1Ev,_ZThn1444_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C13D0Ev,_ZTv0_n12_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N8S7862C13D0Ev,_ZThn1300_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C13D1Ev,_ZTv0_n12_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2088_N8S7862C13D1Ev,_ZThn1300_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N8S7862C13D0Ev,_ZThn1744_N8S7862C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S7862C13D0Ev,_ZThn676_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N8S7862C13D1Ev,_ZThn1744_N8S7862C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S7862C13D1Ev,_ZThn676_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C13 = {  "S7862C13", // class name
  bases_S7862C13, 21,
  &(vtc_S7862C13[0]), // expected_vtbl_contents
  &(vtt_S7862C13[0]), // expected_vtt_contents
  ABISELECT(3232,1968), // object size
  NSPAIRA(_ZTI8S7862C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7862C13),62, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7862C13),37, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7862C17  : virtual S19674C7 , S7862C2 , S7862C3 , virtual S7862C6 , virtual S7862C11 {
  int s7862c17f0;
  int s7862c17f1;
  int s7862c17f2;
  long double s7862c17f3;
  void *s7862c17f4;
  void *s7862c17f5;
  ::S7862C6 s7862c17f6;
  void *s7862c17f7;
  ::S7862C3 s7862c17f8;
  int s7862c17f9;
  void *s7862c17f10;
  int s7862c17f11;
  ::S19674C5 s7862c17f12[8];
  virtual  ~S7862C17(); // _ZN8S7862C17D2Ev
  S7862C17(); // tgen
};
//SIG(-1 S7862C17) C1{ VBC2{ m Fp[14]} BC3{ VBC4{ VBC5{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC2 BC6{ VBC5 BC2 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC2 BC6 Fi Fi Fi:28 Fi Fl} BC4 VBC6 VBC8{ VBC5 v3} vd Fi Fi Fi FD Fp Fp FC6 Fp FC4 Fi Fp Fi FC5[8]}


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

static void Test_S7862C17()
{
  extern Class_Descriptor cd_S7862C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(334,855)];
    init_test(&cd_S7862C17, buf);
    S7862C17 *dp, &lv = *(dp=new (buf) S7862C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5328,3416), "sizeof(S7862C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7862C17)");
    /*is_ambiguous_... S7862C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(3896,2532), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C3*), ABISELECT(3896,2532), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C3*), ABISELECT(3896,2532), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C3*), ABISELECT(5000,3212), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C3*), ABISELECT(5000,3212), "S7862C17");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*), ABISELECT(5000,3212), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C3*), ABISELECT(5000,3212), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C3*), ABISELECT(5000,3212), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*), ABISELECT(5000,3212), "S7862C17");
    check_base_class_offset(lv, (S19674C5*)(S7862C11*), ABISELECT(5000,3212), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C3*), ABISELECT(4024,2592), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C3*), ABISELECT(4016,2588), "S7862C17");
    check_base_class_offset(lv, (S7862C3*)(S7862C2*), ABISELECT(4016,2588), "S7862C17");
    /*is_ambiguous_... S7862C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*), ABISELECT(192,112), "S7862C17");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*), ABISELECT(8,4), "S7862C17");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*), 0, "S7862C17");
    check_base_class_offset(lv, (S7862C2*), 0, "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C3*), ABISELECT(344,192), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C3*), ABISELECT(336,188), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S7862C3*), ABISELECT(336,188), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*), ABISELECT(5128,3304), "S7862C17");
    /*is_ambiguous_... S7862C17::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*), ABISELECT(5120,3300), "S7862C17");
    check_base_class_offset(lv, (S7862C11*), ABISELECT(5312,3412), "S7862C17");
    check_field_offset(lv, s7862c17f0, ABISELECT(1320,812), "S7862C17.s7862c17f0");
    check_field_offset(lv, s7862c17f1, ABISELECT(1324,816), "S7862C17.s7862c17f1");
    check_field_offset(lv, s7862c17f2, ABISELECT(1328,820), "S7862C17.s7862c17f2");
    check_field_offset(lv, s7862c17f3, ABISELECT(1344,824), "S7862C17.s7862c17f3");
    check_field_offset(lv, s7862c17f4, ABISELECT(1360,836), "S7862C17.s7862c17f4");
    check_field_offset(lv, s7862c17f5, ABISELECT(1368,840), "S7862C17.s7862c17f5");
    check_field_offset(lv, s7862c17f6, ABISELECT(1376,844), "S7862C17.s7862c17f6");
    check_field_offset(lv, s7862c17f7, ABISELECT(1688,1044), "S7862C17.s7862c17f7");
    check_field_offset(lv, s7862c17f8, ABISELECT(1696,1048), "S7862C17.s7862c17f8");
    check_field_offset(lv, s7862c17f9, ABISELECT(2912,1816), "S7862C17.s7862c17f9");
    check_field_offset(lv, s7862c17f10, ABISELECT(2920,1820), "S7862C17.s7862c17f10");
    check_field_offset(lv, s7862c17f11, ABISELECT(2928,1824), "S7862C17.s7862c17f11");
    check_field_offset(lv, s7862c17f12, ABISELECT(2936,1828), "S7862C17.s7862c17f12");
    test_class_info(&lv, &cd_S7862C17);
    dp->~S7862C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C17(Test_S7862C17, "S7862C17", ABISELECT(5328,3416));

#else // __cplusplus

extern void _ZN8S7862C17C1Ev();
extern void _ZN8S7862C17D2Ev();
Name_Map name_map_S7862C17[] = {
  NSPAIR(_ZN8S7862C17C1Ev),
  NSPAIR(_ZN8S7862C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C3;
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C3;
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C11;
extern VTBL_ENTRY _ZTI8S7862C11[];
extern  VTBL_ENTRY _ZTV8S7862C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C11[];
static Base_Class bases_S7862C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(3896,2532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(5000,3212), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4024,2592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7862C6,    ABISELECT(4016,2588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7862C3,    ABISELECT(4016,2588), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(192,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
    8, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7862C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(344,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(336,188), //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
    11, //immediately_derived
  0, 0},
  {&cd_S7862C3,    ABISELECT(336,188), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(5128,3304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(5120,3300), //bcp->offset
    33, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7862C11,    ABISELECT(5312,3412), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7862C17[];
extern void _ZN8S7862C17D1Ev();
extern void _ZN8S7862C17D0Ev();
extern void ABISELECT(_ZThn336_N8S7862C17D1Ev,_ZThn188_N8S7862C17D1Ev)();
extern void ABISELECT(_ZThn336_N8S7862C17D0Ev,_ZThn188_N8S7862C17D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev)();
extern void ABISELECT(_ZThn4016_N8S7862C17D1Ev,_ZThn2588_N8S7862C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev)();
extern void ABISELECT(_ZThn4016_N8S7862C17D0Ev,_ZThn2588_N8S7862C17D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S7862C17D1Ev,_ZTv0_n12_N8S7862C17D1Ev)();
extern void ABISELECT(_ZThn5000_N8S7862C17D1Ev,_ZThn3212_N8S7862C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C17D0Ev,_ZTv0_n12_N8S7862C17D0Ev)();
extern void ABISELECT(_ZThn5000_N8S7862C17D0Ev,_ZThn3212_N8S7862C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C17D1Ev,_ZTv0_n16_N8S7862C17D1Ev)();
extern void ABISELECT(_ZThn5120_N8S7862C17D1Ev,_ZThn3300_N8S7862C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C17D0Ev,_ZTv0_n16_N8S7862C17D0Ev)();
extern void ABISELECT(_ZThn5120_N8S7862C17D0Ev,_ZThn3300_N8S7862C17D0Ev)() __attribute__((weak));
extern void _ZN8S7862C112v7Ev();
extern void ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev)();
extern void ABISELECT(_ZThn5312_N8S7862C17D1Ev,_ZThn3412_N8S7862C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev)();
extern void ABISELECT(_ZThn5312_N8S7862C17D0Ev,_ZThn3412_N8S7862C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7862C17[] = {
  ABISELECT(5312,3412),
  ABISELECT(5120,3300),
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&_ZN8S7862C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C17D0Ev,
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S7862C17D1Ev,_ZThn188_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S7862C17D0Ev,_ZThn188_N8S7862C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C17D1Ev,_ZTv0_n12_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C17D0Ev,_ZTv0_n12_N8S7862C17D0Ev),
  ABISELECT(-5120,-3300),
  ABISELECT(-120,-88),
  ABISELECT(-5120,-3300),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C17D1Ev,_ZTv0_n16_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C17D0Ev,_ZTv0_n16_N8S7862C17D0Ev),
  ABISELECT(-5312,-3412),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-5312,-3412),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&_ZN8S7862C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev),
};
extern VTBL_ENTRY _ZTV8S7862C17[];
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C2__8S7862C17[] = {
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C2__A1__8S7862C17[] = {
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn5000_N7S7862C6D1Ev,_ZThn3212_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn5000_N7S7862C6D0Ev,_ZThn3212_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C2__A1__8S7862C17[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn4016_N7S7862C2D1Ev,_ZThn2588_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn4016_N7S7862C2D0Ev,_ZThn2588_N7S7862C2D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C2__8S7862C17[] = {
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn5000_N7S7862C2D1Ev,_ZThn3212_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn5000_N7S7862C2D0Ev,_ZThn3212_N7S7862C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C2__8S7862C17[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__A__8S7862C17[] = {
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C3__A2__8S7862C17[] = {
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn4664_N7S7862C6D1Ev,_ZThn3024_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn4664_N7S7862C6D0Ev,_ZThn3024_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C3__A2__8S7862C17[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZThn4664_N7S7862C3D1Ev,_ZThn3024_N7S7862C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
extern void ABISELECT(_ZThn4664_N7S7862C3D0Ev,_ZThn3024_N7S7862C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C3__A__8S7862C17[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C17[] = {
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C3__8S7862C17[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C3__8S7862C17[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C3__8S7862C17[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C6__A3__8S7862C17[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C6__A3__8S7862C17[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void _ZN8S7862C112v7Ev();
extern void _ZN8S7862C11D1Ev();
extern void _ZN8S7862C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C11__8S7862C17[] = {
  ABISELECT(-312,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C11[0]),
  (VTBL_ENTRY)&_ZN8S7862C112v7Ev,
  (VTBL_ENTRY)&_ZN8S7862C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C11D1Ev,_ZTv0_n12_N8S7862C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C11D0Ev,_ZTv0_n12_N8S7862C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C11__8S7862C17[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI8S7862C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C11D1Ev,_ZTv0_n12_N8S7862C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C11D0Ev,_ZTv0_n12_N8S7862C11D0Ev),
};
static  VTT_ENTRY vtt_S7862C17[] = {
  {&(_ZTV8S7862C17[7]),  7,47},
  {&(_tg__ZTV7S7862C2__8S7862C17[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C2__A1__8S7862C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C2__A1__8S7862C17[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C2__8S7862C17[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C2__8S7862C17[3]),  3,5},
  {&(_tg__ZTV7S7862C3__A__8S7862C17[4]),  4,8},
  {&(_tg__ZTV7S7862C67S7862C3__A2__8S7862C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C3__A2__8S7862C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C3__A__8S7862C17[3]),  3,5},
  {&(_ZTV8S7862C17[24]),  24,47},
  {&(_ZTV8S7862C17[31]),  31,47},
  {&(_ZTV8S7862C17[13]),  13,47},
  {&(_ZTV8S7862C17[37]),  37,47},
  {&(_ZTV8S7862C17[44]),  44,47},
  {&(_tg__ZTV7S7862C3__8S7862C17[4]),  4,8},
  {&(_tg__ZTV7S7862C67S7862C3__8S7862C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C3__8S7862C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C3__8S7862C17[3]),  3,5},
  {&(_tg__ZTV7S7862C6__A3__8S7862C17[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C6__A3__8S7862C17[3]),  3,5},
  {&(_tg__ZTV8S7862C11__8S7862C17[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S7862C11__8S7862C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7862C17[];
extern  VTBL_ENTRY _ZTV8S7862C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C17[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N7S7862C3D0Ev,_ZThn3024_N7S7862C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N7S7862C3D1Ev,_ZThn3024_N7S7862C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N7S7862C2D0Ev,_ZThn3212_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N7S7862C2D1Ev,_ZThn3212_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N7S7862C2D0Ev,_ZThn2588_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N7S7862C2D1Ev,_ZThn2588_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N7S7862C6D0Ev,_ZThn3024_N7S7862C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N7S7862C6D0Ev,_ZThn3212_N7S7862C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N7S7862C6D1Ev,_ZThn3024_N7S7862C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N7S7862C6D1Ev,_ZThn3212_N7S7862C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C17D0Ev,_ZTv0_n16_N8S7862C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N8S7862C17D0Ev,_ZThn3300_N8S7862C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C17D1Ev,_ZTv0_n16_N8S7862C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N8S7862C17D1Ev,_ZThn3300_N8S7862C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C17D0Ev,_ZTv0_n12_N8S7862C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S7862C17D0Ev,_ZThn3212_N8S7862C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C17D1Ev,_ZTv0_n12_N8S7862C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S7862C17D1Ev,_ZThn3212_N8S7862C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N8S7862C17D0Ev,_ZThn3412_N8S7862C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S7862C17D0Ev,_ZThn2588_N8S7862C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N8S7862C17D1Ev,_ZThn3412_N8S7862C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S7862C17D1Ev,_ZThn2588_N8S7862C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C17 = {  "S7862C17", // class name
  bases_S7862C17, 15,
  &(vtc_S7862C17[0]), // expected_vtbl_contents
  &(vtt_S7862C17[0]), // expected_vtt_contents
  ABISELECT(5328,3416), // object size
  NSPAIRA(_ZTI8S7862C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7862C17),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7862C17),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7862C8  : virtual S7862C2 , virtual S19674C2 , S7862C13 , virtual S7862C17 {
  ::S7862C12 s7862c8f0;
  int s7862c8f1;
  ::S21161C18 s7862c8f2;
  long double s7862c8f3;
  short s7862c8f4[3];
  int  :0;
  int s7862c8f6;
  ~S7862C8(); // tgen
  S7862C8(); // tgen
};
//SIG(-1 S7862C8) C1{ VBC2{ VBC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ m Fp[14]} BC6{ VBC4 BC5 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC5 BC6 Fi Fi Fi:28 Fi Fl} VBC8{ m FC9{ VBC10{ VBC4 v8} VBC11{ VBC4 VBC5 BC12{ VBC4 BC5 Fs[6] FL[3] FU7} v9 v10 FC12 FD[7] FC12 FL Fp[5]} vd FC13{ VBC12 BC4 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC11 Fi Fi FC10}[5] Fp} BC14{ VBC3 VBC2 BC15{ BC16{ VBC4 VBC6 VBC17{ VBC6 BC4 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC3 vd v3 v4 Fi Fi FC5 Fc Fc Fi Fs FL} BC2 v5 v6 FU18{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC4 vd FC5 Fi[10] Fi FC19{ VBC4 v7} Fs Fi FL} VBC20{ VBC5 BC2 BC3 VBC6 VBC19 vd Fi Fi Fi FD Fp Fp FC6 Fp FC3 Fi Fp Fi FC4[8]} FC17 Fi FC21{ VBC4 BC22{ VBC4 BC5 Fs[6] FL[3] FU7} VBC23{ VBC22 BC4 Fc:6 Fc[8] FD FC5 FC5} FD Fp Fp} FD Fs[3] Fi:0 Fi}


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

static void Test_S7862C8()
{
  extern Class_Descriptor cd_S7862C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2468,6090)];
    init_test(&cd_S7862C8, buf);
    S7862C8 *dp, &lv = *(dp=new (buf) S7862C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(39472,24356), "sizeof(S7862C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7862C8)");
    /*is_ambiguous_... S7862C8::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C3*), ABISELECT(4104,2496), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C3*), ABISELECT(4104,2496), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*), ABISELECT(4104,2496), "S7862C8");
    /*is_ambiguous_... S7862C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C15*)(S7862C14*)(S7862C13*), ABISELECT(4104,2496), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*), ABISELECT(4104,2496), "S7862C8");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*)(S7862C14*)(S7862C13*), ABISELECT(4104,2496), "S7862C8");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*)(S7862C17*), ABISELECT(4104,2496), "S7862C8");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C3*)(S7862C17*), ABISELECT(4104,2496), "S7862C8");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C3*)(S7862C17*), ABISELECT(4104,2496), "S7862C8");
    check_base_class_offset(lv, (S19674C5*)(S7862C11*), ABISELECT(4104,2496), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C3*), ABISELECT(4224,2584), "S7862C8");
    /*is_ambiguous_... S7862C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C17*), ABISELECT(4224,2584), "S7862C8");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C3*)(S7862C17*), ABISELECT(4224,2584), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C3*), ABISELECT(3128,1876), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C3 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C3*), ABISELECT(3120,1872), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C3*)(S7862C2*), ABISELECT(3120,1872), "S7862C8");
    check_base_class_offset(lv, (S7862C3*)(S7862C13*), ABISELECT(3120,1872), "S7862C8");
    check_base_class_offset(lv, (S7862C3*)(S7862C15*)(S7862C14*)(S7862C13*), ABISELECT(3120,1872), "S7862C8");
    check_base_class_offset(lv, (S7862C3*)(S7862C2*)(S7862C14*)(S7862C13*), ABISELECT(3120,1872), "S7862C8");
    check_base_class_offset(lv, (S7862C3*)(S7862C2*)(S7862C17*), ABISELECT(3120,1872), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*), ABISELECT(2976,1796), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*), ABISELECT(2792,1688), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*), ABISELECT(2784,1684), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C2*), ABISELECT(2784,1684), "S7862C8");
    /*is_ambiguous_... S7862C13::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C2*)(S7862C13*), ABISELECT(2784,1684), "S7862C8");
    check_base_class_offset(lv, (S19674C2*), ABISELECT(4336,2640), "S7862C8");
    /*is_ambiguous_... S7862C8::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*), ABISELECT(34992,21488), "S7862C8");
    /*is_ambiguous_... S7862C15::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C15*)(S7862C14*)(S7862C13*), ABISELECT(34984,21484), "S7862C8");
    check_base_class_offset(lv, (S7862C6*)(S7862C12*), ABISELECT(34984,21484), "S7862C8");
    /*is_ambiguous_... S7862C17::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C17*), ABISELECT(34984,21484), "S7862C8");
    /*is_ambiguous_... S7862C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C12*), ABISELECT(35184,21596), "S7862C8");
    check_base_class_offset(lv, (S7862C12*)(S7862C15*)(S7862C14*)(S7862C13*), ABISELECT(35184,21596), "S7862C8");
    /*is_ambiguous_... S7862C15::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C15*)(S7862C14*)(S7862C13*), ABISELECT(8,4), "S7862C8");
    check_base_class_offset(lv, (S7862C15*)(S7862C14*)(S7862C13*), 0, "S7862C8");
    /*is_ambiguous_... S7862C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*)(S7862C14*)(S7862C13*), ABISELECT(456,256), "S7862C8");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*)(S7862C14*)(S7862C13*), ABISELECT(272,148), "S7862C8");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*)(S7862C14*)(S7862C13*), ABISELECT(264,144), "S7862C8");
    check_base_class_offset(lv, (S7862C2*)(S7862C14*)(S7862C13*), ABISELECT(264,144), "S7862C8");
    check_base_class_offset(lv, (S7862C14*)(S7862C13*), 0, "S7862C8");
    /*is_ambiguous_... S7862C13::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C13*), ABISELECT(672,380), "S7862C8");
    check_base_class_offset(lv, (S7862C13*), 0, "S7862C8");
    /*is_ambiguous_... S7862C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*)(S7862C17*), ABISELECT(35760,21932), "S7862C8");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*)(S7862C17*), ABISELECT(35576,21824), "S7862C8");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*)(S7862C17*), ABISELECT(35568,21820), "S7862C8");
    check_base_class_offset(lv, (S7862C2*)(S7862C17*), ABISELECT(35568,21820), "S7862C8");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C3*)(S7862C17*), ABISELECT(35912,22012), "S7862C8");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C3*)(S7862C17*), ABISELECT(35904,22008), "S7862C8");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S7862C3*)(S7862C17*), ABISELECT(35904,22008), "S7862C8");
    check_base_class_offset(lv, (S7862C11*)(S7862C17*), ABISELECT(39464,24352), "S7862C8");
    check_base_class_offset(lv, (S7862C17*), ABISELECT(35568,21820), "S7862C8");
    check_field_offset(lv, s7862c8f0, ABISELECT(1104,676), "S7862C8.s7862c8f0");
    check_field_offset(lv, s7862c8f1, ABISELECT(1808,1100), "S7862C8.s7862c8f1");
    check_field_offset(lv, s7862c8f2, ABISELECT(1824,1104), "S7862C8.s7862c8f2");
    check_field_offset(lv, s7862c8f3, ABISELECT(2752,1660), "S7862C8.s7862c8f3");
    check_field_offset(lv, s7862c8f4, ABISELECT(2768,1672), "S7862C8.s7862c8f4");
    check_field_offset(lv, s7862c8f6, ABISELECT(2776,1680), "S7862C8.s7862c8f6");
    test_class_info(&lv, &cd_S7862C8);
    dp->~S7862C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C8(Test_S7862C8, "S7862C8", ABISELECT(39472,24356));

#else // __cplusplus

extern void _ZN7S7862C8C1Ev();
extern void _ZN7S7862C8D1Ev();
Name_Map name_map_S7862C8[] = {
  NSPAIR(_ZN7S7862C8C1Ev),
  NSPAIR(_ZN7S7862C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C3;
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S7862C12;
extern VTBL_ENTRY _ZTI8S7862C12[];
extern  VTBL_ENTRY _ZTV8S7862C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C15;
extern VTBL_ENTRY _ZTI8S7862C15[];
extern  VTBL_ENTRY _ZTV8S7862C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
extern Class_Descriptor cd_S7862C14;
extern VTBL_ENTRY _ZTI8S7862C14[];
extern  VTBL_ENTRY _ZTV8S7862C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C14[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S7862C13;
extern VTBL_ENTRY _ZTI8S7862C13[];
extern  VTBL_ENTRY _ZTV8S7862C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C3;
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
extern Class_Descriptor cd_S7862C11;
extern VTBL_ENTRY _ZTI8S7862C11[];
extern  VTBL_ENTRY _ZTV8S7862C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C11[];
extern Class_Descriptor cd_S7862C17;
extern VTBL_ENTRY _ZTI8S7862C17[];
extern  VTBL_ENTRY _ZTV8S7862C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C17[];
static Base_Class bases_S7862C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(4104,2496), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4224,2584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(3128,1876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7862C6,    ABISELECT(3120,1872), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7862C3,    ABISELECT(3120,1872), //bcp->offset
    36, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2976,1796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(2792,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(2784,1684), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7862C2,    ABISELECT(2784,1684), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C2,    ABISELECT(4336,2640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(34992,21488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(34984,21484), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(35184,21596), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7862C12,    ABISELECT(35184,21596), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    19, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7862C6,    ABISELECT(264,144), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7862C2,    ABISELECT(264,144), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7862C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7862C13,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(35760,21932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(35576,21824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(35568,21820), //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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7862C2,    ABISELECT(35568,21820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(35912,22012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(35904,22008), //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
    12, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7862C3,    ABISELECT(35904,22008), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7862C11,    ABISELECT(39464,24352), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7862C17,    ABISELECT(35568,21820), //bcp->offset
    65, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7862C8[];
extern void _ZN7S7862C8D1Ev();
extern void _ZN7S7862C8D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void _ZN8S7862C142v5Ev();
extern void _ZN8S7862C142v6Ev();
extern void ABISELECT(_ZThn264_N7S7862C8D1Ev,_ZThn144_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn264_N7S7862C8D0Ev,_ZThn144_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn672_N7S7862C8D1Ev,_ZThn380_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn672_N7S7862C8D0Ev,_ZThn380_N7S7862C8D0Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7862C8D1Ev,_ZTv0_n24_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn2784_N7S7862C8D1Ev,_ZThn1684_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7862C8D0Ev,_ZTv0_n24_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn2784_N7S7862C8D0Ev,_ZThn1684_N7S7862C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn3120_N7S7862C8D1Ev,_ZThn1872_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn3120_N7S7862C8D0Ev,_ZThn1872_N7S7862C8D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N7S7862C8D1Ev,_ZTv0_n12_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn4104_N7S7862C8D1Ev,_ZThn2496_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C8D0Ev,_ZTv0_n12_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn4104_N7S7862C8D0Ev,_ZThn2496_N7S7862C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7862C8D1Ev,_ZTv0_n16_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn34984_N7S7862C8D1Ev,_ZThn21484_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7862C8D0Ev,_ZTv0_n16_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn34984_N7S7862C8D0Ev,_ZThn21484_N7S7862C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn35184_N7S7862C8D1Ev,_ZThn21596_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn35184_N7S7862C8D0Ev,_ZThn21596_N7S7862C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7862C8D1Ev,_ZTv0_n32_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn35568_N7S7862C8D1Ev,_ZThn21820_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7862C8D0Ev,_ZTv0_n32_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn35568_N7S7862C8D0Ev,_ZThn21820_N7S7862C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N7S7862C8D1Ev,_ZTvn188_n32_N7S7862C8D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N7S7862C8D0Ev,_ZTvn188_n32_N7S7862C8D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
extern void _ZN8S7862C112v7Ev();
extern void ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn39464_N7S7862C8D1Ev,_ZThn24352_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn39464_N7S7862C8D0Ev,_ZThn24352_N7S7862C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7862C8[] = {
  ABISELECT(39464,24352),
  ABISELECT(35568,21820),
  ABISELECT(4336,2640),
  ABISELECT(2784,1684),
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&_ZN7S7862C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C8D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v5Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v6Ev,
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N7S7862C8D1Ev,_ZThn144_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N7S7862C8D0Ev,_ZThn144_N7S7862C8D0Ev),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N7S7862C8D1Ev,_ZThn380_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N7S7862C8D0Ev,_ZThn380_N7S7862C8D0Ev),
  ABISELECT(-2784,-1684),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7862C8D1Ev,_ZTv0_n24_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7862C8D0Ev,_ZTv0_n24_N7S7862C8D0Ev),
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C8D1Ev,_ZTv0_n12_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C8D0Ev,_ZTv0_n12_N7S7862C8D0Ev),
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7862C8D1Ev,_ZTv0_n16_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7862C8D0Ev,_ZTv0_n16_N7S7862C8D0Ev),
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-35568,-21820),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  ABISELECT(-35568,-21820),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7862C8D1Ev,_ZTv0_n32_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7862C8D0Ev,_ZTv0_n32_N7S7862C8D0Ev),
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  ABISELECT(-35904,-22008),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N7S7862C8D1Ev,_ZTvn188_n32_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N7S7862C8D0Ev,_ZTvn188_n32_N7S7862C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
  ABISELECT(-39464,-24352),
  0,
  ABISELECT(-35360,-21856),
  ABISELECT(-39464,-24352),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&_ZN8S7862C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S7862C8[];
extern void _ZN8S7862C13D1Ev();
extern void _ZN8S7862C13D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void _ZN8S7862C142v5Ev();
extern void _ZN8S7862C142v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C13__7S7862C8[] = {
  ABISELECT(2784,1684),
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&_ZN8S7862C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v5Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v6Ev,
};
extern void _ZN8S7862C14D1Ev();
extern void _ZN8S7862C14D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void _ZN8S7862C142v5Ev();
extern void _ZN8S7862C142v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C148S7862C13__7S7862C8[] = {
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&_ZN8S7862C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v5Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v6Ev,
};
extern void _ZN8S7862C15D1Ev();
extern void _ZN8S7862C15D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C158S7862C148S7862C13__7S7862C8[] = {
  ABISELECT(4224,2584),
  ABISELECT(3120,1872),
  ABISELECT(35184,21596),
  ABISELECT(34984,21484),
  ABISELECT(4104,2496),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&_ZN8S7862C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn4104_N8S7862C15D1Ev,_ZThn2496_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn4104_N8S7862C15D0Ev,_ZThn2496_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C158S7862C148S7862C13__7S7862C8[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn34984_N8S7862C15D1Ev,_ZThn21484_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn34984_N8S7862C15D0Ev,_ZThn21484_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C158S7862C148S7862C13__7S7862C8[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn35184_N8S7862C15D1Ev,_ZThn21596_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn35184_N8S7862C15D0Ev,_ZThn21596_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C158S7862C148S7862C13__7S7862C8[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn3120_N8S7862C15D1Ev,_ZThn1872_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn3120_N8S7862C15D0Ev,_ZThn1872_N8S7862C15D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C158S7862C148S7862C13__7S7862C8[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C28S7862C148S7862C13__A1__7S7862C8[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C28S7862C148S7862C13__A3__7S7862C8[] = {
  ABISELECT(3840,2352),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn3840_N7S7862C6D1Ev,_ZThn2352_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn3840_N7S7862C6D0Ev,_ZThn2352_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C28S7862C148S7862C13__A3__7S7862C8[] = {
  ABISELECT(-3840,-2352),
  ABISELECT(-3840,-2352),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn2856_N7S7862C2D1Ev,_ZThn1728_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn2856_N7S7862C2D0Ev,_ZThn1728_N7S7862C2D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C28S7862C148S7862C13__A1__7S7862C8[] = {
  0,
  0,
  ABISELECT(-2856,-1728),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-2856,-1728),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn3840_N7S7862C2D1Ev,_ZThn2352_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn3840_N7S7862C2D0Ev,_ZThn2352_N7S7862C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C28S7862C148S7862C13__A1__7S7862C8[] = {
  ABISELECT(-3840,-2352),
  ABISELECT(-3840,-2352),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn4104_N8S7862C14D1Ev,_ZThn2496_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn4104_N8S7862C14D0Ev,_ZThn2496_N8S7862C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C148S7862C13__7S7862C8[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn34984_N8S7862C14D1Ev,_ZThn21484_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn34984_N8S7862C14D0Ev,_ZThn21484_N8S7862C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C148S7862C13__7S7862C8[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn35184_N8S7862C14D1Ev,_ZThn21596_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn35184_N8S7862C14D0Ev,_ZThn21596_N8S7862C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C148S7862C13__7S7862C8[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn3120_N8S7862C14D1Ev,_ZThn1872_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn3120_N8S7862C14D0Ev,_ZThn1872_N8S7862C14D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C148S7862C13__7S7862C8[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZThn264_N8S7862C14D1Ev,_ZThn144_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn264_N8S7862C14D0Ev,_ZThn144_N8S7862C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C2__8S7862C148S7862C13__7S7862C8[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C14D1Ev,_ZThn144_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C14D0Ev,_ZThn144_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn3120_N8S7862C13D1Ev,_ZThn1872_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn3120_N8S7862C13D0Ev,_ZThn1872_N8S7862C13D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C13__7S7862C8[] = {
  0,
  0,
  ABISELECT(-3120,-1872),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3120,-1872),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C13D1Ev,_ZTv0_n12_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn4104_N8S7862C13D1Ev,_ZThn2496_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7862C13D0Ev,_ZTv0_n12_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn4104_N8S7862C13D0Ev,_ZThn2496_N8S7862C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C13__7S7862C8[] = {
  ABISELECT(-4104,-2496),
  ABISELECT(-4104,-2496),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C13D1Ev,_ZTv0_n12_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C13D0Ev,_ZTv0_n12_N8S7862C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7862C13D1Ev,_ZTv0_n24_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn2784_N8S7862C13D1Ev,_ZThn1684_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7862C13D0Ev,_ZTv0_n24_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn2784_N8S7862C13D0Ev,_ZThn1684_N8S7862C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C2__8S7862C13__7S7862C8[] = {
  ABISELECT(-2784,-1684),
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7862C13D1Ev,_ZTv0_n24_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7862C13D0Ev,_ZTv0_n24_N8S7862C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7862C13D1Ev,_ZTv0_n16_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn34984_N8S7862C13D1Ev,_ZThn21484_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C13D0Ev,_ZTv0_n16_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn34984_N8S7862C13D0Ev,_ZThn21484_N8S7862C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C6__A2__8S7862C13__7S7862C8[] = {
  ABISELECT(-34984,-21484),
  ABISELECT(-30880,-18988),
  ABISELECT(-34984,-21484),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C13D1Ev,_ZTv0_n16_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C13D0Ev,_ZTv0_n16_N8S7862C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn35184_N8S7862C13D1Ev,_ZThn21596_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn35184_N8S7862C13D0Ev,_ZThn21596_N8S7862C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C13__7S7862C8[] = {
  ABISELECT(-35184,-21596),
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  ABISELECT(-35184,-21596),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev),
};
extern void ABISELECT(_ZThn264_N8S7862C13D1Ev,_ZThn144_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn264_N8S7862C13D0Ev,_ZThn144_N8S7862C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C28S7862C14__A1__8S7862C13__7S7862C8[] = {
  ABISELECT(3960,2440),
  ABISELECT(2856,1728),
  ABISELECT(3840,2352),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C13D1Ev,_ZThn144_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C13D0Ev,_ZThn144_N8S7862C13D0Ev),
};
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C2__7S7862C8[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C2__A1__7S7862C8[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn1320_N7S7862C6D1Ev,_ZThn812_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn1320_N7S7862C6D0Ev,_ZThn812_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C2__A1__7S7862C8[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn336_N7S7862C2D1Ev,_ZThn188_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn336_N7S7862C2D0Ev,_ZThn188_N7S7862C2D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C2__7S7862C8[] = {
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn1320_N7S7862C2D1Ev,_ZThn812_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn1320_N7S7862C2D0Ev,_ZThn812_N7S7862C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C2__7S7862C8[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C8[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C3__7S7862C8[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C3__7S7862C8[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C3__7S7862C8[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C6__A2__7S7862C8[] = {
  ABISELECT(-30880,-18988),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C6__A2__7S7862C8[] = {
  ABISELECT(30880,18988),
  ABISELECT(30880,18988),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void _ZN8S7862C12D1Ev();
extern void _ZN8S7862C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C12__7S7862C8[] = {
  ABISELECT(-31080,-19100),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&_ZN8S7862C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C12__7S7862C8[] = {
  ABISELECT(200,112),
  ABISELECT(-30880,-18988),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C12__7S7862C8[] = {
  ABISELECT(31080,19100),
  ABISELECT(31080,19100),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev),
};
extern void _ZN8S7862C17D1Ev();
extern void _ZN8S7862C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C17__7S7862C8[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&_ZN8S7862C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C17D0Ev,
};
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C28S7862C17__A2__7S7862C8[] = {
  ABISELECT(-31344,-19236),
  ABISELECT(-32448,-19948),
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C28S7862C17__A4__7S7862C8[] = {
  ABISELECT(-31464,-19324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C28S7862C17__A4__7S7862C8[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C28S7862C17__A2__7S7862C8[] = {
  0,
  0,
  ABISELECT(32448,19948),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(32448,19948),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C28S7862C17__A2__7S7862C8[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C38S7862C17__A1__7S7862C8[] = {
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C38S7862C17__A5__7S7862C8[] = {
  ABISELECT(-31800,-19512),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C38S7862C17__A5__7S7862C8[] = {
  ABISELECT(31800,19512),
  ABISELECT(31800,19512),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C38S7862C17__A1__7S7862C8[] = {
  ABISELECT(31800,19512),
  ABISELECT(31800,19512),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C17__7S7862C8[] = {
  0,
  0,
  ABISELECT(32448,19948),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(32448,19948),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C17D1Ev,_ZTv0_n12_N8S7862C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C17D0Ev,_ZTv0_n12_N8S7862C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C17__7S7862C8[] = {
  ABISELECT(31464,19324),
  ABISELECT(31464,19324),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C17D1Ev,_ZTv0_n12_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C17D0Ev,_ZTv0_n12_N8S7862C17D0Ev),
};
extern void ABISELECT(_ZThn336_N8S7862C17D1Ev,_ZThn188_N8S7862C17D1Ev)();
extern void ABISELECT(_ZThn336_N8S7862C17D0Ev,_ZThn188_N8S7862C17D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__A__8S7862C17__7S7862C8[] = {
  ABISELECT(-31680,-19424),
  ABISELECT(-31800,-19512),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S7862C17D1Ev,_ZThn188_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S7862C17D0Ev,_ZThn188_N8S7862C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7862C17D1Ev,_ZTv0_n16_N8S7862C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7862C17D0Ev,_ZTv0_n16_N8S7862C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C6__A3__8S7862C17__7S7862C8[] = {
  ABISELECT(584,336),
  ABISELECT(-30880,-18988),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C17D1Ev,_ZTv0_n16_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C17D0Ev,_ZTv0_n16_N8S7862C17D0Ev),
};
extern void _ZN8S7862C112v7Ev();
extern void ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev)();
extern void ABISELECT(_ZThn3896_N8S7862C17D1Ev,_ZThn2532_N8S7862C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev)();
extern void ABISELECT(_ZThn3896_N8S7862C17D0Ev,_ZThn2532_N8S7862C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C11__8S7862C17__7S7862C8[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-35360,-21856),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&_ZN8S7862C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev),
};
extern void _ZN8S7862C112v7Ev();
extern void _ZN8S7862C11D1Ev();
extern void _ZN8S7862C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C11__7S7862C8[] = {
  ABISELECT(-35360,-21856),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C11[0]),
  (VTBL_ENTRY)&_ZN8S7862C112v7Ev,
  (VTBL_ENTRY)&_ZN8S7862C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C11D1Ev,_ZTv0_n12_N8S7862C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C11D0Ev,_ZTv0_n12_N8S7862C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C11__7S7862C8[] = {
  ABISELECT(35360,21856),
  ABISELECT(35360,21856),
  (VTBL_ENTRY)&(_ZTI8S7862C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C11D1Ev,_ZTv0_n12_N8S7862C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C11D0Ev,_ZTv0_n12_N8S7862C11D0Ev),
};
static  VTT_ENTRY vtt_S7862C8[] = {
  {&(_ZTV7S7862C8[11]),  11,93},
  {&(_tg__ZTV8S7862C13__7S7862C8[8]),  8,14},
  {&(_tg__ZTV8S7862C148S7862C13__7S7862C8[7]),  7,13},
  {&(_tg__ZTV8S7862C158S7862C148S7862C13__7S7862C8[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S7862C158S7862C148S7862C13__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C6__8S7862C158S7862C148S7862C13__7S7862C8[4]),  4,6},
  {&(_tg__ZTV8S7862C12__8S7862C158S7862C148S7862C13__7S7862C8[5]),  5,7},
  {&(_tg__ZTV7S7862C3__8S7862C158S7862C148S7862C13__7S7862C8[7]),  7,11},
  {&(_tg__ZTV7S7862C28S7862C148S7862C13__A1__7S7862C8[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C28S7862C148S7862C13__A3__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C28S7862C148S7862C13__A3__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C28S7862C148S7862C13__A1__7S7862C8[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C28S7862C148S7862C13__A1__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S7862C148S7862C13__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C6__8S7862C148S7862C13__7S7862C8[4]),  4,6},
  {&(_tg__ZTV8S7862C12__8S7862C148S7862C13__7S7862C8[5]),  5,7},
  {&(_tg__ZTV7S7862C3__8S7862C148S7862C13__7S7862C8[7]),  7,11},
  {&(_tg__ZTV7S7862C2__8S7862C148S7862C13__7S7862C8[5]),  5,7},
  {&(_tg__ZTV7S7862C3__8S7862C13__7S7862C8[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S7862C13__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C2__8S7862C13__7S7862C8[6]),  6,8},
  {&(_tg__ZTV7S7862C6__A2__8S7862C13__7S7862C8[4]),  4,6},
  {&(_tg__ZTV8S7862C12__8S7862C13__7S7862C8[5]),  5,7},
  {&(_tg__ZTV7S7862C28S7862C14__A1__8S7862C13__7S7862C8[5]),  5,7},
  {&(_ZTV7S7862C8[34]),  34,93},
  {&(_ZTV7S7862C8[43]),  43,93},
  {&(_ZTV7S7862C8[50]),  50,93},
  {&(_ZTV7S7862C8[56]),  56,93},
  {&(_ZTV7S7862C8[63]),  63,93},
  {&(_ZTV7S7862C8[22]),  22,93},
  {&(_ZTV7S7862C8[75]),  75,93},
  {&(_ZTV7S7862C8[81]),  81,93},
  {&(_ZTV7S7862C8[90]),  90,93},
  {&(_tg__ZTV7S7862C2__7S7862C8[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C2__A1__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C2__A1__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C2__7S7862C8[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C2__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C8[4]),  4,8},
  {&(_tg__ZTV7S7862C67S7862C3__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C3__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C3__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C6__A2__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C6__A2__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S7862C12__7S7862C8[4]),  4,6},
  {&(_tg__ZTV7S7862C6__8S7862C12__7S7862C8[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S7862C12__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S7862C17__7S7862C8[7]),  7,9},
  {&(_tg__ZTV7S7862C28S7862C17__A2__7S7862C8[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C28S7862C17__A4__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C28S7862C17__A4__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C28S7862C17__A2__7S7862C8[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C28S7862C17__A2__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C38S7862C17__A1__7S7862C8[4]),  4,8},
  {&(_tg__ZTV7S7862C67S7862C38S7862C17__A5__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C38S7862C17__A5__7S7862C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C38S7862C17__A1__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C3__8S7862C17__7S7862C8[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S7862C17__7S7862C8[3]),  3,5},
  {&(_tg__ZTV7S7862C3__A__8S7862C17__7S7862C8[4]),  4,8},
  {&(_tg__ZTV7S7862C6__A3__8S7862C17__7S7862C8[4]),  4,6},
  {&(_tg__ZTV8S7862C11__8S7862C17__7S7862C8[5]),  5,8},
  {&(_tg__ZTV8S7862C11__7S7862C8[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S7862C11__7S7862C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7862C8[];
extern  VTBL_ENTRY _ZTV7S7862C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C8[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S7862C17D0Ev,_ZThn2532_N8S7862C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S7862C17D1Ev,_ZThn2532_N8S7862C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C13D0Ev,_ZTv0_n16_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N8S7862C13D0Ev,_ZThn21484_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C13D1Ev,_ZTv0_n16_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N8S7862C13D1Ev,_ZThn21484_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7862C13D0Ev,_ZTv0_n24_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N8S7862C13D0Ev,_ZThn1684_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7862C13D1Ev,_ZTv0_n24_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N8S7862C13D1Ev,_ZThn1684_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C13D0Ev,_ZTv0_n12_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N8S7862C13D0Ev,_ZThn2496_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C13D1Ev,_ZTv0_n12_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N8S7862C13D1Ev,_ZThn2496_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N8S7862C13D0Ev,_ZThn21596_N8S7862C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N8S7862C13D0Ev,_ZThn1872_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N8S7862C13D1Ev,_ZThn21596_N8S7862C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N8S7862C13D1Ev,_ZThn1872_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N8S7862C14D0Ev,_ZThn1872_N8S7862C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N8S7862C14D0Ev,_ZThn21596_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N8S7862C14D1Ev,_ZThn1872_N8S7862C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N8S7862C14D1Ev,_ZThn21596_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N8S7862C14D0Ev,_ZThn21484_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N8S7862C14D1Ev,_ZThn21484_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N8S7862C14D0Ev,_ZThn2496_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N8S7862C14D1Ev,_ZThn2496_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N7S7862C2D0Ev,_ZThn812_N7S7862C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N7S7862C2D0Ev,_ZThn2352_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N7S7862C2D1Ev,_ZThn812_N7S7862C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N7S7862C2D1Ev,_ZThn2352_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7862C2D0Ev,_ZThn188_N7S7862C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N7S7862C2D0Ev,_ZThn1728_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7862C2D1Ev,_ZThn188_N7S7862C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N7S7862C2D1Ev,_ZThn1728_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N7S7862C6D0Ev,_ZThn812_N7S7862C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N7S7862C6D0Ev,_ZThn2352_N7S7862C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N7S7862C6D1Ev,_ZThn812_N7S7862C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N7S7862C6D1Ev,_ZThn2352_N7S7862C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N8S7862C15D0Ev,_ZThn1872_N8S7862C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N8S7862C15D0Ev,_ZThn21596_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N8S7862C15D1Ev,_ZThn1872_N8S7862C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N8S7862C15D1Ev,_ZThn21596_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N8S7862C15D0Ev,_ZThn21484_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N8S7862C15D1Ev,_ZThn21484_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N8S7862C15D0Ev,_ZThn2496_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N8S7862C15D1Ev,_ZThn2496_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7862C8D0Ev,_ZTv0_n32_N7S7862C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N7S7862C8D0Ev,_ZThn21820_N7S7862C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7862C8D1Ev,_ZTv0_n32_N7S7862C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35568_N7S7862C8D1Ev,_ZThn21820_N7S7862C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7862C8D0Ev,_ZTv0_n16_N7S7862C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N7S7862C8D0Ev,_ZThn21484_N7S7862C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7862C8D1Ev,_ZTv0_n16_N7S7862C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34984_N7S7862C8D1Ev,_ZThn21484_N7S7862C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C8D0Ev,_ZTv0_n12_N7S7862C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N7S7862C8D0Ev,_ZThn2496_N7S7862C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C8D1Ev,_ZTv0_n12_N7S7862C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4104_N7S7862C8D1Ev,_ZThn2496_N7S7862C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N7S7862C8D0Ev,_ZThn24352_N7S7862C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N7S7862C8D0Ev,_ZThn21596_N7S7862C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N7S7862C8D0Ev,_ZThn1872_N7S7862C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39464_N7S7862C8D1Ev,_ZThn24352_N7S7862C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35184_N7S7862C8D1Ev,_ZThn21596_N7S7862C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3120_N7S7862C8D1Ev,_ZThn1872_N7S7862C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7862C8D0Ev,_ZTv0_n24_N7S7862C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S7862C8D0Ev,_ZThn1684_N7S7862C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7862C8D1Ev,_ZTv0_n24_N7S7862C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S7862C8D1Ev,_ZThn1684_N7S7862C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C8 = {  "S7862C8", // class name
  bases_S7862C8, 32,
  &(vtc_S7862C8[0]), // expected_vtbl_contents
  &(vtt_S7862C8[0]), // expected_vtt_contents
  ABISELECT(39472,24356), // object size
  NSPAIRA(_ZTI7S7862C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7862C8),93, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7862C8),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7862C1  : S7862C2 , virtual S7862C8 {
  ::S7862C13 s7862c1f0;
  void *s7862c1f1;
  ~S7862C1(); // tgen
  S7862C1(); // tgen
};
//SIG(1 S7862C1) C1{ BC2{ VBC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ m Fp[14]} BC6{ VBC4 BC5 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC5 BC6 Fi Fi Fi:28 Fi Fl} VBC8{ VBC2 VBC9{ m FC10{ VBC11{ VBC4 v8} VBC12{ VBC4 VBC5 BC13{ VBC4 BC5 Fs[6] FL[3] FU7} v9 v10 FC13 FD[7] FC13 FL Fp[5]} vd FC14{ VBC13 BC4 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC12 Fi Fi FC11}[5] Fp} BC15{ VBC3 VBC2 BC16{ BC17{ VBC4 VBC6 VBC18{ VBC6 BC4 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC3 vd v3 v4 Fi Fi FC5 Fc Fc Fi Fs FL} BC2 v5 v6 FU19{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} BC4 vd FC5 Fi[10] Fi FC20{ VBC4 v7} Fs Fi FL} VBC21{ VBC5 BC2 BC3 VBC6 VBC20 vd Fi Fi Fi FD Fp Fp FC6 Fp FC3 Fi Fp Fi FC4[8]} FC18 Fi FC22{ VBC4 BC23{ VBC4 BC5 Fs[6] FL[3] FU7} VBC24{ VBC23 BC4 Fc:6 Fc[8] FD FC5 FC5} FD Fp Fp} FD Fs[3] Fi:0 Fi} FC15 Fp}


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

static void Test_S7862C1()
{
  extern Class_Descriptor cd_S7862C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2692,6630)];
    init_test(&cd_S7862C1, buf);
    S7862C1 *dp, &lv = *(dp=new (buf) S7862C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(43056,26516), "sizeof(S7862C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7862C1)");
    /*is_ambiguous_... S7862C1::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C3*), ABISELECT(4568,2784), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C3*), ABISELECT(4568,2784), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*), ABISELECT(4568,2784), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*), ABISELECT(4568,2784), "S7862C1");
    /*is_ambiguous_... S7862C15::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C15*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(4568,2784), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*), ABISELECT(4568,2784), "S7862C1");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(4568,2784), "S7862C1");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C2*)(S7862C17*), ABISELECT(4568,2784), "S7862C1");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C3*)(S7862C17*), ABISELECT(4568,2784), "S7862C1");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C6*)(S7862C3*)(S7862C17*), ABISELECT(4568,2784), "S7862C1");
    check_base_class_offset(lv, (S19674C5*)(S7862C11*), ABISELECT(4568,2784), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C3*), ABISELECT(4688,2872), "S7862C1");
    /*is_ambiguous_... S7862C17::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C17*), ABISELECT(4688,2872), "S7862C1");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C3*)(S7862C17*), ABISELECT(4688,2872), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C3*), ABISELECT(3592,2164), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C3 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C3*), ABISELECT(3584,2160), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C3*)(S7862C2*), ABISELECT(3584,2160), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C3*)(S7862C2*), ABISELECT(3584,2160), "S7862C1");
    check_base_class_offset(lv, (S7862C3*)(S7862C13*)(S7862C8*), ABISELECT(3584,2160), "S7862C1");
    check_base_class_offset(lv, (S7862C3*)(S7862C15*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(3584,2160), "S7862C1");
    check_base_class_offset(lv, (S7862C3*)(S7862C2*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(3584,2160), "S7862C1");
    check_base_class_offset(lv, (S7862C3*)(S7862C2*)(S7862C17*), ABISELECT(3584,2160), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*), ABISELECT(192,112), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*), ABISELECT(8,4), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*), 0, "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C2*), 0, "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*), ABISELECT(7776,4724), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*), ABISELECT(7592,4616), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*), ABISELECT(7584,4612), "S7862C1");
    /*is_ambiguous_... S7862C8::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C2*)(S7862C8*), ABISELECT(7584,4612), "S7862C1");
    /*is_ambiguous_... S7862C13::S7862C2 */ AMB_check_base_class_offset(lv, (S7862C2*)(S7862C13*)(S7862C8*), ABISELECT(7584,4612), "S7862C1");
    check_base_class_offset(lv, (S19674C2*)(S7862C8*), ABISELECT(7920,4800), "S7862C1");
    /*is_ambiguous_... S7862C1::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*), ABISELECT(38576,23648), "S7862C1");
    /*is_ambiguous_... S7862C15::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C15*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(38568,23644), "S7862C1");
    check_base_class_offset(lv, (S7862C6*)(S7862C12*), ABISELECT(38568,23644), "S7862C1");
    /*is_ambiguous_... S7862C17::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C17*), ABISELECT(38568,23644), "S7862C1");
    /*is_ambiguous_... S7862C12::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C12*), ABISELECT(38768,23756), "S7862C1");
    check_base_class_offset(lv, (S7862C12*)(S7862C15*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(38768,23756), "S7862C1");
    /*is_ambiguous_... S7862C15::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C15*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(4808,2932), "S7862C1");
    check_base_class_offset(lv, (S7862C15*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(4800,2928), "S7862C1");
    /*is_ambiguous_... S7862C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(5256,3184), "S7862C1");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(5072,3076), "S7862C1");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(5064,3072), "S7862C1");
    check_base_class_offset(lv, (S7862C2*)(S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(5064,3072), "S7862C1");
    check_base_class_offset(lv, (S7862C14*)(S7862C13*)(S7862C8*), ABISELECT(4800,2928), "S7862C1");
    /*is_ambiguous_... S7862C13::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S7862C13*)(S7862C8*), ABISELECT(5472,3308), "S7862C1");
    check_base_class_offset(lv, (S7862C13*)(S7862C8*), ABISELECT(4800,2928), "S7862C1");
    /*is_ambiguous_... S7862C2::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C2*)(S7862C17*), ABISELECT(39344,24092), "S7862C1");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C2*)(S7862C17*), ABISELECT(39160,23984), "S7862C1");
    /*is_ambiguous_... S7862C2::S7862C6 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C2*)(S7862C17*), ABISELECT(39152,23980), "S7862C1");
    check_base_class_offset(lv, (S7862C2*)(S7862C17*), ABISELECT(39152,23980), "S7862C1");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S19674C7*)(S7862C6*)(S7862C3*)(S7862C17*), ABISELECT(39496,24172), "S7862C1");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S7862C6*)(S7862C3*)(S7862C17*), ABISELECT(39488,24168), "S7862C1");
    /*is_ambiguous_... S7862C17::S7862C3 */ AMB_check_base_class_offset(lv, (S7862C3*)(S7862C17*), ABISELECT(39488,24168), "S7862C1");
    check_base_class_offset(lv, (S7862C11*)(S7862C17*), ABISELECT(43048,26512), "S7862C1");
    check_base_class_offset(lv, (S7862C17*)(S7862C8*), ABISELECT(39152,23980), "S7862C1");
    check_base_class_offset(lv, (S7862C8*), ABISELECT(4800,2928), "S7862C1");
    check_field_offset(lv, s7862c1f0, ABISELECT(336,188), "S7862C1.s7862c1f0");
    check_field_offset(lv, s7862c1f1, ABISELECT(3568,2156), "S7862C1.s7862c1f1");
    test_class_info(&lv, &cd_S7862C1);
    dp->~S7862C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7862C1(Test_S7862C1, "S7862C1", ABISELECT(43056,26516));

#else // __cplusplus

extern void _ZN7S7862C1C1Ev();
extern void _ZN7S7862C1D1Ev();
Name_Map name_map_S7862C1[] = {
  NSPAIR(_ZN7S7862C1C1Ev),
  NSPAIR(_ZN7S7862C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C3;
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
extern Class_Descriptor cd_S19674C2;
extern VTBL_ENTRY _ZTI8S19674C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S7862C12;
extern VTBL_ENTRY _ZTI8S7862C12[];
extern  VTBL_ENTRY _ZTV8S7862C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C12[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C15;
extern VTBL_ENTRY _ZTI8S7862C15[];
extern  VTBL_ENTRY _ZTV8S7862C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C15[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
extern Class_Descriptor cd_S7862C14;
extern VTBL_ENTRY _ZTI8S7862C14[];
extern  VTBL_ENTRY _ZTV8S7862C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C14[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S7862C13;
extern VTBL_ENTRY _ZTI8S7862C13[];
extern  VTBL_ENTRY _ZTV8S7862C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C2;
extern VTBL_ENTRY _ZTI7S7862C2[];
extern  VTBL_ENTRY _ZTV7S7862C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S7862C6;
extern VTBL_ENTRY _ZTI7S7862C6[];
extern  VTBL_ENTRY _ZTV7S7862C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C6[];
extern Class_Descriptor cd_S7862C3;
extern VTBL_ENTRY _ZTI7S7862C3[];
extern  VTBL_ENTRY _ZTV7S7862C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C3[];
extern Class_Descriptor cd_S7862C11;
extern VTBL_ENTRY _ZTI8S7862C11[];
extern  VTBL_ENTRY _ZTV8S7862C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C11[];
extern Class_Descriptor cd_S7862C17;
extern VTBL_ENTRY _ZTI8S7862C17[];
extern  VTBL_ENTRY _ZTV8S7862C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7862C17[];
extern Class_Descriptor cd_S7862C8;
extern VTBL_ENTRY _ZTI7S7862C8[];
extern  VTBL_ENTRY _ZTV7S7862C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C8[];
static Base_Class bases_S7862C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(4568,2784), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4688,2872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(3592,2164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7862C6,    ABISELECT(3584,2160), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7862C3,    ABISELECT(3584,2160), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(192,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
    8, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7862C2,    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_S19674C7,    ABISELECT(7776,4724), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(7592,4616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(7584,4612), //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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7862C2,    ABISELECT(7584,4612), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19674C2,    ABISELECT(7920,4800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(38576,23648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(38568,23644), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(38768,23756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7862C12,    ABISELECT(38768,23756), //bcp->offset
    77, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4808,2932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C15,    ABISELECT(4800,2928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(5256,3184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(5072,3076), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(5064,3072), //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
    16, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7862C2,    ABISELECT(5064,3072), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7862C14,    ABISELECT(4800,2928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19674C5,    ABISELECT(5472,3308), //bcp->offset
    59, //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
    19, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7862C13,    ABISELECT(4800,2928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(39344,24092), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(39160,23984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(39152,23980), //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
    10, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7862C2,    ABISELECT(39152,23980), //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
    11, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(39496,24172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7862C6,    ABISELECT(39488,24168), //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
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7862C3,    ABISELECT(39488,24168), //bcp->offset
    96, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7862C11,    ABISELECT(43048,26512), //bcp->offset
    104, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S7862C17,    ABISELECT(39152,23980), //bcp->offset
    84, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7862C8,    ABISELECT(4800,2928), //bcp->offset
    30, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7862C1[];
extern void _ZN7S7862C1D1Ev();
extern void _ZN7S7862C1D0Ev();
extern void ABISELECT(_ZTv0_n40_N7S7862C1D1Ev,_ZTv0_n20_N7S7862C1D1Ev)();
extern void ABISELECT(_ZThn3584_N7S7862C1D1Ev,_ZThn2160_N7S7862C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C1D0Ev,_ZTv0_n20_N7S7862C1D0Ev)();
extern void ABISELECT(_ZThn3584_N7S7862C1D0Ev,_ZThn2160_N7S7862C1D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N7S7862C1D1Ev,_ZTv0_n12_N7S7862C1D1Ev)();
extern void ABISELECT(_ZThn4568_N7S7862C1D1Ev,_ZThn2784_N7S7862C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C1D0Ev,_ZTv0_n12_N7S7862C1D0Ev)();
extern void ABISELECT(_ZThn4568_N7S7862C1D0Ev,_ZThn2784_N7S7862C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7862C1D1Ev,_ZTv0_n48_N7S7862C1D1Ev)();
extern void ABISELECT(_ZThn4800_N7S7862C1D1Ev,_ZThn2928_N7S7862C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7862C1D0Ev,_ZTv0_n48_N7S7862C1D0Ev)();
extern void ABISELECT(_ZThn4800_N7S7862C1D0Ev,_ZThn2928_N7S7862C1D0Ev)() __attribute__((weak));
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void _ZN8S7862C142v5Ev();
extern void _ZN8S7862C142v6Ev();
extern void ABISELECT(_ZTvn264_n96_N7S7862C1D1Ev,_ZTvn144_n48_N7S7862C1D1Ev)();
extern void ABISELECT(_ZTvn264_n96_N7S7862C1D0Ev,_ZTvn144_n48_N7S7862C1D0Ev)();
extern void ABISELECT(_ZTvn672_n96_N7S7862C1D1Ev,_ZTvn380_n48_N7S7862C1D1Ev)();
extern void ABISELECT(_ZTvn672_n96_N7S7862C1D0Ev,_ZTvn380_n48_N7S7862C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7862C1D1Ev,_ZTv0_n24_N7S7862C1D1Ev)();
extern void ABISELECT(_ZThn7584_N7S7862C1D1Ev,_ZThn4612_N7S7862C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7862C1D0Ev,_ZTv0_n24_N7S7862C1D0Ev)();
extern void ABISELECT(_ZThn7584_N7S7862C1D0Ev,_ZThn4612_N7S7862C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7862C1D1Ev,_ZTv0_n16_N7S7862C1D1Ev)();
extern void ABISELECT(_ZThn38568_N7S7862C1D1Ev,_ZThn23644_N7S7862C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7862C1D0Ev,_ZTv0_n16_N7S7862C1D0Ev)();
extern void ABISELECT(_ZThn38568_N7S7862C1D0Ev,_ZThn23644_N7S7862C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C1D1Ev,_ZTv0_n20_N7S7862C1D1Ev)();
extern void ABISELECT(_ZThn38768_N7S7862C1D1Ev,_ZThn23756_N7S7862C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C1D0Ev,_ZTv0_n20_N7S7862C1D0Ev)();
extern void ABISELECT(_ZThn38768_N7S7862C1D0Ev,_ZThn23756_N7S7862C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7862C1D1Ev,_ZTv0_n32_N7S7862C1D1Ev)();
extern void ABISELECT(_ZThn39152_N7S7862C1D1Ev,_ZThn23980_N7S7862C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7862C1D0Ev,_ZTv0_n32_N7S7862C1D0Ev)();
extern void ABISELECT(_ZThn39152_N7S7862C1D0Ev,_ZThn23980_N7S7862C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N7S7862C1D1Ev,_ZTvn188_n32_N7S7862C1D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N7S7862C1D0Ev,_ZTvn188_n32_N7S7862C1D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
extern void _ZN8S7862C112v7Ev();
extern void ABISELECT(_ZTv0_n40_N7S7862C1D1Ev,_ZTv0_n20_N7S7862C1D1Ev)();
extern void ABISELECT(_ZThn43048_N7S7862C1D1Ev,_ZThn26512_N7S7862C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C1D0Ev,_ZTv0_n20_N7S7862C1D0Ev)();
extern void ABISELECT(_ZThn43048_N7S7862C1D0Ev,_ZThn26512_N7S7862C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7862C1[] = {
  ABISELECT(43048,26512),
  ABISELECT(39152,23980),
  ABISELECT(38768,23756),
  ABISELECT(38568,23644),
  ABISELECT(7920,4800),
  ABISELECT(7584,4612),
  ABISELECT(4800,2928),
  ABISELECT(4688,2872),
  ABISELECT(3584,2160),
  ABISELECT(4568,2784),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&_ZN7S7862C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C1D0Ev,
  0,
  0,
  ABISELECT(-3584,-2160),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3584,-2160),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C1D1Ev,_ZTv0_n20_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C1D0Ev,_ZTv0_n20_N7S7862C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
  ABISELECT(-4568,-2784),
  ABISELECT(-4568,-2784),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C1D1Ev,_ZTv0_n12_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C1D0Ev,_ZTv0_n12_N7S7862C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-4800,-2928),
  ABISELECT(38248,23584),
  ABISELECT(34352,21052),
  ABISELECT(3120,1872),
  ABISELECT(2784,1684),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(33968,20828),
  ABISELECT(33768,20716),
  ABISELECT(-232,-144),
  ABISELECT(-4800,-2928),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7862C1D1Ev,_ZTv0_n48_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7862C1D0Ev,_ZTv0_n48_N7S7862C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v5Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v6Ev,
  ABISELECT(-376,-200),
  ABISELECT(-1480,-912),
  ABISELECT(-496,-288),
  ABISELECT(-5064,-3072),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n96_N7S7862C1D1Ev,_ZTvn144_n48_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n96_N7S7862C1D0Ev,_ZTvn144_n48_N7S7862C1D0Ev),
  ABISELECT(-5472,-3308),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n96_N7S7862C1D1Ev,_ZTvn380_n48_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n96_N7S7862C1D0Ev,_ZTvn380_n48_N7S7862C1D0Ev),
  ABISELECT(-7584,-4612),
  ABISELECT(-2896,-1740),
  ABISELECT(-4000,-2452),
  ABISELECT(-3016,-1828),
  ABISELECT(-7584,-4612),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7862C1D1Ev,_ZTv0_n24_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7862C1D0Ev,_ZTv0_n24_N7S7862C1D0Ev),
  ABISELECT(-38568,-23644),
  ABISELECT(-34000,-20860),
  ABISELECT(-38568,-23644),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7862C1D1Ev,_ZTv0_n16_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7862C1D0Ev,_ZTv0_n16_N7S7862C1D0Ev),
  ABISELECT(-38768,-23756),
  ABISELECT(-34200,-20972),
  ABISELECT(-200,-112),
  ABISELECT(-38768,-23756),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C1D1Ev,_ZTv0_n20_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C1D0Ev,_ZTv0_n20_N7S7862C1D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-39152,-23980),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-34464,-21108),
  ABISELECT(-35568,-21820),
  ABISELECT(-34584,-21196),
  ABISELECT(-39152,-23980),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7862C1D1Ev,_ZTv0_n32_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7862C1D0Ev,_ZTv0_n32_N7S7862C1D0Ev),
  ABISELECT(-34800,-21296),
  ABISELECT(-34920,-21384),
  ABISELECT(-39488,-24168),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N7S7862C1D1Ev,_ZTvn188_n32_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N7S7862C1D0Ev,_ZTvn188_n32_N7S7862C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
  ABISELECT(-43048,-26512),
  0,
  ABISELECT(-38480,-23728),
  ABISELECT(-43048,-26512),
  (VTBL_ENTRY)&(_ZTI7S7862C1[0]),
  (VTBL_ENTRY)&_ZN8S7862C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C1D1Ev,_ZTv0_n20_N7S7862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C1D0Ev,_ZTv0_n20_N7S7862C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7862C1[];
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C2__A__7S7862C1[] = {
  ABISELECT(4688,2872),
  ABISELECT(3584,2160),
  ABISELECT(4568,2784),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C2__A1__7S7862C1[] = {
  ABISELECT(4568,2784),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn4568_N7S7862C6D1Ev,_ZThn2784_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn4568_N7S7862C6D0Ev,_ZThn2784_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C2__A1__7S7862C1[] = {
  ABISELECT(-4568,-2784),
  ABISELECT(-4568,-2784),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn3584_N7S7862C2D1Ev,_ZThn2160_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn3584_N7S7862C2D0Ev,_ZThn2160_N7S7862C2D0Ev)() __attribute__((weak));
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C2__A__7S7862C1[] = {
  0,
  0,
  ABISELECT(-3584,-2160),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-3584,-2160),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZThn4568_N7S7862C2D1Ev,_ZThn2784_N7S7862C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
extern void ABISELECT(_ZThn4568_N7S7862C2D0Ev,_ZThn2784_N7S7862C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C2__A__7S7862C1[] = {
  ABISELECT(-4568,-2784),
  ABISELECT(-4568,-2784),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C1[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C3__7S7862C1[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C3__7S7862C1[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
extern void ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C3__7S7862C1[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
extern void _ZN7S7862C8D1Ev();
extern void _ZN7S7862C8D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void _ZN8S7862C142v5Ev();
extern void _ZN8S7862C142v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C8__7S7862C1[] = {
  ABISELECT(38248,23584),
  ABISELECT(34352,21052),
  ABISELECT(3120,1872),
  ABISELECT(2784,1684),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(33968,20828),
  ABISELECT(33768,20716),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&_ZN7S7862C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C8D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v5Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v6Ev,
};
extern void _ZN8S7862C13D1Ev();
extern void _ZN8S7862C13D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void _ZN8S7862C142v5Ev();
extern void _ZN8S7862C142v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(2784,1684),
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(33968,20828),
  ABISELECT(33768,20716),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&_ZN8S7862C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v5Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v6Ev,
};
extern void _ZN8S7862C14D1Ev();
extern void _ZN8S7862C14D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
extern void _ZN8S7862C142v5Ev();
extern void _ZN8S7862C142v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C148S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(33968,20828),
  ABISELECT(33768,20716),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&_ZN8S7862C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v5Ev,
  (VTBL_ENTRY)&_ZN8S7862C142v6Ev,
};
extern void _ZN8S7862C15D1Ev();
extern void _ZN8S7862C15D0Ev();
extern void _ZN8S7862C152v3Ev();
extern void _ZN8S7862C152v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C158S7862C148S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1216,-768),
  ABISELECT(33968,20828),
  ABISELECT(33768,20716),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&_ZN8S7862C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v3Ev,
  (VTBL_ENTRY)&_ZN8S7862C152v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C158S7862C148S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C15D1Ev,_ZTv0_n12_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C15D0Ev,_ZTv0_n12_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn33768_N8S7862C15D1Ev,_ZThn20716_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn33768_N8S7862C15D0Ev,_ZThn20716_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C158S7862C148S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-33768,-20716),
  ABISELECT(-34000,-20860),
  ABISELECT(-33768,-20716),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev)();
extern void ABISELECT(_ZThn33968_N8S7862C15D1Ev,_ZThn20828_N8S7862C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev)();
extern void ABISELECT(_ZThn33968_N8S7862C15D0Ev,_ZThn20828_N8S7862C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C158S7862C148S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-33968,-20828),
  ABISELECT(-34200,-20972),
  ABISELECT(-200,-112),
  ABISELECT(-33968,-20828),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C158S7862C148S7862C137S7862C8__7S7862C1[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI8S7862C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C28S7862C148S7862C137S7862C8__A2__7S7862C1[] = {
  ABISELECT(-376,-200),
  ABISELECT(-1480,-912),
  ABISELECT(-496,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C28S7862C148S7862C137S7862C8__A4__7S7862C1[] = {
  ABISELECT(-496,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C28S7862C148S7862C137S7862C8__A4__7S7862C1[] = {
  ABISELECT(496,288),
  ABISELECT(496,288),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C28S7862C148S7862C137S7862C8__A2__7S7862C1[] = {
  0,
  0,
  ABISELECT(1480,912),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1480,912),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C28S7862C148S7862C137S7862C8__A2__7S7862C1[] = {
  ABISELECT(496,288),
  ABISELECT(496,288),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C148S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C14D1Ev,_ZTv0_n12_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C14D0Ev,_ZTv0_n12_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn33768_N8S7862C14D1Ev,_ZThn20716_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn33768_N8S7862C14D0Ev,_ZThn20716_N8S7862C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C148S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-33768,-20716),
  ABISELECT(-34000,-20860),
  ABISELECT(-33768,-20716),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn33968_N8S7862C14D1Ev,_ZThn20828_N8S7862C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev)();
extern void ABISELECT(_ZThn33968_N8S7862C14D0Ev,_ZThn20828_N8S7862C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C148S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-33968,-20828),
  ABISELECT(-34200,-20972),
  ABISELECT(-200,-112),
  ABISELECT(-33968,-20828),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C148S7862C137S7862C8__7S7862C1[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZThn264_N8S7862C14D1Ev,_ZThn144_N8S7862C14D1Ev)();
extern void ABISELECT(_ZThn264_N8S7862C14D0Ev,_ZThn144_N8S7862C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C2__8S7862C148S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-376,-200),
  ABISELECT(-1480,-912),
  ABISELECT(-496,-288),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7862C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C14D1Ev,_ZThn144_N8S7862C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C14D0Ev,_ZThn144_N8S7862C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C137S7862C8__7S7862C1[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C13D1Ev,_ZTv0_n12_N8S7862C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C13D0Ev,_ZTv0_n12_N8S7862C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C13D1Ev,_ZTv0_n12_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C13D0Ev,_ZTv0_n12_N8S7862C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7862C13D1Ev,_ZTv0_n24_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn2784_N8S7862C13D1Ev,_ZThn1684_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7862C13D0Ev,_ZTv0_n24_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn2784_N8S7862C13D0Ev,_ZThn1684_N8S7862C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C2__8S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-2784,-1684),
  ABISELECT(-2896,-1740),
  ABISELECT(-4000,-2452),
  ABISELECT(-3016,-1828),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7862C13D1Ev,_ZTv0_n24_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7862C13D0Ev,_ZTv0_n24_N8S7862C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7862C13D1Ev,_ZTv0_n16_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn33768_N8S7862C13D1Ev,_ZThn20716_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7862C13D0Ev,_ZTv0_n16_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn33768_N8S7862C13D0Ev,_ZThn20716_N8S7862C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C6__A2__8S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-33768,-20716),
  ABISELECT(-34000,-20860),
  ABISELECT(-33768,-20716),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C13D1Ev,_ZTv0_n16_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C13D0Ev,_ZTv0_n16_N8S7862C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn33968_N8S7862C13D1Ev,_ZThn20828_N8S7862C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev)();
extern void ABISELECT(_ZThn33968_N8S7862C13D0Ev,_ZThn20828_N8S7862C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C12__8S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-33968,-20828),
  ABISELECT(-34200,-20972),
  ABISELECT(-200,-112),
  ABISELECT(-33968,-20828),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev),
};
extern void ABISELECT(_ZThn264_N8S7862C13D1Ev,_ZThn144_N8S7862C13D1Ev)();
extern void ABISELECT(_ZThn264_N8S7862C13D0Ev,_ZThn144_N8S7862C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C28S7862C14__A1__8S7862C137S7862C8__7S7862C1[] = {
  ABISELECT(-376,-200),
  ABISELECT(-1480,-912),
  ABISELECT(-496,-288),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7862C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C13D1Ev,_ZThn144_N8S7862C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N8S7862C13D0Ev,_ZThn144_N8S7862C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7862C8D1Ev,_ZTv0_n24_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn2784_N7S7862C8D1Ev,_ZThn1684_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7862C8D0Ev,_ZTv0_n24_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn2784_N7S7862C8D0Ev,_ZThn1684_N7S7862C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C2__7S7862C8__7S7862C1[] = {
  ABISELECT(-2784,-1684),
  ABISELECT(-2896,-1740),
  ABISELECT(-4000,-2452),
  ABISELECT(-3016,-1828),
  ABISELECT(-2784,-1684),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7862C8D1Ev,_ZTv0_n24_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7862C8D0Ev,_ZTv0_n24_N7S7862C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C8__7S7862C1[] = {
  0,
  0,
  ABISELECT(1216,768),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(1216,768),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C8D1Ev,_ZTv0_n12_N7S7862C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C8D0Ev,_ZTv0_n12_N7S7862C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C8__7S7862C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C8D1Ev,_ZTv0_n12_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C8D0Ev,_ZTv0_n12_N7S7862C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7862C8D1Ev,_ZTv0_n16_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn33768_N7S7862C8D1Ev,_ZThn20716_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7862C8D0Ev,_ZTv0_n16_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn33768_N7S7862C8D0Ev,_ZThn20716_N7S7862C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7862C6__A2__7S7862C8__7S7862C1[] = {
  ABISELECT(-33768,-20716),
  ABISELECT(-34000,-20860),
  ABISELECT(-33768,-20716),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7862C8D1Ev,_ZTv0_n16_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7862C8D0Ev,_ZTv0_n16_N7S7862C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn33968_N7S7862C8D1Ev,_ZThn20828_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn33968_N7S7862C8D0Ev,_ZThn20828_N7S7862C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C12__7S7862C8__7S7862C1[] = {
  ABISELECT(-33968,-20828),
  ABISELECT(-34200,-20972),
  ABISELECT(-200,-112),
  ABISELECT(-33968,-20828),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev),
};
extern void ABISELECT(_ZThn264_N7S7862C8D1Ev,_ZThn144_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn264_N7S7862C8D0Ev,_ZThn144_N7S7862C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C28S7862C148S7862C13__A1__7S7862C8__7S7862C1[] = {
  ABISELECT(-376,-200),
  ABISELECT(-1480,-912),
  ABISELECT(-496,-288),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N7S7862C8D1Ev,_ZThn144_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N7S7862C8D0Ev,_ZThn144_N7S7862C8D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7862C8D1Ev,_ZTv0_n32_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn34352_N7S7862C8D1Ev,_ZThn21052_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7862C8D0Ev,_ZTv0_n32_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn34352_N7S7862C8D0Ev,_ZThn21052_N7S7862C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C17__7S7862C8__7S7862C1[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-34352,-21052),
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-34464,-21108),
  ABISELECT(-35568,-21820),
  ABISELECT(-34584,-21196),
  ABISELECT(-34352,-21052),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7862C8D1Ev,_ZTv0_n32_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7862C8D0Ev,_ZTv0_n32_N7S7862C8D0Ev),
};
extern void ABISELECT(_ZTvn336_n64_N7S7862C8D1Ev,_ZTvn188_n32_N7S7862C8D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N7S7862C8D0Ev,_ZTvn188_n32_N7S7862C8D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C38S7862C17__A1__7S7862C8__7S7862C1[] = {
  ABISELECT(-34800,-21296),
  ABISELECT(-34920,-21384),
  ABISELECT(-34688,-21240),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N7S7862C8D1Ev,_ZTvn188_n32_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N7S7862C8D0Ev,_ZTvn188_n32_N7S7862C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN8S7862C112v7Ev();
extern void ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev)();
extern void ABISELECT(_ZThn38248_N7S7862C8D1Ev,_ZThn23584_N7S7862C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev)();
extern void ABISELECT(_ZThn38248_N7S7862C8D0Ev,_ZThn23584_N7S7862C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C11__7S7862C8__7S7862C1[] = {
  ABISELECT(-38248,-23584),
  0,
  ABISELECT(-38480,-23728),
  ABISELECT(-38248,-23584),
  (VTBL_ENTRY)&(_ZTI7S7862C8[0]),
  (VTBL_ENTRY)&_ZN8S7862C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev),
};
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C2__A1__7S7862C1[] = {
  ABISELECT(-2896,-1740),
  ABISELECT(-4000,-2452),
  ABISELECT(-3016,-1828),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C2__A2__7S7862C1[] = {
  ABISELECT(-3016,-1828),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C2__A2__7S7862C1[] = {
  ABISELECT(3016,1828),
  ABISELECT(3016,1828),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C2__A1__7S7862C1[] = {
  0,
  0,
  ABISELECT(4000,2452),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(4000,2452),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C2__A1__7S7862C1[] = {
  ABISELECT(3016,1828),
  ABISELECT(3016,1828),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C6__A3__7S7862C1[] = {
  ABISELECT(-34000,-20860),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C6__A3__7S7862C1[] = {
  ABISELECT(34000,20860),
  ABISELECT(34000,20860),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void _ZN8S7862C12D1Ev();
extern void _ZN8S7862C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C12__7S7862C1[] = {
  ABISELECT(-34200,-20972),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&_ZN8S7862C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C6__8S7862C12__7S7862C1[] = {
  ABISELECT(200,112),
  ABISELECT(-34000,-20860),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D1Ev,_ZTv0_n16_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C12D0Ev,_ZTv0_n16_N8S7862C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C12__7S7862C1[] = {
  ABISELECT(34200,20972),
  ABISELECT(34200,20972),
  (VTBL_ENTRY)&(_ZTI8S7862C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D1Ev,_ZTv0_n12_N8S7862C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C12D0Ev,_ZTv0_n12_N8S7862C12D0Ev),
};
extern void _ZN8S7862C17D1Ev();
extern void _ZN8S7862C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C17__7S7862C1[] = {
  ABISELECT(3896,2532),
  ABISELECT(-584,-336),
  ABISELECT(-34464,-21108),
  ABISELECT(-35568,-21820),
  ABISELECT(-34584,-21196),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&_ZN8S7862C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C17D0Ev,
};
extern void _ZN7S7862C2D1Ev();
extern void _ZN7S7862C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C28S7862C17__A3__7S7862C1[] = {
  ABISELECT(-34464,-21108),
  ABISELECT(-35568,-21820),
  ABISELECT(-34584,-21196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&_ZN7S7862C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C2D0Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C28S7862C17__A5__7S7862C1[] = {
  ABISELECT(-34584,-21196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C28S7862C17__A5__7S7862C1[] = {
  ABISELECT(34584,21196),
  ABISELECT(34584,21196),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__7S7862C28S7862C17__A3__7S7862C1[] = {
  0,
  0,
  ABISELECT(35568,21820),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(35568,21820),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C28S7862C17__A3__7S7862C1[] = {
  ABISELECT(34584,21196),
  ABISELECT(34584,21196),
  (VTBL_ENTRY)&(_ZTI7S7862C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev),
};
extern void _ZN7S7862C3D1Ev();
extern void _ZN7S7862C3D0Ev();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C38S7862C17__A1__7S7862C1[] = {
  ABISELECT(-34800,-21296),
  ABISELECT(-34920,-21384),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&_ZN7S7862C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void _ZN7S7862C6D1Ev();
extern void _ZN7S7862C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C67S7862C38S7862C17__A6__7S7862C1[] = {
  ABISELECT(-34920,-21384),
  0,
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&_ZN7S7862C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7862C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C67S7862C38S7862C17__A6__7S7862C1[] = {
  ABISELECT(34920,21384),
  ABISELECT(34920,21384),
  (VTBL_ENTRY)&(_ZTI7S7862C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__7S7862C38S7862C17__A1__7S7862C1[] = {
  ABISELECT(34920,21384),
  ABISELECT(34920,21384),
  (VTBL_ENTRY)&(_ZTI7S7862C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__8S7862C17__7S7862C1[] = {
  0,
  0,
  ABISELECT(35568,21820),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(35568,21820),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C17D1Ev,_ZTv0_n12_N8S7862C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C17D0Ev,_ZTv0_n12_N8S7862C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C17__7S7862C1[] = {
  ABISELECT(34584,21196),
  ABISELECT(34584,21196),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C17D1Ev,_ZTv0_n12_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C17D0Ev,_ZTv0_n12_N8S7862C17D0Ev),
};
extern void ABISELECT(_ZThn336_N8S7862C17D1Ev,_ZThn188_N8S7862C17D1Ev)();
extern void ABISELECT(_ZThn336_N8S7862C17D0Ev,_ZThn188_N8S7862C17D0Ev)();
extern void _ZN7S7862C32v1Ev();
extern void _ZN7S7862C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7862C3__A__8S7862C17__7S7862C1[] = {
  ABISELECT(-34800,-21296),
  ABISELECT(-34920,-21384),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S7862C17D1Ev,_ZThn188_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S7862C17D0Ev,_ZThn188_N8S7862C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7862C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7862C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7862C17D1Ev,_ZTv0_n16_N8S7862C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7862C17D0Ev,_ZTv0_n16_N8S7862C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7862C6__A3__8S7862C17__7S7862C1[] = {
  ABISELECT(584,336),
  ABISELECT(-34000,-20860),
  ABISELECT(584,336),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C17D1Ev,_ZTv0_n16_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7862C17D0Ev,_ZTv0_n16_N8S7862C17D0Ev),
};
extern void _ZN8S7862C112v7Ev();
extern void ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev)();
extern void ABISELECT(_ZThn3896_N8S7862C17D1Ev,_ZThn2532_N8S7862C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev)();
extern void ABISELECT(_ZThn3896_N8S7862C17D0Ev,_ZThn2532_N8S7862C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7862C11__8S7862C17__7S7862C1[] = {
  ABISELECT(-3896,-2532),
  0,
  ABISELECT(-38480,-23728),
  ABISELECT(-3896,-2532),
  (VTBL_ENTRY)&(_ZTI8S7862C17[0]),
  (VTBL_ENTRY)&_ZN8S7862C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev),
};
extern void _ZN8S7862C112v7Ev();
extern void _ZN8S7862C11D1Ev();
extern void _ZN8S7862C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7862C11__7S7862C1[] = {
  ABISELECT(-38480,-23728),
  0,
  (VTBL_ENTRY)&(_ZTI8S7862C11[0]),
  (VTBL_ENTRY)&_ZN8S7862C112v7Ev,
  (VTBL_ENTRY)&_ZN8S7862C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7862C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7862C11D1Ev,_ZTv0_n12_N8S7862C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7862C11D0Ev,_ZTv0_n12_N8S7862C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S7862C11__7S7862C1[] = {
  ABISELECT(38480,23728),
  ABISELECT(38480,23728),
  (VTBL_ENTRY)&(_ZTI8S7862C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C11D1Ev,_ZTv0_n12_N8S7862C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7862C11D0Ev,_ZTv0_n12_N8S7862C11D0Ev),
};
static  VTT_ENTRY vtt_S7862C1[] = {
  {&(_ZTV7S7862C1[12]),  12,112},
  {&(_tg__ZTV7S7862C2__A__7S7862C1[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C2__A1__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C2__A1__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C2__A__7S7862C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C2__A__7S7862C1[3]),  3,5},
  {&(_ZTV7S7862C1[21]),  21,112},
  {&(_ZTV7S7862C1[28]),  28,112},
  {&(_ZTV7S7862C1[46]),  46,112},
  {&(_ZTV7S7862C1[69]),  69,112},
  {&(_ZTV7S7862C1[75]),  75,112},
  {&(_ZTV7S7862C1[82]),  82,112},
  {&(_ZTV7S7862C1[57]),  57,112},
  {&(_ZTV7S7862C1[61]),  61,112},
  {&(_ZTV7S7862C1[94]),  94,112},
  {&(_ZTV7S7862C1[100]),  100,112},
  {&(_ZTV7S7862C1[109]),  109,112},
  {&(_tg__ZTV7S7862C3__7S7862C1[4]),  4,8},
  {&(_tg__ZTV7S7862C67S7862C3__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C3__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C3__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C8__7S7862C1[11]),  11,17},
  {&(_tg__ZTV8S7862C137S7862C8__7S7862C1[8]),  8,14},
  {&(_tg__ZTV8S7862C148S7862C137S7862C8__7S7862C1[7]),  7,13},
  {&(_tg__ZTV8S7862C158S7862C148S7862C137S7862C8__7S7862C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S7862C158S7862C148S7862C137S7862C8__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C6__8S7862C158S7862C148S7862C137S7862C8__7S7862C1[4]),  4,6},
  {&(_tg__ZTV8S7862C12__8S7862C158S7862C148S7862C137S7862C8__7S7862C1[5]),  5,7},
  {&(_tg__ZTV7S7862C3__8S7862C158S7862C148S7862C137S7862C8__7S7862C1[7]),  7,11},
  {&(_tg__ZTV7S7862C28S7862C148S7862C137S7862C8__A2__7S7862C1[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C28S7862C148S7862C137S7862C8__A4__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C28S7862C148S7862C137S7862C8__A4__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C28S7862C148S7862C137S7862C8__A2__7S7862C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C28S7862C148S7862C137S7862C8__A2__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S7862C148S7862C137S7862C8__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C6__8S7862C148S7862C137S7862C8__7S7862C1[4]),  4,6},
  {&(_tg__ZTV8S7862C12__8S7862C148S7862C137S7862C8__7S7862C1[5]),  5,7},
  {&(_tg__ZTV7S7862C3__8S7862C148S7862C137S7862C8__7S7862C1[7]),  7,11},
  {&(_tg__ZTV7S7862C2__8S7862C148S7862C137S7862C8__7S7862C1[5]),  5,7},
  {&(_tg__ZTV7S7862C3__8S7862C137S7862C8__7S7862C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S7862C137S7862C8__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C2__8S7862C137S7862C8__7S7862C1[6]),  6,8},
  {&(_tg__ZTV7S7862C6__A2__8S7862C137S7862C8__7S7862C1[4]),  4,6},
  {&(_tg__ZTV8S7862C12__8S7862C137S7862C8__7S7862C1[5]),  5,7},
  {&(_tg__ZTV7S7862C28S7862C14__A1__8S7862C137S7862C8__7S7862C1[5]),  5,7},
  {&(_tg__ZTV7S7862C2__7S7862C8__7S7862C1[6]),  6,8},
  {&(_tg__ZTV7S7862C3__7S7862C8__7S7862C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C8__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C6__A2__7S7862C8__7S7862C1[4]),  4,6},
  {&(_tg__ZTV8S7862C12__7S7862C8__7S7862C1[5]),  5,7},
  {&(_tg__ZTV7S7862C28S7862C148S7862C13__A1__7S7862C8__7S7862C1[5]),  5,7},
  {&(_tg__ZTV8S7862C17__7S7862C8__7S7862C1[10]),  10,12},
  {&(_tg__ZTV7S7862C38S7862C17__A1__7S7862C8__7S7862C1[4]),  4,8},
  {&(_tg__ZTV8S7862C11__7S7862C8__7S7862C1[5]),  5,8},
  {&(_tg__ZTV7S7862C2__A1__7S7862C1[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C2__A2__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C2__A2__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C2__A1__7S7862C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C2__A1__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C6__A3__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C6__A3__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S7862C12__7S7862C1[4]),  4,6},
  {&(_tg__ZTV7S7862C6__8S7862C12__7S7862C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S7862C12__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S7862C17__7S7862C1[7]),  7,9},
  {&(_tg__ZTV7S7862C28S7862C17__A3__7S7862C1[5]),  5,7},
  {&(_tg__ZTV7S7862C67S7862C28S7862C17__A5__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C28S7862C17__A5__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C3__7S7862C28S7862C17__A3__7S7862C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__7S7862C28S7862C17__A3__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C38S7862C17__A1__7S7862C1[4]),  4,8},
  {&(_tg__ZTV7S7862C67S7862C38S7862C17__A6__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C67S7862C38S7862C17__A6__7S7862C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__7S7862C38S7862C17__A1__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C3__8S7862C17__7S7862C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S7862C17__7S7862C1[3]),  3,5},
  {&(_tg__ZTV7S7862C3__A__8S7862C17__7S7862C1[4]),  4,8},
  {&(_tg__ZTV7S7862C6__A3__8S7862C17__7S7862C1[4]),  4,6},
  {&(_tg__ZTV8S7862C11__8S7862C17__7S7862C1[5]),  5,8},
  {&(_tg__ZTV8S7862C11__7S7862C1[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S7862C11__7S7862C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7862C1[];
extern  VTBL_ENTRY _ZTV7S7862C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7862C1[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C17D0Ev,_ZTv0_n20_N8S7862C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S7862C17D0Ev,_ZThn2532_N8S7862C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C17D1Ev,_ZTv0_n20_N8S7862C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3896_N8S7862C17D1Ev,_ZThn2532_N8S7862C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7862C8D0Ev,_ZTv0_n32_N7S7862C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34352_N7S7862C8D0Ev,_ZThn21052_N7S7862C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7862C8D1Ev,_ZTv0_n32_N7S7862C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn34352_N7S7862C8D1Ev,_ZThn21052_N7S7862C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C8D0Ev,_ZTv0_n20_N7S7862C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38248_N7S7862C8D0Ev,_ZThn23584_N7S7862C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn33968_N7S7862C8D0Ev,_ZThn20828_N7S7862C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C8D1Ev,_ZTv0_n20_N7S7862C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38248_N7S7862C8D1Ev,_ZThn23584_N7S7862C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn33968_N7S7862C8D1Ev,_ZThn20828_N7S7862C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7862C8D0Ev,_ZTv0_n16_N7S7862C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33768_N7S7862C8D0Ev,_ZThn20716_N7S7862C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7862C8D1Ev,_ZTv0_n16_N7S7862C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33768_N7S7862C8D1Ev,_ZThn20716_N7S7862C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7862C8D0Ev,_ZTv0_n24_N7S7862C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S7862C8D0Ev,_ZThn1684_N7S7862C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7862C8D1Ev,_ZTv0_n24_N7S7862C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S7862C8D1Ev,_ZThn1684_N7S7862C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C13D0Ev,_ZTv0_n20_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33968_N8S7862C13D0Ev,_ZThn20828_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C13D1Ev,_ZTv0_n20_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33968_N8S7862C13D1Ev,_ZThn20828_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C13D0Ev,_ZTv0_n16_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33768_N8S7862C13D0Ev,_ZThn20716_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C13D1Ev,_ZTv0_n16_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33768_N8S7862C13D1Ev,_ZThn20716_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7862C13D0Ev,_ZTv0_n24_N8S7862C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N8S7862C13D0Ev,_ZThn1684_N8S7862C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7862C13D1Ev,_ZTv0_n24_N8S7862C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N8S7862C13D1Ev,_ZThn1684_N8S7862C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C14D0Ev,_ZTv0_n20_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33968_N8S7862C14D0Ev,_ZThn20828_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C14D1Ev,_ZTv0_n20_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33968_N8S7862C14D1Ev,_ZThn20828_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C14D0Ev,_ZTv0_n16_N8S7862C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33768_N8S7862C14D0Ev,_ZThn20716_N8S7862C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C14D1Ev,_ZTv0_n16_N8S7862C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33768_N8S7862C14D1Ev,_ZThn20716_N8S7862C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C15D0Ev,_ZTv0_n20_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33968_N8S7862C15D0Ev,_ZThn20828_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7862C15D1Ev,_ZTv0_n20_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33968_N8S7862C15D1Ev,_ZThn20828_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C15D0Ev,_ZTv0_n16_N8S7862C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33768_N8S7862C15D0Ev,_ZThn20716_N8S7862C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7862C15D1Ev,_ZTv0_n16_N8S7862C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33768_N8S7862C15D1Ev,_ZThn20716_N8S7862C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D0Ev,_ZTv0_n12_N7S7862C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D0Ev,_ZThn624_N7S7862C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C3D1Ev,_ZTv0_n12_N7S7862C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C3D1Ev,_ZThn624_N7S7862C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D0Ev,_ZTv0_n12_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4568_N7S7862C2D0Ev,_ZThn2784_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C2D1Ev,_ZTv0_n12_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4568_N7S7862C2D1Ev,_ZThn2784_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D0Ev,_ZTv0_n20_N7S7862C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N7S7862C2D0Ev,_ZThn2160_N7S7862C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C2D1Ev,_ZTv0_n20_N7S7862C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N7S7862C2D1Ev,_ZThn2160_N7S7862C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D0Ev,_ZTv0_n12_N7S7862C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D0Ev,_ZThn624_N7S7862C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4568_N7S7862C6D0Ev,_ZThn2784_N7S7862C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C6D1Ev,_ZTv0_n12_N7S7862C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N7S7862C6D1Ev,_ZThn624_N7S7862C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4568_N7S7862C6D1Ev,_ZThn2784_N7S7862C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7862C1D0Ev,_ZTv0_n32_N7S7862C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39152_N7S7862C1D0Ev,_ZThn23980_N7S7862C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7862C1D1Ev,_ZTv0_n32_N7S7862C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn39152_N7S7862C1D1Ev,_ZThn23980_N7S7862C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7862C1D0Ev,_ZTv0_n16_N7S7862C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38568_N7S7862C1D0Ev,_ZThn23644_N7S7862C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7862C1D1Ev,_ZTv0_n16_N7S7862C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn38568_N7S7862C1D1Ev,_ZThn23644_N7S7862C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7862C1D0Ev,_ZTv0_n24_N7S7862C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7584_N7S7862C1D0Ev,_ZThn4612_N7S7862C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7862C1D1Ev,_ZTv0_n24_N7S7862C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7584_N7S7862C1D1Ev,_ZThn4612_N7S7862C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7862C1D0Ev,_ZTv0_n48_N7S7862C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4800_N7S7862C1D0Ev,_ZThn2928_N7S7862C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7862C1D1Ev,_ZTv0_n48_N7S7862C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4800_N7S7862C1D1Ev,_ZThn2928_N7S7862C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C1D0Ev,_ZTv0_n12_N7S7862C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4568_N7S7862C1D0Ev,_ZThn2784_N7S7862C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7862C1D1Ev,_ZTv0_n12_N7S7862C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4568_N7S7862C1D1Ev,_ZThn2784_N7S7862C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C1D0Ev,_ZTv0_n20_N7S7862C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43048_N7S7862C1D0Ev,_ZThn26512_N7S7862C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn38768_N7S7862C1D0Ev,_ZThn23756_N7S7862C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N7S7862C1D0Ev,_ZThn2160_N7S7862C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7862C1D1Ev,_ZTv0_n20_N7S7862C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43048_N7S7862C1D1Ev,_ZThn26512_N7S7862C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn38768_N7S7862C1D1Ev,_ZThn23756_N7S7862C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N7S7862C1D1Ev,_ZThn2160_N7S7862C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7862C1 = {  "S7862C1", // class name
  bases_S7862C1, 37,
  &(vtc_S7862C1[0]), // expected_vtbl_contents
  &(vtt_S7862C1[0]), // expected_vtt_contents
  ABISELECT(43056,26516), // object size
  NSPAIRA(_ZTI7S7862C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7862C1),112, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7862C1),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C4  : virtual S19674C5 , S19674C7 {
  short s21158c4f0[6];
  __tsi64 s21158c4f1[3];
  ::S19674C9 s21158c4f2;
  ~S21158C4(); // tgen
  S21158C4(); // tgen
};
//SIG(-1 S21158C4) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ m Fp[14]} Fs[6] FL[3] FU4{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}}


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

static void Test_S21158C4()
{
  extern Class_Descriptor cd_S21158C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,51)];
    init_test(&cd_S21158C4, buf);
    S21158C4 *dp, &lv = *(dp=new (buf) S21158C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,200), "sizeof(S21158C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21158C4)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(192,112), "S21158C4");
    check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21158C4");
    check_field_offset(lv, s21158c4f0, ABISELECT(120,60), "S21158C4.s21158c4f0");
    check_field_offset(lv, s21158c4f1, ABISELECT(136,72), "S21158C4.s21158c4f1");
    check_field_offset(lv, s21158c4f2, ABISELECT(160,96), "S21158C4.s21158c4f2");
    test_class_info(&lv, &cd_S21158C4);
    dp->~S21158C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C4(Test_S21158C4, "S21158C4", ABISELECT(312,200));

#else // __cplusplus

extern void _ZN8S21158C4C1Ev();
extern void _ZN8S21158C4D1Ev();
Name_Map name_map_S21158C4[] = {
  NSPAIR(_ZN8S21158C4C1Ev),
  NSPAIR(_ZN8S21158C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
static Base_Class bases_S21158C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(192,112), //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},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21158C4[];
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZThn192_N8S21158C4D1Ev,_ZThn112_N8S21158C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
extern void ABISELECT(_ZThn192_N8S21158C4D0Ev,_ZThn112_N8S21158C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21158C4[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21158C4[];
static  VTT_ENTRY vtt_S21158C4[] = {
  {&(_ZTV8S21158C4[3]),  3,10},
  {&(_ZTV8S21158C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21158C4D0Ev,_ZThn112_N8S21158C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21158C4D1Ev,_ZThn112_N8S21158C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C4 = {  "S21158C4", // class name
  bases_S21158C4, 2,
  &(vtc_S21158C4[0]), // expected_vtbl_contents
  &(vtt_S21158C4[0]), // expected_vtt_contents
  ABISELECT(312,200), // object size
  NSPAIRA(_ZTI8S21158C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21158C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21158C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C7  : virtual S21158C4 , S19674C5 {
  char s21158c7f0:6;
  char s21158c7f1[8];
  long double s21158c7f2;
  ::S19674C7 s21158c7f3;
  ::S19674C7 s21158c7f4;
  ~S21158C7(); // tgen
  S21158C7(); // tgen
};
//SIG(-1 S21158C7) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC3 Fc:6 Fc[8] FD FC4 FC4}


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

static void Test_S21158C7()
{
  extern Class_Descriptor cd_S21158C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,107)];
    init_test(&cd_S21158C7, buf);
    S21158C7 *dp, &lv = *(dp=new (buf) S21158C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,424), "sizeof(S21158C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21158C7)");
    check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(576,336), "S21158C7");
    check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(392,228), "S21158C7");
    check_base_class_offset(lv, (S21158C4*), ABISELECT(384,224), "S21158C7");
    /*is_ambiguous_... S21158C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), 0, "S21158C7");
    set_bf_and_test(lv, s21158c7f0, ABISELECT(120,88), 0, 6, 1, "S21158C7");
    set_bf_and_test(lv, s21158c7f0, ABISELECT(120,88), 0, 6, hide_sll(1LL<<5), "S21158C7");
    check_field_offset(lv, s21158c7f1, ABISELECT(121,89), "S21158C7.s21158c7f1");
    check_field_offset(lv, s21158c7f2, ABISELECT(144,100), "S21158C7.s21158c7f2");
    check_field_offset(lv, s21158c7f3, ABISELECT(160,112), "S21158C7.s21158c7f3");
    check_field_offset(lv, s21158c7f4, ABISELECT(272,168), "S21158C7.s21158c7f4");
    test_class_info(&lv, &cd_S21158C7);
    dp->~S21158C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C7(Test_S21158C7, "S21158C7", ABISELECT(704,424));

#else // __cplusplus

extern void _ZN8S21158C7C1Ev();
extern void _ZN8S21158C7D1Ev();
Name_Map name_map_S21158C7[] = {
  NSPAIR(_ZN8S21158C7C1Ev),
  NSPAIR(_ZN8S21158C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21158C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(576,336), //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(384,224), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S21158C7[];
extern void _ZN8S21158C7D1Ev();
extern void _ZN8S21158C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S21158C7D1Ev,_ZThn224_N8S21158C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev)();
extern void ABISELECT(_ZThn384_N8S21158C7D0Ev,_ZThn224_N8S21158C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev)();
extern void ABISELECT(_ZThn576_N8S21158C7D1Ev,_ZThn336_N8S21158C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev)();
extern void ABISELECT(_ZThn576_N8S21158C7D0Ev,_ZThn336_N8S21158C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21158C7[] = {
  ABISELECT(576,336),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&_ZN8S21158C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C7D0Ev,
  ABISELECT(-384,-224),
  ABISELECT(192,112),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev),
  ABISELECT(-576,-336),
  ABISELECT(-576,-336),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S21158C7[];
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C7[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZThn192_N8S21158C4D1Ev,_ZThn112_N8S21158C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
extern void ABISELECT(_ZThn192_N8S21158C4D0Ev,_ZThn112_N8S21158C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__8S21158C7[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
static  VTT_ENTRY vtt_S21158C7[] = {
  {&(_ZTV8S21158C7[4]),  4,17},
  {&(_ZTV8S21158C7[10]),  10,17},
  {&(_ZTV8S21158C7[15]),  15,17},
  {&(_tg__ZTV8S21158C4__8S21158C7[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__8S21158C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21158C7[];
extern  VTBL_ENTRY _ZTV8S21158C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C7[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21158C4D0Ev,_ZThn112_N8S21158C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21158C4D1Ev,_ZThn112_N8S21158C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S21158C7D0Ev,_ZThn336_N8S21158C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S21158C7D1Ev,_ZThn336_N8S21158C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21158C7D0Ev,_ZThn224_N8S21158C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21158C7D1Ev,_ZThn224_N8S21158C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C7 = {  "S21158C7", // class name
  bases_S21158C7, 4,
  &(vtc_S21158C7[0]), // expected_vtbl_contents
  &(vtt_S21158C7[0]), // expected_vtt_contents
  ABISELECT(704,424), // object size
  NSPAIRA(_ZTI8S21158C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21158C7),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21158C7),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C2  : virtual S19674C5 , S21158C4 , virtual S21158C7 {
  long double s21158c2f0;
  void *s21158c2f1;
  void *s21158c2f2;
  ~S21158C2(); // tgen
  S21158C2(); // tgen
};
//SIG(-1 S21158C2) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} FD Fp Fp}


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

static void Test_S21158C2()
{
  extern Class_Descriptor cd_S21158C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,140)];
    init_test(&cd_S21158C2, buf);
    S21158C2 *dp, &lv = *(dp=new (buf) S21158C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,556), "sizeof(S21158C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21158C2)");
    /*is_ambiguous_... S21158C2::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(224,132), "S21158C2");
    /*is_ambiguous_... S21158C2::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(224,132), "S21158C2");
    /*is_ambiguous_... S21158C2::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(224,132), "S21158C2");
    /*is_ambiguous_... S21158C2::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(8,4), "S21158C2");
    /*is_ambiguous_... S21158C2::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*), 0, "S21158C2");
    /*is_ambiguous_... S21158C2::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(744,448), "S21158C2");
    check_base_class_offset(lv, (S21158C4*)(S21158C7*), ABISELECT(736,444), "S21158C2");
    /*is_ambiguous_... S21158C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C7*), ABISELECT(352,220), "S21158C2");
    check_base_class_offset(lv, (S21158C7*), ABISELECT(352,220), "S21158C2");
    check_field_offset(lv, s21158c2f0, ABISELECT(192,112), "S21158C2.s21158c2f0");
    check_field_offset(lv, s21158c2f1, ABISELECT(208,124), "S21158C2.s21158c2f1");
    check_field_offset(lv, s21158c2f2, ABISELECT(216,128), "S21158C2.s21158c2f2");
    test_class_info(&lv, &cd_S21158C2);
    dp->~S21158C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C2(Test_S21158C2, "S21158C2", ABISELECT(928,556));

#else // __cplusplus

extern void _ZN8S21158C2C1Ev();
extern void _ZN8S21158C2D1Ev();
Name_Map name_map_S21158C2[] = {
  NSPAIR(_ZN8S21158C2C1Ev),
  NSPAIR(_ZN8S21158C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21158C7;
extern VTBL_ENTRY _ZTI8S21158C7[];
extern  VTBL_ENTRY _ZTV8S21158C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C7[];
static Base_Class bases_S21158C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(224,132), //bcp->offset
    7, //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_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21158C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(744,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(736,444), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(352,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21158C7,    ABISELECT(352,220), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21158C2[];
extern void _ZN8S21158C2D1Ev();
extern void _ZN8S21158C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21158C2D1Ev,_ZTv0_n12_N8S21158C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21158C2D1Ev,_ZThn132_N8S21158C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C2D0Ev,_ZTv0_n12_N8S21158C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21158C2D0Ev,_ZThn132_N8S21158C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C2D1Ev,_ZTv0_n20_N8S21158C2D1Ev)();
extern void ABISELECT(_ZThn352_N8S21158C2D1Ev,_ZThn220_N8S21158C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C2D0Ev,_ZTv0_n20_N8S21158C2D0Ev)();
extern void ABISELECT(_ZThn352_N8S21158C2D0Ev,_ZThn220_N8S21158C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C2D1Ev,_ZTv0_n16_N8S21158C2D1Ev)();
extern void ABISELECT(_ZThn736_N8S21158C2D1Ev,_ZThn444_N8S21158C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C2D0Ev,_ZTv0_n16_N8S21158C2D0Ev)();
extern void ABISELECT(_ZThn736_N8S21158C2D0Ev,_ZThn444_N8S21158C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21158C2[] = {
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C2[0]),
  (VTBL_ENTRY)&_ZN8S21158C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C2D0Ev,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21158C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C2D1Ev,_ZTv0_n12_N8S21158C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C2D0Ev,_ZTv0_n12_N8S21158C2D0Ev),
  ABISELECT(-352,-220),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI8S21158C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C2D1Ev,_ZTv0_n20_N8S21158C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C2D0Ev,_ZTv0_n20_N8S21158C2D0Ev),
  ABISELECT(-736,-444),
  ABISELECT(-512,-312),
  ABISELECT(-736,-444),
  (VTBL_ENTRY)&(_ZTI8S21158C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C2D1Ev,_ZTv0_n16_N8S21158C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C2D0Ev,_ZTv0_n16_N8S21158C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21158C2[];
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__A__8S21158C2[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZThn224_N8S21158C4D1Ev,_ZThn132_N8S21158C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
extern void ABISELECT(_ZThn224_N8S21158C4D0Ev,_ZThn132_N8S21158C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__A__8S21158C2[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void _ZN8S21158C7D1Ev();
extern void _ZN8S21158C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C2[] = {
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&_ZN8S21158C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S21158C7D1Ev,_ZThn224_N8S21158C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev)();
extern void ABISELECT(_ZThn384_N8S21158C7D0Ev,_ZThn224_N8S21158C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C7__8S21158C2[] = {
  ABISELECT(-384,-224),
  ABISELECT(-512,-312),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C7__8S21158C2[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev),
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__A1__8S21158C2[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__A1__8S21158C2[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
static  VTT_ENTRY vtt_S21158C2[] = {
  {&(_ZTV8S21158C2[5]),  5,25},
  {&(_tg__ZTV8S21158C4__A__8S21158C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__A__8S21158C2[3]),  3,5},
  {&(_ZTV8S21158C2[10]),  10,25},
  {&(_ZTV8S21158C2[17]),  17,25},
  {&(_ZTV8S21158C2[23]),  23,25},
  {&(_tg__ZTV8S21158C7__8S21158C2[4]),  4,6},
  {&(_tg__ZTV8S21158C4__8S21158C7__8S21158C2[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21158C7__8S21158C2[3]),  3,5},
  {&(_tg__ZTV8S21158C4__A1__8S21158C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__A1__8S21158C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21158C2[];
extern  VTBL_ENTRY _ZTV8S21158C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C2[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21158C7D0Ev,_ZThn224_N8S21158C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21158C7D1Ev,_ZThn224_N8S21158C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21158C4D0Ev,_ZThn132_N8S21158C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21158C4D1Ev,_ZThn132_N8S21158C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C2D0Ev,_ZTv0_n16_N8S21158C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S21158C2D0Ev,_ZThn444_N8S21158C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C2D1Ev,_ZTv0_n16_N8S21158C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S21158C2D1Ev,_ZThn444_N8S21158C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C2D0Ev,_ZTv0_n20_N8S21158C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21158C2D0Ev,_ZThn220_N8S21158C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C2D1Ev,_ZTv0_n20_N8S21158C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21158C2D1Ev,_ZThn220_N8S21158C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C2D0Ev,_ZTv0_n12_N8S21158C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21158C2D0Ev,_ZThn132_N8S21158C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C2D1Ev,_ZTv0_n12_N8S21158C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21158C2D1Ev,_ZThn132_N8S21158C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C2 = {  "S21158C2", // class name
  bases_S21158C2, 7,
  &(vtc_S21158C2[0]), // expected_vtbl_contents
  &(vtt_S21158C2[0]), // expected_vtt_contents
  ABISELECT(928,556), // object size
  NSPAIRA(_ZTI8S21158C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21158C2),25, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21158C2),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C9  : virtual S19674C5 , virtual S19674C7 , S21158C4 {
  ::S21158C4 s21158c9f0;
  long double s21158c9f1[7];
  ::S21158C4 s21158c9f2;
  __tsi64 s21158c9f3;
  void *s21158c9f4[5];
  virtual void  v3(); // _ZN8S21158C92v3Ev
  virtual void  v4(); // _ZN8S21158C92v4Ev
  ~S21158C9(); // tgen
  S21158C9(); // tgen
};
//SIG(-1 S21158C9) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ m Fp[14]} BC4{ VBC2 BC3 Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC4 FD[7] FC4 FL Fp[5]}


void  S21158C9 ::v3(){vfunc_called(this, "_ZN8S21158C92v3Ev");}
void  S21158C9 ::v4(){vfunc_called(this, "_ZN8S21158C92v4Ev");}
S21158C9 ::~S21158C9(){ note_dtor("S21158C9", this);} // tgen
S21158C9 ::S21158C9(){ note_ctor("S21158C9", this);} // tgen

static void Test_S21158C9()
{
  extern Class_Descriptor cd_S21158C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,193)];
    init_test(&cd_S21158C9, buf);
    S21158C9 *dp, &lv = *(dp=new (buf) S21158C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,768), "sizeof(S21158C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21158C9)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(984,624), "S21158C9");
    check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(984,624), "S21158C9");
    /*is_ambiguous_... S21158C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(1104,712), "S21158C9");
    check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(8,4), "S21158C9");
    check_base_class_offset(lv, (S21158C4*), 0, "S21158C9");
    check_field_offset(lv, s21158c9f0, ABISELECT(192,112), "S21158C9.s21158c9f0");
    check_field_offset(lv, s21158c9f1, ABISELECT(512,312), "S21158C9.s21158c9f1");
    check_field_offset(lv, s21158c9f2, ABISELECT(624,396), "S21158C9.s21158c9f2");
    check_field_offset(lv, s21158c9f3, ABISELECT(936,596), "S21158C9.s21158c9f3");
    check_field_offset(lv, s21158c9f4, ABISELECT(944,604), "S21158C9.s21158c9f4");
    test_class_info(&lv, &cd_S21158C9);
    dp->~S21158C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C9(Test_S21158C9, "S21158C9", ABISELECT(1216,768));

#else // __cplusplus

extern void _ZN8S21158C9C1Ev();
extern void _ZN8S21158C9D1Ev();
Name_Map name_map_S21158C9[] = {
  NSPAIR(_ZN8S21158C9C1Ev),
  NSPAIR(_ZN8S21158C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
static Base_Class bases_S21158C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(984,624), //bcp->offset
    8, //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_S19674C7,    ABISELECT(1104,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21158C4,    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 _ZTI8S21158C9[];
extern void _ZN8S21158C9D1Ev();
extern void _ZN8S21158C9D0Ev();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
extern void ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev)();
extern void ABISELECT(_ZThn984_N8S21158C9D1Ev,_ZThn624_N8S21158C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev)();
extern void ABISELECT(_ZThn984_N8S21158C9D0Ev,_ZThn624_N8S21158C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21158C9[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&_ZN8S21158C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21158C9[];
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C9[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZThn984_N8S21158C4D1Ev,_ZThn624_N8S21158C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
extern void ABISELECT(_ZThn984_N8S21158C4D0Ev,_ZThn624_N8S21158C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__8S21158C9[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
static  VTT_ENTRY vtt_S21158C9[] = {
  {&(_ZTV8S21158C9[4]),  4,13},
  {&(_tg__ZTV8S21158C4__8S21158C9[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__8S21158C9[3]),  3,5},
  {&(_ZTV8S21158C9[11]),  11,13},
};
extern VTBL_ENTRY _ZTI8S21158C9[];
extern  VTBL_ENTRY _ZTV8S21158C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C9[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21158C4D0Ev,_ZThn624_N8S21158C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21158C4D1Ev,_ZThn624_N8S21158C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21158C9D0Ev,_ZThn624_N8S21158C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21158C9D1Ev,_ZThn624_N8S21158C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C9 = {  "S21158C9", // class name
  bases_S21158C9, 4,
  &(vtc_S21158C9[0]), // expected_vtbl_contents
  &(vtt_S21158C9[0]), // expected_vtt_contents
  ABISELECT(1216,768), // object size
  NSPAIRA(_ZTI8S21158C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21158C9),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21158C9),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C8  : virtual S19674C5 , virtual S21158C4 , virtual S21158C7 , S19674C7 , virtual S21158C9 {
  int s21158c8f0;
  int s21158c8f1;
  ::S19674C7 s21158c8f2;
  char s21158c8f3;
  char s21158c8f4;
  int s21158c8f5;
  short s21158c8f6;
  __tsi64 s21158c8f7;
  virtual  ~S21158C8(); // _ZN8S21158C8D2Ev
  virtual void  v5(); // _ZN8S21158C82v5Ev
  virtual void  v6(); // _ZN8S21158C82v6Ev
  S21158C8(); // tgen
};
//SIG(-1 S21158C8) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC7{ VBC2 VBC4 BC3 v3 v4 FC3 FD[7] FC3 FL Fp[5]} vd v1 v2 Fi Fi FC4 Fc Fc Fi Fs FL}


 S21158C8 ::~S21158C8(){ note_dtor("S21158C8", this);}
void  S21158C8 ::v5(){vfunc_called(this, "_ZN8S21158C82v5Ev");}
void  S21158C8 ::v6(){vfunc_called(this, "_ZN8S21158C82v6Ev");}
S21158C8 ::S21158C8(){ note_ctor("S21158C8", this);} // tgen

static void Test_S21158C8()
{
  extern Class_Descriptor cd_S21158C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,313)];
    init_test(&cd_S21158C8, buf);
    S21158C8 *dp, &lv = *(dp=new (buf) S21158C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1248), "sizeof(S21158C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21158C8)");
    /*is_ambiguous_... S21158C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(264,144), "S21158C8");
    /*is_ambiguous_... S21158C8::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(264,144), "S21158C8");
    check_base_class_offset(lv, (S19674C5*)(S21158C9*), ABISELECT(264,144), "S21158C8");
    check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C9*), ABISELECT(264,144), "S21158C8");
    /*is_ambiguous_... S21158C8::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(392,236), "S21158C8");
    /*is_ambiguous_... S21158C8::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*), ABISELECT(384,232), "S21158C8");
    check_base_class_offset(lv, (S21158C4*)(S21158C7*), ABISELECT(384,232), "S21158C8");
    /*is_ambiguous_... S21158C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C7*), ABISELECT(576,344), "S21158C8");
    check_base_class_offset(lv, (S21158C7*), ABISELECT(576,344), "S21158C8");
    /*is_ambiguous_... S21158C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21158C8");
    /*is_ambiguous_... S21158C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C9*), ABISELECT(1944,1192), "S21158C8");
    check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C9*), ABISELECT(968,572), "S21158C8");
    check_base_class_offset(lv, (S21158C4*)(S21158C9*), ABISELECT(960,568), "S21158C8");
    check_base_class_offset(lv, (S21158C9*), ABISELECT(960,568), "S21158C8");
    check_field_offset(lv, s21158c8f0, ABISELECT(120,60), "S21158C8.s21158c8f0");
    check_field_offset(lv, s21158c8f1, ABISELECT(124,64), "S21158C8.s21158c8f1");
    check_field_offset(lv, s21158c8f2, ABISELECT(128,68), "S21158C8.s21158c8f2");
    check_field_offset(lv, s21158c8f3, ABISELECT(240,124), "S21158C8.s21158c8f3");
    check_field_offset(lv, s21158c8f4, ABISELECT(241,125), "S21158C8.s21158c8f4");
    check_field_offset(lv, s21158c8f5, ABISELECT(244,128), "S21158C8.s21158c8f5");
    check_field_offset(lv, s21158c8f6, ABISELECT(248,132), "S21158C8.s21158c8f6");
    check_field_offset(lv, s21158c8f7, ABISELECT(256,136), "S21158C8.s21158c8f7");
    test_class_info(&lv, &cd_S21158C8);
    dp->~S21158C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C8(Test_S21158C8, "S21158C8", ABISELECT(2064,1248));

#else // __cplusplus

extern void _ZN8S21158C8C1Ev();
extern void _ZN8S21158C8D2Ev();
Name_Map name_map_S21158C8[] = {
  NSPAIR(_ZN8S21158C8C1Ev),
  NSPAIR(_ZN8S21158C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21158C7;
extern VTBL_ENTRY _ZTI8S21158C7[];
extern  VTBL_ENTRY _ZTV8S21158C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C9;
extern VTBL_ENTRY _ZTI8S21158C9[];
extern  VTBL_ENTRY _ZTV8S21158C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C9[];
static Base_Class bases_S21158C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(264,144), //bcp->offset
    11, //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_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(384,232), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21158C7,    ABISELECT(576,344), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(1944,1192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(968,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C4,    ABISELECT(960,568), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21158C9,    ABISELECT(960,568), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21158C8[];
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn264_N8S21158C8D1Ev,_ZThn144_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn264_N8S21158C8D0Ev,_ZThn144_N8S21158C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn384_N8S21158C8D1Ev,_ZThn232_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn384_N8S21158C8D0Ev,_ZThn232_N8S21158C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn576_N8S21158C8D1Ev,_ZThn344_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn576_N8S21158C8D0Ev,_ZThn344_N8S21158C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn960_N8S21158C8D1Ev,_ZThn568_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn960_N8S21158C8D0Ev,_ZThn568_N8S21158C8D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY vtc_S21158C8[] = {
  ABISELECT(1944,1192),
  ABISELECT(960,568),
  ABISELECT(576,344),
  ABISELECT(384,232),
  ABISELECT(264,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
  ABISELECT(-384,-232),
  ABISELECT(-120,-88),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
  ABISELECT(-576,-344),
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  ABISELECT(-576,-344),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  0,
  0,
  ABISELECT(-960,-568),
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  ABISELECT(-960,-568),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern VTBL_ENTRY _ZTV8S21158C8[];
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C8[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__8S21158C8[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void _ZN8S21158C7D1Ev();
extern void _ZN8S21158C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C8[] = {
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&_ZN8S21158C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C7__8S21158C8[] = {
  ABISELECT(192,112),
  ABISELECT(-120,-88),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C7__8S21158C8[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev),
};
extern void _ZN8S21158C9D1Ev();
extern void _ZN8S21158C9D0Ev();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C8[] = {
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&_ZN8S21158C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C48S21158C9__A1__8S21158C8[] = {
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C48S21158C9__A1__8S21158C8[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C9__8S21158C8[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev),
};
static  VTT_ENTRY vtt_S21158C8[] = {
  {&(_ZTV8S21158C8[7]),  7,40},
  {&(_ZTV8S21158C8[14]),  14,40},
  {&(_ZTV8S21158C8[20]),  20,40},
  {&(_ZTV8S21158C8[27]),  27,40},
  {&(_ZTV8S21158C8[36]),  36,40},
  {&(_tg__ZTV8S21158C4__8S21158C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__8S21158C8[3]),  3,5},
  {&(_tg__ZTV8S21158C7__8S21158C8[4]),  4,6},
  {&(_tg__ZTV8S21158C4__8S21158C7__8S21158C8[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21158C7__8S21158C8[3]),  3,5},
  {&(_tg__ZTV8S21158C9__8S21158C8[4]),  4,8},
  {&(_tg__ZTV8S21158C48S21158C9__A1__8S21158C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C48S21158C9__A1__8S21158C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C9__8S21158C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N8S21158C8D0Ev,_ZThn568_N8S21158C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S21158C8D0Ev,_ZThn344_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N8S21158C8D1Ev,_ZThn568_N8S21158C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S21158C8D1Ev,_ZThn344_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21158C8D0Ev,_ZThn232_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21158C8D1Ev,_ZThn232_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21158C8D0Ev,_ZThn144_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21158C8D1Ev,_ZThn144_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C8 = {  "S21158C8", // class name
  bases_S21158C8, 10,
  &(vtc_S21158C8[0]), // expected_vtbl_contents
  &(vtt_S21158C8[0]), // expected_vtt_contents
  ABISELECT(2064,1248), // object size
  NSPAIRA(_ZTI8S21158C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21158C8),40, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21158C8),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C11  : S21158C8 {
  short s21158c11f0;
  void *s21158c11f1;
  int s21158c11f2;
  __tsi64 s21158c11f3[10];
  char s21158c11f4;
  short s21158c11f5;
  short s21158c11f6;
  int s21158c11f7;
  virtual  ~S21158C11(); // _ZN9S21158C11D2Ev
  S21158C11(); // tgen
};
//SIG(-1 S21158C11) C1{ BC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC8{ VBC3 VBC5 BC4 v1 v2 FC4 FD[7] FC4 FL Fp[5]} vd v3 v4 Fi Fi FC5 Fc Fc Fi Fs FL} vd Fs Fp Fi FL[10] Fc Fs Fs Fi}


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

static void Test_S21158C11()
{
  extern Class_Descriptor cd_S21158C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(138,339)];
    init_test(&cd_S21158C11, buf);
    S21158C11 *dp, &lv = *(dp=new (buf) S21158C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2192,1352), "sizeof(S21158C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21158C11)");
    /*is_ambiguous_... S21158C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C8*), ABISELECT(384,248), "S21158C11");
    /*is_ambiguous_... S21158C11::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(384,248), "S21158C11");
    check_base_class_offset(lv, (S19674C5*)(S21158C9*), ABISELECT(384,248), "S21158C11");
    check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C9*), ABISELECT(384,248), "S21158C11");
    /*is_ambiguous_... S21158C11::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(512,340), "S21158C11");
    /*is_ambiguous_... S21158C8::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C8*), ABISELECT(504,336), "S21158C11");
    check_base_class_offset(lv, (S21158C4*)(S21158C7*), ABISELECT(504,336), "S21158C11");
    /*is_ambiguous_... S21158C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C7*), ABISELECT(704,448), "S21158C11");
    check_base_class_offset(lv, (S21158C7*)(S21158C8*), ABISELECT(704,448), "S21158C11");
    /*is_ambiguous_... S21158C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C8*), ABISELECT(8,4), "S21158C11");
    /*is_ambiguous_... S21158C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C9*), ABISELECT(2072,1296), "S21158C11");
    check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C9*), ABISELECT(1096,676), "S21158C11");
    check_base_class_offset(lv, (S21158C4*)(S21158C9*), ABISELECT(1088,672), "S21158C11");
    check_base_class_offset(lv, (S21158C9*)(S21158C8*), ABISELECT(1088,672), "S21158C11");
    check_base_class_offset(lv, (S21158C8*), 0, "S21158C11");
    check_field_offset(lv, s21158c11f0, ABISELECT(264,144), "S21158C11.s21158c11f0");
    check_field_offset(lv, s21158c11f1, ABISELECT(272,148), "S21158C11.s21158c11f1");
    check_field_offset(lv, s21158c11f2, ABISELECT(280,152), "S21158C11.s21158c11f2");
    check_field_offset(lv, s21158c11f3, ABISELECT(288,156), "S21158C11.s21158c11f3");
    check_field_offset(lv, s21158c11f4, ABISELECT(368,236), "S21158C11.s21158c11f4");
    check_field_offset(lv, s21158c11f5, ABISELECT(370,238), "S21158C11.s21158c11f5");
    check_field_offset(lv, s21158c11f6, ABISELECT(372,240), "S21158C11.s21158c11f6");
    check_field_offset(lv, s21158c11f7, ABISELECT(376,244), "S21158C11.s21158c11f7");
    test_class_info(&lv, &cd_S21158C11);
    dp->~S21158C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C11(Test_S21158C11, "S21158C11", ABISELECT(2192,1352));

#else // __cplusplus

extern void _ZN9S21158C11C1Ev();
extern void _ZN9S21158C11D2Ev();
Name_Map name_map_S21158C11[] = {
  NSPAIR(_ZN9S21158C11C1Ev),
  NSPAIR(_ZN9S21158C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21158C7;
extern VTBL_ENTRY _ZTI8S21158C7[];
extern  VTBL_ENTRY _ZTV8S21158C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C9;
extern VTBL_ENTRY _ZTI8S21158C9[];
extern  VTBL_ENTRY _ZTV8S21158C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C9[];
extern Class_Descriptor cd_S21158C8;
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
static Base_Class bases_S21158C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(384,248), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(512,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(504,336), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(704,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21158C7,    ABISELECT(704,448), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2072,1296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1096,676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C4,    ABISELECT(1088,672), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21158C9,    ABISELECT(1088,672), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21158C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21158C11[];
extern void _ZN9S21158C11D1Ev();
extern void _ZN9S21158C11D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void ABISELECT(_ZTv0_n24_N9S21158C11D1Ev,_ZTv0_n12_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S21158C11D1Ev,_ZThn248_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C11D0Ev,_ZTv0_n12_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn384_N9S21158C11D0Ev,_ZThn248_N9S21158C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C11D1Ev,_ZTv0_n16_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn504_N9S21158C11D1Ev,_ZThn336_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C11D0Ev,_ZTv0_n16_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn504_N9S21158C11D0Ev,_ZThn336_N9S21158C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn704_N9S21158C11D1Ev,_ZThn448_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn704_N9S21158C11D0Ev,_ZThn448_N9S21158C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn1088_N9S21158C11D1Ev,_ZThn672_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn1088_N9S21158C11D0Ev,_ZThn672_N9S21158C11D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY vtc_S21158C11[] = {
  ABISELECT(2072,1296),
  ABISELECT(1088,672),
  ABISELECT(704,448),
  ABISELECT(504,336),
  ABISELECT(384,248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&_ZN9S21158C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C11D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  ABISELECT(-384,-248),
  ABISELECT(-384,-248),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C11D1Ev,_ZTv0_n12_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C11D0Ev,_ZTv0_n12_N9S21158C11D0Ev),
  ABISELECT(-504,-336),
  ABISELECT(-120,-88),
  ABISELECT(-504,-336),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C11D1Ev,_ZTv0_n16_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C11D0Ev,_ZTv0_n16_N9S21158C11D0Ev),
  ABISELECT(-704,-448),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-704,-448),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev),
  0,
  0,
  ABISELECT(-1088,-672),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1088,-672),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern VTBL_ENTRY _ZTV9S21158C11[];
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C8__9S21158C11[] = {
  ABISELECT(2072,1296),
  ABISELECT(1088,672),
  ABISELECT(704,448),
  ABISELECT(504,336),
  ABISELECT(384,248),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn384_N8S21158C8D1Ev,_ZThn248_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn384_N8S21158C8D0Ev,_ZThn248_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C8__9S21158C11[] = {
  ABISELECT(-384,-248),
  ABISELECT(-384,-248),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn504_N8S21158C8D1Ev,_ZThn336_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn504_N8S21158C8D0Ev,_ZThn336_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C8__9S21158C11[] = {
  ABISELECT(-504,-336),
  ABISELECT(-120,-88),
  ABISELECT(-504,-336),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn704_N8S21158C8D1Ev,_ZThn448_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn704_N8S21158C8D0Ev,_ZThn448_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C8__9S21158C11[] = {
  ABISELECT(-704,-448),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-704,-448),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn1088_N8S21158C8D1Ev,_ZThn672_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn1088_N8S21158C8D0Ev,_ZThn672_N8S21158C8D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C8__9S21158C11[] = {
  0,
  0,
  ABISELECT(-1088,-672),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1088,-672),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C11[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__9S21158C11[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void _ZN8S21158C7D1Ev();
extern void _ZN8S21158C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C11[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&_ZN8S21158C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C7__9S21158C11[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C7__9S21158C11[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev),
};
extern void _ZN8S21158C9D1Ev();
extern void _ZN8S21158C9D0Ev();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C11[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&_ZN8S21158C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C48S21158C9__A1__9S21158C11[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C48S21158C9__A1__9S21158C11[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C9__9S21158C11[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev),
};
static  VTT_ENTRY vtt_S21158C11[] = {
  {&(_ZTV9S21158C11[7]),  7,40},
  {&(_tg__ZTV8S21158C8__9S21158C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21158C8__9S21158C11[3]),  3,5},
  {&(_tg__ZTV8S21158C4__8S21158C8__9S21158C11[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C8__9S21158C11[5]),  5,7},
  {&(_tg__ZTV8S21158C9__8S21158C8__9S21158C11[7]),  7,11},
  {&(_ZTV9S21158C11[14]),  14,40},
  {&(_ZTV9S21158C11[20]),  20,40},
  {&(_ZTV9S21158C11[27]),  27,40},
  {&(_ZTV9S21158C11[36]),  36,40},
  {&(_tg__ZTV8S21158C4__9S21158C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__9S21158C11[3]),  3,5},
  {&(_tg__ZTV8S21158C7__9S21158C11[4]),  4,6},
  {&(_tg__ZTV8S21158C4__8S21158C7__9S21158C11[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21158C7__9S21158C11[3]),  3,5},
  {&(_tg__ZTV8S21158C9__9S21158C11[4]),  4,8},
  {&(_tg__ZTV8S21158C48S21158C9__A1__9S21158C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C48S21158C9__A1__9S21158C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C9__9S21158C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21158C11[];
extern  VTBL_ENTRY _ZTV9S21158C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C11[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S21158C8D0Ev,_ZThn672_N8S21158C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S21158C8D0Ev,_ZThn448_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S21158C8D1Ev,_ZThn672_N8S21158C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S21158C8D1Ev,_ZThn448_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S21158C8D0Ev,_ZThn336_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S21158C8D1Ev,_ZThn336_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21158C8D0Ev,_ZThn248_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21158C8D1Ev,_ZThn248_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N9S21158C11D0Ev,_ZThn672_N9S21158C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn704_N9S21158C11D0Ev,_ZThn448_N9S21158C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N9S21158C11D1Ev,_ZThn672_N9S21158C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn704_N9S21158C11D1Ev,_ZThn448_N9S21158C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C11D0Ev,_ZTv0_n16_N9S21158C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S21158C11D0Ev,_ZThn336_N9S21158C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C11D1Ev,_ZTv0_n16_N9S21158C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S21158C11D1Ev,_ZThn336_N9S21158C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C11D0Ev,_ZTv0_n12_N9S21158C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21158C11D0Ev,_ZThn248_N9S21158C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C11D1Ev,_ZTv0_n12_N9S21158C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21158C11D1Ev,_ZThn248_N9S21158C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C11 = {  "S21158C11", // class name
  bases_S21158C11, 11,
  &(vtc_S21158C11[0]), // expected_vtbl_contents
  &(vtt_S21158C11[0]), // expected_vtt_contents
  ABISELECT(2192,1352), // object size
  NSPAIRA(_ZTI9S21158C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21158C11),40, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21158C11),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C14  : virtual S21158C9 , S19674C7 , S21158C4 {
  int s21158c14f0;
  int s21158c14f1;
  int s21158c14f2:28;
  int s21158c14f3;
  long s21158c14f4;
  ~S21158C14(); // tgen
  S21158C14(); // tgen
};
//SIG(-1 S21158C14) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} BC4 BC5 Fi Fi Fi:28 Fi Fl}


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

static void Test_S21158C14()
{
  extern Class_Descriptor cd_S21158C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,240)];
    init_test(&cd_S21158C14, buf);
    S21158C14 *dp, &lv = *(dp=new (buf) S21158C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,956), "sizeof(S21158C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21158C14)");
    check_base_class_offset(lv, (S19674C5*)(S21158C9*), ABISELECT(1320,812), "S21158C14");
    check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C9*), ABISELECT(1320,812), "S21158C14");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(1320,812), "S21158C14");
    /*is_ambiguous_... S21158C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C9*), ABISELECT(1440,900), "S21158C14");
    check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C9*), ABISELECT(344,192), "S21158C14");
    check_base_class_offset(lv, (S21158C4*)(S21158C9*), ABISELECT(336,188), "S21158C14");
    check_base_class_offset(lv, (S21158C9*), ABISELECT(336,188), "S21158C14");
    /*is_ambiguous_... S21158C14::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(192,112), "S21158C14");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(8,4), "S21158C14");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*), 0, "S21158C14");
    check_field_offset(lv, s21158c14f0, ABISELECT(304,168), "S21158C14.s21158c14f0");
    check_field_offset(lv, s21158c14f1, ABISELECT(308,172), "S21158C14.s21158c14f1");
    set_bf_and_test(lv, s21158c14f2, ABISELECT(312,176), 0, 28, 1, "S21158C14");
    set_bf_and_test(lv, s21158c14f2, ABISELECT(312,176), 0, 28, hide_sll(1LL<<27), "S21158C14");
    check_field_offset(lv, s21158c14f3, ABISELECT(316,180), "S21158C14.s21158c14f3");
    check_field_offset(lv, s21158c14f4, ABISELECT(320,184), "S21158C14.s21158c14f4");
    test_class_info(&lv, &cd_S21158C14);
    dp->~S21158C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C14(Test_S21158C14, "S21158C14", ABISELECT(1552,956));

#else // __cplusplus

extern void _ZN9S21158C14C1Ev();
extern void _ZN9S21158C14D1Ev();
Name_Map name_map_S21158C14[] = {
  NSPAIR(_ZN9S21158C14C1Ev),
  NSPAIR(_ZN9S21158C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C9;
extern VTBL_ENTRY _ZTI8S21158C9[];
extern  VTBL_ENTRY _ZTV8S21158C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C9[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
static Base_Class bases_S21158C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(1320,812), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1440,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(344,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
    3, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21158C9,    ABISELECT(336,188), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21158C14[];
extern void _ZN9S21158C14D1Ev();
extern void _ZN9S21158C14D0Ev();
extern void ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev)();
extern void ABISELECT(_ZThn336_N9S21158C14D1Ev,_ZThn188_N9S21158C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev)();
extern void ABISELECT(_ZThn336_N9S21158C14D0Ev,_ZThn188_N9S21158C14D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
extern void ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev)();
extern void ABISELECT(_ZThn1320_N9S21158C14D1Ev,_ZThn812_N9S21158C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev)();
extern void ABISELECT(_ZThn1320_N9S21158C14D0Ev,_ZThn812_N9S21158C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21158C14[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&_ZN9S21158C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C14D0Ev,
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S21158C14[];
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__A1__9S21158C14[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21158C4D1Ev,_ZThn812_N8S21158C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21158C4D0Ev,_ZThn812_N8S21158C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__A1__9S21158C14[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void _ZN8S21158C9D1Ev();
extern void _ZN8S21158C9D0Ev();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C14[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&_ZN8S21158C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C48S21158C9__9S21158C14[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZThn984_N8S21158C4D1Ev,_ZThn624_N8S21158C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
extern void ABISELECT(_ZThn984_N8S21158C4D0Ev,_ZThn624_N8S21158C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C48S21158C9__9S21158C14[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev)();
extern void ABISELECT(_ZThn984_N8S21158C9D1Ev,_ZThn624_N8S21158C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev)();
extern void ABISELECT(_ZThn984_N8S21158C9D0Ev,_ZThn624_N8S21158C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C9__9S21158C14[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev),
};
static  VTT_ENTRY vtt_S21158C14[] = {
  {&(_ZTV9S21158C14[5]),  5,23},
  {&(_tg__ZTV8S21158C4__A1__9S21158C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__A1__9S21158C14[3]),  3,5},
  {&(_ZTV9S21158C14[14]),  14,23},
  {&(_ZTV9S21158C14[21]),  21,23},
  {&(_tg__ZTV8S21158C9__9S21158C14[4]),  4,8},
  {&(_tg__ZTV8S21158C48S21158C9__9S21158C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C48S21158C9__9S21158C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C9__9S21158C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21158C14[];
extern  VTBL_ENTRY _ZTV9S21158C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C14[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21158C9D0Ev,_ZThn624_N8S21158C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21158C9D1Ev,_ZThn624_N8S21158C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21158C4D0Ev,_ZThn624_N8S21158C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21158C4D0Ev,_ZThn812_N8S21158C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21158C4D1Ev,_ZThn624_N8S21158C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21158C4D1Ev,_ZThn812_N8S21158C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N9S21158C14D0Ev,_ZThn812_N9S21158C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N9S21158C14D1Ev,_ZThn812_N9S21158C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S21158C14D0Ev,_ZThn188_N9S21158C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S21158C14D1Ev,_ZThn188_N9S21158C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C14 = {  "S21158C14", // class name
  bases_S21158C14, 8,
  &(vtc_S21158C14[0]), // expected_vtbl_contents
  &(vtt_S21158C14[0]), // expected_vtt_contents
  ABISELECT(1552,956), // object size
  NSPAIRA(_ZTI9S21158C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21158C14),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21158C14),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C13  : S21158C8 , S21158C14 {
  ::S19674C18 s21158c13f0;
  int s21158c13f1;
  int s21158c13f2;
  int s21158c13f3;
  short s21158c13f4;
  virtual void  v7(); // _ZN9S21158C132v7Ev
  virtual void  v8(); // _ZN9S21158C132v8Ev
  ~S21158C13(); // tgen
  S21158C13(); // tgen
};
//SIG(-1 S21158C13) C1{ BC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC8{ VBC3 VBC5 BC4 v3 v4 FC4 FD[7] FC4 FL Fp[5]} vd v5 v6 Fi Fi FC5 Fc Fc Fi Fs FL} BC9{ VBC8 BC5 BC4 Fi Fi Fi:28 Fi Fl} v1 v2 FU10{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs}


void  S21158C13 ::v7(){vfunc_called(this, "_ZN9S21158C132v7Ev");}
void  S21158C13 ::v8(){vfunc_called(this, "_ZN9S21158C132v8Ev");}
S21158C13 ::~S21158C13(){ note_dtor("S21158C13", this);} // tgen
S21158C13 ::S21158C13(){ note_ctor("S21158C13", this);} // tgen

static void Test_S21158C13()
{
  extern Class_Descriptor cd_S21158C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(156,372)];
    init_test(&cd_S21158C13, buf);
    S21158C13 *dp, &lv = *(dp=new (buf) S21158C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2480,1484), "sizeof(S21158C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21158C13)");
    /*is_ambiguous_... S21158C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C8*), ABISELECT(672,380), "S21158C13");
    /*is_ambiguous_... S21158C13::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(672,380), "S21158C13");
    check_base_class_offset(lv, (S19674C5*)(S21158C9*), ABISELECT(672,380), "S21158C13");
    check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C9*), ABISELECT(672,380), "S21158C13");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C14*), ABISELECT(672,380), "S21158C13");
    /*is_ambiguous_... S21158C13::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(800,472), "S21158C13");
    /*is_ambiguous_... S21158C8::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C8*), ABISELECT(792,468), "S21158C13");
    check_base_class_offset(lv, (S21158C4*)(S21158C7*), ABISELECT(792,468), "S21158C13");
    /*is_ambiguous_... S21158C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C7*), ABISELECT(992,580), "S21158C13");
    check_base_class_offset(lv, (S21158C7*)(S21158C8*), ABISELECT(992,580), "S21158C13");
    /*is_ambiguous_... S21158C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C8*), ABISELECT(8,4), "S21158C13");
    /*is_ambiguous_... S21158C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C9*), ABISELECT(2360,1428), "S21158C13");
    check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C9*), ABISELECT(1384,808), "S21158C13");
    check_base_class_offset(lv, (S21158C4*)(S21158C9*), ABISELECT(1376,804), "S21158C13");
    check_base_class_offset(lv, (S21158C9*)(S21158C8*), ABISELECT(1376,804), "S21158C13");
    check_base_class_offset(lv, (S21158C9*)(S21158C14*), ABISELECT(1376,804), "S21158C13");
    check_base_class_offset(lv, (S21158C8*), 0, "S21158C13");
    /*is_ambiguous_... S21158C14::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C14*), ABISELECT(456,256), "S21158C13");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C14*), ABISELECT(272,148), "S21158C13");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C14*), ABISELECT(264,144), "S21158C13");
    check_base_class_offset(lv, (S21158C14*), ABISELECT(264,144), "S21158C13");
    check_field_offset(lv, s21158c13f0, ABISELECT(592,332), "S21158C13.s21158c13f0");
    check_field_offset(lv, s21158c13f1, ABISELECT(656,364), "S21158C13.s21158c13f1");
    check_field_offset(lv, s21158c13f2, ABISELECT(660,368), "S21158C13.s21158c13f2");
    check_field_offset(lv, s21158c13f3, ABISELECT(664,372), "S21158C13.s21158c13f3");
    check_field_offset(lv, s21158c13f4, ABISELECT(668,376), "S21158C13.s21158c13f4");
    test_class_info(&lv, &cd_S21158C13);
    dp->~S21158C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C13(Test_S21158C13, "S21158C13", ABISELECT(2480,1484));

#else // __cplusplus

extern void _ZN9S21158C13C1Ev();
extern void _ZN9S21158C13D1Ev();
Name_Map name_map_S21158C13[] = {
  NSPAIR(_ZN9S21158C13C1Ev),
  NSPAIR(_ZN9S21158C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21158C7;
extern VTBL_ENTRY _ZTI8S21158C7[];
extern  VTBL_ENTRY _ZTV8S21158C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C9;
extern VTBL_ENTRY _ZTI8S21158C9[];
extern  VTBL_ENTRY _ZTV8S21158C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C9[];
extern Class_Descriptor cd_S21158C8;
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C14;
extern VTBL_ENTRY _ZTI9S21158C14[];
extern  VTBL_ENTRY _ZTV9S21158C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C14[];
static Base_Class bases_S21158C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(800,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
    2, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(792,468), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(992,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21158C7,    ABISELECT(992,580), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2360,1428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1384,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(1376,804), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21158C9,    ABISELECT(1376,804), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21158C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(264,144), //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
    14, //immediately_derived
  0, 0},
  {&cd_S21158C14,    ABISELECT(264,144), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //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 _ZTI9S21158C13[];
extern void _ZN9S21158C13D1Ev();
extern void _ZN9S21158C13D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN9S21158C132v7Ev();
extern void _ZN9S21158C132v8Ev();
extern void ABISELECT(_ZThn264_N9S21158C13D1Ev,_ZThn144_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21158C13D0Ev,_ZThn144_N9S21158C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21158C13D1Ev,_ZTv0_n12_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn672_N9S21158C13D1Ev,_ZThn380_N9S21158C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C13D0Ev,_ZTv0_n12_N9S21158C13D0Ev)();
extern void ABISELECT(_ZThn672_N9S21158C13D0Ev,_ZThn380_N9S21158C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C13D1Ev,_ZTv0_n16_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn792_N9S21158C13D1Ev,_ZThn468_N9S21158C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C13D0Ev,_ZTv0_n16_N9S21158C13D0Ev)();
extern void ABISELECT(_ZThn792_N9S21158C13D0Ev,_ZThn468_N9S21158C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn992_N9S21158C13D1Ev,_ZThn580_N9S21158C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev)();
extern void ABISELECT(_ZThn992_N9S21158C13D0Ev,_ZThn580_N9S21158C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn1376_N9S21158C13D1Ev,_ZThn804_N9S21158C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev)();
extern void ABISELECT(_ZThn1376_N9S21158C13D0Ev,_ZThn804_N9S21158C13D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY vtc_S21158C13[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&_ZN9S21158C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C13D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v8Ev,
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C13D1Ev,_ZThn144_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C13D0Ev,_ZThn144_N9S21158C13D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C13D1Ev,_ZTv0_n12_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C13D0Ev,_ZTv0_n12_N9S21158C13D0Ev),
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C13D1Ev,_ZTv0_n16_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C13D0Ev,_ZTv0_n16_N9S21158C13D0Ev),
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev),
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern VTBL_ENTRY _ZTV9S21158C13[];
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C8__9S21158C13[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn672_N8S21158C8D1Ev,_ZThn380_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn672_N8S21158C8D0Ev,_ZThn380_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C8__9S21158C13[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn792_N8S21158C8D1Ev,_ZThn468_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn792_N8S21158C8D0Ev,_ZThn468_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C8__9S21158C13[] = {
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn992_N8S21158C8D1Ev,_ZThn580_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn992_N8S21158C8D0Ev,_ZThn580_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C8__9S21158C13[] = {
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn1376_N8S21158C8D1Ev,_ZThn804_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn1376_N8S21158C8D0Ev,_ZThn804_N8S21158C8D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C8__9S21158C13[] = {
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN9S21158C14D1Ev();
extern void _ZN9S21158C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C14__9S21158C13[] = {
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&_ZN9S21158C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C14D0Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C49S21158C14__A2__9S21158C13[] = {
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZThn408_N8S21158C4D1Ev,_ZThn236_N8S21158C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
extern void ABISELECT(_ZThn408_N8S21158C4D0Ev,_ZThn236_N8S21158C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C49S21158C14__A2__9S21158C13[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev)();
extern void ABISELECT(_ZThn1112_N9S21158C14D1Ev,_ZThn660_N9S21158C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev)();
extern void ABISELECT(_ZThn1112_N9S21158C14D0Ev,_ZThn660_N9S21158C14D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C14__9S21158C13[] = {
  0,
  0,
  ABISELECT(-1112,-660),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1112,-660),
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev)();
extern void ABISELECT(_ZThn408_N9S21158C14D1Ev,_ZThn236_N9S21158C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev)();
extern void ABISELECT(_ZThn408_N9S21158C14D0Ev,_ZThn236_N9S21158C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C14__9S21158C13[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev),
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C13[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__9S21158C13[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void _ZN8S21158C7D1Ev();
extern void _ZN8S21158C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C13[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&_ZN8S21158C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C7__9S21158C13[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C7__9S21158C13[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev),
};
extern void _ZN8S21158C9D1Ev();
extern void _ZN8S21158C9D0Ev();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C13[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&_ZN8S21158C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C48S21158C9__A1__9S21158C13[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C48S21158C9__A1__9S21158C13[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C9__9S21158C13[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev),
};
static  VTT_ENTRY vtt_S21158C13[] = {
  {&(_ZTV9S21158C13[7]),  7,49},
  {&(_tg__ZTV8S21158C8__9S21158C13[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21158C8__9S21158C13[3]),  3,5},
  {&(_tg__ZTV8S21158C4__8S21158C8__9S21158C13[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C8__9S21158C13[5]),  5,7},
  {&(_tg__ZTV8S21158C9__8S21158C8__9S21158C13[7]),  7,11},
  {&(_tg__ZTV9S21158C14__9S21158C13[5]),  5,7},
  {&(_tg__ZTV8S21158C49S21158C14__A2__9S21158C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C49S21158C14__A2__9S21158C13[3]),  3,5},
  {&(_tg__ZTV8S21158C9__9S21158C14__9S21158C13[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21158C14__9S21158C13[3]),  3,5},
  {&(_ZTV9S21158C13[23]),  23,49},
  {&(_ZTV9S21158C13[29]),  29,49},
  {&(_ZTV9S21158C13[36]),  36,49},
  {&(_ZTV9S21158C13[45]),  45,49},
  {&(_ZTV9S21158C13[18]),  18,49},
  {&(_tg__ZTV8S21158C4__9S21158C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__9S21158C13[3]),  3,5},
  {&(_tg__ZTV8S21158C7__9S21158C13[4]),  4,6},
  {&(_tg__ZTV8S21158C4__8S21158C7__9S21158C13[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21158C7__9S21158C13[3]),  3,5},
  {&(_tg__ZTV8S21158C9__9S21158C13[4]),  4,8},
  {&(_tg__ZTV8S21158C48S21158C9__A1__9S21158C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C48S21158C9__A1__9S21158C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C9__9S21158C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21158C13[];
extern  VTBL_ENTRY _ZTV9S21158C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C13[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21158C14D0Ev,_ZThn236_N9S21158C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21158C14D1Ev,_ZThn236_N9S21158C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N9S21158C14D0Ev,_ZThn660_N9S21158C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N9S21158C14D1Ev,_ZThn660_N9S21158C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21158C4D0Ev,_ZThn236_N8S21158C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21158C4D1Ev,_ZThn236_N8S21158C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N8S21158C8D0Ev,_ZThn804_N8S21158C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S21158C8D0Ev,_ZThn580_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N8S21158C8D1Ev,_ZThn804_N8S21158C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S21158C8D1Ev,_ZThn580_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S21158C8D0Ev,_ZThn468_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S21158C8D1Ev,_ZThn468_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S21158C8D0Ev,_ZThn380_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S21158C8D1Ev,_ZThn380_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21158C13D0Ev,_ZThn804_N9S21158C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21158C13D0Ev,_ZThn580_N9S21158C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21158C13D1Ev,_ZThn804_N9S21158C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21158C13D1Ev,_ZThn580_N9S21158C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C13D0Ev,_ZTv0_n16_N9S21158C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21158C13D0Ev,_ZThn468_N9S21158C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C13D1Ev,_ZTv0_n16_N9S21158C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21158C13D1Ev,_ZThn468_N9S21158C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C13D0Ev,_ZTv0_n12_N9S21158C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21158C13D0Ev,_ZThn380_N9S21158C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C13D1Ev,_ZTv0_n12_N9S21158C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21158C13D1Ev,_ZThn380_N9S21158C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C13 = {  "S21158C13", // class name
  bases_S21158C13, 15,
  &(vtc_S21158C13[0]), // expected_vtbl_contents
  &(vtt_S21158C13[0]), // expected_vtt_contents
  ABISELECT(2480,1484), // object size
  NSPAIRA(_ZTI9S21158C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21158C13),49, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21158C13),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C12  : S21158C13 , virtual S21158C8 , S21158C4 {
  virtual void  v9(); // _ZN9S21158C122v9Ev
  ~S21158C12(); // tgen
  S21158C12(); // tgen
};
//SIG(-1 S21158C12) C1{ BC2{ BC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ VBC4 BC6{ m Fp[14]} Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC8{ VBC5 BC4 Fc:6 Fc[8] FD FC6 FC6} BC6 VBC9{ VBC4 VBC6 BC5 v2 v3 FC5 FD[7] FC5 FL Fp[5]} vd v4 v5 Fi Fi FC6 Fc Fc Fi Fs FL} BC10{ VBC9 BC6 BC5 Fi Fi Fi:28 Fi Fl} v6 v7 FU11{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} VBC3 BC5 v1}


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

static void Test_S21158C12()
{
  extern Class_Descriptor cd_S21158C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(184,436)];
    init_test(&cd_S21158C12, buf);
    S21158C12 *dp, &lv = *(dp=new (buf) S21158C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2928,1740), "sizeof(S21158C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21158C12)");
    /*is_ambiguous_... S21158C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C8*)(S21158C13*), ABISELECT(864,492), "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(864,492), "S21158C12");
    check_base_class_offset(lv, (S19674C5*)(S21158C9*), ABISELECT(864,492), "S21158C12");
    check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C9*), ABISELECT(864,492), "S21158C12");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C14*)(S21158C13*), ABISELECT(864,492), "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C8*), ABISELECT(864,492), "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(864,492), "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(992,584), "S21158C12");
    /*is_ambiguous_... S21158C8::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C8*)(S21158C13*), ABISELECT(984,580), "S21158C12");
    check_base_class_offset(lv, (S21158C4*)(S21158C7*), ABISELECT(984,580), "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C8*), ABISELECT(984,580), "S21158C12");
    /*is_ambiguous_... S21158C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C7*), ABISELECT(1184,692), "S21158C12");
    check_base_class_offset(lv, (S21158C7*)(S21158C8*)(S21158C13*), ABISELECT(1184,692), "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C7*)(S21158C8*), ABISELECT(1184,692), "S21158C12");
    /*is_ambiguous_... S21158C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C8*)(S21158C13*), ABISELECT(8,4), "S21158C12");
    /*is_ambiguous_... S21158C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C9*), ABISELECT(2552,1540), "S21158C12");
    check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C9*), ABISELECT(1576,920), "S21158C12");
    check_base_class_offset(lv, (S21158C4*)(S21158C9*), ABISELECT(1568,916), "S21158C12");
    check_base_class_offset(lv, (S21158C9*)(S21158C8*)(S21158C13*), ABISELECT(1568,916), "S21158C12");
    check_base_class_offset(lv, (S21158C9*)(S21158C14*)(S21158C13*), ABISELECT(1568,916), "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C9*)(S21158C8*), ABISELECT(1568,916), "S21158C12");
    check_base_class_offset(lv, (S21158C8*)(S21158C13*), 0, "S21158C12");
    /*is_ambiguous_... S21158C14::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C14*)(S21158C13*), ABISELECT(456,256), "S21158C12");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C14*)(S21158C13*), ABISELECT(272,148), "S21158C12");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C14*)(S21158C13*), ABISELECT(264,144), "S21158C12");
    check_base_class_offset(lv, (S21158C14*)(S21158C13*), ABISELECT(264,144), "S21158C12");
    check_base_class_offset(lv, (S21158C13*), 0, "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C8*), ABISELECT(2672,1600), "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C8*), ABISELECT(2664,1596), "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(680,384), "S21158C12");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*), ABISELECT(672,380), "S21158C12");
    test_class_info(&lv, &cd_S21158C12);
    dp->~S21158C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C12(Test_S21158C12, "S21158C12", ABISELECT(2928,1740));

#else // __cplusplus

extern void _ZN9S21158C12C1Ev();
extern void _ZN9S21158C12D1Ev();
Name_Map name_map_S21158C12[] = {
  NSPAIR(_ZN9S21158C12C1Ev),
  NSPAIR(_ZN9S21158C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21158C7;
extern VTBL_ENTRY _ZTI8S21158C7[];
extern  VTBL_ENTRY _ZTV8S21158C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C9;
extern VTBL_ENTRY _ZTI8S21158C9[];
extern  VTBL_ENTRY _ZTV8S21158C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C9[];
extern Class_Descriptor cd_S21158C8;
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C14;
extern VTBL_ENTRY _ZTI9S21158C14[];
extern  VTBL_ENTRY _ZTV9S21158C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C14[];
extern Class_Descriptor cd_S21158C13;
extern VTBL_ENTRY _ZTI9S21158C13[];
extern  VTBL_ENTRY _ZTV9S21158C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C8;
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
static Base_Class bases_S21158C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(864,492), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(992,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
    2, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(984,580), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(1184,692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21158C7,    ABISELECT(1184,692), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2552,1540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1576,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(1568,916), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21158C9,    ABISELECT(1568,916), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21158C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(264,144), //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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21158C14,    ABISELECT(264,144), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21158C13,    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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(2672,1600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C8,    ABISELECT(2664,1596), //bcp->offset
    56, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(680,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
    19, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(672,380), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21158C12[];
extern void _ZN9S21158C12D1Ev();
extern void _ZN9S21158C12D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN9S21158C132v7Ev();
extern void _ZN9S21158C132v8Ev();
extern void _ZN9S21158C122v9Ev();
extern void ABISELECT(_ZThn264_N9S21158C12D1Ev,_ZThn144_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21158C12D0Ev,_ZThn144_N9S21158C12D0Ev)();
extern void ABISELECT(_ZThn672_N9S21158C12D1Ev,_ZThn380_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn672_N9S21158C12D0Ev,_ZThn380_N9S21158C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21158C12D1Ev,_ZTv0_n12_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn864_N9S21158C12D1Ev,_ZThn492_N9S21158C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C12D0Ev,_ZTv0_n12_N9S21158C12D0Ev)();
extern void ABISELECT(_ZThn864_N9S21158C12D0Ev,_ZThn492_N9S21158C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C12D1Ev,_ZTv0_n16_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn984_N9S21158C12D1Ev,_ZThn580_N9S21158C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C12D0Ev,_ZTv0_n16_N9S21158C12D0Ev)();
extern void ABISELECT(_ZThn984_N9S21158C12D0Ev,_ZThn580_N9S21158C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn1184_N9S21158C12D1Ev,_ZThn692_N9S21158C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev)();
extern void ABISELECT(_ZThn1184_N9S21158C12D0Ev,_ZThn692_N9S21158C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn1568_N9S21158C12D1Ev,_ZThn916_N9S21158C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev)();
extern void ABISELECT(_ZThn1568_N9S21158C12D0Ev,_ZThn916_N9S21158C12D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
extern void ABISELECT(_ZTv0_n64_N9S21158C12D1Ev,_ZTv0_n32_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn2664_N9S21158C12D1Ev,_ZThn1596_N9S21158C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21158C12D0Ev,_ZTv0_n32_N9S21158C12D0Ev)();
extern void ABISELECT(_ZThn2664_N9S21158C12D0Ev,_ZThn1596_N9S21158C12D0Ev)() __attribute__((weak));
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY vtc_S21158C12[] = {
  ABISELECT(2664,1596),
  ABISELECT(2552,1540),
  ABISELECT(1568,916),
  ABISELECT(1184,692),
  ABISELECT(984,580),
  ABISELECT(864,492),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&_ZN9S21158C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C12D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21158C122v9Ev,
  ABISELECT(2288,1396),
  ABISELECT(1304,772),
  ABISELECT(600,348),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C12D1Ev,_ZThn144_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C12D0Ev,_ZThn144_N9S21158C12D0Ev),
  ABISELECT(192,112),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21158C12D1Ev,_ZThn380_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21158C12D0Ev,_ZThn380_N9S21158C12D0Ev),
  ABISELECT(-864,-492),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C12D1Ev,_ZTv0_n12_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C12D0Ev,_ZTv0_n12_N9S21158C12D0Ev),
  ABISELECT(-984,-580),
  ABISELECT(-120,-88),
  ABISELECT(-984,-580),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C12D1Ev,_ZTv0_n16_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C12D0Ev,_ZTv0_n16_N9S21158C12D0Ev),
  ABISELECT(-1184,-692),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-1184,-692),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev),
  0,
  0,
  ABISELECT(-1568,-916),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1568,-916),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
  0,
  0,
  ABISELECT(-2664,-1596),
  ABISELECT(-112,-56),
  ABISELECT(-1096,-680),
  ABISELECT(-1480,-904),
  ABISELECT(-1680,-1016),
  ABISELECT(-1800,-1104),
  ABISELECT(-2664,-1596),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21158C12D1Ev,_ZTv0_n32_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21158C12D0Ev,_ZTv0_n32_N9S21158C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern VTBL_ENTRY _ZTV9S21158C12[];
extern void _ZN9S21158C13D1Ev();
extern void _ZN9S21158C13D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN9S21158C132v7Ev();
extern void _ZN9S21158C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C13__9S21158C12[] = {
  ABISELECT(2552,1540),
  ABISELECT(1568,916),
  ABISELECT(1184,692),
  ABISELECT(984,580),
  ABISELECT(864,492),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&_ZN9S21158C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C13D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v8Ev,
};
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C89S21158C13__9S21158C12[] = {
  ABISELECT(2552,1540),
  ABISELECT(1568,916),
  ABISELECT(1184,692),
  ABISELECT(984,580),
  ABISELECT(864,492),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn864_N8S21158C8D1Ev,_ZThn492_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn864_N8S21158C8D0Ev,_ZThn492_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C89S21158C13__9S21158C12[] = {
  ABISELECT(-864,-492),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S21158C8D1Ev,_ZThn580_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S21158C8D0Ev,_ZThn580_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C89S21158C13__9S21158C12[] = {
  ABISELECT(-984,-580),
  ABISELECT(-120,-88),
  ABISELECT(-984,-580),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn1184_N8S21158C8D1Ev,_ZThn692_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn1184_N8S21158C8D0Ev,_ZThn692_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C89S21158C13__9S21158C12[] = {
  ABISELECT(-1184,-692),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-1184,-692),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn1568_N8S21158C8D1Ev,_ZThn916_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn1568_N8S21158C8D0Ev,_ZThn916_N8S21158C8D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C89S21158C13__9S21158C12[] = {
  0,
  0,
  ABISELECT(-1568,-916),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1568,-916),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN9S21158C14D1Ev();
extern void _ZN9S21158C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C149S21158C13__9S21158C12[] = {
  ABISELECT(2288,1396),
  ABISELECT(1304,772),
  ABISELECT(600,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&_ZN9S21158C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C14D0Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C49S21158C149S21158C13__A2__9S21158C12[] = {
  ABISELECT(600,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZThn600_N8S21158C4D1Ev,_ZThn348_N8S21158C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
extern void ABISELECT(_ZThn600_N8S21158C4D0Ev,_ZThn348_N8S21158C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C49S21158C149S21158C13__A2__9S21158C12[] = {
  ABISELECT(-600,-348),
  ABISELECT(-600,-348),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev)();
extern void ABISELECT(_ZThn1304_N9S21158C14D1Ev,_ZThn772_N9S21158C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev)();
extern void ABISELECT(_ZThn1304_N9S21158C14D0Ev,_ZThn772_N9S21158C14D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C149S21158C13__9S21158C12[] = {
  0,
  0,
  ABISELECT(-1304,-772),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1304,-772),
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev)();
extern void ABISELECT(_ZThn600_N9S21158C14D1Ev,_ZThn348_N9S21158C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev)();
extern void ABISELECT(_ZThn600_N9S21158C14D0Ev,_ZThn348_N9S21158C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C149S21158C13__9S21158C12[] = {
  ABISELECT(-600,-348),
  ABISELECT(-600,-348),
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21158C13D1Ev,_ZTv0_n12_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn864_N9S21158C13D1Ev,_ZThn492_N9S21158C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C13D0Ev,_ZTv0_n12_N9S21158C13D0Ev)();
extern void ABISELECT(_ZThn864_N9S21158C13D0Ev,_ZThn492_N9S21158C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C13__9S21158C12[] = {
  ABISELECT(-864,-492),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C13D1Ev,_ZTv0_n12_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C13D0Ev,_ZTv0_n12_N9S21158C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21158C13D1Ev,_ZTv0_n16_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn984_N9S21158C13D1Ev,_ZThn580_N9S21158C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C13D0Ev,_ZTv0_n16_N9S21158C13D0Ev)();
extern void ABISELECT(_ZThn984_N9S21158C13D0Ev,_ZThn580_N9S21158C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C13__9S21158C12[] = {
  ABISELECT(-984,-580),
  ABISELECT(-120,-88),
  ABISELECT(-984,-580),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C13D1Ev,_ZTv0_n16_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C13D0Ev,_ZTv0_n16_N9S21158C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn1184_N9S21158C13D1Ev,_ZThn692_N9S21158C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev)();
extern void ABISELECT(_ZThn1184_N9S21158C13D0Ev,_ZThn692_N9S21158C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C13__9S21158C12[] = {
  ABISELECT(-1184,-692),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-1184,-692),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn1568_N9S21158C13D1Ev,_ZThn916_N9S21158C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev)();
extern void ABISELECT(_ZThn1568_N9S21158C13D0Ev,_ZThn916_N9S21158C13D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C13__9S21158C12[] = {
  0,
  0,
  ABISELECT(-1568,-916),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1568,-916),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZThn264_N9S21158C13D1Ev,_ZThn144_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21158C13D0Ev,_ZThn144_N9S21158C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21158C14__9S21158C13__9S21158C12[] = {
  ABISELECT(2288,1396),
  ABISELECT(1304,772),
  ABISELECT(600,348),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C13D1Ev,_ZThn144_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C13D0Ev,_ZThn144_N9S21158C13D0Ev),
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__A__9S21158C12[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZThn192_N8S21158C4D1Ev,_ZThn112_N8S21158C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
extern void ABISELECT(_ZThn192_N8S21158C4D0Ev,_ZThn112_N8S21158C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__A__9S21158C12[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C12[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__9S21158C12[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void _ZN8S21158C7D1Ev();
extern void _ZN8S21158C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C12[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&_ZN8S21158C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C7__9S21158C12[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C7__9S21158C12[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev),
};
extern void _ZN8S21158C9D1Ev();
extern void _ZN8S21158C9D0Ev();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C12[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&_ZN8S21158C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C48S21158C9__A1__9S21158C12[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C48S21158C9__A1__9S21158C12[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C9__9S21158C12[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev),
};
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C8__A1__9S21158C12[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1096,-680),
  ABISELECT(-1480,-904),
  ABISELECT(-1680,-1016),
  ABISELECT(-1800,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C8__A1__9S21158C12[] = {
  ABISELECT(1800,1104),
  ABISELECT(1800,1104),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C8__A1__9S21158C12[] = {
  ABISELECT(1680,1016),
  ABISELECT(-120,-88),
  ABISELECT(1680,1016),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C8__A1__9S21158C12[] = {
  ABISELECT(1480,904),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(1480,904),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C8__A1__9S21158C12[] = {
  0,
  0,
  ABISELECT(1096,680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1096,680),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
static  VTT_ENTRY vtt_S21158C12[] = {
  {&(_ZTV9S21158C12[8]),  8,70},
  {&(_tg__ZTV9S21158C13__9S21158C12[7]),  7,13},
  {&(_tg__ZTV8S21158C89S21158C13__9S21158C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21158C89S21158C13__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S21158C4__8S21158C89S21158C13__9S21158C12[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C89S21158C13__9S21158C12[5]),  5,7},
  {&(_tg__ZTV8S21158C9__8S21158C89S21158C13__9S21158C12[7]),  7,11},
  {&(_tg__ZTV9S21158C149S21158C13__9S21158C12[5]),  5,7},
  {&(_tg__ZTV8S21158C49S21158C149S21158C13__A2__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C49S21158C149S21158C13__A2__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S21158C9__9S21158C149S21158C13__9S21158C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21158C149S21158C13__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21158C13__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S21158C4__9S21158C13__9S21158C12[4]),  4,6},
  {&(_tg__ZTV8S21158C7__9S21158C13__9S21158C12[5]),  5,7},
  {&(_tg__ZTV8S21158C9__9S21158C13__9S21158C12[7]),  7,11},
  {&(_tg__ZTV9S21158C14__9S21158C13__9S21158C12[5]),  5,7},
  {&(_tg__ZTV8S21158C4__A__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__A__9S21158C12[3]),  3,5},
  {&(_ZTV9S21158C12[30]),  30,70},
  {&(_ZTV9S21158C12[36]),  36,70},
  {&(_ZTV9S21158C12[43]),  43,70},
  {&(_ZTV9S21158C12[52]),  52,70},
  {&(_ZTV9S21158C12[20]),  20,70},
  {&(_ZTV9S21158C12[66]),  66,70},
  {&(_ZTV9S21158C12[25]),  25,70},
  {&(_tg__ZTV8S21158C4__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S21158C7__9S21158C12[4]),  4,6},
  {&(_tg__ZTV8S21158C4__8S21158C7__9S21158C12[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21158C7__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S21158C9__9S21158C12[4]),  4,8},
  {&(_tg__ZTV8S21158C48S21158C9__A1__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C48S21158C9__A1__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C9__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S21158C8__A1__9S21158C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21158C8__A1__9S21158C12[3]),  3,5},
  {&(_tg__ZTV8S21158C4__8S21158C8__A1__9S21158C12[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C8__A1__9S21158C12[5]),  5,7},
  {&(_tg__ZTV8S21158C9__8S21158C8__A1__9S21158C12[7]),  7,11},
};
extern VTBL_ENTRY _ZTI9S21158C12[];
extern  VTBL_ENTRY _ZTV9S21158C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C12[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S21158C13D0Ev,_ZThn916_N9S21158C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S21158C13D0Ev,_ZThn692_N9S21158C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S21158C13D1Ev,_ZThn916_N9S21158C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S21158C13D1Ev,_ZThn692_N9S21158C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C13D0Ev,_ZTv0_n16_N9S21158C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21158C13D0Ev,_ZThn580_N9S21158C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C13D1Ev,_ZTv0_n16_N9S21158C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21158C13D1Ev,_ZThn580_N9S21158C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C13D0Ev,_ZTv0_n12_N9S21158C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21158C13D0Ev,_ZThn492_N9S21158C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C13D1Ev,_ZTv0_n12_N9S21158C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21158C13D1Ev,_ZThn492_N9S21158C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn600_N9S21158C14D0Ev,_ZThn348_N9S21158C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn600_N9S21158C14D1Ev,_ZThn348_N9S21158C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1304_N9S21158C14D0Ev,_ZThn772_N9S21158C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1304_N9S21158C14D1Ev,_ZThn772_N9S21158C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21158C4D0Ev,_ZThn112_N8S21158C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn600_N8S21158C4D0Ev,_ZThn348_N8S21158C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21158C4D1Ev,_ZThn112_N8S21158C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn600_N8S21158C4D1Ev,_ZThn348_N8S21158C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S21158C8D0Ev,_ZThn916_N8S21158C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N8S21158C8D0Ev,_ZThn692_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S21158C8D1Ev,_ZThn916_N8S21158C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N8S21158C8D1Ev,_ZThn692_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21158C8D0Ev,_ZThn580_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21158C8D1Ev,_ZThn580_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S21158C8D0Ev,_ZThn492_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S21158C8D1Ev,_ZThn492_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21158C12D0Ev,_ZTv0_n32_N9S21158C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2664_N9S21158C12D0Ev,_ZThn1596_N9S21158C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21158C12D1Ev,_ZTv0_n32_N9S21158C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2664_N9S21158C12D1Ev,_ZThn1596_N9S21158C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S21158C12D0Ev,_ZThn916_N9S21158C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S21158C12D0Ev,_ZThn692_N9S21158C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S21158C12D1Ev,_ZThn916_N9S21158C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S21158C12D1Ev,_ZThn692_N9S21158C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C12D0Ev,_ZTv0_n16_N9S21158C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21158C12D0Ev,_ZThn580_N9S21158C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C12D1Ev,_ZTv0_n16_N9S21158C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21158C12D1Ev,_ZThn580_N9S21158C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C12D0Ev,_ZTv0_n12_N9S21158C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21158C12D0Ev,_ZThn492_N9S21158C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C12D1Ev,_ZTv0_n12_N9S21158C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21158C12D1Ev,_ZThn492_N9S21158C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C12 = {  "S21158C12", // class name
  bases_S21158C12, 20,
  &(vtc_S21158C12[0]), // expected_vtbl_contents
  &(vtt_S21158C12[0]), // expected_vtt_contents
  ABISELECT(2928,1740), // object size
  NSPAIRA(_ZTI9S21158C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21158C12),70, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21158C12),40, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C16  : virtual S19674C5 {
  virtual void  v10(); // _ZN9S21158C163v10Ev
  ~S21158C16(); // tgen
  S21158C16(); // tgen
};
//SIG(-1 S21158C16) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1}


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

static void Test_S21158C16()
{
  extern Class_Descriptor cd_S21158C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S21158C16, buf);
    S21158C16 *dp, &lv = *(dp=new (buf) S21158C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S21158C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21158C16)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(8,4), "S21158C16");
    test_class_info(&lv, &cd_S21158C16);
    dp->~S21158C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C16(Test_S21158C16, "S21158C16", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN9S21158C16C1Ev();
extern void _ZN9S21158C16D1Ev();
Name_Map name_map_S21158C16[] = {
  NSPAIR(_ZN9S21158C16C1Ev),
  NSPAIR(_ZN9S21158C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21158C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21158C16[];
extern void _ZN9S21158C163v10Ev();
extern void _ZN9S21158C16D1Ev();
extern void _ZN9S21158C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21158C16D1Ev,_ZTv0_n12_N9S21158C16D1Ev)();
extern void ABISELECT(_ZThn8_N9S21158C16D1Ev,_ZThn4_N9S21158C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C16D0Ev,_ZTv0_n12_N9S21158C16D0Ev)();
extern void ABISELECT(_ZThn8_N9S21158C16D0Ev,_ZThn4_N9S21158C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21158C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C16[0]),
  (VTBL_ENTRY)&_ZN9S21158C163v10Ev,
  (VTBL_ENTRY)&_ZN9S21158C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C16D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21158C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C16D1Ev,_ZTv0_n12_N9S21158C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C16D0Ev,_ZTv0_n12_N9S21158C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21158C16[];
static  VTT_ENTRY vtt_S21158C16[] = {
  {&(_ZTV9S21158C16[3]),  3,11},
  {&(_ZTV9S21158C16[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S21158C16[];
extern  VTBL_ENTRY _ZTV9S21158C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C16[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C16D0Ev,_ZTv0_n12_N9S21158C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21158C16D0Ev,_ZThn4_N9S21158C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C16D1Ev,_ZTv0_n12_N9S21158C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21158C16D1Ev,_ZThn4_N9S21158C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C16 = {  "S21158C16", // class name
  bases_S21158C16, 1,
  &(vtc_S21158C16[0]), // expected_vtbl_contents
  &(vtt_S21158C16[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI9S21158C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21158C16),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21158C16),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C10  : S21158C11 , virtual S21158C12 {
  long s21158c10f0;
  ::S21158C8 s21158c10f1;
  int s21158c10f2;
  long s21158c10f3;
  int s21158c10f4;
  int s21158c10f5;
  ::S21158C16 s21158c10f6;
  long double s21158c10f7[7];
  ::S21158C8 s21158c10f8;
  int s21158c10f9:32;
  long s21158c10f10;
  void *s21158c10f11;
  void *s21158c10f12;
  ~S21158C10(); // tgen
  S21158C10(); // tgen
};
//SIG(-1 S21158C10) C1{ BC2{ BC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ VBC4 BC6{ m Fp[14]} Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC8{ VBC5 BC4 Fc:6 Fc[8] FD FC6 FC6} BC6 VBC9{ VBC4 VBC6 BC5 v1 v2 FC5 FD[7] FC5 FL Fp[5]} vd v3 v4 Fi Fi FC6 Fc Fc Fi Fs FL} vd Fs Fp Fi FL[10] Fc Fs Fs Fi} VBC10{ BC11{ BC3 BC12{ VBC9 BC6 BC5 Fi Fi Fi:28 Fi Fl} v5 v6 FU13{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} VBC3 BC5 v7} Fl FC3 Fi Fl Fi Fi FC14{ VBC4 v8} FD[7] FC3 Fi:32 Fl Fp Fp}


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

static void Test_S21158C10()
{
  extern Class_Descriptor cd_S21158C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(487,1175)];
    init_test(&cd_S21158C10, buf);
    S21158C10 *dp, &lv = *(dp=new (buf) S21158C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7776,4696), "sizeof(S21158C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21158C10)");
    /*is_ambiguous_... S21158C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C8*)(S21158C11*), ABISELECT(4832,2956), "S21158C10");
    /*is_ambiguous_... S21158C10::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(4832,2956), "S21158C10");
    check_base_class_offset(lv, (S19674C5*)(S21158C9*), ABISELECT(4832,2956), "S21158C10");
    check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C9*), ABISELECT(4832,2956), "S21158C10");
    /*is_ambiguous_... S21158C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(4832,2956), "S21158C10");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(4832,2956), "S21158C10");
    /*is_ambiguous_... S21158C10::S21158C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C8*), ABISELECT(4832,2956), "S21158C10");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C12*), ABISELECT(4832,2956), "S21158C10");
    /*is_ambiguous_... S21158C10::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(4960,3048), "S21158C10");
    /*is_ambiguous_... S21158C8::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C8*)(S21158C11*), ABISELECT(4952,3044), "S21158C10");
    check_base_class_offset(lv, (S21158C4*)(S21158C7*), ABISELECT(4952,3044), "S21158C10");
    /*is_ambiguous_... S21158C8::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(4952,3044), "S21158C10");
    /*is_ambiguous_... S21158C10::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C8*), ABISELECT(4952,3044), "S21158C10");
    /*is_ambiguous_... S21158C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C7*), ABISELECT(5152,3156), "S21158C10");
    check_base_class_offset(lv, (S21158C7*)(S21158C8*)(S21158C11*), ABISELECT(5152,3156), "S21158C10");
    check_base_class_offset(lv, (S21158C7*)(S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(5152,3156), "S21158C10");
    /*is_ambiguous_... S21158C10::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C7*)(S21158C8*), ABISELECT(5152,3156), "S21158C10");
    /*is_ambiguous_... S21158C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C8*)(S21158C11*), ABISELECT(8,4), "S21158C10");
    /*is_ambiguous_... S21158C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C9*), ABISELECT(6520,4004), "S21158C10");
    check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C9*), ABISELECT(5544,3384), "S21158C10");
    check_base_class_offset(lv, (S21158C4*)(S21158C9*), ABISELECT(5536,3380), "S21158C10");
    check_base_class_offset(lv, (S21158C9*)(S21158C8*)(S21158C11*), ABISELECT(5536,3380), "S21158C10");
    check_base_class_offset(lv, (S21158C9*)(S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(5536,3380), "S21158C10");
    check_base_class_offset(lv, (S21158C9*)(S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(5536,3380), "S21158C10");
    /*is_ambiguous_... S21158C10::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C9*)(S21158C8*), ABISELECT(5536,3380), "S21158C10");
    check_base_class_offset(lv, (S21158C8*)(S21158C11*), 0, "S21158C10");
    check_base_class_offset(lv, (S21158C11*), 0, "S21158C10");
    /*is_ambiguous_... S21158C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(6648,4064), "S21158C10");
    check_base_class_offset(lv, (S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(6640,4060), "S21158C10");
    /*is_ambiguous_... S21158C14::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(7096,4316), "S21158C10");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(6912,4208), "S21158C10");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(6904,4204), "S21158C10");
    check_base_class_offset(lv, (S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(6904,4204), "S21158C10");
    check_base_class_offset(lv, (S21158C13*)(S21158C12*), ABISELECT(6640,4060), "S21158C10");
    /*is_ambiguous_... S21158C10::S21158C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C8*), ABISELECT(7512,4556), "S21158C10");
    /*is_ambiguous_... S21158C12::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C8*)(S21158C12*), ABISELECT(7504,4552), "S21158C10");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C12*), ABISELECT(7320,4444), "S21158C10");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C12*), ABISELECT(7312,4440), "S21158C10");
    check_base_class_offset(lv, (S21158C12*), ABISELECT(6640,4060), "S21158C10");
    check_field_offset(lv, s21158c10f0, ABISELECT(384,248), "S21158C10.s21158c10f0");
    check_field_offset(lv, s21158c10f1, ABISELECT(400,252), "S21158C10.s21158c10f1");
    check_field_offset(lv, s21158c10f2, ABISELECT(2464,1500), "S21158C10.s21158c10f2");
    check_field_offset(lv, s21158c10f3, ABISELECT(2472,1504), "S21158C10.s21158c10f3");
    check_field_offset(lv, s21158c10f4, ABISELECT(2480,1508), "S21158C10.s21158c10f4");
    check_field_offset(lv, s21158c10f5, ABISELECT(2484,1512), "S21158C10.s21158c10f5");
    check_field_offset(lv, s21158c10f6, ABISELECT(2488,1516), "S21158C10.s21158c10f6");
    check_field_offset(lv, s21158c10f7, ABISELECT(2624,1608), "S21158C10.s21158c10f7");
    check_field_offset(lv, s21158c10f8, ABISELECT(2736,1692), "S21158C10.s21158c10f8");
    set_bf_and_test(lv, s21158c10f9, ABISELECT(4800,2940), 0, 32, 1, "S21158C10");
    set_bf_and_test(lv, s21158c10f9, ABISELECT(4800,2940), 0, 32, hide_sll(1LL<<31), "S21158C10");
    check_field_offset(lv, s21158c10f10, ABISELECT(4808,2944), "S21158C10.s21158c10f10");
    check_field_offset(lv, s21158c10f11, ABISELECT(4816,2948), "S21158C10.s21158c10f11");
    check_field_offset(lv, s21158c10f12, ABISELECT(4824,2952), "S21158C10.s21158c10f12");
    test_class_info(&lv, &cd_S21158C10);
    dp->~S21158C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C10(Test_S21158C10, "S21158C10", ABISELECT(7776,4696));

#else // __cplusplus

extern void _ZN9S21158C10C1Ev();
extern void _ZN9S21158C10D1Ev();
Name_Map name_map_S21158C10[] = {
  NSPAIR(_ZN9S21158C10C1Ev),
  NSPAIR(_ZN9S21158C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21158C7;
extern VTBL_ENTRY _ZTI8S21158C7[];
extern  VTBL_ENTRY _ZTV8S21158C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C9;
extern VTBL_ENTRY _ZTI8S21158C9[];
extern  VTBL_ENTRY _ZTV8S21158C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C9[];
extern Class_Descriptor cd_S21158C8;
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
extern Class_Descriptor cd_S21158C11;
extern VTBL_ENTRY _ZTI9S21158C11[];
extern  VTBL_ENTRY _ZTV9S21158C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C11[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C8;
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C14;
extern VTBL_ENTRY _ZTI9S21158C14[];
extern  VTBL_ENTRY _ZTV9S21158C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C14[];
extern Class_Descriptor cd_S21158C13;
extern VTBL_ENTRY _ZTI9S21158C13[];
extern  VTBL_ENTRY _ZTV9S21158C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C8;
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C12;
extern VTBL_ENTRY _ZTI9S21158C12[];
extern  VTBL_ENTRY _ZTV9S21158C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C12[];
static Base_Class bases_S21158C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(4832,2956), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4960,3048), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(4952,3044), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(5152,3156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21158C7,    ABISELECT(5152,3156), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(6520,4004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(5544,3384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(5536,3380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21158C9,    ABISELECT(5536,3380), //bcp->offset
    31, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21158C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21158C11,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(6648,4064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C8,    ABISELECT(6640,4060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(7096,4316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(6912,4208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C4,    ABISELECT(6904,4204), //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
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21158C14,    ABISELECT(6904,4204), //bcp->offset
    63, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21158C13,    ABISELECT(6640,4060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(7512,4556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C8,    ABISELECT(7504,4552), //bcp->offset
    75, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(7320,4444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C4,    ABISELECT(7312,4440), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21158C12,    ABISELECT(6640,4060), //bcp->offset
    42, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21158C10[];
extern void _ZN9S21158C10D1Ev();
extern void _ZN9S21158C10D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void ABISELECT(_ZTv0_n24_N9S21158C10D1Ev,_ZTv0_n12_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn4832_N9S21158C10D1Ev,_ZThn2956_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C10D0Ev,_ZTv0_n12_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn4832_N9S21158C10D0Ev,_ZThn2956_N9S21158C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C10D1Ev,_ZTv0_n16_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn4952_N9S21158C10D1Ev,_ZThn3044_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C10D0Ev,_ZTv0_n16_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn4952_N9S21158C10D0Ev,_ZThn3044_N9S21158C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C10D1Ev,_ZTv0_n20_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn5152_N9S21158C10D1Ev,_ZThn3156_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C10D0Ev,_ZTv0_n20_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn5152_N9S21158C10D0Ev,_ZThn3156_N9S21158C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C10D1Ev,_ZTv0_n20_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn5536_N9S21158C10D1Ev,_ZThn3380_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C10D0Ev,_ZTv0_n20_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn5536_N9S21158C10D0Ev,_ZThn3380_N9S21158C10D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
extern void ABISELECT(_ZTv0_n72_N9S21158C10D1Ev,_ZTv0_n36_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn6640_N9S21158C10D1Ev,_ZThn4060_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21158C10D0Ev,_ZTv0_n36_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn6640_N9S21158C10D0Ev,_ZThn4060_N9S21158C10D0Ev)() __attribute__((weak));
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN9S21158C132v7Ev();
extern void _ZN9S21158C132v8Ev();
extern void _ZN9S21158C122v9Ev();
extern void ABISELECT(_ZTvn264_n72_N9S21158C10D1Ev,_ZTvn144_n36_N9S21158C10D1Ev)();
extern void ABISELECT(_ZTvn264_n72_N9S21158C10D0Ev,_ZTvn144_n36_N9S21158C10D0Ev)();
extern void ABISELECT(_ZTvn672_n72_N9S21158C10D1Ev,_ZTvn380_n36_N9S21158C10D1Ev)();
extern void ABISELECT(_ZTvn672_n72_N9S21158C10D0Ev,_ZTvn380_n36_N9S21158C10D0Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21158C10D1Ev,_ZTv0_n32_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn7504_N9S21158C10D1Ev,_ZThn4552_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21158C10D0Ev,_ZTv0_n32_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn7504_N9S21158C10D0Ev,_ZThn4552_N9S21158C10D0Ev)() __attribute__((weak));
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY vtc_S21158C10[] = {
  ABISELECT(7504,4552),
  ABISELECT(6640,4060),
  ABISELECT(6520,4004),
  ABISELECT(5536,3380),
  ABISELECT(5152,3156),
  ABISELECT(4952,3044),
  ABISELECT(4832,2956),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&_ZN9S21158C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C10D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  ABISELECT(-4832,-2956),
  ABISELECT(-4832,-2956),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C10D1Ev,_ZTv0_n12_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C10D0Ev,_ZTv0_n12_N9S21158C10D0Ev),
  ABISELECT(-4952,-3044),
  ABISELECT(-120,-88),
  ABISELECT(-4952,-3044),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C10D1Ev,_ZTv0_n16_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C10D0Ev,_ZTv0_n16_N9S21158C10D0Ev),
  ABISELECT(-5152,-3156),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-5152,-3156),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C10D1Ev,_ZTv0_n20_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C10D0Ev,_ZTv0_n20_N9S21158C10D0Ev),
  0,
  0,
  ABISELECT(-5536,-3380),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-5536,-3380),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C10D1Ev,_ZTv0_n20_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C10D0Ev,_ZTv0_n20_N9S21158C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-6640,-4060),
  ABISELECT(864,492),
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1488,-904),
  ABISELECT(-1688,-1016),
  ABISELECT(-1808,-1104),
  ABISELECT(-6640,-4060),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21158C10D1Ev,_ZTv0_n36_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21158C10D0Ev,_ZTv0_n36_N9S21158C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21158C122v9Ev,
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2072,-1248),
  ABISELECT(-6904,-4204),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S21158C10D1Ev,_ZTvn144_n36_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S21158C10D0Ev,_ZTvn144_n36_N9S21158C10D0Ev),
  ABISELECT(-2480,-1484),
  ABISELECT(-7312,-4440),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S21158C10D1Ev,_ZTvn380_n36_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S21158C10D0Ev,_ZTvn380_n36_N9S21158C10D0Ev),
  0,
  0,
  ABISELECT(-7504,-4552),
  ABISELECT(-984,-548),
  ABISELECT(-1968,-1172),
  ABISELECT(-2352,-1396),
  ABISELECT(-2552,-1508),
  ABISELECT(-2672,-1596),
  ABISELECT(-7504,-4552),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21158C10D1Ev,_ZTv0_n32_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21158C10D0Ev,_ZTv0_n32_N9S21158C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern VTBL_ENTRY _ZTV9S21158C10[];
extern void _ZN9S21158C11D1Ev();
extern void _ZN9S21158C11D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C11__9S21158C10[] = {
  ABISELECT(6520,4004),
  ABISELECT(5536,3380),
  ABISELECT(5152,3156),
  ABISELECT(4952,3044),
  ABISELECT(4832,2956),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&_ZN9S21158C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C11D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C89S21158C11__9S21158C10[] = {
  ABISELECT(6520,4004),
  ABISELECT(5536,3380),
  ABISELECT(5152,3156),
  ABISELECT(4952,3044),
  ABISELECT(4832,2956),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn4832_N8S21158C8D1Ev,_ZThn2956_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn4832_N8S21158C8D0Ev,_ZThn2956_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C89S21158C11__9S21158C10[] = {
  ABISELECT(-4832,-2956),
  ABISELECT(-4832,-2956),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn4952_N8S21158C8D1Ev,_ZThn3044_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn4952_N8S21158C8D0Ev,_ZThn3044_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C89S21158C11__9S21158C10[] = {
  ABISELECT(-4952,-3044),
  ABISELECT(-120,-88),
  ABISELECT(-4952,-3044),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn5152_N8S21158C8D1Ev,_ZThn3156_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn5152_N8S21158C8D0Ev,_ZThn3156_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C89S21158C11__9S21158C10[] = {
  ABISELECT(-5152,-3156),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-5152,-3156),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn5536_N8S21158C8D1Ev,_ZThn3380_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn5536_N8S21158C8D0Ev,_ZThn3380_N8S21158C8D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C89S21158C11__9S21158C10[] = {
  0,
  0,
  ABISELECT(-5536,-3380),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-5536,-3380),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21158C11D1Ev,_ZTv0_n12_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn4832_N9S21158C11D1Ev,_ZThn2956_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C11D0Ev,_ZTv0_n12_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn4832_N9S21158C11D0Ev,_ZThn2956_N9S21158C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C11__9S21158C10[] = {
  ABISELECT(-4832,-2956),
  ABISELECT(-4832,-2956),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C11D1Ev,_ZTv0_n12_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C11D0Ev,_ZTv0_n12_N9S21158C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21158C11D1Ev,_ZTv0_n16_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn4952_N9S21158C11D1Ev,_ZThn3044_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C11D0Ev,_ZTv0_n16_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn4952_N9S21158C11D0Ev,_ZThn3044_N9S21158C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C11__9S21158C10[] = {
  ABISELECT(-4952,-3044),
  ABISELECT(-120,-88),
  ABISELECT(-4952,-3044),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C11D1Ev,_ZTv0_n16_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C11D0Ev,_ZTv0_n16_N9S21158C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn5152_N9S21158C11D1Ev,_ZThn3156_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn5152_N9S21158C11D0Ev,_ZThn3156_N9S21158C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C11__9S21158C10[] = {
  ABISELECT(-5152,-3156),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-5152,-3156),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn5536_N9S21158C11D1Ev,_ZThn3380_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn5536_N9S21158C11D0Ev,_ZThn3380_N9S21158C11D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C11__9S21158C10[] = {
  0,
  0,
  ABISELECT(-5536,-3380),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-5536,-3380),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C10[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__9S21158C10[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void _ZN8S21158C7D1Ev();
extern void _ZN8S21158C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C10[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&_ZN8S21158C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C7__9S21158C10[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C7__9S21158C10[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev),
};
extern void _ZN8S21158C9D1Ev();
extern void _ZN8S21158C9D0Ev();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C10[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&_ZN8S21158C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C48S21158C9__A1__9S21158C10[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C48S21158C9__A1__9S21158C10[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C9__9S21158C10[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev),
};
extern void _ZN9S21158C12D1Ev();
extern void _ZN9S21158C12D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN9S21158C132v7Ev();
extern void _ZN9S21158C132v8Ev();
extern void _ZN9S21158C122v9Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C12__9S21158C10[] = {
  ABISELECT(864,492),
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1488,-904),
  ABISELECT(-1688,-1016),
  ABISELECT(-1808,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&_ZN9S21158C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C12D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21158C122v9Ev,
};
extern void _ZN9S21158C13D1Ev();
extern void _ZN9S21158C13D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN9S21158C132v7Ev();
extern void _ZN9S21158C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C139S21158C12__9S21158C10[] = {
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1488,-904),
  ABISELECT(-1688,-1016),
  ABISELECT(-1808,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&_ZN9S21158C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C13D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v8Ev,
};
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C89S21158C139S21158C12__A1__9S21158C10[] = {
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1488,-904),
  ABISELECT(-1688,-1016),
  ABISELECT(-1808,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C89S21158C139S21158C12__A1__9S21158C10[] = {
  ABISELECT(1808,1104),
  ABISELECT(1808,1104),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C89S21158C139S21158C12__A1__9S21158C10[] = {
  ABISELECT(1688,1016),
  ABISELECT(-120,-88),
  ABISELECT(1688,1016),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C89S21158C139S21158C12__A1__9S21158C10[] = {
  ABISELECT(1488,904),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(1488,904),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C89S21158C139S21158C12__A1__9S21158C10[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN9S21158C14D1Ev();
extern void _ZN9S21158C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C149S21158C139S21158C12__9S21158C10[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2072,-1248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&_ZN9S21158C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C14D0Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C49S21158C149S21158C139S21158C12__A2__9S21158C10[] = {
  ABISELECT(-2072,-1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C49S21158C149S21158C139S21158C12__A2__9S21158C10[] = {
  ABISELECT(2072,1248),
  ABISELECT(2072,1248),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev)();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C149S21158C139S21158C12__9S21158C10[] = {
  0,
  0,
  ABISELECT(1368,824),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1368,824),
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C149S21158C139S21158C12__9S21158C10[] = {
  ABISELECT(2072,1248),
  ABISELECT(2072,1248),
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21158C13D1Ev,_ZTv0_n12_N9S21158C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21158C13D0Ev,_ZTv0_n12_N9S21158C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C139S21158C12__9S21158C10[] = {
  ABISELECT(1808,1104),
  ABISELECT(1808,1104),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C13D1Ev,_ZTv0_n12_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C13D0Ev,_ZTv0_n12_N9S21158C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21158C13D1Ev,_ZTv0_n16_N9S21158C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21158C13D0Ev,_ZTv0_n16_N9S21158C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C139S21158C12__9S21158C10[] = {
  ABISELECT(1688,1016),
  ABISELECT(-120,-88),
  ABISELECT(1688,1016),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C13D1Ev,_ZTv0_n16_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C13D0Ev,_ZTv0_n16_N9S21158C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C139S21158C12__9S21158C10[] = {
  ABISELECT(1488,904),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(1488,904),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev)();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C139S21158C12__9S21158C10[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZThn264_N9S21158C13D1Ev,_ZThn144_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21158C13D0Ev,_ZThn144_N9S21158C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21158C14__9S21158C139S21158C12__9S21158C10[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2072,-1248),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C13D1Ev,_ZThn144_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C13D0Ev,_ZThn144_N9S21158C13D0Ev),
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C49S21158C12__A3__9S21158C10[] = {
  ABISELECT(-2480,-1484),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C49S21158C12__A3__9S21158C10[] = {
  ABISELECT(2480,1484),
  ABISELECT(2480,1484),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21158C12D1Ev,_ZTv0_n12_N9S21158C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21158C12D0Ev,_ZTv0_n12_N9S21158C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C12__9S21158C10[] = {
  ABISELECT(1808,1104),
  ABISELECT(1808,1104),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C12D1Ev,_ZTv0_n12_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C12D0Ev,_ZTv0_n12_N9S21158C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21158C12D1Ev,_ZTv0_n16_N9S21158C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21158C12D0Ev,_ZTv0_n16_N9S21158C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C12__9S21158C10[] = {
  ABISELECT(1688,1016),
  ABISELECT(-120,-88),
  ABISELECT(1688,1016),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C12D1Ev,_ZTv0_n16_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C12D0Ev,_ZTv0_n16_N9S21158C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C12__9S21158C10[] = {
  ABISELECT(1488,904),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(1488,904),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev)();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C12__9S21158C10[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZThn264_N9S21158C12D1Ev,_ZThn144_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21158C12D0Ev,_ZThn144_N9S21158C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21158C149S21158C13__9S21158C12__9S21158C10[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2072,-1248),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C12D1Ev,_ZThn144_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C12D0Ev,_ZThn144_N9S21158C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21158C12D1Ev,_ZTv0_n32_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn864_N9S21158C12D1Ev,_ZThn492_N9S21158C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21158C12D0Ev,_ZTv0_n32_N9S21158C12D0Ev)();
extern void ABISELECT(_ZThn864_N9S21158C12D0Ev,_ZThn492_N9S21158C12D0Ev)() __attribute__((weak));
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C8__A1__9S21158C12__9S21158C10[] = {
  0,
  0,
  ABISELECT(-864,-492),
  ABISELECT(-984,-548),
  ABISELECT(-1968,-1172),
  ABISELECT(-2352,-1396),
  ABISELECT(-2552,-1508),
  ABISELECT(-2672,-1596),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21158C12D1Ev,_ZTv0_n32_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21158C12D0Ev,_ZTv0_n32_N9S21158C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZThn672_N9S21158C12D1Ev,_ZThn380_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn672_N9S21158C12D0Ev,_ZThn380_N9S21158C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__A__9S21158C12__9S21158C10[] = {
  ABISELECT(-2480,-1484),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21158C12D1Ev,_ZThn380_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21158C12D0Ev,_ZThn380_N9S21158C12D0Ev),
};
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C8__A2__9S21158C10[] = {
  ABISELECT(-984,-548),
  ABISELECT(-1968,-1172),
  ABISELECT(-2352,-1396),
  ABISELECT(-2552,-1508),
  ABISELECT(-2672,-1596),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C8__A2__9S21158C10[] = {
  ABISELECT(2672,1596),
  ABISELECT(2672,1596),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C8__A2__9S21158C10[] = {
  ABISELECT(2552,1508),
  ABISELECT(-120,-88),
  ABISELECT(2552,1508),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C8__A2__9S21158C10[] = {
  ABISELECT(2352,1396),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(2352,1396),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C8__A2__9S21158C10[] = {
  0,
  0,
  ABISELECT(1968,1172),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1968,1172),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
static  VTT_ENTRY vtt_S21158C10[] = {
  {&(_ZTV9S21158C10[9]),  9,89},
  {&(_tg__ZTV9S21158C11__9S21158C10[7]),  7,11},
  {&(_tg__ZTV8S21158C89S21158C11__9S21158C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21158C89S21158C11__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S21158C4__8S21158C89S21158C11__9S21158C10[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C89S21158C11__9S21158C10[5]),  5,7},
  {&(_tg__ZTV8S21158C9__8S21158C89S21158C11__9S21158C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21158C11__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S21158C4__9S21158C11__9S21158C10[4]),  4,6},
  {&(_tg__ZTV8S21158C7__9S21158C11__9S21158C10[5]),  5,7},
  {&(_tg__ZTV8S21158C9__9S21158C11__9S21158C10[7]),  7,11},
  {&(_ZTV9S21158C10[16]),  16,89},
  {&(_ZTV9S21158C10[22]),  22,89},
  {&(_ZTV9S21158C10[29]),  29,89},
  {&(_ZTV9S21158C10[38]),  38,89},
  {&(_ZTV9S21158C10[56]),  56,89},
  {&(_ZTV9S21158C10[68]),  68,89},
  {&(_ZTV9S21158C10[85]),  85,89},
  {&(_ZTV9S21158C10[73]),  73,89},
  {&(_tg__ZTV8S21158C4__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S21158C7__9S21158C10[4]),  4,6},
  {&(_tg__ZTV8S21158C4__8S21158C7__9S21158C10[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21158C7__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S21158C9__9S21158C10[4]),  4,8},
  {&(_tg__ZTV8S21158C48S21158C9__A1__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C48S21158C9__A1__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C9__9S21158C10[3]),  3,5},
  {&(_tg__ZTV9S21158C12__9S21158C10[8]),  8,15},
  {&(_tg__ZTV9S21158C139S21158C12__9S21158C10[7]),  7,13},
  {&(_tg__ZTV8S21158C89S21158C139S21158C12__A1__9S21158C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21158C89S21158C139S21158C12__A1__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S21158C4__8S21158C89S21158C139S21158C12__A1__9S21158C10[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C89S21158C139S21158C12__A1__9S21158C10[5]),  5,7},
  {&(_tg__ZTV8S21158C9__8S21158C89S21158C139S21158C12__A1__9S21158C10[7]),  7,11},
  {&(_tg__ZTV9S21158C149S21158C139S21158C12__9S21158C10[5]),  5,7},
  {&(_tg__ZTV8S21158C49S21158C149S21158C139S21158C12__A2__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C49S21158C149S21158C139S21158C12__A2__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S21158C9__9S21158C149S21158C139S21158C12__9S21158C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21158C149S21158C139S21158C12__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21158C139S21158C12__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S21158C4__9S21158C139S21158C12__9S21158C10[4]),  4,6},
  {&(_tg__ZTV8S21158C7__9S21158C139S21158C12__9S21158C10[5]),  5,7},
  {&(_tg__ZTV8S21158C9__9S21158C139S21158C12__9S21158C10[7]),  7,11},
  {&(_tg__ZTV9S21158C14__9S21158C139S21158C12__9S21158C10[5]),  5,7},
  {&(_tg__ZTV8S21158C49S21158C12__A3__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C49S21158C12__A3__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21158C12__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S21158C4__9S21158C12__9S21158C10[4]),  4,6},
  {&(_tg__ZTV8S21158C7__9S21158C12__9S21158C10[5]),  5,7},
  {&(_tg__ZTV8S21158C9__9S21158C12__9S21158C10[7]),  7,11},
  {&(_tg__ZTV9S21158C149S21158C13__9S21158C12__9S21158C10[5]),  5,7},
  {&(_tg__ZTV8S21158C8__A1__9S21158C12__9S21158C10[10]),  10,14},
  {&(_tg__ZTV8S21158C4__A__9S21158C12__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S21158C8__A2__9S21158C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21158C8__A2__9S21158C10[3]),  3,5},
  {&(_tg__ZTV8S21158C4__8S21158C8__A2__9S21158C10[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C8__A2__9S21158C10[5]),  5,7},
  {&(_tg__ZTV8S21158C9__8S21158C8__A2__9S21158C10[7]),  7,11},
};
extern VTBL_ENTRY _ZTI9S21158C10[];
extern  VTBL_ENTRY _ZTV9S21158C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C10[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21158C12D0Ev,_ZTv0_n32_N9S21158C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21158C12D0Ev,_ZThn492_N9S21158C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21158C12D1Ev,_ZTv0_n32_N9S21158C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21158C12D1Ev,_ZThn492_N9S21158C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N9S21158C11D0Ev,_ZThn3380_N9S21158C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N9S21158C11D0Ev,_ZThn3156_N9S21158C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N9S21158C11D1Ev,_ZThn3380_N9S21158C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N9S21158C11D1Ev,_ZThn3156_N9S21158C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C11D0Ev,_ZTv0_n16_N9S21158C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N9S21158C11D0Ev,_ZThn3044_N9S21158C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C11D1Ev,_ZTv0_n16_N9S21158C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N9S21158C11D1Ev,_ZThn3044_N9S21158C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C11D0Ev,_ZTv0_n12_N9S21158C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N9S21158C11D0Ev,_ZThn2956_N9S21158C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C11D1Ev,_ZTv0_n12_N9S21158C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N9S21158C11D1Ev,_ZThn2956_N9S21158C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S21158C8D0Ev,_ZThn3380_N8S21158C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N8S21158C8D0Ev,_ZThn3156_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S21158C8D1Ev,_ZThn3380_N8S21158C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N8S21158C8D1Ev,_ZThn3156_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N8S21158C8D0Ev,_ZThn3044_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N8S21158C8D1Ev,_ZThn3044_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N8S21158C8D0Ev,_ZThn2956_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N8S21158C8D1Ev,_ZThn2956_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21158C10D0Ev,_ZTv0_n32_N9S21158C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7504_N9S21158C10D0Ev,_ZThn4552_N9S21158C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21158C10D1Ev,_ZTv0_n32_N9S21158C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7504_N9S21158C10D1Ev,_ZThn4552_N9S21158C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21158C10D0Ev,_ZTv0_n36_N9S21158C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N9S21158C10D0Ev,_ZThn4060_N9S21158C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21158C10D1Ev,_ZTv0_n36_N9S21158C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N9S21158C10D1Ev,_ZThn4060_N9S21158C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C10D0Ev,_ZTv0_n20_N9S21158C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N9S21158C10D0Ev,_ZThn3380_N9S21158C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N9S21158C10D0Ev,_ZThn3156_N9S21158C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C10D1Ev,_ZTv0_n20_N9S21158C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N9S21158C10D1Ev,_ZThn3380_N9S21158C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N9S21158C10D1Ev,_ZThn3156_N9S21158C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C10D0Ev,_ZTv0_n16_N9S21158C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N9S21158C10D0Ev,_ZThn3044_N9S21158C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C10D1Ev,_ZTv0_n16_N9S21158C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N9S21158C10D1Ev,_ZThn3044_N9S21158C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C10D0Ev,_ZTv0_n12_N9S21158C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N9S21158C10D0Ev,_ZThn2956_N9S21158C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C10D1Ev,_ZTv0_n12_N9S21158C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N9S21158C10D1Ev,_ZThn2956_N9S21158C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C10 = {  "S21158C10", // class name
  bases_S21158C10, 24,
  &(vtc_S21158C10[0]), // expected_vtbl_contents
  &(vtt_S21158C10[0]), // expected_vtt_contents
  ABISELECT(7776,4696), // object size
  NSPAIRA(_ZTI9S21158C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21158C10),89, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21158C10),59, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21158C1  : virtual S21158C2 , virtual S21158C8 , S21158C10 {
  ::S21158C8 s21158c1f0[8];
  short s21158c1f1;
  ::S19674C9 s21158c1f2;
  void *s21158c1f3;
  ::S21158C8 s21158c1f4;
  ::S19674C2 s21158c1f5;
  ::S19674C3 s21158c1f6;
  virtual void  v1(); // _ZN8S21158C12v1Ev
  virtual void  v2(); // _ZN8S21158C12v2Ev
  ~S21158C1(); // tgen
  S21158C1(); // tgen
};
//SIG(1 S21158C1) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} FD Fp Fp} VBC8{ VBC3 VBC4 VBC7 BC5 VBC9{ VBC3 VBC5 BC4 v3 v4 FC4 FD[7] FC4 FL Fp[5]} vd v5 v6 Fi Fi FC5 Fc Fc Fi Fs FL} BC10{ BC11{ BC8 vd Fs Fp Fi FL[10] Fc Fs Fs Fi} VBC12{ BC13{ BC8 BC14{ VBC9 BC5 BC4 Fi Fi Fi:28 Fi Fl} v7 v8 FU15{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} VBC8 BC4 v9} Fl FC8 Fi Fl Fi Fi FC16{ VBC3 v10} FD[7] FC8 Fi:32 Fl Fp Fp} v1 v2 FC8[8] Fs FU6 Fp FC8 FC17{ m FC18{ VBC19{ VBC3 v11} VBC20{ VBC3 VBC5 BC21{ VBC3 BC5 Fs[6] FL[3] FU6} v12 v13 FC21 FD[7] FC21 FL Fp[5]} vd FC22{ VBC21 BC3 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC20 Fi Fi FC19}[5] Fp} FC18}


void  S21158C1 ::v1(){vfunc_called(this, "_ZN8S21158C12v1Ev");}
void  S21158C1 ::v2(){vfunc_called(this, "_ZN8S21158C12v2Ev");}
S21158C1 ::~S21158C1(){ note_dtor("S21158C1", this);} // tgen
S21158C1 ::S21158C1(){ note_ctor("S21158C1", this);} // tgen

static void Test_S21158C1()
{
  extern Class_Descriptor cd_S21158C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3964,9675)];
    init_test(&cd_S21158C1, buf);
    S21158C1 *dp, &lv = *(dp=new (buf) S21158C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(63408,38696), "sizeof(S21158C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21158C1)");
    /*is_ambiguous_... S21158C2::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C2*), ABISELECT(60464,36956), "S21158C1");
    /*is_ambiguous_... S21158C2::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C2*), ABISELECT(60464,36956), "S21158C1");
    /*is_ambiguous_... S21158C1::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*), ABISELECT(60464,36956), "S21158C1");
    /*is_ambiguous_... S21158C1::S21158C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C8*), ABISELECT(60464,36956), "S21158C1");
    check_base_class_offset(lv, (S19674C5*)(S21158C9*), ABISELECT(60464,36956), "S21158C1");
    check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C9*), ABISELECT(60464,36956), "S21158C1");
    /*is_ambiguous_... S21158C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C8*)(S21158C11*)(S21158C10*), ABISELECT(60464,36956), "S21158C1");
    /*is_ambiguous_... S21158C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(60464,36956), "S21158C1");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(60464,36956), "S21158C1");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C4*)(S21158C12*), ABISELECT(60464,36956), "S21158C1");
    /*is_ambiguous_... S21158C2::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C2*), ABISELECT(60248,36828), "S21158C1");
    /*is_ambiguous_... S21158C2::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C2*), ABISELECT(60240,36824), "S21158C1");
    /*is_ambiguous_... S21158C1::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*), ABISELECT(60984,37272), "S21158C1");
    check_base_class_offset(lv, (S21158C4*)(S21158C7*), ABISELECT(60976,37268), "S21158C1");
    /*is_ambiguous_... S21158C1::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C8*), ABISELECT(60976,37268), "S21158C1");
    /*is_ambiguous_... S21158C8::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C8*)(S21158C11*)(S21158C10*), ABISELECT(60976,37268), "S21158C1");
    /*is_ambiguous_... S21158C8::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(60976,37268), "S21158C1");
    /*is_ambiguous_... S21158C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21158C7*), ABISELECT(60592,37044), "S21158C1");
    check_base_class_offset(lv, (S21158C7*)(S21158C2*), ABISELECT(60592,37044), "S21158C1");
    /*is_ambiguous_... S21158C1::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C7*)(S21158C8*), ABISELECT(60592,37044), "S21158C1");
    check_base_class_offset(lv, (S21158C7*)(S21158C8*)(S21158C11*)(S21158C10*), ABISELECT(60592,37044), "S21158C1");
    check_base_class_offset(lv, (S21158C7*)(S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(60592,37044), "S21158C1");
    check_base_class_offset(lv, (S21158C2*), ABISELECT(60240,36824), "S21158C1");
    /*is_ambiguous_... S21158C1::S21158C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C8*), ABISELECT(61176,37384), "S21158C1");
    /*is_ambiguous_... S21158C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C9*), ABISELECT(62424,38148), "S21158C1");
    check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C9*), ABISELECT(61448,37528), "S21158C1");
    check_base_class_offset(lv, (S21158C4*)(S21158C9*), ABISELECT(61440,37524), "S21158C1");
    /*is_ambiguous_... S21158C1::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C9*)(S21158C8*), ABISELECT(61440,37524), "S21158C1");
    check_base_class_offset(lv, (S21158C9*)(S21158C8*)(S21158C11*)(S21158C10*), ABISELECT(61440,37524), "S21158C1");
    check_base_class_offset(lv, (S21158C9*)(S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(61440,37524), "S21158C1");
    check_base_class_offset(lv, (S21158C9*)(S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(61440,37524), "S21158C1");
    /*is_ambiguous_... S21158C1::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C8*), ABISELECT(61168,37380), "S21158C1");
    /*is_ambiguous_... S21158C12::S21158C8 */ AMB_check_base_class_offset(lv, (S21158C8*)(S21158C12*), ABISELECT(61168,37380), "S21158C1");
    /*is_ambiguous_... S21158C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C8*)(S21158C11*)(S21158C10*), ABISELECT(8,4), "S21158C1");
    check_base_class_offset(lv, (S21158C8*)(S21158C11*)(S21158C10*), 0, "S21158C1");
    check_base_class_offset(lv, (S21158C11*)(S21158C10*), 0, "S21158C1");
    /*is_ambiguous_... S21158C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(62552,38208), "S21158C1");
    check_base_class_offset(lv, (S21158C8*)(S21158C13*)(S21158C12*), ABISELECT(62544,38204), "S21158C1");
    /*is_ambiguous_... S21158C14::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(63000,38460), "S21158C1");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(62816,38352), "S21158C1");
    /*is_ambiguous_... S21158C14::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(62808,38348), "S21158C1");
    check_base_class_offset(lv, (S21158C14*)(S21158C13*)(S21158C12*), ABISELECT(62808,38348), "S21158C1");
    check_base_class_offset(lv, (S21158C13*)(S21158C12*), ABISELECT(62544,38204), "S21158C1");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21158C4*)(S21158C12*), ABISELECT(63224,38588), "S21158C1");
    /*is_ambiguous_... S21158C12::S21158C4 */ AMB_check_base_class_offset(lv, (S21158C4*)(S21158C12*), ABISELECT(63216,38584), "S21158C1");
    check_base_class_offset(lv, (S21158C12*)(S21158C10*), ABISELECT(62544,38204), "S21158C1");
    check_base_class_offset(lv, (S21158C10*), 0, "S21158C1");
    check_field_offset(lv, s21158c1f0, ABISELECT(4832,2956), "S21158C1.s21158c1f0");
    check_field_offset(lv, s21158c1f1, ABISELECT(21344,12940), "S21158C1.s21158c1f1");
    check_field_offset(lv, s21158c1f2, ABISELECT(21352,12944), "S21158C1.s21158c1f2");
    check_field_offset(lv, s21158c1f3, ABISELECT(21384,12960), "S21158C1.s21158c1f3");
    check_field_offset(lv, s21158c1f4, ABISELECT(21392,12964), "S21158C1.s21158c1f4");
    check_field_offset(lv, s21158c1f5, ABISELECT(23456,14212), "S21158C1.s21158c1f5");
    check_field_offset(lv, s21158c1f6, ABISELECT(54112,33056), "S21158C1.s21158c1f6");
    test_class_info(&lv, &cd_S21158C1);
    dp->~S21158C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21158C1(Test_S21158C1, "S21158C1", ABISELECT(63408,38696));

#else // __cplusplus

extern void _ZN8S21158C1C1Ev();
extern void _ZN8S21158C1D1Ev();
Name_Map name_map_S21158C1[] = {
  NSPAIR(_ZN8S21158C1C1Ev),
  NSPAIR(_ZN8S21158C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21158C7;
extern VTBL_ENTRY _ZTI8S21158C7[];
extern  VTBL_ENTRY _ZTV8S21158C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C7[];
extern Class_Descriptor cd_S21158C2;
extern VTBL_ENTRY _ZTI8S21158C2[];
extern  VTBL_ENTRY _ZTV8S21158C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C9;
extern VTBL_ENTRY _ZTI8S21158C9[];
extern  VTBL_ENTRY _ZTV8S21158C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C9[];
extern Class_Descriptor cd_S21158C8;
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C8;
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
extern Class_Descriptor cd_S21158C11;
extern VTBL_ENTRY _ZTI9S21158C11[];
extern  VTBL_ENTRY _ZTV9S21158C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C11[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C8;
extern VTBL_ENTRY _ZTI8S21158C8[];
extern  VTBL_ENTRY _ZTV8S21158C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C14;
extern VTBL_ENTRY _ZTI9S21158C14[];
extern  VTBL_ENTRY _ZTV9S21158C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C14[];
extern Class_Descriptor cd_S21158C13;
extern VTBL_ENTRY _ZTI9S21158C13[];
extern  VTBL_ENTRY _ZTV9S21158C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21158C4;
extern VTBL_ENTRY _ZTI8S21158C4[];
extern  VTBL_ENTRY _ZTV8S21158C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C4[];
extern Class_Descriptor cd_S21158C12;
extern VTBL_ENTRY _ZTI9S21158C12[];
extern  VTBL_ENTRY _ZTV9S21158C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C12[];
extern Class_Descriptor cd_S21158C10;
extern VTBL_ENTRY _ZTI9S21158C10[];
extern  VTBL_ENTRY _ZTV9S21158C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21158C10[];
static Base_Class bases_S21158C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(60464,36956), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(60248,36828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21158C4,    ABISELECT(60240,36824), //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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(60984,37272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21158C4,    ABISELECT(60976,37268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(60592,37044), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21158C7,    ABISELECT(60592,37044), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21158C2,    ABISELECT(60240,36824), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(61176,37384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(62424,38148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(61448,37528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C4,    ABISELECT(61440,37524), //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
    12, //immediately_derived
  0, 0},
  {&cd_S21158C9,    ABISELECT(61440,37524), //bcp->offset
    56, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21158C8,    ABISELECT(61168,37380), //bcp->offset
    42, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21158C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(62552,38208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C8,    ABISELECT(62544,38204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(63000,38460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(62816,38352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C4,    ABISELECT(62808,38348), //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
    11, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21158C14,    ABISELECT(62808,38348), //bcp->offset
    88, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21158C13,    ABISELECT(62544,38204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(63224,38588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21158C4,    ABISELECT(63216,38584), //bcp->offset
    95, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21158C12,    ABISELECT(62544,38204), //bcp->offset
    67, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S21158C10,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21158C1[];
extern void _ZN8S21158C1D1Ev();
extern void _ZN8S21158C1D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN8S21158C12v1Ev();
extern void _ZN8S21158C12v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S21158C1D1Ev,_ZTv0_n24_N8S21158C1D1Ev)();
extern void ABISELECT(_ZThn60240_N8S21158C1D1Ev,_ZThn36824_N8S21158C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21158C1D0Ev,_ZTv0_n24_N8S21158C1D0Ev)();
extern void ABISELECT(_ZThn60240_N8S21158C1D0Ev,_ZThn36824_N8S21158C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C1D1Ev,_ZTv0_n12_N8S21158C1D1Ev)();
extern void ABISELECT(_ZThn60464_N8S21158C1D1Ev,_ZThn36956_N8S21158C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C1D0Ev,_ZTv0_n12_N8S21158C1D0Ev)();
extern void ABISELECT(_ZThn60464_N8S21158C1D0Ev,_ZThn36956_N8S21158C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C1D1Ev,_ZTv0_n20_N8S21158C1D1Ev)();
extern void ABISELECT(_ZThn60592_N8S21158C1D1Ev,_ZThn37044_N8S21158C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C1D0Ev,_ZTv0_n20_N8S21158C1D0Ev)();
extern void ABISELECT(_ZThn60592_N8S21158C1D0Ev,_ZThn37044_N8S21158C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C1D1Ev,_ZTv0_n16_N8S21158C1D1Ev)();
extern void ABISELECT(_ZThn60976_N8S21158C1D1Ev,_ZThn37268_N8S21158C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C1D0Ev,_ZTv0_n16_N8S21158C1D0Ev)();
extern void ABISELECT(_ZThn60976_N8S21158C1D0Ev,_ZThn37268_N8S21158C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21158C1D1Ev,_ZTv0_n32_N8S21158C1D1Ev)();
extern void ABISELECT(_ZThn61168_N8S21158C1D1Ev,_ZThn37380_N8S21158C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21158C1D0Ev,_ZTv0_n32_N8S21158C1D0Ev)();
extern void ABISELECT(_ZThn61168_N8S21158C1D0Ev,_ZThn37380_N8S21158C1D0Ev)() __attribute__((weak));
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void ABISELECT(_ZTv0_n40_N8S21158C1D1Ev,_ZTv0_n20_N8S21158C1D1Ev)();
extern void ABISELECT(_ZThn61440_N8S21158C1D1Ev,_ZThn37524_N8S21158C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C1D0Ev,_ZTv0_n20_N8S21158C1D0Ev)();
extern void ABISELECT(_ZThn61440_N8S21158C1D0Ev,_ZThn37524_N8S21158C1D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
extern void ABISELECT(_ZTv0_n72_N8S21158C1D1Ev,_ZTv0_n36_N8S21158C1D1Ev)();
extern void ABISELECT(_ZThn62544_N8S21158C1D1Ev,_ZThn38204_N8S21158C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21158C1D0Ev,_ZTv0_n36_N8S21158C1D0Ev)();
extern void ABISELECT(_ZThn62544_N8S21158C1D0Ev,_ZThn38204_N8S21158C1D0Ev)() __attribute__((weak));
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN9S21158C132v7Ev();
extern void _ZN9S21158C132v8Ev();
extern void _ZN9S21158C122v9Ev();
extern void ABISELECT(_ZTvn264_n72_N8S21158C1D1Ev,_ZTvn144_n36_N8S21158C1D1Ev)();
extern void ABISELECT(_ZTvn264_n72_N8S21158C1D0Ev,_ZTvn144_n36_N8S21158C1D0Ev)();
extern void ABISELECT(_ZTvn672_n72_N8S21158C1D1Ev,_ZTvn380_n36_N8S21158C1D1Ev)();
extern void ABISELECT(_ZTvn672_n72_N8S21158C1D0Ev,_ZTvn380_n36_N8S21158C1D0Ev)();
static  VTBL_ENTRY vtc_S21158C1[] = {
  ABISELECT(60240,36824),
  ABISELECT(61168,37380),
  ABISELECT(62544,38204),
  ABISELECT(62424,38148),
  ABISELECT(61440,37524),
  ABISELECT(60592,37044),
  ABISELECT(60976,37268),
  ABISELECT(60464,36956),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C1[0]),
  (VTBL_ENTRY)&_ZN8S21158C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN8S21158C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21158C12v2Ev,
  ABISELECT(-60240,-36824),
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  ABISELECT(-60240,-36824),
  (VTBL_ENTRY)&(_ZTI8S21158C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21158C1D1Ev,_ZTv0_n24_N8S21158C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21158C1D0Ev,_ZTv0_n24_N8S21158C1D0Ev),
  ABISELECT(-60464,-36956),
  ABISELECT(-60464,-36956),
  (VTBL_ENTRY)&(_ZTI8S21158C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C1D1Ev,_ZTv0_n12_N8S21158C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C1D0Ev,_ZTv0_n12_N8S21158C1D0Ev),
  ABISELECT(-60592,-37044),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-60592,-37044),
  (VTBL_ENTRY)&(_ZTI8S21158C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C1D1Ev,_ZTv0_n20_N8S21158C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C1D0Ev,_ZTv0_n20_N8S21158C1D0Ev),
  ABISELECT(-60976,-37268),
  ABISELECT(-512,-312),
  ABISELECT(-60976,-37268),
  (VTBL_ENTRY)&(_ZTI8S21158C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C1D1Ev,_ZTv0_n16_N8S21158C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C1D0Ev,_ZTv0_n16_N8S21158C1D0Ev),
  0,
  0,
  ABISELECT(-61168,-37380),
  ABISELECT(1256,768),
  ABISELECT(272,144),
  ABISELECT(-576,-336),
  ABISELECT(-192,-112),
  ABISELECT(-704,-424),
  ABISELECT(-61168,-37380),
  (VTBL_ENTRY)&(_ZTI8S21158C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21158C1D1Ev,_ZTv0_n32_N8S21158C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21158C1D0Ev,_ZTv0_n32_N8S21158C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  0,
  0,
  ABISELECT(-61440,-37524),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(-61440,-37524),
  (VTBL_ENTRY)&(_ZTI8S21158C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C1D1Ev,_ZTv0_n20_N8S21158C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C1D0Ev,_ZTv0_n20_N8S21158C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-62544,-38204),
  ABISELECT(-1376,-824),
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1952,-1160),
  ABISELECT(-1568,-936),
  ABISELECT(-2080,-1248),
  ABISELECT(-62544,-38204),
  (VTBL_ENTRY)&(_ZTI8S21158C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21158C1D1Ev,_ZTv0_n36_N8S21158C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21158C1D0Ev,_ZTv0_n36_N8S21158C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21158C122v9Ev,
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2344,-1392),
  ABISELECT(-62808,-38348),
  (VTBL_ENTRY)&(_ZTI8S21158C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N8S21158C1D1Ev,_ZTvn144_n36_N8S21158C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N8S21158C1D0Ev,_ZTvn144_n36_N8S21158C1D0Ev),
  ABISELECT(-2752,-1628),
  ABISELECT(-63216,-38584),
  (VTBL_ENTRY)&(_ZTI8S21158C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N8S21158C1D1Ev,_ZTvn380_n36_N8S21158C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N8S21158C1D0Ev,_ZTvn380_n36_N8S21158C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21158C1[];
extern void _ZN9S21158C10D1Ev();
extern void _ZN9S21158C10D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C10__8S21158C1[] = {
  ABISELECT(61168,37380),
  ABISELECT(62544,38204),
  ABISELECT(62424,38148),
  ABISELECT(61440,37524),
  ABISELECT(60592,37044),
  ABISELECT(60976,37268),
  ABISELECT(60464,36956),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&_ZN9S21158C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C10D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void _ZN9S21158C11D1Ev();
extern void _ZN9S21158C11D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C119S21158C10__8S21158C1[] = {
  ABISELECT(62424,38148),
  ABISELECT(61440,37524),
  ABISELECT(60592,37044),
  ABISELECT(60976,37268),
  ABISELECT(60464,36956),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&_ZN9S21158C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C11D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C89S21158C119S21158C10__A1__8S21158C1[] = {
  ABISELECT(62424,38148),
  ABISELECT(61440,37524),
  ABISELECT(60592,37044),
  ABISELECT(60976,37268),
  ABISELECT(60464,36956),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn60464_N8S21158C8D1Ev,_ZThn36956_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn60464_N8S21158C8D0Ev,_ZThn36956_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C89S21158C119S21158C10__A1__8S21158C1[] = {
  ABISELECT(-60464,-36956),
  ABISELECT(-60464,-36956),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn60976_N8S21158C8D1Ev,_ZThn37268_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn60976_N8S21158C8D0Ev,_ZThn37268_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C89S21158C119S21158C10__A1__8S21158C1[] = {
  ABISELECT(-60976,-37268),
  ABISELECT(-512,-312),
  ABISELECT(-60976,-37268),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn60592_N8S21158C8D1Ev,_ZThn37044_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn60592_N8S21158C8D0Ev,_ZThn37044_N8S21158C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C89S21158C119S21158C10__A1__8S21158C1[] = {
  ABISELECT(-60592,-37044),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-60592,-37044),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn61440_N8S21158C8D1Ev,_ZThn37524_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn61440_N8S21158C8D0Ev,_ZThn37524_N8S21158C8D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C89S21158C119S21158C10__A1__8S21158C1[] = {
  0,
  0,
  ABISELECT(-61440,-37524),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(-61440,-37524),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21158C11D1Ev,_ZTv0_n12_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn60464_N9S21158C11D1Ev,_ZThn36956_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C11D0Ev,_ZTv0_n12_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn60464_N9S21158C11D0Ev,_ZThn36956_N9S21158C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C119S21158C10__8S21158C1[] = {
  ABISELECT(-60464,-36956),
  ABISELECT(-60464,-36956),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C11D1Ev,_ZTv0_n12_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C11D0Ev,_ZTv0_n12_N9S21158C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21158C11D1Ev,_ZTv0_n16_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn60976_N9S21158C11D1Ev,_ZThn37268_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C11D0Ev,_ZTv0_n16_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn60976_N9S21158C11D0Ev,_ZThn37268_N9S21158C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C119S21158C10__8S21158C1[] = {
  ABISELECT(-60976,-37268),
  ABISELECT(-512,-312),
  ABISELECT(-60976,-37268),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C11D1Ev,_ZTv0_n16_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C11D0Ev,_ZTv0_n16_N9S21158C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn60592_N9S21158C11D1Ev,_ZThn37044_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn60592_N9S21158C11D0Ev,_ZThn37044_N9S21158C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C119S21158C10__8S21158C1[] = {
  ABISELECT(-60592,-37044),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-60592,-37044),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev)();
extern void ABISELECT(_ZThn61440_N9S21158C11D1Ev,_ZThn37524_N9S21158C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev)();
extern void ABISELECT(_ZThn61440_N9S21158C11D0Ev,_ZThn37524_N9S21158C11D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C119S21158C10__8S21158C1[] = {
  0,
  0,
  ABISELECT(-61440,-37524),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(-61440,-37524),
  (VTBL_ENTRY)&(_ZTI9S21158C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21158C10D1Ev,_ZTv0_n12_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn60464_N9S21158C10D1Ev,_ZThn36956_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21158C10D0Ev,_ZTv0_n12_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn60464_N9S21158C10D0Ev,_ZThn36956_N9S21158C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C10__8S21158C1[] = {
  ABISELECT(-60464,-36956),
  ABISELECT(-60464,-36956),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C10D1Ev,_ZTv0_n12_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C10D0Ev,_ZTv0_n12_N9S21158C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21158C10D1Ev,_ZTv0_n16_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn60976_N9S21158C10D1Ev,_ZThn37268_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21158C10D0Ev,_ZTv0_n16_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn60976_N9S21158C10D0Ev,_ZThn37268_N9S21158C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C10__8S21158C1[] = {
  ABISELECT(-60976,-37268),
  ABISELECT(-512,-312),
  ABISELECT(-60976,-37268),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C10D1Ev,_ZTv0_n16_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C10D0Ev,_ZTv0_n16_N9S21158C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C10D1Ev,_ZTv0_n20_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn60592_N9S21158C10D1Ev,_ZThn37044_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C10D0Ev,_ZTv0_n20_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn60592_N9S21158C10D0Ev,_ZThn37044_N9S21158C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C10__8S21158C1[] = {
  ABISELECT(-60592,-37044),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-60592,-37044),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C10D1Ev,_ZTv0_n20_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C10D0Ev,_ZTv0_n20_N9S21158C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C10D1Ev,_ZTv0_n20_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn61440_N9S21158C10D1Ev,_ZThn37524_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21158C10D0Ev,_ZTv0_n20_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn61440_N9S21158C10D0Ev,_ZThn37524_N9S21158C10D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C10__8S21158C1[] = {
  0,
  0,
  ABISELECT(-61440,-37524),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(-61440,-37524),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C10D1Ev,_ZTv0_n20_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C10D0Ev,_ZTv0_n20_N9S21158C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S21158C10D1Ev,_ZTv0_n36_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn62544_N9S21158C10D1Ev,_ZThn38204_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21158C10D0Ev,_ZTv0_n36_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn62544_N9S21158C10D0Ev,_ZThn38204_N9S21158C10D0Ev)() __attribute__((weak));
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN9S21158C132v7Ev();
extern void _ZN9S21158C132v8Ev();
extern void _ZN9S21158C122v9Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C12__9S21158C10__8S21158C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-62544,-38204),
  ABISELECT(-1376,-824),
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1952,-1160),
  ABISELECT(-1568,-936),
  ABISELECT(-2080,-1248),
  ABISELECT(-62544,-38204),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21158C10D1Ev,_ZTv0_n36_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21158C10D0Ev,_ZTv0_n36_N9S21158C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21158C122v9Ev,
};
extern void ABISELECT(_ZTvn264_n72_N9S21158C10D1Ev,_ZTvn144_n36_N9S21158C10D1Ev)();
extern void ABISELECT(_ZTvn264_n72_N9S21158C10D0Ev,_ZTvn144_n36_N9S21158C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21158C149S21158C139S21158C12__9S21158C10__8S21158C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2344,-1392),
  ABISELECT(-62808,-38348),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S21158C10D1Ev,_ZTvn144_n36_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S21158C10D0Ev,_ZTvn144_n36_N9S21158C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21158C10D1Ev,_ZTv0_n32_N9S21158C10D1Ev)();
extern void ABISELECT(_ZThn61168_N9S21158C10D1Ev,_ZThn37380_N9S21158C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21158C10D0Ev,_ZTv0_n32_N9S21158C10D0Ev)();
extern void ABISELECT(_ZThn61168_N9S21158C10D0Ev,_ZThn37380_N9S21158C10D0Ev)() __attribute__((weak));
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C8__A2__9S21158C10__8S21158C1[] = {
  0,
  0,
  ABISELECT(-61168,-37380),
  ABISELECT(1256,768),
  ABISELECT(272,144),
  ABISELECT(-576,-336),
  ABISELECT(-192,-112),
  ABISELECT(-704,-424),
  ABISELECT(-61168,-37380),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21158C10D1Ev,_ZTv0_n32_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21158C10D0Ev,_ZTv0_n32_N9S21158C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTvn672_n72_N9S21158C10D1Ev,_ZTvn380_n36_N9S21158C10D1Ev)();
extern void ABISELECT(_ZTvn672_n72_N9S21158C10D0Ev,_ZTvn380_n36_N9S21158C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C49S21158C12__A3__9S21158C10__8S21158C1[] = {
  ABISELECT(-2752,-1628),
  ABISELECT(-63216,-38584),
  (VTBL_ENTRY)&(_ZTI9S21158C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S21158C10D1Ev,_ZTvn380_n36_N9S21158C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S21158C10D0Ev,_ZTvn380_n36_N9S21158C10D0Ev),
};
extern void _ZN8S21158C2D1Ev();
extern void _ZN8S21158C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C2__8S21158C1[] = {
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C2[0]),
  (VTBL_ENTRY)&_ZN8S21158C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C2D0Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C48S21158C2__8S21158C1[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZThn224_N8S21158C4D1Ev,_ZThn132_N8S21158C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
extern void ABISELECT(_ZThn224_N8S21158C4D0Ev,_ZThn132_N8S21158C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C48S21158C2__8S21158C1[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C2D1Ev,_ZTv0_n12_N8S21158C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21158C2D1Ev,_ZThn132_N8S21158C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21158C2D0Ev,_ZTv0_n12_N8S21158C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21158C2D0Ev,_ZThn132_N8S21158C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C2__8S21158C1[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21158C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C2D1Ev,_ZTv0_n12_N8S21158C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C2D0Ev,_ZTv0_n12_N8S21158C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C2D1Ev,_ZTv0_n20_N8S21158C2D1Ev)();
extern void ABISELECT(_ZThn352_N8S21158C2D1Ev,_ZThn220_N8S21158C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C2D0Ev,_ZTv0_n20_N8S21158C2D0Ev)();
extern void ABISELECT(_ZThn352_N8S21158C2D0Ev,_ZThn220_N8S21158C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C2__8S21158C1[] = {
  ABISELECT(-352,-220),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI8S21158C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C2D1Ev,_ZTv0_n20_N8S21158C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C2D0Ev,_ZTv0_n20_N8S21158C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C2D1Ev,_ZTv0_n16_N8S21158C2D1Ev)();
extern void ABISELECT(_ZThn736_N8S21158C2D1Ev,_ZThn444_N8S21158C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C2D0Ev,_ZTv0_n16_N8S21158C2D0Ev)();
extern void ABISELECT(_ZThn736_N8S21158C2D0Ev,_ZThn444_N8S21158C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__A1__8S21158C2__8S21158C1[] = {
  ABISELECT(-736,-444),
  ABISELECT(-512,-312),
  ABISELECT(-736,-444),
  (VTBL_ENTRY)&(_ZTI8S21158C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C2D1Ev,_ZTv0_n16_N8S21158C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C2D0Ev,_ZTv0_n16_N8S21158C2D0Ev),
};
extern void _ZN8S21158C7D1Ev();
extern void _ZN8S21158C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C1[] = {
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&_ZN8S21158C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S21158C7D1Ev,_ZThn224_N8S21158C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev)();
extern void ABISELECT(_ZThn384_N8S21158C7D0Ev,_ZThn224_N8S21158C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C7__8S21158C1[] = {
  ABISELECT(-384,-224),
  ABISELECT(-512,-312),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C7__8S21158C1[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S21158C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D1Ev,_ZTv0_n12_N8S21158C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C7D0Ev,_ZTv0_n12_N8S21158C7D0Ev),
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C4__A1__8S21158C1[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C4__A1__8S21158C1[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C8__8S21158C1[] = {
  ABISELECT(1256,768),
  ABISELECT(272,144),
  ABISELECT(-576,-336),
  ABISELECT(-192,-112),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C8__8S21158C1[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C8__8S21158C1[] = {
  ABISELECT(192,112),
  ABISELECT(-512,-312),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C8__8S21158C1[] = {
  ABISELECT(576,336),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(576,336),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S21158C8D1Ev,_ZThn144_N8S21158C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S21158C8D0Ev,_ZThn144_N8S21158C8D0Ev)() __attribute__((weak));
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C8__8S21158C1[] = {
  0,
  0,
  ABISELECT(-272,-144),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN8S21158C9D1Ev();
extern void _ZN8S21158C9D0Ev();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C1[] = {
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&_ZN8S21158C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C48S21158C9__A2__8S21158C1[] = {
  ABISELECT(-976,-568),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C48S21158C9__A2__8S21158C1[] = {
  ABISELECT(976,568),
  ABISELECT(976,568),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C9__8S21158C1[] = {
  ABISELECT(976,568),
  ABISELECT(976,568),
  (VTBL_ENTRY)&(_ZTI8S21158C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D1Ev,_ZTv0_n12_N8S21158C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C9D0Ev,_ZTv0_n12_N8S21158C9D0Ev),
};
extern void _ZN9S21158C12D1Ev();
extern void _ZN9S21158C12D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN9S21158C132v7Ev();
extern void _ZN9S21158C132v8Ev();
extern void _ZN9S21158C122v9Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C12__8S21158C1[] = {
  ABISELECT(-1376,-824),
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1952,-1160),
  ABISELECT(-1568,-936),
  ABISELECT(-2080,-1248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&_ZN9S21158C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C12D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21158C122v9Ev,
};
extern void _ZN9S21158C13D1Ev();
extern void _ZN9S21158C13D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
extern void _ZN9S21158C132v7Ev();
extern void _ZN9S21158C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C139S21158C12__8S21158C1[] = {
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1952,-1160),
  ABISELECT(-1568,-936),
  ABISELECT(-2080,-1248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&_ZN9S21158C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C13D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21158C132v8Ev,
};
extern void _ZN8S21158C8D1Ev();
extern void _ZN8S21158C8D0Ev();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C89S21158C139S21158C12__A2__8S21158C1[] = {
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1952,-1160),
  ABISELECT(-1568,-936),
  ABISELECT(-2080,-1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&_ZN8S21158C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C89S21158C139S21158C12__A2__8S21158C1[] = {
  ABISELECT(2080,1248),
  ABISELECT(2080,1248),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__8S21158C89S21158C139S21158C12__A2__8S21158C1[] = {
  ABISELECT(1568,936),
  ABISELECT(-512,-312),
  ABISELECT(1568,936),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C7__8S21158C89S21158C139S21158C12__A2__8S21158C1[] = {
  ABISELECT(1952,1160),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(1952,1160),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev)();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__8S21158C89S21158C139S21158C12__A2__8S21158C1[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI8S21158C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void _ZN9S21158C14D1Ev();
extern void _ZN9S21158C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21158C149S21158C139S21158C12__8S21158C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2344,-1392),
  0,
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&_ZN9S21158C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21158C14D0Ev,
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C49S21158C149S21158C139S21158C12__A3__8S21158C1[] = {
  ABISELECT(-2344,-1392),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C49S21158C149S21158C139S21158C12__A3__8S21158C1[] = {
  ABISELECT(2344,1392),
  ABISELECT(2344,1392),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev)();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C149S21158C139S21158C12__8S21158C1[] = {
  0,
  0,
  ABISELECT(1368,824),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(1368,824),
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C14D1Ev,_ZTv0_n20_N9S21158C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C14D0Ev,_ZTv0_n20_N9S21158C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C149S21158C139S21158C12__8S21158C1[] = {
  ABISELECT(2344,1392),
  ABISELECT(2344,1392),
  (VTBL_ENTRY)&(_ZTI9S21158C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C14D1Ev,_ZTv0_n12_N9S21158C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C14D0Ev,_ZTv0_n12_N9S21158C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21158C13D1Ev,_ZTv0_n12_N9S21158C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21158C13D0Ev,_ZTv0_n12_N9S21158C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C139S21158C12__8S21158C1[] = {
  ABISELECT(2080,1248),
  ABISELECT(2080,1248),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C13D1Ev,_ZTv0_n12_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C13D0Ev,_ZTv0_n12_N9S21158C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21158C13D1Ev,_ZTv0_n16_N9S21158C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21158C13D0Ev,_ZTv0_n16_N9S21158C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C139S21158C12__8S21158C1[] = {
  ABISELECT(1568,936),
  ABISELECT(-512,-312),
  ABISELECT(1568,936),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C13D1Ev,_ZTv0_n16_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C13D0Ev,_ZTv0_n16_N9S21158C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C139S21158C12__8S21158C1[] = {
  ABISELECT(1952,1160),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(1952,1160),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev)();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C139S21158C12__8S21158C1[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D1Ev,_ZTv0_n20_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C13D0Ev,_ZTv0_n20_N9S21158C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZThn264_N9S21158C13D1Ev,_ZThn144_N9S21158C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21158C13D0Ev,_ZThn144_N9S21158C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21158C14__9S21158C139S21158C12__8S21158C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2344,-1392),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21158C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C13D1Ev,_ZThn144_N9S21158C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C13D0Ev,_ZThn144_N9S21158C13D0Ev),
};
extern void _ZN8S21158C4D1Ev();
extern void _ZN8S21158C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C49S21158C12__A4__8S21158C1[] = {
  ABISELECT(-2752,-1628),
  0,
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&_ZN8S21158C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21158C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21158C49S21158C12__A4__8S21158C1[] = {
  ABISELECT(2752,1628),
  ABISELECT(2752,1628),
  (VTBL_ENTRY)&(_ZTI8S21158C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21158C12D1Ev,_ZTv0_n12_N9S21158C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21158C12D0Ev,_ZTv0_n12_N9S21158C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21158C12__8S21158C1[] = {
  ABISELECT(2080,1248),
  ABISELECT(2080,1248),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C12D1Ev,_ZTv0_n12_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21158C12D0Ev,_ZTv0_n12_N9S21158C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21158C12D1Ev,_ZTv0_n16_N9S21158C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21158C12D0Ev,_ZTv0_n16_N9S21158C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__9S21158C12__8S21158C1[] = {
  ABISELECT(1568,936),
  ABISELECT(-512,-312),
  ABISELECT(1568,936),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C12D1Ev,_ZTv0_n16_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21158C12D0Ev,_ZTv0_n16_N9S21158C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C7__9S21158C12__8S21158C1[] = {
  ABISELECT(1952,1160),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(1952,1160),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev)();
extern void _ZN8S21158C92v3Ev();
extern void _ZN8S21158C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C9__9S21158C12__8S21158C1[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D1Ev,_ZTv0_n20_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21158C12D0Ev,_ZTv0_n20_N9S21158C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21158C92v4Ev,
};
extern void ABISELECT(_ZThn264_N9S21158C12D1Ev,_ZThn144_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21158C12D0Ev,_ZThn144_N9S21158C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21158C149S21158C13__9S21158C12__8S21158C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2344,-1392),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C12D1Ev,_ZThn144_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21158C12D0Ev,_ZThn144_N9S21158C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21158C12D1Ev,_ZTv0_n32_N9S21158C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21158C12D0Ev,_ZTv0_n32_N9S21158C12D0Ev)();
extern void _ZN8S21158C82v5Ev();
extern void _ZN8S21158C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21158C8__A1__9S21158C12__8S21158C1[] = {
  0,
  0,
  ABISELECT(1376,824),
  ABISELECT(1256,768),
  ABISELECT(272,144),
  ABISELECT(-576,-336),
  ABISELECT(-192,-112),
  ABISELECT(-704,-424),
  ABISELECT(1376,824),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21158C12D1Ev,_ZTv0_n32_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21158C12D0Ev,_ZTv0_n32_N9S21158C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21158C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21158C82v6Ev,
};
extern void ABISELECT(_ZThn672_N9S21158C12D1Ev,_ZThn380_N9S21158C12D1Ev)();
extern void ABISELECT(_ZThn672_N9S21158C12D0Ev,_ZThn380_N9S21158C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21158C4__A__9S21158C12__8S21158C1[] = {
  ABISELECT(-2752,-1628),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21158C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21158C12D1Ev,_ZThn380_N9S21158C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21158C12D0Ev,_ZThn380_N9S21158C12D0Ev),
};
static  VTT_ENTRY vtt_S21158C1[] = {
  {&(_ZTV8S21158C1[10]),  10,100},
  {&(_tg__ZTV9S21158C10__8S21158C1[9]),  9,13},
  {&(_tg__ZTV9S21158C119S21158C10__8S21158C1[7]),  7,11},
  {&(_tg__ZTV8S21158C89S21158C119S21158C10__A1__8S21158C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21158C89S21158C119S21158C10__A1__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C4__8S21158C89S21158C119S21158C10__A1__8S21158C1[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C89S21158C119S21158C10__A1__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C9__8S21158C89S21158C119S21158C10__A1__8S21158C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21158C119S21158C10__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C4__9S21158C119S21158C10__8S21158C1[4]),  4,6},
  {&(_tg__ZTV8S21158C7__9S21158C119S21158C10__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C9__9S21158C119S21158C10__8S21158C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21158C10__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C4__9S21158C10__8S21158C1[4]),  4,6},
  {&(_tg__ZTV8S21158C7__9S21158C10__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C9__9S21158C10__8S21158C1[7]),  7,11},
  {&(_tg__ZTV9S21158C12__9S21158C10__8S21158C1[14]),  14,21},
  {&(_tg__ZTV9S21158C149S21158C139S21158C12__9S21158C10__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C8__A2__9S21158C10__8S21158C1[10]),  10,14},
  {&(_tg__ZTV8S21158C49S21158C12__A3__9S21158C10__8S21158C1[3]),  3,5},
  {&(_ZTV8S21158C1[22]),  22,100},
  {&(_ZTV8S21158C1[27]),  27,100},
  {&(_ZTV8S21158C1[34]),  34,100},
  {&(_ZTV8S21158C1[40]),  40,100},
  {&(_ZTV8S21158C1[52]),  52,100},
  {&(_ZTV8S21158C1[63]),  63,100},
  {&(_ZTV8S21158C1[81]),  81,100},
  {&(_ZTV8S21158C1[93]),  93,100},
  {&(_ZTV8S21158C1[98]),  98,100},
  {&(_tg__ZTV8S21158C2__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C48S21158C2__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C48S21158C2__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C2__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C7__8S21158C2__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C4__A1__8S21158C2__8S21158C1[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C1[4]),  4,6},
  {&(_tg__ZTV8S21158C4__8S21158C7__8S21158C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21158C7__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C4__A1__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C4__A1__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C8__8S21158C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21158C8__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C4__8S21158C8__8S21158C1[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C8__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C9__8S21158C8__8S21158C1[7]),  7,11},
  {&(_tg__ZTV8S21158C9__8S21158C1[4]),  4,8},
  {&(_tg__ZTV8S21158C48S21158C9__A2__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C48S21158C9__A2__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C9__8S21158C1[3]),  3,5},
  {&(_tg__ZTV9S21158C12__8S21158C1[8]),  8,15},
  {&(_tg__ZTV9S21158C139S21158C12__8S21158C1[7]),  7,13},
  {&(_tg__ZTV8S21158C89S21158C139S21158C12__A2__8S21158C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21158C89S21158C139S21158C12__A2__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C4__8S21158C89S21158C139S21158C12__A2__8S21158C1[4]),  4,6},
  {&(_tg__ZTV8S21158C7__8S21158C89S21158C139S21158C12__A2__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C9__8S21158C89S21158C139S21158C12__A2__8S21158C1[7]),  7,11},
  {&(_tg__ZTV9S21158C149S21158C139S21158C12__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C49S21158C149S21158C139S21158C12__A3__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C49S21158C149S21158C139S21158C12__A3__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C9__9S21158C149S21158C139S21158C12__8S21158C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21158C149S21158C139S21158C12__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21158C139S21158C12__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C4__9S21158C139S21158C12__8S21158C1[4]),  4,6},
  {&(_tg__ZTV8S21158C7__9S21158C139S21158C12__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C9__9S21158C139S21158C12__8S21158C1[7]),  7,11},
  {&(_tg__ZTV9S21158C14__9S21158C139S21158C12__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C49S21158C12__A4__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21158C49S21158C12__A4__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21158C12__8S21158C1[3]),  3,5},
  {&(_tg__ZTV8S21158C4__9S21158C12__8S21158C1[4]),  4,6},
  {&(_tg__ZTV8S21158C7__9S21158C12__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C9__9S21158C12__8S21158C1[7]),  7,11},
  {&(_tg__ZTV9S21158C149S21158C13__9S21158C12__8S21158C1[5]),  5,7},
  {&(_tg__ZTV8S21158C8__A1__9S21158C12__8S21158C1[10]),  10,14},
  {&(_tg__ZTV8S21158C4__A__9S21158C12__8S21158C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21158C1[];
extern  VTBL_ENTRY _ZTV8S21158C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21158C1[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C7D0Ev,_ZTv0_n16_N8S21158C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21158C7D0Ev,_ZThn224_N8S21158C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C7D1Ev,_ZTv0_n16_N8S21158C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21158C7D1Ev,_ZThn224_N8S21158C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C2D0Ev,_ZTv0_n16_N8S21158C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S21158C2D0Ev,_ZThn444_N8S21158C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C2D1Ev,_ZTv0_n16_N8S21158C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S21158C2D1Ev,_ZThn444_N8S21158C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C2D0Ev,_ZTv0_n20_N8S21158C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21158C2D0Ev,_ZThn220_N8S21158C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C2D1Ev,_ZTv0_n20_N8S21158C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21158C2D1Ev,_ZThn220_N8S21158C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C2D0Ev,_ZTv0_n12_N8S21158C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21158C2D0Ev,_ZThn132_N8S21158C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C2D1Ev,_ZTv0_n12_N8S21158C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21158C2D1Ev,_ZThn132_N8S21158C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D0Ev,_ZTv0_n12_N8S21158C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21158C4D0Ev,_ZThn132_N8S21158C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C4D1Ev,_ZTv0_n12_N8S21158C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21158C4D1Ev,_ZThn132_N8S21158C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21158C10D0Ev,_ZTv0_n32_N9S21158C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61168_N9S21158C10D0Ev,_ZThn37380_N9S21158C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21158C10D1Ev,_ZTv0_n32_N9S21158C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61168_N9S21158C10D1Ev,_ZThn37380_N9S21158C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21158C10D0Ev,_ZTv0_n36_N9S21158C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62544_N9S21158C10D0Ev,_ZThn38204_N9S21158C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21158C10D1Ev,_ZTv0_n36_N9S21158C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62544_N9S21158C10D1Ev,_ZThn38204_N9S21158C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C10D0Ev,_ZTv0_n20_N9S21158C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N9S21158C10D0Ev,_ZThn37524_N9S21158C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N9S21158C10D0Ev,_ZThn37044_N9S21158C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C10D1Ev,_ZTv0_n20_N9S21158C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N9S21158C10D1Ev,_ZThn37524_N9S21158C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N9S21158C10D1Ev,_ZThn37044_N9S21158C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C10D0Ev,_ZTv0_n16_N9S21158C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N9S21158C10D0Ev,_ZThn37268_N9S21158C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C10D1Ev,_ZTv0_n16_N9S21158C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N9S21158C10D1Ev,_ZThn37268_N9S21158C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C10D0Ev,_ZTv0_n12_N9S21158C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N9S21158C10D0Ev,_ZThn36956_N9S21158C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C10D1Ev,_ZTv0_n12_N9S21158C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N9S21158C10D1Ev,_ZThn36956_N9S21158C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C11D0Ev,_ZTv0_n20_N9S21158C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N9S21158C11D0Ev,_ZThn37524_N9S21158C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N9S21158C11D0Ev,_ZThn37044_N9S21158C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21158C11D1Ev,_ZTv0_n20_N9S21158C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N9S21158C11D1Ev,_ZThn37524_N9S21158C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N9S21158C11D1Ev,_ZThn37044_N9S21158C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C11D0Ev,_ZTv0_n16_N9S21158C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N9S21158C11D0Ev,_ZThn37268_N9S21158C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21158C11D1Ev,_ZTv0_n16_N9S21158C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N9S21158C11D1Ev,_ZThn37268_N9S21158C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C11D0Ev,_ZTv0_n12_N9S21158C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N9S21158C11D0Ev,_ZThn36956_N9S21158C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21158C11D1Ev,_ZTv0_n12_N9S21158C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N9S21158C11D1Ev,_ZThn36956_N9S21158C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D0Ev,_ZTv0_n20_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21158C8D0Ev,_ZThn144_N8S21158C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N8S21158C8D0Ev,_ZThn37524_N8S21158C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N8S21158C8D0Ev,_ZThn37044_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C8D1Ev,_ZTv0_n20_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21158C8D1Ev,_ZThn144_N8S21158C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N8S21158C8D1Ev,_ZThn37524_N8S21158C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N8S21158C8D1Ev,_ZThn37044_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D0Ev,_ZTv0_n16_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N8S21158C8D0Ev,_ZThn37268_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C8D1Ev,_ZTv0_n16_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N8S21158C8D1Ev,_ZThn37268_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D0Ev,_ZTv0_n12_N8S21158C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N8S21158C8D0Ev,_ZThn36956_N8S21158C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C8D1Ev,_ZTv0_n12_N8S21158C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N8S21158C8D1Ev,_ZThn36956_N8S21158C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21158C1D0Ev,_ZTv0_n36_N8S21158C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62544_N8S21158C1D0Ev,_ZThn38204_N8S21158C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21158C1D1Ev,_ZTv0_n36_N8S21158C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62544_N8S21158C1D1Ev,_ZThn38204_N8S21158C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21158C1D0Ev,_ZTv0_n32_N8S21158C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61168_N8S21158C1D0Ev,_ZThn37380_N8S21158C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21158C1D1Ev,_ZTv0_n32_N8S21158C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61168_N8S21158C1D1Ev,_ZThn37380_N8S21158C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C1D0Ev,_ZTv0_n16_N8S21158C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N8S21158C1D0Ev,_ZThn37268_N8S21158C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21158C1D1Ev,_ZTv0_n16_N8S21158C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N8S21158C1D1Ev,_ZThn37268_N8S21158C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C1D0Ev,_ZTv0_n20_N8S21158C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N8S21158C1D0Ev,_ZThn37524_N8S21158C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N8S21158C1D0Ev,_ZThn37044_N8S21158C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21158C1D1Ev,_ZTv0_n20_N8S21158C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N8S21158C1D1Ev,_ZThn37524_N8S21158C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N8S21158C1D1Ev,_ZThn37044_N8S21158C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C1D0Ev,_ZTv0_n12_N8S21158C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N8S21158C1D0Ev,_ZThn36956_N8S21158C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21158C1D1Ev,_ZTv0_n12_N8S21158C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N8S21158C1D1Ev,_ZThn36956_N8S21158C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21158C1D0Ev,_ZTv0_n24_N8S21158C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60240_N8S21158C1D0Ev,_ZThn36824_N8S21158C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21158C1D1Ev,_ZTv0_n24_N8S21158C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60240_N8S21158C1D1Ev,_ZThn36824_N8S21158C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21158C1 = {  "S21158C1", // class name
  bases_S21158C1, 28,
  &(vtc_S21158C1[0]), // expected_vtbl_contents
  &(vtt_S21158C1[0]), // expected_vtt_contents
  ABISELECT(63408,38696), // object size
  NSPAIRA(_ZTI8S21158C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21158C1),100, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21158C1),75, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C4  : virtual S19674C5 , S19674C7 {
  short s21159c4f0[6];
  __tsi64 s21159c4f1[3];
  ::S19674C9 s21159c4f2;
  ~S21159C4(); // tgen
  S21159C4(); // tgen
};
//SIG(-1 S21159C4) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ m Fp[14]} Fs[6] FL[3] FU4{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}}


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

static void Test_S21159C4()
{
  extern Class_Descriptor cd_S21159C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,51)];
    init_test(&cd_S21159C4, buf);
    S21159C4 *dp, &lv = *(dp=new (buf) S21159C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,200), "sizeof(S21159C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21159C4)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(192,112), "S21159C4");
    check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21159C4");
    check_field_offset(lv, s21159c4f0, ABISELECT(120,60), "S21159C4.s21159c4f0");
    check_field_offset(lv, s21159c4f1, ABISELECT(136,72), "S21159C4.s21159c4f1");
    check_field_offset(lv, s21159c4f2, ABISELECT(160,96), "S21159C4.s21159c4f2");
    test_class_info(&lv, &cd_S21159C4);
    dp->~S21159C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C4(Test_S21159C4, "S21159C4", ABISELECT(312,200));

#else // __cplusplus

extern void _ZN8S21159C4C1Ev();
extern void _ZN8S21159C4D1Ev();
Name_Map name_map_S21159C4[] = {
  NSPAIR(_ZN8S21159C4C1Ev),
  NSPAIR(_ZN8S21159C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
static Base_Class bases_S21159C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(192,112), //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},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21159C4[];
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZThn192_N8S21159C4D1Ev,_ZThn112_N8S21159C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
extern void ABISELECT(_ZThn192_N8S21159C4D0Ev,_ZThn112_N8S21159C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21159C4[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21159C4[];
static  VTT_ENTRY vtt_S21159C4[] = {
  {&(_ZTV8S21159C4[3]),  3,10},
  {&(_ZTV8S21159C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21159C4D0Ev,_ZThn112_N8S21159C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21159C4D1Ev,_ZThn112_N8S21159C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C4 = {  "S21159C4", // class name
  bases_S21159C4, 2,
  &(vtc_S21159C4[0]), // expected_vtbl_contents
  &(vtt_S21159C4[0]), // expected_vtt_contents
  ABISELECT(312,200), // object size
  NSPAIRA(_ZTI8S21159C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21159C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21159C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C7  : virtual S21159C4 , S19674C5 {
  char s21159c7f0:6;
  char s21159c7f1[8];
  long double s21159c7f2;
  ::S19674C7 s21159c7f3;
  ::S19674C7 s21159c7f4;
  ~S21159C7(); // tgen
  S21159C7(); // tgen
};
//SIG(-1 S21159C7) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC3 Fc:6 Fc[8] FD FC4 FC4}


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

static void Test_S21159C7()
{
  extern Class_Descriptor cd_S21159C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,107)];
    init_test(&cd_S21159C7, buf);
    S21159C7 *dp, &lv = *(dp=new (buf) S21159C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,424), "sizeof(S21159C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21159C7)");
    check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(576,336), "S21159C7");
    check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(392,228), "S21159C7");
    check_base_class_offset(lv, (S21159C4*), ABISELECT(384,224), "S21159C7");
    /*is_ambiguous_... S21159C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), 0, "S21159C7");
    set_bf_and_test(lv, s21159c7f0, ABISELECT(120,88), 0, 6, 1, "S21159C7");
    set_bf_and_test(lv, s21159c7f0, ABISELECT(120,88), 0, 6, hide_sll(1LL<<5), "S21159C7");
    check_field_offset(lv, s21159c7f1, ABISELECT(121,89), "S21159C7.s21159c7f1");
    check_field_offset(lv, s21159c7f2, ABISELECT(144,100), "S21159C7.s21159c7f2");
    check_field_offset(lv, s21159c7f3, ABISELECT(160,112), "S21159C7.s21159c7f3");
    check_field_offset(lv, s21159c7f4, ABISELECT(272,168), "S21159C7.s21159c7f4");
    test_class_info(&lv, &cd_S21159C7);
    dp->~S21159C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C7(Test_S21159C7, "S21159C7", ABISELECT(704,424));

#else // __cplusplus

extern void _ZN8S21159C7C1Ev();
extern void _ZN8S21159C7D1Ev();
Name_Map name_map_S21159C7[] = {
  NSPAIR(_ZN8S21159C7C1Ev),
  NSPAIR(_ZN8S21159C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21159C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(576,336), //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(384,224), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S21159C7[];
extern void _ZN8S21159C7D1Ev();
extern void _ZN8S21159C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S21159C7D1Ev,_ZThn224_N8S21159C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev)();
extern void ABISELECT(_ZThn384_N8S21159C7D0Ev,_ZThn224_N8S21159C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev)();
extern void ABISELECT(_ZThn576_N8S21159C7D1Ev,_ZThn336_N8S21159C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev)();
extern void ABISELECT(_ZThn576_N8S21159C7D0Ev,_ZThn336_N8S21159C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21159C7[] = {
  ABISELECT(576,336),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&_ZN8S21159C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C7D0Ev,
  ABISELECT(-384,-224),
  ABISELECT(192,112),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev),
  ABISELECT(-576,-336),
  ABISELECT(-576,-336),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S21159C7[];
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C7[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZThn192_N8S21159C4D1Ev,_ZThn112_N8S21159C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
extern void ABISELECT(_ZThn192_N8S21159C4D0Ev,_ZThn112_N8S21159C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__8S21159C7[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
static  VTT_ENTRY vtt_S21159C7[] = {
  {&(_ZTV8S21159C7[4]),  4,17},
  {&(_ZTV8S21159C7[10]),  10,17},
  {&(_ZTV8S21159C7[15]),  15,17},
  {&(_tg__ZTV8S21159C4__8S21159C7[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__8S21159C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21159C7[];
extern  VTBL_ENTRY _ZTV8S21159C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C7[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21159C4D0Ev,_ZThn112_N8S21159C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21159C4D1Ev,_ZThn112_N8S21159C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S21159C7D0Ev,_ZThn336_N8S21159C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S21159C7D1Ev,_ZThn336_N8S21159C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21159C7D0Ev,_ZThn224_N8S21159C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21159C7D1Ev,_ZThn224_N8S21159C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C7 = {  "S21159C7", // class name
  bases_S21159C7, 4,
  &(vtc_S21159C7[0]), // expected_vtbl_contents
  &(vtt_S21159C7[0]), // expected_vtt_contents
  ABISELECT(704,424), // object size
  NSPAIRA(_ZTI8S21159C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21159C7),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21159C7),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C2  : virtual S19674C5 , S21159C4 , virtual S21159C7 {
  long double s21159c2f0;
  void *s21159c2f1;
  void *s21159c2f2;
  ~S21159C2(); // tgen
  S21159C2(); // tgen
};
//SIG(-1 S21159C2) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} FD Fp Fp}


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

static void Test_S21159C2()
{
  extern Class_Descriptor cd_S21159C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,140)];
    init_test(&cd_S21159C2, buf);
    S21159C2 *dp, &lv = *(dp=new (buf) S21159C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,556), "sizeof(S21159C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21159C2)");
    /*is_ambiguous_... S21159C2::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(224,132), "S21159C2");
    /*is_ambiguous_... S21159C2::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(224,132), "S21159C2");
    /*is_ambiguous_... S21159C2::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(224,132), "S21159C2");
    /*is_ambiguous_... S21159C2::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(8,4), "S21159C2");
    /*is_ambiguous_... S21159C2::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*), 0, "S21159C2");
    /*is_ambiguous_... S21159C2::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(744,448), "S21159C2");
    check_base_class_offset(lv, (S21159C4*)(S21159C7*), ABISELECT(736,444), "S21159C2");
    /*is_ambiguous_... S21159C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C7*), ABISELECT(352,220), "S21159C2");
    check_base_class_offset(lv, (S21159C7*), ABISELECT(352,220), "S21159C2");
    check_field_offset(lv, s21159c2f0, ABISELECT(192,112), "S21159C2.s21159c2f0");
    check_field_offset(lv, s21159c2f1, ABISELECT(208,124), "S21159C2.s21159c2f1");
    check_field_offset(lv, s21159c2f2, ABISELECT(216,128), "S21159C2.s21159c2f2");
    test_class_info(&lv, &cd_S21159C2);
    dp->~S21159C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C2(Test_S21159C2, "S21159C2", ABISELECT(928,556));

#else // __cplusplus

extern void _ZN8S21159C2C1Ev();
extern void _ZN8S21159C2D1Ev();
Name_Map name_map_S21159C2[] = {
  NSPAIR(_ZN8S21159C2C1Ev),
  NSPAIR(_ZN8S21159C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21159C7;
extern VTBL_ENTRY _ZTI8S21159C7[];
extern  VTBL_ENTRY _ZTV8S21159C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C7[];
static Base_Class bases_S21159C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(224,132), //bcp->offset
    7, //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_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21159C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(744,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(736,444), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(352,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21159C7,    ABISELECT(352,220), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21159C2[];
extern void _ZN8S21159C2D1Ev();
extern void _ZN8S21159C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21159C2D1Ev,_ZTv0_n12_N8S21159C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21159C2D1Ev,_ZThn132_N8S21159C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C2D0Ev,_ZTv0_n12_N8S21159C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21159C2D0Ev,_ZThn132_N8S21159C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C2D1Ev,_ZTv0_n20_N8S21159C2D1Ev)();
extern void ABISELECT(_ZThn352_N8S21159C2D1Ev,_ZThn220_N8S21159C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C2D0Ev,_ZTv0_n20_N8S21159C2D0Ev)();
extern void ABISELECT(_ZThn352_N8S21159C2D0Ev,_ZThn220_N8S21159C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C2D1Ev,_ZTv0_n16_N8S21159C2D1Ev)();
extern void ABISELECT(_ZThn736_N8S21159C2D1Ev,_ZThn444_N8S21159C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C2D0Ev,_ZTv0_n16_N8S21159C2D0Ev)();
extern void ABISELECT(_ZThn736_N8S21159C2D0Ev,_ZThn444_N8S21159C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21159C2[] = {
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C2[0]),
  (VTBL_ENTRY)&_ZN8S21159C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C2D0Ev,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21159C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C2D1Ev,_ZTv0_n12_N8S21159C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C2D0Ev,_ZTv0_n12_N8S21159C2D0Ev),
  ABISELECT(-352,-220),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI8S21159C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C2D1Ev,_ZTv0_n20_N8S21159C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C2D0Ev,_ZTv0_n20_N8S21159C2D0Ev),
  ABISELECT(-736,-444),
  ABISELECT(-512,-312),
  ABISELECT(-736,-444),
  (VTBL_ENTRY)&(_ZTI8S21159C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C2D1Ev,_ZTv0_n16_N8S21159C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C2D0Ev,_ZTv0_n16_N8S21159C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21159C2[];
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__A__8S21159C2[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZThn224_N8S21159C4D1Ev,_ZThn132_N8S21159C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
extern void ABISELECT(_ZThn224_N8S21159C4D0Ev,_ZThn132_N8S21159C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__A__8S21159C2[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void _ZN8S21159C7D1Ev();
extern void _ZN8S21159C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C2[] = {
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&_ZN8S21159C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S21159C7D1Ev,_ZThn224_N8S21159C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev)();
extern void ABISELECT(_ZThn384_N8S21159C7D0Ev,_ZThn224_N8S21159C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C7__8S21159C2[] = {
  ABISELECT(-384,-224),
  ABISELECT(-512,-312),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C7__8S21159C2[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev),
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__A1__8S21159C2[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__A1__8S21159C2[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
static  VTT_ENTRY vtt_S21159C2[] = {
  {&(_ZTV8S21159C2[5]),  5,25},
  {&(_tg__ZTV8S21159C4__A__8S21159C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__A__8S21159C2[3]),  3,5},
  {&(_ZTV8S21159C2[10]),  10,25},
  {&(_ZTV8S21159C2[17]),  17,25},
  {&(_ZTV8S21159C2[23]),  23,25},
  {&(_tg__ZTV8S21159C7__8S21159C2[4]),  4,6},
  {&(_tg__ZTV8S21159C4__8S21159C7__8S21159C2[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21159C7__8S21159C2[3]),  3,5},
  {&(_tg__ZTV8S21159C4__A1__8S21159C2[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__A1__8S21159C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21159C2[];
extern  VTBL_ENTRY _ZTV8S21159C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C2[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21159C7D0Ev,_ZThn224_N8S21159C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21159C7D1Ev,_ZThn224_N8S21159C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21159C4D0Ev,_ZThn132_N8S21159C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21159C4D1Ev,_ZThn132_N8S21159C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C2D0Ev,_ZTv0_n16_N8S21159C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S21159C2D0Ev,_ZThn444_N8S21159C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C2D1Ev,_ZTv0_n16_N8S21159C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S21159C2D1Ev,_ZThn444_N8S21159C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C2D0Ev,_ZTv0_n20_N8S21159C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21159C2D0Ev,_ZThn220_N8S21159C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C2D1Ev,_ZTv0_n20_N8S21159C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21159C2D1Ev,_ZThn220_N8S21159C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C2D0Ev,_ZTv0_n12_N8S21159C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21159C2D0Ev,_ZThn132_N8S21159C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C2D1Ev,_ZTv0_n12_N8S21159C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21159C2D1Ev,_ZThn132_N8S21159C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C2 = {  "S21159C2", // class name
  bases_S21159C2, 7,
  &(vtc_S21159C2[0]), // expected_vtbl_contents
  &(vtt_S21159C2[0]), // expected_vtt_contents
  ABISELECT(928,556), // object size
  NSPAIRA(_ZTI8S21159C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21159C2),25, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21159C2),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C9  : virtual S19674C5 , virtual S19674C7 , S21159C4 {
  ::S21159C4 s21159c9f0;
  long double s21159c9f1[7];
  ::S21159C4 s21159c9f2;
  __tsi64 s21159c9f3;
  void *s21159c9f4[5];
  virtual void  v3(); // _ZN8S21159C92v3Ev
  virtual void  v4(); // _ZN8S21159C92v4Ev
  ~S21159C9(); // tgen
  S21159C9(); // tgen
};
//SIG(-1 S21159C9) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ m Fp[14]} BC4{ VBC2 BC3 Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC4 FD[7] FC4 FL Fp[5]}


void  S21159C9 ::v3(){vfunc_called(this, "_ZN8S21159C92v3Ev");}
void  S21159C9 ::v4(){vfunc_called(this, "_ZN8S21159C92v4Ev");}
S21159C9 ::~S21159C9(){ note_dtor("S21159C9", this);} // tgen
S21159C9 ::S21159C9(){ note_ctor("S21159C9", this);} // tgen

static void Test_S21159C9()
{
  extern Class_Descriptor cd_S21159C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,193)];
    init_test(&cd_S21159C9, buf);
    S21159C9 *dp, &lv = *(dp=new (buf) S21159C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,768), "sizeof(S21159C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21159C9)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(984,624), "S21159C9");
    check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(984,624), "S21159C9");
    /*is_ambiguous_... S21159C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(1104,712), "S21159C9");
    check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(8,4), "S21159C9");
    check_base_class_offset(lv, (S21159C4*), 0, "S21159C9");
    check_field_offset(lv, s21159c9f0, ABISELECT(192,112), "S21159C9.s21159c9f0");
    check_field_offset(lv, s21159c9f1, ABISELECT(512,312), "S21159C9.s21159c9f1");
    check_field_offset(lv, s21159c9f2, ABISELECT(624,396), "S21159C9.s21159c9f2");
    check_field_offset(lv, s21159c9f3, ABISELECT(936,596), "S21159C9.s21159c9f3");
    check_field_offset(lv, s21159c9f4, ABISELECT(944,604), "S21159C9.s21159c9f4");
    test_class_info(&lv, &cd_S21159C9);
    dp->~S21159C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C9(Test_S21159C9, "S21159C9", ABISELECT(1216,768));

#else // __cplusplus

extern void _ZN8S21159C9C1Ev();
extern void _ZN8S21159C9D1Ev();
Name_Map name_map_S21159C9[] = {
  NSPAIR(_ZN8S21159C9C1Ev),
  NSPAIR(_ZN8S21159C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
static Base_Class bases_S21159C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(984,624), //bcp->offset
    8, //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_S19674C7,    ABISELECT(1104,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21159C4,    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 _ZTI8S21159C9[];
extern void _ZN8S21159C9D1Ev();
extern void _ZN8S21159C9D0Ev();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
extern void ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev)();
extern void ABISELECT(_ZThn984_N8S21159C9D1Ev,_ZThn624_N8S21159C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev)();
extern void ABISELECT(_ZThn984_N8S21159C9D0Ev,_ZThn624_N8S21159C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21159C9[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&_ZN8S21159C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21159C9[];
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C9[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZThn984_N8S21159C4D1Ev,_ZThn624_N8S21159C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
extern void ABISELECT(_ZThn984_N8S21159C4D0Ev,_ZThn624_N8S21159C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__8S21159C9[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
static  VTT_ENTRY vtt_S21159C9[] = {
  {&(_ZTV8S21159C9[4]),  4,13},
  {&(_tg__ZTV8S21159C4__8S21159C9[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__8S21159C9[3]),  3,5},
  {&(_ZTV8S21159C9[11]),  11,13},
};
extern VTBL_ENTRY _ZTI8S21159C9[];
extern  VTBL_ENTRY _ZTV8S21159C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C9[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21159C4D0Ev,_ZThn624_N8S21159C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21159C4D1Ev,_ZThn624_N8S21159C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21159C9D0Ev,_ZThn624_N8S21159C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21159C9D1Ev,_ZThn624_N8S21159C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C9 = {  "S21159C9", // class name
  bases_S21159C9, 4,
  &(vtc_S21159C9[0]), // expected_vtbl_contents
  &(vtt_S21159C9[0]), // expected_vtt_contents
  ABISELECT(1216,768), // object size
  NSPAIRA(_ZTI8S21159C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21159C9),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21159C9),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C8  : virtual S19674C5 , virtual S21159C4 , virtual S21159C7 , S19674C7 , virtual S21159C9 {
  int s21159c8f0;
  int s21159c8f1;
  ::S19674C7 s21159c8f2;
  char s21159c8f3;
  char s21159c8f4;
  int s21159c8f5;
  short s21159c8f6;
  __tsi64 s21159c8f7;
  virtual  ~S21159C8(); // _ZN8S21159C8D2Ev
  virtual void  v5(); // _ZN8S21159C82v5Ev
  virtual void  v6(); // _ZN8S21159C82v6Ev
  S21159C8(); // tgen
};
//SIG(-1 S21159C8) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ VBC2 BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC6{ VBC3 BC2 Fc:6 Fc[8] FD FC4 FC4} BC4 VBC7{ VBC2 VBC4 BC3 v3 v4 FC3 FD[7] FC3 FL Fp[5]} vd v1 v2 Fi Fi FC4 Fc Fc Fi Fs FL}


 S21159C8 ::~S21159C8(){ note_dtor("S21159C8", this);}
void  S21159C8 ::v5(){vfunc_called(this, "_ZN8S21159C82v5Ev");}
void  S21159C8 ::v6(){vfunc_called(this, "_ZN8S21159C82v6Ev");}
S21159C8 ::S21159C8(){ note_ctor("S21159C8", this);} // tgen

static void Test_S21159C8()
{
  extern Class_Descriptor cd_S21159C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,313)];
    init_test(&cd_S21159C8, buf);
    S21159C8 *dp, &lv = *(dp=new (buf) S21159C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1248), "sizeof(S21159C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21159C8)");
    /*is_ambiguous_... S21159C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), ABISELECT(264,144), "S21159C8");
    /*is_ambiguous_... S21159C8::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(264,144), "S21159C8");
    check_base_class_offset(lv, (S19674C5*)(S21159C9*), ABISELECT(264,144), "S21159C8");
    check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C9*), ABISELECT(264,144), "S21159C8");
    /*is_ambiguous_... S21159C8::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(392,236), "S21159C8");
    /*is_ambiguous_... S21159C8::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*), ABISELECT(384,232), "S21159C8");
    check_base_class_offset(lv, (S21159C4*)(S21159C7*), ABISELECT(384,232), "S21159C8");
    /*is_ambiguous_... S21159C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C7*), ABISELECT(576,344), "S21159C8");
    check_base_class_offset(lv, (S21159C7*), ABISELECT(576,344), "S21159C8");
    /*is_ambiguous_... S21159C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21159C8");
    /*is_ambiguous_... S21159C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C9*), ABISELECT(1944,1192), "S21159C8");
    check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C9*), ABISELECT(968,572), "S21159C8");
    check_base_class_offset(lv, (S21159C4*)(S21159C9*), ABISELECT(960,568), "S21159C8");
    check_base_class_offset(lv, (S21159C9*), ABISELECT(960,568), "S21159C8");
    check_field_offset(lv, s21159c8f0, ABISELECT(120,60), "S21159C8.s21159c8f0");
    check_field_offset(lv, s21159c8f1, ABISELECT(124,64), "S21159C8.s21159c8f1");
    check_field_offset(lv, s21159c8f2, ABISELECT(128,68), "S21159C8.s21159c8f2");
    check_field_offset(lv, s21159c8f3, ABISELECT(240,124), "S21159C8.s21159c8f3");
    check_field_offset(lv, s21159c8f4, ABISELECT(241,125), "S21159C8.s21159c8f4");
    check_field_offset(lv, s21159c8f5, ABISELECT(244,128), "S21159C8.s21159c8f5");
    check_field_offset(lv, s21159c8f6, ABISELECT(248,132), "S21159C8.s21159c8f6");
    check_field_offset(lv, s21159c8f7, ABISELECT(256,136), "S21159C8.s21159c8f7");
    test_class_info(&lv, &cd_S21159C8);
    dp->~S21159C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C8(Test_S21159C8, "S21159C8", ABISELECT(2064,1248));

#else // __cplusplus

extern void _ZN8S21159C8C1Ev();
extern void _ZN8S21159C8D2Ev();
Name_Map name_map_S21159C8[] = {
  NSPAIR(_ZN8S21159C8C1Ev),
  NSPAIR(_ZN8S21159C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21159C7;
extern VTBL_ENTRY _ZTI8S21159C7[];
extern  VTBL_ENTRY _ZTV8S21159C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C9;
extern VTBL_ENTRY _ZTI8S21159C9[];
extern  VTBL_ENTRY _ZTV8S21159C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C9[];
static Base_Class bases_S21159C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(264,144), //bcp->offset
    11, //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_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(384,232), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21159C7,    ABISELECT(576,344), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(1944,1192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(968,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C4,    ABISELECT(960,568), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21159C9,    ABISELECT(960,568), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21159C8[];
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn264_N8S21159C8D1Ev,_ZThn144_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn264_N8S21159C8D0Ev,_ZThn144_N8S21159C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn384_N8S21159C8D1Ev,_ZThn232_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn384_N8S21159C8D0Ev,_ZThn232_N8S21159C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn576_N8S21159C8D1Ev,_ZThn344_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn576_N8S21159C8D0Ev,_ZThn344_N8S21159C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn960_N8S21159C8D1Ev,_ZThn568_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn960_N8S21159C8D0Ev,_ZThn568_N8S21159C8D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY vtc_S21159C8[] = {
  ABISELECT(1944,1192),
  ABISELECT(960,568),
  ABISELECT(576,344),
  ABISELECT(384,232),
  ABISELECT(264,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
  ABISELECT(-384,-232),
  ABISELECT(-120,-88),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
  ABISELECT(-576,-344),
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  ABISELECT(-576,-344),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  0,
  0,
  ABISELECT(-960,-568),
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  ABISELECT(-960,-568),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern VTBL_ENTRY _ZTV8S21159C8[];
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C8[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__8S21159C8[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void _ZN8S21159C7D1Ev();
extern void _ZN8S21159C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C8[] = {
  ABISELECT(-312,-200),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&_ZN8S21159C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C7__8S21159C8[] = {
  ABISELECT(192,112),
  ABISELECT(-120,-88),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C7__8S21159C8[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev),
};
extern void _ZN8S21159C9D1Ev();
extern void _ZN8S21159C9D0Ev();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C8[] = {
  ABISELECT(984,624),
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&_ZN8S21159C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C48S21159C9__A1__8S21159C8[] = {
  ABISELECT(-696,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C48S21159C9__A1__8S21159C8[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C9__8S21159C8[] = {
  ABISELECT(696,424),
  ABISELECT(696,424),
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev),
};
static  VTT_ENTRY vtt_S21159C8[] = {
  {&(_ZTV8S21159C8[7]),  7,40},
  {&(_ZTV8S21159C8[14]),  14,40},
  {&(_ZTV8S21159C8[20]),  20,40},
  {&(_ZTV8S21159C8[27]),  27,40},
  {&(_ZTV8S21159C8[36]),  36,40},
  {&(_tg__ZTV8S21159C4__8S21159C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__8S21159C8[3]),  3,5},
  {&(_tg__ZTV8S21159C7__8S21159C8[4]),  4,6},
  {&(_tg__ZTV8S21159C4__8S21159C7__8S21159C8[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21159C7__8S21159C8[3]),  3,5},
  {&(_tg__ZTV8S21159C9__8S21159C8[4]),  4,8},
  {&(_tg__ZTV8S21159C48S21159C9__A1__8S21159C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C48S21159C9__A1__8S21159C8[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C9__8S21159C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N8S21159C8D0Ev,_ZThn568_N8S21159C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S21159C8D0Ev,_ZThn344_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N8S21159C8D1Ev,_ZThn568_N8S21159C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S21159C8D1Ev,_ZThn344_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21159C8D0Ev,_ZThn232_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21159C8D1Ev,_ZThn232_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21159C8D0Ev,_ZThn144_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21159C8D1Ev,_ZThn144_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C8 = {  "S21159C8", // class name
  bases_S21159C8, 10,
  &(vtc_S21159C8[0]), // expected_vtbl_contents
  &(vtt_S21159C8[0]), // expected_vtt_contents
  ABISELECT(2064,1248), // object size
  NSPAIRA(_ZTI8S21159C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21159C8),40, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21159C8),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C11  : S21159C8 {
  short s21159c11f0;
  void *s21159c11f1;
  int s21159c11f2;
  __tsi64 s21159c11f3[10];
  char s21159c11f4;
  short s21159c11f5;
  short s21159c11f6;
  int s21159c11f7;
  virtual  ~S21159C11(); // _ZN9S21159C11D2Ev
  S21159C11(); // tgen
};
//SIG(-1 S21159C11) C1{ BC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC8{ VBC3 VBC5 BC4 v1 v2 FC4 FD[7] FC4 FL Fp[5]} vd v3 v4 Fi Fi FC5 Fc Fc Fi Fs FL} vd Fs Fp Fi FL[10] Fc Fs Fs Fi}


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

static void Test_S21159C11()
{
  extern Class_Descriptor cd_S21159C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(138,339)];
    init_test(&cd_S21159C11, buf);
    S21159C11 *dp, &lv = *(dp=new (buf) S21159C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2192,1352), "sizeof(S21159C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21159C11)");
    /*is_ambiguous_... S21159C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C8*), ABISELECT(384,248), "S21159C11");
    /*is_ambiguous_... S21159C11::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(384,248), "S21159C11");
    check_base_class_offset(lv, (S19674C5*)(S21159C9*), ABISELECT(384,248), "S21159C11");
    check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C9*), ABISELECT(384,248), "S21159C11");
    /*is_ambiguous_... S21159C11::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(512,340), "S21159C11");
    /*is_ambiguous_... S21159C8::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C8*), ABISELECT(504,336), "S21159C11");
    check_base_class_offset(lv, (S21159C4*)(S21159C7*), ABISELECT(504,336), "S21159C11");
    /*is_ambiguous_... S21159C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C7*), ABISELECT(704,448), "S21159C11");
    check_base_class_offset(lv, (S21159C7*)(S21159C8*), ABISELECT(704,448), "S21159C11");
    /*is_ambiguous_... S21159C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C8*), ABISELECT(8,4), "S21159C11");
    /*is_ambiguous_... S21159C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C9*), ABISELECT(2072,1296), "S21159C11");
    check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C9*), ABISELECT(1096,676), "S21159C11");
    check_base_class_offset(lv, (S21159C4*)(S21159C9*), ABISELECT(1088,672), "S21159C11");
    check_base_class_offset(lv, (S21159C9*)(S21159C8*), ABISELECT(1088,672), "S21159C11");
    check_base_class_offset(lv, (S21159C8*), 0, "S21159C11");
    check_field_offset(lv, s21159c11f0, ABISELECT(264,144), "S21159C11.s21159c11f0");
    check_field_offset(lv, s21159c11f1, ABISELECT(272,148), "S21159C11.s21159c11f1");
    check_field_offset(lv, s21159c11f2, ABISELECT(280,152), "S21159C11.s21159c11f2");
    check_field_offset(lv, s21159c11f3, ABISELECT(288,156), "S21159C11.s21159c11f3");
    check_field_offset(lv, s21159c11f4, ABISELECT(368,236), "S21159C11.s21159c11f4");
    check_field_offset(lv, s21159c11f5, ABISELECT(370,238), "S21159C11.s21159c11f5");
    check_field_offset(lv, s21159c11f6, ABISELECT(372,240), "S21159C11.s21159c11f6");
    check_field_offset(lv, s21159c11f7, ABISELECT(376,244), "S21159C11.s21159c11f7");
    test_class_info(&lv, &cd_S21159C11);
    dp->~S21159C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C11(Test_S21159C11, "S21159C11", ABISELECT(2192,1352));

#else // __cplusplus

extern void _ZN9S21159C11C1Ev();
extern void _ZN9S21159C11D2Ev();
Name_Map name_map_S21159C11[] = {
  NSPAIR(_ZN9S21159C11C1Ev),
  NSPAIR(_ZN9S21159C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21159C7;
extern VTBL_ENTRY _ZTI8S21159C7[];
extern  VTBL_ENTRY _ZTV8S21159C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C9;
extern VTBL_ENTRY _ZTI8S21159C9[];
extern  VTBL_ENTRY _ZTV8S21159C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C9[];
extern Class_Descriptor cd_S21159C8;
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
static Base_Class bases_S21159C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(384,248), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(512,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(504,336), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(704,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21159C7,    ABISELECT(704,448), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2072,1296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1096,676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C4,    ABISELECT(1088,672), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21159C9,    ABISELECT(1088,672), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21159C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21159C11[];
extern void _ZN9S21159C11D1Ev();
extern void _ZN9S21159C11D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void ABISELECT(_ZTv0_n24_N9S21159C11D1Ev,_ZTv0_n12_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S21159C11D1Ev,_ZThn248_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C11D0Ev,_ZTv0_n12_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn384_N9S21159C11D0Ev,_ZThn248_N9S21159C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C11D1Ev,_ZTv0_n16_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn504_N9S21159C11D1Ev,_ZThn336_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C11D0Ev,_ZTv0_n16_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn504_N9S21159C11D0Ev,_ZThn336_N9S21159C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn704_N9S21159C11D1Ev,_ZThn448_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn704_N9S21159C11D0Ev,_ZThn448_N9S21159C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn1088_N9S21159C11D1Ev,_ZThn672_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn1088_N9S21159C11D0Ev,_ZThn672_N9S21159C11D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY vtc_S21159C11[] = {
  ABISELECT(2072,1296),
  ABISELECT(1088,672),
  ABISELECT(704,448),
  ABISELECT(504,336),
  ABISELECT(384,248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&_ZN9S21159C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C11D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  ABISELECT(-384,-248),
  ABISELECT(-384,-248),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C11D1Ev,_ZTv0_n12_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C11D0Ev,_ZTv0_n12_N9S21159C11D0Ev),
  ABISELECT(-504,-336),
  ABISELECT(-120,-88),
  ABISELECT(-504,-336),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C11D1Ev,_ZTv0_n16_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C11D0Ev,_ZTv0_n16_N9S21159C11D0Ev),
  ABISELECT(-704,-448),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-704,-448),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev),
  0,
  0,
  ABISELECT(-1088,-672),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1088,-672),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern VTBL_ENTRY _ZTV9S21159C11[];
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C8__9S21159C11[] = {
  ABISELECT(2072,1296),
  ABISELECT(1088,672),
  ABISELECT(704,448),
  ABISELECT(504,336),
  ABISELECT(384,248),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn384_N8S21159C8D1Ev,_ZThn248_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn384_N8S21159C8D0Ev,_ZThn248_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C8__9S21159C11[] = {
  ABISELECT(-384,-248),
  ABISELECT(-384,-248),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn504_N8S21159C8D1Ev,_ZThn336_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn504_N8S21159C8D0Ev,_ZThn336_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C8__9S21159C11[] = {
  ABISELECT(-504,-336),
  ABISELECT(-120,-88),
  ABISELECT(-504,-336),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn704_N8S21159C8D1Ev,_ZThn448_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn704_N8S21159C8D0Ev,_ZThn448_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C8__9S21159C11[] = {
  ABISELECT(-704,-448),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-704,-448),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn1088_N8S21159C8D1Ev,_ZThn672_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn1088_N8S21159C8D0Ev,_ZThn672_N8S21159C8D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C8__9S21159C11[] = {
  0,
  0,
  ABISELECT(-1088,-672),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1088,-672),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C11[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__9S21159C11[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void _ZN8S21159C7D1Ev();
extern void _ZN8S21159C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C11[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&_ZN8S21159C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C7__9S21159C11[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C7__9S21159C11[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev),
};
extern void _ZN8S21159C9D1Ev();
extern void _ZN8S21159C9D0Ev();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C11[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&_ZN8S21159C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C48S21159C9__A1__9S21159C11[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C48S21159C9__A1__9S21159C11[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C9__9S21159C11[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev),
};
static  VTT_ENTRY vtt_S21159C11[] = {
  {&(_ZTV9S21159C11[7]),  7,40},
  {&(_tg__ZTV8S21159C8__9S21159C11[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21159C8__9S21159C11[3]),  3,5},
  {&(_tg__ZTV8S21159C4__8S21159C8__9S21159C11[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C8__9S21159C11[5]),  5,7},
  {&(_tg__ZTV8S21159C9__8S21159C8__9S21159C11[7]),  7,11},
  {&(_ZTV9S21159C11[14]),  14,40},
  {&(_ZTV9S21159C11[20]),  20,40},
  {&(_ZTV9S21159C11[27]),  27,40},
  {&(_ZTV9S21159C11[36]),  36,40},
  {&(_tg__ZTV8S21159C4__9S21159C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__9S21159C11[3]),  3,5},
  {&(_tg__ZTV8S21159C7__9S21159C11[4]),  4,6},
  {&(_tg__ZTV8S21159C4__8S21159C7__9S21159C11[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21159C7__9S21159C11[3]),  3,5},
  {&(_tg__ZTV8S21159C9__9S21159C11[4]),  4,8},
  {&(_tg__ZTV8S21159C48S21159C9__A1__9S21159C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C48S21159C9__A1__9S21159C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C9__9S21159C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21159C11[];
extern  VTBL_ENTRY _ZTV9S21159C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C11[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S21159C8D0Ev,_ZThn672_N8S21159C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S21159C8D0Ev,_ZThn448_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S21159C8D1Ev,_ZThn672_N8S21159C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S21159C8D1Ev,_ZThn448_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S21159C8D0Ev,_ZThn336_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S21159C8D1Ev,_ZThn336_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21159C8D0Ev,_ZThn248_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21159C8D1Ev,_ZThn248_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N9S21159C11D0Ev,_ZThn672_N9S21159C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn704_N9S21159C11D0Ev,_ZThn448_N9S21159C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N9S21159C11D1Ev,_ZThn672_N9S21159C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn704_N9S21159C11D1Ev,_ZThn448_N9S21159C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C11D0Ev,_ZTv0_n16_N9S21159C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S21159C11D0Ev,_ZThn336_N9S21159C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C11D1Ev,_ZTv0_n16_N9S21159C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S21159C11D1Ev,_ZThn336_N9S21159C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C11D0Ev,_ZTv0_n12_N9S21159C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21159C11D0Ev,_ZThn248_N9S21159C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C11D1Ev,_ZTv0_n12_N9S21159C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21159C11D1Ev,_ZThn248_N9S21159C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C11 = {  "S21159C11", // class name
  bases_S21159C11, 11,
  &(vtc_S21159C11[0]), // expected_vtbl_contents
  &(vtt_S21159C11[0]), // expected_vtt_contents
  ABISELECT(2192,1352), // object size
  NSPAIRA(_ZTI9S21159C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21159C11),40, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21159C11),19, //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  S21159C14  : virtual S21159C9 , S19674C7 , S21159C4 {
  int s21159c14f0;
  int s21159c14f1;
  int s21159c14f2:28;
  int s21159c14f3;
  long s21159c14f4;
  ~S21159C14(); // tgen
  S21159C14(); // tgen
};
//SIG(-1 S21159C14) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} BC4 BC5 Fi Fi Fi:28 Fi Fl}


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

static void Test_S21159C14()
{
  extern Class_Descriptor cd_S21159C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,240)];
    init_test(&cd_S21159C14, buf);
    S21159C14 *dp, &lv = *(dp=new (buf) S21159C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,956), "sizeof(S21159C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21159C14)");
    check_base_class_offset(lv, (S19674C5*)(S21159C9*), ABISELECT(1320,812), "S21159C14");
    check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C9*), ABISELECT(1320,812), "S21159C14");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(1320,812), "S21159C14");
    /*is_ambiguous_... S21159C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C9*), ABISELECT(1440,900), "S21159C14");
    check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C9*), ABISELECT(344,192), "S21159C14");
    check_base_class_offset(lv, (S21159C4*)(S21159C9*), ABISELECT(336,188), "S21159C14");
    check_base_class_offset(lv, (S21159C9*), ABISELECT(336,188), "S21159C14");
    /*is_ambiguous_... S21159C14::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(192,112), "S21159C14");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(8,4), "S21159C14");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*), 0, "S21159C14");
    check_field_offset(lv, s21159c14f0, ABISELECT(304,168), "S21159C14.s21159c14f0");
    check_field_offset(lv, s21159c14f1, ABISELECT(308,172), "S21159C14.s21159c14f1");
    set_bf_and_test(lv, s21159c14f2, ABISELECT(312,176), 0, 28, 1, "S21159C14");
    set_bf_and_test(lv, s21159c14f2, ABISELECT(312,176), 0, 28, hide_sll(1LL<<27), "S21159C14");
    check_field_offset(lv, s21159c14f3, ABISELECT(316,180), "S21159C14.s21159c14f3");
    check_field_offset(lv, s21159c14f4, ABISELECT(320,184), "S21159C14.s21159c14f4");
    test_class_info(&lv, &cd_S21159C14);
    dp->~S21159C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C14(Test_S21159C14, "S21159C14", ABISELECT(1552,956));

#else // __cplusplus

extern void _ZN9S21159C14C1Ev();
extern void _ZN9S21159C14D1Ev();
Name_Map name_map_S21159C14[] = {
  NSPAIR(_ZN9S21159C14C1Ev),
  NSPAIR(_ZN9S21159C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C9;
extern VTBL_ENTRY _ZTI8S21159C9[];
extern  VTBL_ENTRY _ZTV8S21159C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C9[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
static Base_Class bases_S21159C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(1320,812), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1440,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(344,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
    3, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21159C9,    ABISELECT(336,188), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21159C14[];
extern void _ZN9S21159C14D1Ev();
extern void _ZN9S21159C14D0Ev();
extern void ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev)();
extern void ABISELECT(_ZThn336_N9S21159C14D1Ev,_ZThn188_N9S21159C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev)();
extern void ABISELECT(_ZThn336_N9S21159C14D0Ev,_ZThn188_N9S21159C14D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
extern void ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev)();
extern void ABISELECT(_ZThn1320_N9S21159C14D1Ev,_ZThn812_N9S21159C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev)();
extern void ABISELECT(_ZThn1320_N9S21159C14D0Ev,_ZThn812_N9S21159C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21159C14[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&_ZN9S21159C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C14D0Ev,
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S21159C14[];
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__A1__9S21159C14[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21159C4D1Ev,_ZThn812_N8S21159C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21159C4D0Ev,_ZThn812_N8S21159C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__A1__9S21159C14[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void _ZN8S21159C9D1Ev();
extern void _ZN8S21159C9D0Ev();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C14[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&_ZN8S21159C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C48S21159C9__9S21159C14[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZThn984_N8S21159C4D1Ev,_ZThn624_N8S21159C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
extern void ABISELECT(_ZThn984_N8S21159C4D0Ev,_ZThn624_N8S21159C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C48S21159C9__9S21159C14[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev)();
extern void ABISELECT(_ZThn984_N8S21159C9D1Ev,_ZThn624_N8S21159C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev)();
extern void ABISELECT(_ZThn984_N8S21159C9D0Ev,_ZThn624_N8S21159C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C9__9S21159C14[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev),
};
static  VTT_ENTRY vtt_S21159C14[] = {
  {&(_ZTV9S21159C14[5]),  5,23},
  {&(_tg__ZTV8S21159C4__A1__9S21159C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__A1__9S21159C14[3]),  3,5},
  {&(_ZTV9S21159C14[14]),  14,23},
  {&(_ZTV9S21159C14[21]),  21,23},
  {&(_tg__ZTV8S21159C9__9S21159C14[4]),  4,8},
  {&(_tg__ZTV8S21159C48S21159C9__9S21159C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C48S21159C9__9S21159C14[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C9__9S21159C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21159C14[];
extern  VTBL_ENTRY _ZTV9S21159C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C14[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21159C9D0Ev,_ZThn624_N8S21159C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21159C9D1Ev,_ZThn624_N8S21159C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21159C4D0Ev,_ZThn624_N8S21159C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21159C4D0Ev,_ZThn812_N8S21159C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21159C4D1Ev,_ZThn624_N8S21159C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21159C4D1Ev,_ZThn812_N8S21159C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N9S21159C14D0Ev,_ZThn812_N9S21159C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N9S21159C14D1Ev,_ZThn812_N9S21159C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S21159C14D0Ev,_ZThn188_N9S21159C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S21159C14D1Ev,_ZThn188_N9S21159C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C14 = {  "S21159C14", // class name
  bases_S21159C14, 8,
  &(vtc_S21159C14[0]), // expected_vtbl_contents
  &(vtt_S21159C14[0]), // expected_vtt_contents
  ABISELECT(1552,956), // object size
  NSPAIRA(_ZTI9S21159C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21159C14),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21159C14),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C13  : S21159C8 , S21159C14 {
  ::S19674C18 s21159c13f0;
  int s21159c13f1;
  int s21159c13f2;
  int s21159c13f3;
  short s21159c13f4;
  virtual void  v7(); // _ZN9S21159C132v7Ev
  virtual void  v8(); // _ZN9S21159C132v8Ev
  ~S21159C13(); // tgen
  S21159C13(); // tgen
};
//SIG(-1 S21159C13) C1{ BC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} BC5 VBC8{ VBC3 VBC5 BC4 v3 v4 FC4 FD[7] FC4 FL Fp[5]} vd v5 v6 Fi Fi FC5 Fc Fc Fi Fs FL} BC9{ VBC8 BC5 BC4 Fi Fi Fi:28 Fi Fl} v1 v2 FU10{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs}


void  S21159C13 ::v7(){vfunc_called(this, "_ZN9S21159C132v7Ev");}
void  S21159C13 ::v8(){vfunc_called(this, "_ZN9S21159C132v8Ev");}
S21159C13 ::~S21159C13(){ note_dtor("S21159C13", this);} // tgen
S21159C13 ::S21159C13(){ note_ctor("S21159C13", this);} // tgen

static void Test_S21159C13()
{
  extern Class_Descriptor cd_S21159C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(156,372)];
    init_test(&cd_S21159C13, buf);
    S21159C13 *dp, &lv = *(dp=new (buf) S21159C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2480,1484), "sizeof(S21159C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21159C13)");
    /*is_ambiguous_... S21159C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C8*), ABISELECT(672,380), "S21159C13");
    /*is_ambiguous_... S21159C13::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(672,380), "S21159C13");
    check_base_class_offset(lv, (S19674C5*)(S21159C9*), ABISELECT(672,380), "S21159C13");
    check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C9*), ABISELECT(672,380), "S21159C13");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C14*), ABISELECT(672,380), "S21159C13");
    /*is_ambiguous_... S21159C13::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(800,472), "S21159C13");
    /*is_ambiguous_... S21159C8::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C8*), ABISELECT(792,468), "S21159C13");
    check_base_class_offset(lv, (S21159C4*)(S21159C7*), ABISELECT(792,468), "S21159C13");
    /*is_ambiguous_... S21159C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C7*), ABISELECT(992,580), "S21159C13");
    check_base_class_offset(lv, (S21159C7*)(S21159C8*), ABISELECT(992,580), "S21159C13");
    /*is_ambiguous_... S21159C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C8*), ABISELECT(8,4), "S21159C13");
    /*is_ambiguous_... S21159C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C9*), ABISELECT(2360,1428), "S21159C13");
    check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C9*), ABISELECT(1384,808), "S21159C13");
    check_base_class_offset(lv, (S21159C4*)(S21159C9*), ABISELECT(1376,804), "S21159C13");
    check_base_class_offset(lv, (S21159C9*)(S21159C8*), ABISELECT(1376,804), "S21159C13");
    check_base_class_offset(lv, (S21159C9*)(S21159C14*), ABISELECT(1376,804), "S21159C13");
    check_base_class_offset(lv, (S21159C8*), 0, "S21159C13");
    /*is_ambiguous_... S21159C14::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C14*), ABISELECT(456,256), "S21159C13");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C14*), ABISELECT(272,148), "S21159C13");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C14*), ABISELECT(264,144), "S21159C13");
    check_base_class_offset(lv, (S21159C14*), ABISELECT(264,144), "S21159C13");
    check_field_offset(lv, s21159c13f0, ABISELECT(592,332), "S21159C13.s21159c13f0");
    check_field_offset(lv, s21159c13f1, ABISELECT(656,364), "S21159C13.s21159c13f1");
    check_field_offset(lv, s21159c13f2, ABISELECT(660,368), "S21159C13.s21159c13f2");
    check_field_offset(lv, s21159c13f3, ABISELECT(664,372), "S21159C13.s21159c13f3");
    check_field_offset(lv, s21159c13f4, ABISELECT(668,376), "S21159C13.s21159c13f4");
    test_class_info(&lv, &cd_S21159C13);
    dp->~S21159C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C13(Test_S21159C13, "S21159C13", ABISELECT(2480,1484));

#else // __cplusplus

extern void _ZN9S21159C13C1Ev();
extern void _ZN9S21159C13D1Ev();
Name_Map name_map_S21159C13[] = {
  NSPAIR(_ZN9S21159C13C1Ev),
  NSPAIR(_ZN9S21159C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21159C7;
extern VTBL_ENTRY _ZTI8S21159C7[];
extern  VTBL_ENTRY _ZTV8S21159C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C9;
extern VTBL_ENTRY _ZTI8S21159C9[];
extern  VTBL_ENTRY _ZTV8S21159C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C9[];
extern Class_Descriptor cd_S21159C8;
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C14;
extern VTBL_ENTRY _ZTI9S21159C14[];
extern  VTBL_ENTRY _ZTV9S21159C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C14[];
static Base_Class bases_S21159C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(672,380), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(800,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
    2, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(792,468), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(992,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21159C7,    ABISELECT(992,580), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2360,1428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1384,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(1376,804), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21159C9,    ABISELECT(1376,804), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21159C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(264,144), //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
    14, //immediately_derived
  0, 0},
  {&cd_S21159C14,    ABISELECT(264,144), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //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 _ZTI9S21159C13[];
extern void _ZN9S21159C13D1Ev();
extern void _ZN9S21159C13D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN9S21159C132v7Ev();
extern void _ZN9S21159C132v8Ev();
extern void ABISELECT(_ZThn264_N9S21159C13D1Ev,_ZThn144_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21159C13D0Ev,_ZThn144_N9S21159C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21159C13D1Ev,_ZTv0_n12_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn672_N9S21159C13D1Ev,_ZThn380_N9S21159C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C13D0Ev,_ZTv0_n12_N9S21159C13D0Ev)();
extern void ABISELECT(_ZThn672_N9S21159C13D0Ev,_ZThn380_N9S21159C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C13D1Ev,_ZTv0_n16_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn792_N9S21159C13D1Ev,_ZThn468_N9S21159C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C13D0Ev,_ZTv0_n16_N9S21159C13D0Ev)();
extern void ABISELECT(_ZThn792_N9S21159C13D0Ev,_ZThn468_N9S21159C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn992_N9S21159C13D1Ev,_ZThn580_N9S21159C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev)();
extern void ABISELECT(_ZThn992_N9S21159C13D0Ev,_ZThn580_N9S21159C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn1376_N9S21159C13D1Ev,_ZThn804_N9S21159C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev)();
extern void ABISELECT(_ZThn1376_N9S21159C13D0Ev,_ZThn804_N9S21159C13D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY vtc_S21159C13[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&_ZN9S21159C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C13D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v8Ev,
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C13D1Ev,_ZThn144_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C13D0Ev,_ZThn144_N9S21159C13D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C13D1Ev,_ZTv0_n12_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C13D0Ev,_ZTv0_n12_N9S21159C13D0Ev),
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C13D1Ev,_ZTv0_n16_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C13D0Ev,_ZTv0_n16_N9S21159C13D0Ev),
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev),
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern VTBL_ENTRY _ZTV9S21159C13[];
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C8__9S21159C13[] = {
  ABISELECT(2360,1428),
  ABISELECT(1376,804),
  ABISELECT(992,580),
  ABISELECT(792,468),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn672_N8S21159C8D1Ev,_ZThn380_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn672_N8S21159C8D0Ev,_ZThn380_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C8__9S21159C13[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn792_N8S21159C8D1Ev,_ZThn468_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn792_N8S21159C8D0Ev,_ZThn468_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C8__9S21159C13[] = {
  ABISELECT(-792,-468),
  ABISELECT(-120,-88),
  ABISELECT(-792,-468),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn992_N8S21159C8D1Ev,_ZThn580_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn992_N8S21159C8D0Ev,_ZThn580_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C8__9S21159C13[] = {
  ABISELECT(-992,-580),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-992,-580),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn1376_N8S21159C8D1Ev,_ZThn804_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn1376_N8S21159C8D0Ev,_ZThn804_N8S21159C8D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C8__9S21159C13[] = {
  0,
  0,
  ABISELECT(-1376,-804),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1376,-804),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN9S21159C14D1Ev();
extern void _ZN9S21159C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C14__9S21159C13[] = {
  ABISELECT(2096,1284),
  ABISELECT(1112,660),
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&_ZN9S21159C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C14D0Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C49S21159C14__A2__9S21159C13[] = {
  ABISELECT(408,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZThn408_N8S21159C4D1Ev,_ZThn236_N8S21159C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
extern void ABISELECT(_ZThn408_N8S21159C4D0Ev,_ZThn236_N8S21159C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C49S21159C14__A2__9S21159C13[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev)();
extern void ABISELECT(_ZThn1112_N9S21159C14D1Ev,_ZThn660_N9S21159C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev)();
extern void ABISELECT(_ZThn1112_N9S21159C14D0Ev,_ZThn660_N9S21159C14D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C14__9S21159C13[] = {
  0,
  0,
  ABISELECT(-1112,-660),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1112,-660),
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev)();
extern void ABISELECT(_ZThn408_N9S21159C14D1Ev,_ZThn236_N9S21159C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev)();
extern void ABISELECT(_ZThn408_N9S21159C14D0Ev,_ZThn236_N9S21159C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C14__9S21159C13[] = {
  ABISELECT(-408,-236),
  ABISELECT(-408,-236),
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev),
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C13[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__9S21159C13[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void _ZN8S21159C7D1Ev();
extern void _ZN8S21159C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C13[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&_ZN8S21159C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C7__9S21159C13[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C7__9S21159C13[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev),
};
extern void _ZN8S21159C9D1Ev();
extern void _ZN8S21159C9D0Ev();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C13[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&_ZN8S21159C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C48S21159C9__A1__9S21159C13[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C48S21159C9__A1__9S21159C13[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C9__9S21159C13[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev),
};
static  VTT_ENTRY vtt_S21159C13[] = {
  {&(_ZTV9S21159C13[7]),  7,49},
  {&(_tg__ZTV8S21159C8__9S21159C13[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21159C8__9S21159C13[3]),  3,5},
  {&(_tg__ZTV8S21159C4__8S21159C8__9S21159C13[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C8__9S21159C13[5]),  5,7},
  {&(_tg__ZTV8S21159C9__8S21159C8__9S21159C13[7]),  7,11},
  {&(_tg__ZTV9S21159C14__9S21159C13[5]),  5,7},
  {&(_tg__ZTV8S21159C49S21159C14__A2__9S21159C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C49S21159C14__A2__9S21159C13[3]),  3,5},
  {&(_tg__ZTV8S21159C9__9S21159C14__9S21159C13[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21159C14__9S21159C13[3]),  3,5},
  {&(_ZTV9S21159C13[23]),  23,49},
  {&(_ZTV9S21159C13[29]),  29,49},
  {&(_ZTV9S21159C13[36]),  36,49},
  {&(_ZTV9S21159C13[45]),  45,49},
  {&(_ZTV9S21159C13[18]),  18,49},
  {&(_tg__ZTV8S21159C4__9S21159C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__9S21159C13[3]),  3,5},
  {&(_tg__ZTV8S21159C7__9S21159C13[4]),  4,6},
  {&(_tg__ZTV8S21159C4__8S21159C7__9S21159C13[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21159C7__9S21159C13[3]),  3,5},
  {&(_tg__ZTV8S21159C9__9S21159C13[4]),  4,8},
  {&(_tg__ZTV8S21159C48S21159C9__A1__9S21159C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C48S21159C9__A1__9S21159C13[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C9__9S21159C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21159C13[];
extern  VTBL_ENTRY _ZTV9S21159C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C13[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21159C14D0Ev,_ZThn236_N9S21159C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21159C14D1Ev,_ZThn236_N9S21159C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N9S21159C14D0Ev,_ZThn660_N9S21159C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1112_N9S21159C14D1Ev,_ZThn660_N9S21159C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21159C4D0Ev,_ZThn236_N8S21159C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21159C4D1Ev,_ZThn236_N8S21159C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N8S21159C8D0Ev,_ZThn804_N8S21159C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S21159C8D0Ev,_ZThn580_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N8S21159C8D1Ev,_ZThn804_N8S21159C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S21159C8D1Ev,_ZThn580_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S21159C8D0Ev,_ZThn468_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S21159C8D1Ev,_ZThn468_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S21159C8D0Ev,_ZThn380_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S21159C8D1Ev,_ZThn380_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21159C13D0Ev,_ZThn804_N9S21159C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21159C13D0Ev,_ZThn580_N9S21159C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N9S21159C13D1Ev,_ZThn804_N9S21159C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N9S21159C13D1Ev,_ZThn580_N9S21159C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C13D0Ev,_ZTv0_n16_N9S21159C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21159C13D0Ev,_ZThn468_N9S21159C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C13D1Ev,_ZTv0_n16_N9S21159C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21159C13D1Ev,_ZThn468_N9S21159C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C13D0Ev,_ZTv0_n12_N9S21159C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21159C13D0Ev,_ZThn380_N9S21159C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C13D1Ev,_ZTv0_n12_N9S21159C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S21159C13D1Ev,_ZThn380_N9S21159C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C13 = {  "S21159C13", // class name
  bases_S21159C13, 15,
  &(vtc_S21159C13[0]), // expected_vtbl_contents
  &(vtt_S21159C13[0]), // expected_vtt_contents
  ABISELECT(2480,1484), // object size
  NSPAIRA(_ZTI9S21159C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21159C13),49, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21159C13),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C12  : S21159C13 , virtual S21159C8 , S21159C4 {
  virtual void  v9(); // _ZN9S21159C122v9Ev
  ~S21159C12(); // tgen
  S21159C12(); // tgen
};
//SIG(-1 S21159C12) C1{ BC2{ BC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ VBC4 BC6{ m Fp[14]} Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC8{ VBC5 BC4 Fc:6 Fc[8] FD FC6 FC6} BC6 VBC9{ VBC4 VBC6 BC5 v2 v3 FC5 FD[7] FC5 FL Fp[5]} vd v4 v5 Fi Fi FC6 Fc Fc Fi Fs FL} BC10{ VBC9 BC6 BC5 Fi Fi Fi:28 Fi Fl} v6 v7 FU11{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} VBC3 BC5 v1}


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

static void Test_S21159C12()
{
  extern Class_Descriptor cd_S21159C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(184,436)];
    init_test(&cd_S21159C12, buf);
    S21159C12 *dp, &lv = *(dp=new (buf) S21159C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2928,1740), "sizeof(S21159C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21159C12)");
    /*is_ambiguous_... S21159C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C8*)(S21159C13*), ABISELECT(864,492), "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(864,492), "S21159C12");
    check_base_class_offset(lv, (S19674C5*)(S21159C9*), ABISELECT(864,492), "S21159C12");
    check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C9*), ABISELECT(864,492), "S21159C12");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C14*)(S21159C13*), ABISELECT(864,492), "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C8*), ABISELECT(864,492), "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(864,492), "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(992,584), "S21159C12");
    /*is_ambiguous_... S21159C8::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C8*)(S21159C13*), ABISELECT(984,580), "S21159C12");
    check_base_class_offset(lv, (S21159C4*)(S21159C7*), ABISELECT(984,580), "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C8*), ABISELECT(984,580), "S21159C12");
    /*is_ambiguous_... S21159C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C7*), ABISELECT(1184,692), "S21159C12");
    check_base_class_offset(lv, (S21159C7*)(S21159C8*)(S21159C13*), ABISELECT(1184,692), "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C7*)(S21159C8*), ABISELECT(1184,692), "S21159C12");
    /*is_ambiguous_... S21159C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C8*)(S21159C13*), ABISELECT(8,4), "S21159C12");
    /*is_ambiguous_... S21159C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C9*), ABISELECT(2552,1540), "S21159C12");
    check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C9*), ABISELECT(1576,920), "S21159C12");
    check_base_class_offset(lv, (S21159C4*)(S21159C9*), ABISELECT(1568,916), "S21159C12");
    check_base_class_offset(lv, (S21159C9*)(S21159C8*)(S21159C13*), ABISELECT(1568,916), "S21159C12");
    check_base_class_offset(lv, (S21159C9*)(S21159C14*)(S21159C13*), ABISELECT(1568,916), "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C9*)(S21159C8*), ABISELECT(1568,916), "S21159C12");
    check_base_class_offset(lv, (S21159C8*)(S21159C13*), 0, "S21159C12");
    /*is_ambiguous_... S21159C14::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C14*)(S21159C13*), ABISELECT(456,256), "S21159C12");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C14*)(S21159C13*), ABISELECT(272,148), "S21159C12");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C14*)(S21159C13*), ABISELECT(264,144), "S21159C12");
    check_base_class_offset(lv, (S21159C14*)(S21159C13*), ABISELECT(264,144), "S21159C12");
    check_base_class_offset(lv, (S21159C13*), 0, "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C8*), ABISELECT(2672,1600), "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C8*), ABISELECT(2664,1596), "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(680,384), "S21159C12");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*), ABISELECT(672,380), "S21159C12");
    test_class_info(&lv, &cd_S21159C12);
    dp->~S21159C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C12(Test_S21159C12, "S21159C12", ABISELECT(2928,1740));

#else // __cplusplus

extern void _ZN9S21159C12C1Ev();
extern void _ZN9S21159C12D1Ev();
Name_Map name_map_S21159C12[] = {
  NSPAIR(_ZN9S21159C12C1Ev),
  NSPAIR(_ZN9S21159C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21159C7;
extern VTBL_ENTRY _ZTI8S21159C7[];
extern  VTBL_ENTRY _ZTV8S21159C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C9;
extern VTBL_ENTRY _ZTI8S21159C9[];
extern  VTBL_ENTRY _ZTV8S21159C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C9[];
extern Class_Descriptor cd_S21159C8;
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C14;
extern VTBL_ENTRY _ZTI9S21159C14[];
extern  VTBL_ENTRY _ZTV9S21159C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C14[];
extern Class_Descriptor cd_S21159C13;
extern VTBL_ENTRY _ZTI9S21159C13[];
extern  VTBL_ENTRY _ZTV9S21159C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C8;
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
static Base_Class bases_S21159C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(864,492), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(992,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
    2, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(984,580), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(1184,692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21159C7,    ABISELECT(1184,692), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2552,1540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1576,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(1568,916), //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21159C9,    ABISELECT(1568,916), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21159C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(456,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
    14, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(264,144), //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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21159C14,    ABISELECT(264,144), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21159C13,    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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(2672,1600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C8,    ABISELECT(2664,1596), //bcp->offset
    56, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(680,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
    19, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(672,380), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21159C12[];
extern void _ZN9S21159C12D1Ev();
extern void _ZN9S21159C12D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN9S21159C132v7Ev();
extern void _ZN9S21159C132v8Ev();
extern void _ZN9S21159C122v9Ev();
extern void ABISELECT(_ZThn264_N9S21159C12D1Ev,_ZThn144_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21159C12D0Ev,_ZThn144_N9S21159C12D0Ev)();
extern void ABISELECT(_ZThn672_N9S21159C12D1Ev,_ZThn380_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn672_N9S21159C12D0Ev,_ZThn380_N9S21159C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21159C12D1Ev,_ZTv0_n12_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn864_N9S21159C12D1Ev,_ZThn492_N9S21159C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C12D0Ev,_ZTv0_n12_N9S21159C12D0Ev)();
extern void ABISELECT(_ZThn864_N9S21159C12D0Ev,_ZThn492_N9S21159C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C12D1Ev,_ZTv0_n16_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn984_N9S21159C12D1Ev,_ZThn580_N9S21159C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C12D0Ev,_ZTv0_n16_N9S21159C12D0Ev)();
extern void ABISELECT(_ZThn984_N9S21159C12D0Ev,_ZThn580_N9S21159C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn1184_N9S21159C12D1Ev,_ZThn692_N9S21159C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev)();
extern void ABISELECT(_ZThn1184_N9S21159C12D0Ev,_ZThn692_N9S21159C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn1568_N9S21159C12D1Ev,_ZThn916_N9S21159C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev)();
extern void ABISELECT(_ZThn1568_N9S21159C12D0Ev,_ZThn916_N9S21159C12D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
extern void ABISELECT(_ZTv0_n64_N9S21159C12D1Ev,_ZTv0_n32_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn2664_N9S21159C12D1Ev,_ZThn1596_N9S21159C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21159C12D0Ev,_ZTv0_n32_N9S21159C12D0Ev)();
extern void ABISELECT(_ZThn2664_N9S21159C12D0Ev,_ZThn1596_N9S21159C12D0Ev)() __attribute__((weak));
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY vtc_S21159C12[] = {
  ABISELECT(2664,1596),
  ABISELECT(2552,1540),
  ABISELECT(1568,916),
  ABISELECT(1184,692),
  ABISELECT(984,580),
  ABISELECT(864,492),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&_ZN9S21159C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C12D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21159C122v9Ev,
  ABISELECT(2288,1396),
  ABISELECT(1304,772),
  ABISELECT(600,348),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C12D1Ev,_ZThn144_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C12D0Ev,_ZThn144_N9S21159C12D0Ev),
  ABISELECT(192,112),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21159C12D1Ev,_ZThn380_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21159C12D0Ev,_ZThn380_N9S21159C12D0Ev),
  ABISELECT(-864,-492),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C12D1Ev,_ZTv0_n12_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C12D0Ev,_ZTv0_n12_N9S21159C12D0Ev),
  ABISELECT(-984,-580),
  ABISELECT(-120,-88),
  ABISELECT(-984,-580),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C12D1Ev,_ZTv0_n16_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C12D0Ev,_ZTv0_n16_N9S21159C12D0Ev),
  ABISELECT(-1184,-692),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-1184,-692),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev),
  0,
  0,
  ABISELECT(-1568,-916),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1568,-916),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
  0,
  0,
  ABISELECT(-2664,-1596),
  ABISELECT(-112,-56),
  ABISELECT(-1096,-680),
  ABISELECT(-1480,-904),
  ABISELECT(-1680,-1016),
  ABISELECT(-1800,-1104),
  ABISELECT(-2664,-1596),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21159C12D1Ev,_ZTv0_n32_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21159C12D0Ev,_ZTv0_n32_N9S21159C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern VTBL_ENTRY _ZTV9S21159C12[];
extern void _ZN9S21159C13D1Ev();
extern void _ZN9S21159C13D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN9S21159C132v7Ev();
extern void _ZN9S21159C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C13__9S21159C12[] = {
  ABISELECT(2552,1540),
  ABISELECT(1568,916),
  ABISELECT(1184,692),
  ABISELECT(984,580),
  ABISELECT(864,492),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&_ZN9S21159C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C13D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v8Ev,
};
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C89S21159C13__9S21159C12[] = {
  ABISELECT(2552,1540),
  ABISELECT(1568,916),
  ABISELECT(1184,692),
  ABISELECT(984,580),
  ABISELECT(864,492),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn864_N8S21159C8D1Ev,_ZThn492_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn864_N8S21159C8D0Ev,_ZThn492_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C89S21159C13__9S21159C12[] = {
  ABISELECT(-864,-492),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S21159C8D1Ev,_ZThn580_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S21159C8D0Ev,_ZThn580_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C89S21159C13__9S21159C12[] = {
  ABISELECT(-984,-580),
  ABISELECT(-120,-88),
  ABISELECT(-984,-580),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn1184_N8S21159C8D1Ev,_ZThn692_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn1184_N8S21159C8D0Ev,_ZThn692_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C89S21159C13__9S21159C12[] = {
  ABISELECT(-1184,-692),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-1184,-692),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn1568_N8S21159C8D1Ev,_ZThn916_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn1568_N8S21159C8D0Ev,_ZThn916_N8S21159C8D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C89S21159C13__9S21159C12[] = {
  0,
  0,
  ABISELECT(-1568,-916),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1568,-916),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN9S21159C14D1Ev();
extern void _ZN9S21159C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C149S21159C13__9S21159C12[] = {
  ABISELECT(2288,1396),
  ABISELECT(1304,772),
  ABISELECT(600,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&_ZN9S21159C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C14D0Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C49S21159C149S21159C13__A2__9S21159C12[] = {
  ABISELECT(600,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZThn600_N8S21159C4D1Ev,_ZThn348_N8S21159C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
extern void ABISELECT(_ZThn600_N8S21159C4D0Ev,_ZThn348_N8S21159C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C49S21159C149S21159C13__A2__9S21159C12[] = {
  ABISELECT(-600,-348),
  ABISELECT(-600,-348),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev)();
extern void ABISELECT(_ZThn1304_N9S21159C14D1Ev,_ZThn772_N9S21159C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev)();
extern void ABISELECT(_ZThn1304_N9S21159C14D0Ev,_ZThn772_N9S21159C14D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C149S21159C13__9S21159C12[] = {
  0,
  0,
  ABISELECT(-1304,-772),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1304,-772),
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev)();
extern void ABISELECT(_ZThn600_N9S21159C14D1Ev,_ZThn348_N9S21159C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev)();
extern void ABISELECT(_ZThn600_N9S21159C14D0Ev,_ZThn348_N9S21159C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C149S21159C13__9S21159C12[] = {
  ABISELECT(-600,-348),
  ABISELECT(-600,-348),
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21159C13D1Ev,_ZTv0_n12_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn864_N9S21159C13D1Ev,_ZThn492_N9S21159C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C13D0Ev,_ZTv0_n12_N9S21159C13D0Ev)();
extern void ABISELECT(_ZThn864_N9S21159C13D0Ev,_ZThn492_N9S21159C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C13__9S21159C12[] = {
  ABISELECT(-864,-492),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C13D1Ev,_ZTv0_n12_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C13D0Ev,_ZTv0_n12_N9S21159C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21159C13D1Ev,_ZTv0_n16_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn984_N9S21159C13D1Ev,_ZThn580_N9S21159C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C13D0Ev,_ZTv0_n16_N9S21159C13D0Ev)();
extern void ABISELECT(_ZThn984_N9S21159C13D0Ev,_ZThn580_N9S21159C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C13__9S21159C12[] = {
  ABISELECT(-984,-580),
  ABISELECT(-120,-88),
  ABISELECT(-984,-580),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C13D1Ev,_ZTv0_n16_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C13D0Ev,_ZTv0_n16_N9S21159C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn1184_N9S21159C13D1Ev,_ZThn692_N9S21159C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev)();
extern void ABISELECT(_ZThn1184_N9S21159C13D0Ev,_ZThn692_N9S21159C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C13__9S21159C12[] = {
  ABISELECT(-1184,-692),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-1184,-692),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn1568_N9S21159C13D1Ev,_ZThn916_N9S21159C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev)();
extern void ABISELECT(_ZThn1568_N9S21159C13D0Ev,_ZThn916_N9S21159C13D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C13__9S21159C12[] = {
  0,
  0,
  ABISELECT(-1568,-916),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-1568,-916),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZThn264_N9S21159C13D1Ev,_ZThn144_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21159C13D0Ev,_ZThn144_N9S21159C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21159C14__9S21159C13__9S21159C12[] = {
  ABISELECT(2288,1396),
  ABISELECT(1304,772),
  ABISELECT(600,348),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C13D1Ev,_ZThn144_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C13D0Ev,_ZThn144_N9S21159C13D0Ev),
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__A__9S21159C12[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZThn192_N8S21159C4D1Ev,_ZThn112_N8S21159C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
extern void ABISELECT(_ZThn192_N8S21159C4D0Ev,_ZThn112_N8S21159C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__A__9S21159C12[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C12[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__9S21159C12[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void _ZN8S21159C7D1Ev();
extern void _ZN8S21159C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C12[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&_ZN8S21159C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C7__9S21159C12[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C7__9S21159C12[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev),
};
extern void _ZN8S21159C9D1Ev();
extern void _ZN8S21159C9D0Ev();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C12[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&_ZN8S21159C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C48S21159C9__A1__9S21159C12[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C48S21159C9__A1__9S21159C12[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C9__9S21159C12[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev),
};
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C8__A1__9S21159C12[] = {
  ABISELECT(-112,-56),
  ABISELECT(-1096,-680),
  ABISELECT(-1480,-904),
  ABISELECT(-1680,-1016),
  ABISELECT(-1800,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C8__A1__9S21159C12[] = {
  ABISELECT(1800,1104),
  ABISELECT(1800,1104),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C8__A1__9S21159C12[] = {
  ABISELECT(1680,1016),
  ABISELECT(-120,-88),
  ABISELECT(1680,1016),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C8__A1__9S21159C12[] = {
  ABISELECT(1480,904),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(1480,904),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C8__A1__9S21159C12[] = {
  0,
  0,
  ABISELECT(1096,680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1096,680),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
static  VTT_ENTRY vtt_S21159C12[] = {
  {&(_ZTV9S21159C12[8]),  8,70},
  {&(_tg__ZTV9S21159C13__9S21159C12[7]),  7,13},
  {&(_tg__ZTV8S21159C89S21159C13__9S21159C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21159C89S21159C13__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S21159C4__8S21159C89S21159C13__9S21159C12[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C89S21159C13__9S21159C12[5]),  5,7},
  {&(_tg__ZTV8S21159C9__8S21159C89S21159C13__9S21159C12[7]),  7,11},
  {&(_tg__ZTV9S21159C149S21159C13__9S21159C12[5]),  5,7},
  {&(_tg__ZTV8S21159C49S21159C149S21159C13__A2__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C49S21159C149S21159C13__A2__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S21159C9__9S21159C149S21159C13__9S21159C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21159C149S21159C13__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21159C13__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S21159C4__9S21159C13__9S21159C12[4]),  4,6},
  {&(_tg__ZTV8S21159C7__9S21159C13__9S21159C12[5]),  5,7},
  {&(_tg__ZTV8S21159C9__9S21159C13__9S21159C12[7]),  7,11},
  {&(_tg__ZTV9S21159C14__9S21159C13__9S21159C12[5]),  5,7},
  {&(_tg__ZTV8S21159C4__A__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__A__9S21159C12[3]),  3,5},
  {&(_ZTV9S21159C12[30]),  30,70},
  {&(_ZTV9S21159C12[36]),  36,70},
  {&(_ZTV9S21159C12[43]),  43,70},
  {&(_ZTV9S21159C12[52]),  52,70},
  {&(_ZTV9S21159C12[20]),  20,70},
  {&(_ZTV9S21159C12[66]),  66,70},
  {&(_ZTV9S21159C12[25]),  25,70},
  {&(_tg__ZTV8S21159C4__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S21159C7__9S21159C12[4]),  4,6},
  {&(_tg__ZTV8S21159C4__8S21159C7__9S21159C12[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21159C7__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S21159C9__9S21159C12[4]),  4,8},
  {&(_tg__ZTV8S21159C48S21159C9__A1__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C48S21159C9__A1__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C9__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S21159C8__A1__9S21159C12[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21159C8__A1__9S21159C12[3]),  3,5},
  {&(_tg__ZTV8S21159C4__8S21159C8__A1__9S21159C12[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C8__A1__9S21159C12[5]),  5,7},
  {&(_tg__ZTV8S21159C9__8S21159C8__A1__9S21159C12[7]),  7,11},
};
extern VTBL_ENTRY _ZTI9S21159C12[];
extern  VTBL_ENTRY _ZTV9S21159C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C12[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S21159C13D0Ev,_ZThn916_N9S21159C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S21159C13D0Ev,_ZThn692_N9S21159C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S21159C13D1Ev,_ZThn916_N9S21159C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S21159C13D1Ev,_ZThn692_N9S21159C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C13D0Ev,_ZTv0_n16_N9S21159C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21159C13D0Ev,_ZThn580_N9S21159C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C13D1Ev,_ZTv0_n16_N9S21159C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21159C13D1Ev,_ZThn580_N9S21159C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C13D0Ev,_ZTv0_n12_N9S21159C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21159C13D0Ev,_ZThn492_N9S21159C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C13D1Ev,_ZTv0_n12_N9S21159C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21159C13D1Ev,_ZThn492_N9S21159C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn600_N9S21159C14D0Ev,_ZThn348_N9S21159C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn600_N9S21159C14D1Ev,_ZThn348_N9S21159C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1304_N9S21159C14D0Ev,_ZThn772_N9S21159C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1304_N9S21159C14D1Ev,_ZThn772_N9S21159C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21159C4D0Ev,_ZThn112_N8S21159C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn600_N8S21159C4D0Ev,_ZThn348_N8S21159C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21159C4D1Ev,_ZThn112_N8S21159C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn600_N8S21159C4D1Ev,_ZThn348_N8S21159C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S21159C8D0Ev,_ZThn916_N8S21159C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N8S21159C8D0Ev,_ZThn692_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S21159C8D1Ev,_ZThn916_N8S21159C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N8S21159C8D1Ev,_ZThn692_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21159C8D0Ev,_ZThn580_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21159C8D1Ev,_ZThn580_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S21159C8D0Ev,_ZThn492_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S21159C8D1Ev,_ZThn492_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21159C12D0Ev,_ZTv0_n32_N9S21159C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2664_N9S21159C12D0Ev,_ZThn1596_N9S21159C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21159C12D1Ev,_ZTv0_n32_N9S21159C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2664_N9S21159C12D1Ev,_ZThn1596_N9S21159C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S21159C12D0Ev,_ZThn916_N9S21159C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S21159C12D0Ev,_ZThn692_N9S21159C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S21159C12D1Ev,_ZThn916_N9S21159C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N9S21159C12D1Ev,_ZThn692_N9S21159C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C12D0Ev,_ZTv0_n16_N9S21159C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21159C12D0Ev,_ZThn580_N9S21159C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C12D1Ev,_ZTv0_n16_N9S21159C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21159C12D1Ev,_ZThn580_N9S21159C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C12D0Ev,_ZTv0_n12_N9S21159C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21159C12D0Ev,_ZThn492_N9S21159C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C12D1Ev,_ZTv0_n12_N9S21159C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21159C12D1Ev,_ZThn492_N9S21159C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C12 = {  "S21159C12", // class name
  bases_S21159C12, 20,
  &(vtc_S21159C12[0]), // expected_vtbl_contents
  &(vtt_S21159C12[0]), // expected_vtt_contents
  ABISELECT(2928,1740), // object size
  NSPAIRA(_ZTI9S21159C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21159C12),70, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21159C12),40, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C16  : virtual S19674C5 {
  virtual void  v10(); // _ZN9S21159C163v10Ev
  ~S21159C16(); // tgen
  S21159C16(); // tgen
};
//SIG(-1 S21159C16) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1}


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

static void Test_S21159C16()
{
  extern Class_Descriptor cd_S21159C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S21159C16, buf);
    S21159C16 *dp, &lv = *(dp=new (buf) S21159C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S21159C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21159C16)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(8,4), "S21159C16");
    test_class_info(&lv, &cd_S21159C16);
    dp->~S21159C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C16(Test_S21159C16, "S21159C16", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN9S21159C16C1Ev();
extern void _ZN9S21159C16D1Ev();
Name_Map name_map_S21159C16[] = {
  NSPAIR(_ZN9S21159C16C1Ev),
  NSPAIR(_ZN9S21159C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21159C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21159C16[];
extern void _ZN9S21159C163v10Ev();
extern void _ZN9S21159C16D1Ev();
extern void _ZN9S21159C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21159C16D1Ev,_ZTv0_n12_N9S21159C16D1Ev)();
extern void ABISELECT(_ZThn8_N9S21159C16D1Ev,_ZThn4_N9S21159C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C16D0Ev,_ZTv0_n12_N9S21159C16D0Ev)();
extern void ABISELECT(_ZThn8_N9S21159C16D0Ev,_ZThn4_N9S21159C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21159C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C16[0]),
  (VTBL_ENTRY)&_ZN9S21159C163v10Ev,
  (VTBL_ENTRY)&_ZN9S21159C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C16D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21159C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C16D1Ev,_ZTv0_n12_N9S21159C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C16D0Ev,_ZTv0_n12_N9S21159C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21159C16[];
static  VTT_ENTRY vtt_S21159C16[] = {
  {&(_ZTV9S21159C16[3]),  3,11},
  {&(_ZTV9S21159C16[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S21159C16[];
extern  VTBL_ENTRY _ZTV9S21159C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C16[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C16D0Ev,_ZTv0_n12_N9S21159C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21159C16D0Ev,_ZThn4_N9S21159C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C16D1Ev,_ZTv0_n12_N9S21159C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21159C16D1Ev,_ZThn4_N9S21159C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C16 = {  "S21159C16", // class name
  bases_S21159C16, 1,
  &(vtc_S21159C16[0]), // expected_vtbl_contents
  &(vtt_S21159C16[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI9S21159C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21159C16),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21159C16),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C10  : S21159C11 , virtual S21159C12 {
  long s21159c10f0;
  ::S21159C8 s21159c10f1;
  int s21159c10f2;
  __tsi64 s21159c10f3;
  int s21159c10f4;
  int s21159c10f5;
  ::S21159C16 s21159c10f6;
  long double s21159c10f7[7];
  ::S21159C8 s21159c10f8;
  int s21159c10f9:32;
  __tsi64 s21159c10f10;
  void *s21159c10f11;
  void *s21159c10f12;
  ~S21159C10(); // tgen
  S21159C10(); // tgen
};
//SIG(-1 S21159C10) C1{ BC2{ BC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ VBC4 BC6{ m Fp[14]} Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC8{ VBC5 BC4 Fc:6 Fc[8] FD FC6 FC6} BC6 VBC9{ VBC4 VBC6 BC5 v1 v2 FC5 FD[7] FC5 FL Fp[5]} vd v3 v4 Fi Fi FC6 Fc Fc Fi Fs FL} vd Fs Fp Fi FL[10] Fc Fs Fs Fi} VBC10{ BC11{ BC3 BC12{ VBC9 BC6 BC5 Fi Fi Fi:28 Fi Fl} v5 v6 FU13{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} VBC3 BC5 v7} Fl FC3 Fi FL Fi Fi FC14{ VBC4 v8} FD[7] FC3 Fi:32 FL Fp Fp}


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

static void Test_S21159C10()
{
  extern Class_Descriptor cd_S21159C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(487,1177)];
    init_test(&cd_S21159C10, buf);
    S21159C10 *dp, &lv = *(dp=new (buf) S21159C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7776,4704), "sizeof(S21159C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21159C10)");
    /*is_ambiguous_... S21159C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C8*)(S21159C11*), ABISELECT(4832,2964), "S21159C10");
    /*is_ambiguous_... S21159C10::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(4832,2964), "S21159C10");
    check_base_class_offset(lv, (S19674C5*)(S21159C9*), ABISELECT(4832,2964), "S21159C10");
    check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C9*), ABISELECT(4832,2964), "S21159C10");
    /*is_ambiguous_... S21159C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(4832,2964), "S21159C10");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(4832,2964), "S21159C10");
    /*is_ambiguous_... S21159C10::S21159C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C8*), ABISELECT(4832,2964), "S21159C10");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C12*), ABISELECT(4832,2964), "S21159C10");
    /*is_ambiguous_... S21159C10::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(4960,3056), "S21159C10");
    /*is_ambiguous_... S21159C8::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C8*)(S21159C11*), ABISELECT(4952,3052), "S21159C10");
    check_base_class_offset(lv, (S21159C4*)(S21159C7*), ABISELECT(4952,3052), "S21159C10");
    /*is_ambiguous_... S21159C8::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(4952,3052), "S21159C10");
    /*is_ambiguous_... S21159C10::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C8*), ABISELECT(4952,3052), "S21159C10");
    /*is_ambiguous_... S21159C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C7*), ABISELECT(5152,3164), "S21159C10");
    check_base_class_offset(lv, (S21159C7*)(S21159C8*)(S21159C11*), ABISELECT(5152,3164), "S21159C10");
    check_base_class_offset(lv, (S21159C7*)(S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(5152,3164), "S21159C10");
    /*is_ambiguous_... S21159C10::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C7*)(S21159C8*), ABISELECT(5152,3164), "S21159C10");
    /*is_ambiguous_... S21159C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C8*)(S21159C11*), ABISELECT(8,4), "S21159C10");
    /*is_ambiguous_... S21159C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C9*), ABISELECT(6520,4012), "S21159C10");
    check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C9*), ABISELECT(5544,3392), "S21159C10");
    check_base_class_offset(lv, (S21159C4*)(S21159C9*), ABISELECT(5536,3388), "S21159C10");
    check_base_class_offset(lv, (S21159C9*)(S21159C8*)(S21159C11*), ABISELECT(5536,3388), "S21159C10");
    check_base_class_offset(lv, (S21159C9*)(S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(5536,3388), "S21159C10");
    check_base_class_offset(lv, (S21159C9*)(S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(5536,3388), "S21159C10");
    /*is_ambiguous_... S21159C10::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C9*)(S21159C8*), ABISELECT(5536,3388), "S21159C10");
    check_base_class_offset(lv, (S21159C8*)(S21159C11*), 0, "S21159C10");
    check_base_class_offset(lv, (S21159C11*), 0, "S21159C10");
    /*is_ambiguous_... S21159C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(6648,4072), "S21159C10");
    check_base_class_offset(lv, (S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(6640,4068), "S21159C10");
    /*is_ambiguous_... S21159C14::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(7096,4324), "S21159C10");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(6912,4216), "S21159C10");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(6904,4212), "S21159C10");
    check_base_class_offset(lv, (S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(6904,4212), "S21159C10");
    check_base_class_offset(lv, (S21159C13*)(S21159C12*), ABISELECT(6640,4068), "S21159C10");
    /*is_ambiguous_... S21159C10::S21159C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C8*), ABISELECT(7512,4564), "S21159C10");
    /*is_ambiguous_... S21159C12::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C8*)(S21159C12*), ABISELECT(7504,4560), "S21159C10");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C12*), ABISELECT(7320,4452), "S21159C10");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C12*), ABISELECT(7312,4448), "S21159C10");
    check_base_class_offset(lv, (S21159C12*), ABISELECT(6640,4068), "S21159C10");
    check_field_offset(lv, s21159c10f0, ABISELECT(384,248), "S21159C10.s21159c10f0");
    check_field_offset(lv, s21159c10f1, ABISELECT(400,252), "S21159C10.s21159c10f1");
    check_field_offset(lv, s21159c10f2, ABISELECT(2464,1500), "S21159C10.s21159c10f2");
    check_field_offset(lv, s21159c10f3, ABISELECT(2472,1504), "S21159C10.s21159c10f3");
    check_field_offset(lv, s21159c10f4, ABISELECT(2480,1512), "S21159C10.s21159c10f4");
    check_field_offset(lv, s21159c10f5, ABISELECT(2484,1516), "S21159C10.s21159c10f5");
    check_field_offset(lv, s21159c10f6, ABISELECT(2488,1520), "S21159C10.s21159c10f6");
    check_field_offset(lv, s21159c10f7, ABISELECT(2624,1612), "S21159C10.s21159c10f7");
    check_field_offset(lv, s21159c10f8, ABISELECT(2736,1696), "S21159C10.s21159c10f8");
    set_bf_and_test(lv, s21159c10f9, ABISELECT(4800,2944), 0, 32, 1, "S21159C10");
    set_bf_and_test(lv, s21159c10f9, ABISELECT(4800,2944), 0, 32, hide_sll(1LL<<31), "S21159C10");
    check_field_offset(lv, s21159c10f10, ABISELECT(4808,2948), "S21159C10.s21159c10f10");
    check_field_offset(lv, s21159c10f11, ABISELECT(4816,2956), "S21159C10.s21159c10f11");
    check_field_offset(lv, s21159c10f12, ABISELECT(4824,2960), "S21159C10.s21159c10f12");
    test_class_info(&lv, &cd_S21159C10);
    dp->~S21159C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C10(Test_S21159C10, "S21159C10", ABISELECT(7776,4704));

#else // __cplusplus

extern void _ZN9S21159C10C1Ev();
extern void _ZN9S21159C10D1Ev();
Name_Map name_map_S21159C10[] = {
  NSPAIR(_ZN9S21159C10C1Ev),
  NSPAIR(_ZN9S21159C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21159C7;
extern VTBL_ENTRY _ZTI8S21159C7[];
extern  VTBL_ENTRY _ZTV8S21159C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C9;
extern VTBL_ENTRY _ZTI8S21159C9[];
extern  VTBL_ENTRY _ZTV8S21159C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C9[];
extern Class_Descriptor cd_S21159C8;
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
extern Class_Descriptor cd_S21159C11;
extern VTBL_ENTRY _ZTI9S21159C11[];
extern  VTBL_ENTRY _ZTV9S21159C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C11[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C8;
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C14;
extern VTBL_ENTRY _ZTI9S21159C14[];
extern  VTBL_ENTRY _ZTV9S21159C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C14[];
extern Class_Descriptor cd_S21159C13;
extern VTBL_ENTRY _ZTI9S21159C13[];
extern  VTBL_ENTRY _ZTV9S21159C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C8;
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C12;
extern VTBL_ENTRY _ZTI9S21159C12[];
extern  VTBL_ENTRY _ZTV9S21159C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C12[];
static Base_Class bases_S21159C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(4832,2964), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4960,3056), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(4952,3052), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(5152,3164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21159C7,    ABISELECT(5152,3164), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(6520,4012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(5544,3392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C4,    ABISELECT(5536,3388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21159C9,    ABISELECT(5536,3388), //bcp->offset
    31, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21159C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21159C11,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(6648,4072), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C8,    ABISELECT(6640,4068), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(7096,4324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(6912,4216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C4,    ABISELECT(6904,4212), //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
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21159C14,    ABISELECT(6904,4212), //bcp->offset
    63, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21159C13,    ABISELECT(6640,4068), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(7512,4564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C8,    ABISELECT(7504,4560), //bcp->offset
    75, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(7320,4452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C4,    ABISELECT(7312,4448), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21159C12,    ABISELECT(6640,4068), //bcp->offset
    42, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21159C10[];
extern void _ZN9S21159C10D1Ev();
extern void _ZN9S21159C10D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void ABISELECT(_ZTv0_n24_N9S21159C10D1Ev,_ZTv0_n12_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn4832_N9S21159C10D1Ev,_ZThn2964_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C10D0Ev,_ZTv0_n12_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn4832_N9S21159C10D0Ev,_ZThn2964_N9S21159C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C10D1Ev,_ZTv0_n16_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn4952_N9S21159C10D1Ev,_ZThn3052_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C10D0Ev,_ZTv0_n16_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn4952_N9S21159C10D0Ev,_ZThn3052_N9S21159C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C10D1Ev,_ZTv0_n20_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn5152_N9S21159C10D1Ev,_ZThn3164_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C10D0Ev,_ZTv0_n20_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn5152_N9S21159C10D0Ev,_ZThn3164_N9S21159C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C10D1Ev,_ZTv0_n20_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn5536_N9S21159C10D1Ev,_ZThn3388_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C10D0Ev,_ZTv0_n20_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn5536_N9S21159C10D0Ev,_ZThn3388_N9S21159C10D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
extern void ABISELECT(_ZTv0_n72_N9S21159C10D1Ev,_ZTv0_n36_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn6640_N9S21159C10D1Ev,_ZThn4068_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21159C10D0Ev,_ZTv0_n36_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn6640_N9S21159C10D0Ev,_ZThn4068_N9S21159C10D0Ev)() __attribute__((weak));
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN9S21159C132v7Ev();
extern void _ZN9S21159C132v8Ev();
extern void _ZN9S21159C122v9Ev();
extern void ABISELECT(_ZTvn264_n72_N9S21159C10D1Ev,_ZTvn144_n36_N9S21159C10D1Ev)();
extern void ABISELECT(_ZTvn264_n72_N9S21159C10D0Ev,_ZTvn144_n36_N9S21159C10D0Ev)();
extern void ABISELECT(_ZTvn672_n72_N9S21159C10D1Ev,_ZTvn380_n36_N9S21159C10D1Ev)();
extern void ABISELECT(_ZTvn672_n72_N9S21159C10D0Ev,_ZTvn380_n36_N9S21159C10D0Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21159C10D1Ev,_ZTv0_n32_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn7504_N9S21159C10D1Ev,_ZThn4560_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21159C10D0Ev,_ZTv0_n32_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn7504_N9S21159C10D0Ev,_ZThn4560_N9S21159C10D0Ev)() __attribute__((weak));
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY vtc_S21159C10[] = {
  ABISELECT(7504,4560),
  ABISELECT(6640,4068),
  ABISELECT(6520,4012),
  ABISELECT(5536,3388),
  ABISELECT(5152,3164),
  ABISELECT(4952,3052),
  ABISELECT(4832,2964),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&_ZN9S21159C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C10D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  ABISELECT(-4832,-2964),
  ABISELECT(-4832,-2964),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C10D1Ev,_ZTv0_n12_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C10D0Ev,_ZTv0_n12_N9S21159C10D0Ev),
  ABISELECT(-4952,-3052),
  ABISELECT(-120,-88),
  ABISELECT(-4952,-3052),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C10D1Ev,_ZTv0_n16_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C10D0Ev,_ZTv0_n16_N9S21159C10D0Ev),
  ABISELECT(-5152,-3164),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-5152,-3164),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C10D1Ev,_ZTv0_n20_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C10D0Ev,_ZTv0_n20_N9S21159C10D0Ev),
  0,
  0,
  ABISELECT(-5536,-3388),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-5536,-3388),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C10D1Ev,_ZTv0_n20_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C10D0Ev,_ZTv0_n20_N9S21159C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-6640,-4068),
  ABISELECT(864,492),
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1488,-904),
  ABISELECT(-1688,-1016),
  ABISELECT(-1808,-1104),
  ABISELECT(-6640,-4068),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21159C10D1Ev,_ZTv0_n36_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21159C10D0Ev,_ZTv0_n36_N9S21159C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21159C122v9Ev,
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2072,-1248),
  ABISELECT(-6904,-4212),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S21159C10D1Ev,_ZTvn144_n36_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S21159C10D0Ev,_ZTvn144_n36_N9S21159C10D0Ev),
  ABISELECT(-2480,-1484),
  ABISELECT(-7312,-4448),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S21159C10D1Ev,_ZTvn380_n36_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S21159C10D0Ev,_ZTvn380_n36_N9S21159C10D0Ev),
  0,
  0,
  ABISELECT(-7504,-4560),
  ABISELECT(-984,-548),
  ABISELECT(-1968,-1172),
  ABISELECT(-2352,-1396),
  ABISELECT(-2552,-1508),
  ABISELECT(-2672,-1596),
  ABISELECT(-7504,-4560),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21159C10D1Ev,_ZTv0_n32_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21159C10D0Ev,_ZTv0_n32_N9S21159C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern VTBL_ENTRY _ZTV9S21159C10[];
extern void _ZN9S21159C11D1Ev();
extern void _ZN9S21159C11D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C11__9S21159C10[] = {
  ABISELECT(6520,4012),
  ABISELECT(5536,3388),
  ABISELECT(5152,3164),
  ABISELECT(4952,3052),
  ABISELECT(4832,2964),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&_ZN9S21159C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C11D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C89S21159C11__9S21159C10[] = {
  ABISELECT(6520,4012),
  ABISELECT(5536,3388),
  ABISELECT(5152,3164),
  ABISELECT(4952,3052),
  ABISELECT(4832,2964),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn4832_N8S21159C8D1Ev,_ZThn2964_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn4832_N8S21159C8D0Ev,_ZThn2964_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C89S21159C11__9S21159C10[] = {
  ABISELECT(-4832,-2964),
  ABISELECT(-4832,-2964),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn4952_N8S21159C8D1Ev,_ZThn3052_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn4952_N8S21159C8D0Ev,_ZThn3052_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C89S21159C11__9S21159C10[] = {
  ABISELECT(-4952,-3052),
  ABISELECT(-120,-88),
  ABISELECT(-4952,-3052),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn5152_N8S21159C8D1Ev,_ZThn3164_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn5152_N8S21159C8D0Ev,_ZThn3164_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C89S21159C11__9S21159C10[] = {
  ABISELECT(-5152,-3164),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-5152,-3164),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn5536_N8S21159C8D1Ev,_ZThn3388_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn5536_N8S21159C8D0Ev,_ZThn3388_N8S21159C8D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C89S21159C11__9S21159C10[] = {
  0,
  0,
  ABISELECT(-5536,-3388),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-5536,-3388),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21159C11D1Ev,_ZTv0_n12_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn4832_N9S21159C11D1Ev,_ZThn2964_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C11D0Ev,_ZTv0_n12_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn4832_N9S21159C11D0Ev,_ZThn2964_N9S21159C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C11__9S21159C10[] = {
  ABISELECT(-4832,-2964),
  ABISELECT(-4832,-2964),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C11D1Ev,_ZTv0_n12_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C11D0Ev,_ZTv0_n12_N9S21159C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21159C11D1Ev,_ZTv0_n16_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn4952_N9S21159C11D1Ev,_ZThn3052_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C11D0Ev,_ZTv0_n16_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn4952_N9S21159C11D0Ev,_ZThn3052_N9S21159C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C11__9S21159C10[] = {
  ABISELECT(-4952,-3052),
  ABISELECT(-120,-88),
  ABISELECT(-4952,-3052),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C11D1Ev,_ZTv0_n16_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C11D0Ev,_ZTv0_n16_N9S21159C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn5152_N9S21159C11D1Ev,_ZThn3164_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn5152_N9S21159C11D0Ev,_ZThn3164_N9S21159C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C11__9S21159C10[] = {
  ABISELECT(-5152,-3164),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(-5152,-3164),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn5536_N9S21159C11D1Ev,_ZThn3388_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn5536_N9S21159C11D0Ev,_ZThn3388_N9S21159C11D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C11__9S21159C10[] = {
  0,
  0,
  ABISELECT(-5536,-3388),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(-5536,-3388),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C10[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__9S21159C10[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void _ZN8S21159C7D1Ev();
extern void _ZN8S21159C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C10[] = {
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&_ZN8S21159C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C7__9S21159C10[] = {
  ABISELECT(200,112),
  ABISELECT(-120,-88),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C7__9S21159C10[] = {
  ABISELECT(320,200),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev),
};
extern void _ZN8S21159C9D1Ev();
extern void _ZN8S21159C9D0Ev();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C10[] = {
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&_ZN8S21159C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C48S21159C9__A1__9S21159C10[] = {
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C48S21159C9__A1__9S21159C10[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C9__9S21159C10[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev),
};
extern void _ZN9S21159C12D1Ev();
extern void _ZN9S21159C12D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN9S21159C132v7Ev();
extern void _ZN9S21159C132v8Ev();
extern void _ZN9S21159C122v9Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C12__9S21159C10[] = {
  ABISELECT(864,492),
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1488,-904),
  ABISELECT(-1688,-1016),
  ABISELECT(-1808,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&_ZN9S21159C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C12D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21159C122v9Ev,
};
extern void _ZN9S21159C13D1Ev();
extern void _ZN9S21159C13D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN9S21159C132v7Ev();
extern void _ZN9S21159C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C139S21159C12__9S21159C10[] = {
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1488,-904),
  ABISELECT(-1688,-1016),
  ABISELECT(-1808,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&_ZN9S21159C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C13D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v8Ev,
};
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C89S21159C139S21159C12__A1__9S21159C10[] = {
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1488,-904),
  ABISELECT(-1688,-1016),
  ABISELECT(-1808,-1104),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C89S21159C139S21159C12__A1__9S21159C10[] = {
  ABISELECT(1808,1104),
  ABISELECT(1808,1104),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C89S21159C139S21159C12__A1__9S21159C10[] = {
  ABISELECT(1688,1016),
  ABISELECT(-120,-88),
  ABISELECT(1688,1016),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C89S21159C139S21159C12__A1__9S21159C10[] = {
  ABISELECT(1488,904),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(1488,904),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C89S21159C139S21159C12__A1__9S21159C10[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN9S21159C14D1Ev();
extern void _ZN9S21159C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C149S21159C139S21159C12__9S21159C10[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2072,-1248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&_ZN9S21159C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C14D0Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C49S21159C149S21159C139S21159C12__A2__9S21159C10[] = {
  ABISELECT(-2072,-1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C49S21159C149S21159C139S21159C12__A2__9S21159C10[] = {
  ABISELECT(2072,1248),
  ABISELECT(2072,1248),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev)();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C149S21159C139S21159C12__9S21159C10[] = {
  0,
  0,
  ABISELECT(1368,824),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1368,824),
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C149S21159C139S21159C12__9S21159C10[] = {
  ABISELECT(2072,1248),
  ABISELECT(2072,1248),
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21159C13D1Ev,_ZTv0_n12_N9S21159C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21159C13D0Ev,_ZTv0_n12_N9S21159C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C139S21159C12__9S21159C10[] = {
  ABISELECT(1808,1104),
  ABISELECT(1808,1104),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C13D1Ev,_ZTv0_n12_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C13D0Ev,_ZTv0_n12_N9S21159C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21159C13D1Ev,_ZTv0_n16_N9S21159C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21159C13D0Ev,_ZTv0_n16_N9S21159C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C139S21159C12__9S21159C10[] = {
  ABISELECT(1688,1016),
  ABISELECT(-120,-88),
  ABISELECT(1688,1016),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C13D1Ev,_ZTv0_n16_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C13D0Ev,_ZTv0_n16_N9S21159C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C139S21159C12__9S21159C10[] = {
  ABISELECT(1488,904),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(1488,904),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev)();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C139S21159C12__9S21159C10[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZThn264_N9S21159C13D1Ev,_ZThn144_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21159C13D0Ev,_ZThn144_N9S21159C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21159C14__9S21159C139S21159C12__9S21159C10[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2072,-1248),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C13D1Ev,_ZThn144_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C13D0Ev,_ZThn144_N9S21159C13D0Ev),
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C49S21159C12__A3__9S21159C10[] = {
  ABISELECT(-2480,-1484),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C49S21159C12__A3__9S21159C10[] = {
  ABISELECT(2480,1484),
  ABISELECT(2480,1484),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21159C12D1Ev,_ZTv0_n12_N9S21159C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21159C12D0Ev,_ZTv0_n12_N9S21159C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C12__9S21159C10[] = {
  ABISELECT(1808,1104),
  ABISELECT(1808,1104),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C12D1Ev,_ZTv0_n12_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C12D0Ev,_ZTv0_n12_N9S21159C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21159C12D1Ev,_ZTv0_n16_N9S21159C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21159C12D0Ev,_ZTv0_n16_N9S21159C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C12__9S21159C10[] = {
  ABISELECT(1688,1016),
  ABISELECT(-120,-88),
  ABISELECT(1688,1016),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C12D1Ev,_ZTv0_n16_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C12D0Ev,_ZTv0_n16_N9S21159C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C12__9S21159C10[] = {
  ABISELECT(1488,904),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(1488,904),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev)();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C12__9S21159C10[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZThn264_N9S21159C12D1Ev,_ZThn144_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21159C12D0Ev,_ZThn144_N9S21159C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21159C149S21159C13__9S21159C12__9S21159C10[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2072,-1248),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C12D1Ev,_ZThn144_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C12D0Ev,_ZThn144_N9S21159C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21159C12D1Ev,_ZTv0_n32_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn864_N9S21159C12D1Ev,_ZThn492_N9S21159C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21159C12D0Ev,_ZTv0_n32_N9S21159C12D0Ev)();
extern void ABISELECT(_ZThn864_N9S21159C12D0Ev,_ZThn492_N9S21159C12D0Ev)() __attribute__((weak));
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C8__A1__9S21159C12__9S21159C10[] = {
  0,
  0,
  ABISELECT(-864,-492),
  ABISELECT(-984,-548),
  ABISELECT(-1968,-1172),
  ABISELECT(-2352,-1396),
  ABISELECT(-2552,-1508),
  ABISELECT(-2672,-1596),
  ABISELECT(-864,-492),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21159C12D1Ev,_ZTv0_n32_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21159C12D0Ev,_ZTv0_n32_N9S21159C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZThn672_N9S21159C12D1Ev,_ZThn380_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn672_N9S21159C12D0Ev,_ZThn380_N9S21159C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__A__9S21159C12__9S21159C10[] = {
  ABISELECT(-2480,-1484),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21159C12D1Ev,_ZThn380_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21159C12D0Ev,_ZThn380_N9S21159C12D0Ev),
};
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C8__A2__9S21159C10[] = {
  ABISELECT(-984,-548),
  ABISELECT(-1968,-1172),
  ABISELECT(-2352,-1396),
  ABISELECT(-2552,-1508),
  ABISELECT(-2672,-1596),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C8__A2__9S21159C10[] = {
  ABISELECT(2672,1596),
  ABISELECT(2672,1596),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C8__A2__9S21159C10[] = {
  ABISELECT(2552,1508),
  ABISELECT(-120,-88),
  ABISELECT(2552,1508),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C8__A2__9S21159C10[] = {
  ABISELECT(2352,1396),
  ABISELECT(-320,-200),
  ABISELECT(-200,-112),
  ABISELECT(2352,1396),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C8__A2__9S21159C10[] = {
  0,
  0,
  ABISELECT(1968,1172),
  ABISELECT(984,624),
  ABISELECT(-704,-424),
  ABISELECT(1968,1172),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
static  VTT_ENTRY vtt_S21159C10[] = {
  {&(_ZTV9S21159C10[9]),  9,89},
  {&(_tg__ZTV9S21159C11__9S21159C10[7]),  7,11},
  {&(_tg__ZTV8S21159C89S21159C11__9S21159C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21159C89S21159C11__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S21159C4__8S21159C89S21159C11__9S21159C10[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C89S21159C11__9S21159C10[5]),  5,7},
  {&(_tg__ZTV8S21159C9__8S21159C89S21159C11__9S21159C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21159C11__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S21159C4__9S21159C11__9S21159C10[4]),  4,6},
  {&(_tg__ZTV8S21159C7__9S21159C11__9S21159C10[5]),  5,7},
  {&(_tg__ZTV8S21159C9__9S21159C11__9S21159C10[7]),  7,11},
  {&(_ZTV9S21159C10[16]),  16,89},
  {&(_ZTV9S21159C10[22]),  22,89},
  {&(_ZTV9S21159C10[29]),  29,89},
  {&(_ZTV9S21159C10[38]),  38,89},
  {&(_ZTV9S21159C10[56]),  56,89},
  {&(_ZTV9S21159C10[68]),  68,89},
  {&(_ZTV9S21159C10[85]),  85,89},
  {&(_ZTV9S21159C10[73]),  73,89},
  {&(_tg__ZTV8S21159C4__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S21159C7__9S21159C10[4]),  4,6},
  {&(_tg__ZTV8S21159C4__8S21159C7__9S21159C10[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21159C7__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S21159C9__9S21159C10[4]),  4,8},
  {&(_tg__ZTV8S21159C48S21159C9__A1__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C48S21159C9__A1__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C9__9S21159C10[3]),  3,5},
  {&(_tg__ZTV9S21159C12__9S21159C10[8]),  8,15},
  {&(_tg__ZTV9S21159C139S21159C12__9S21159C10[7]),  7,13},
  {&(_tg__ZTV8S21159C89S21159C139S21159C12__A1__9S21159C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21159C89S21159C139S21159C12__A1__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S21159C4__8S21159C89S21159C139S21159C12__A1__9S21159C10[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C89S21159C139S21159C12__A1__9S21159C10[5]),  5,7},
  {&(_tg__ZTV8S21159C9__8S21159C89S21159C139S21159C12__A1__9S21159C10[7]),  7,11},
  {&(_tg__ZTV9S21159C149S21159C139S21159C12__9S21159C10[5]),  5,7},
  {&(_tg__ZTV8S21159C49S21159C149S21159C139S21159C12__A2__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C49S21159C149S21159C139S21159C12__A2__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S21159C9__9S21159C149S21159C139S21159C12__9S21159C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21159C149S21159C139S21159C12__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21159C139S21159C12__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S21159C4__9S21159C139S21159C12__9S21159C10[4]),  4,6},
  {&(_tg__ZTV8S21159C7__9S21159C139S21159C12__9S21159C10[5]),  5,7},
  {&(_tg__ZTV8S21159C9__9S21159C139S21159C12__9S21159C10[7]),  7,11},
  {&(_tg__ZTV9S21159C14__9S21159C139S21159C12__9S21159C10[5]),  5,7},
  {&(_tg__ZTV8S21159C49S21159C12__A3__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C49S21159C12__A3__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21159C12__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S21159C4__9S21159C12__9S21159C10[4]),  4,6},
  {&(_tg__ZTV8S21159C7__9S21159C12__9S21159C10[5]),  5,7},
  {&(_tg__ZTV8S21159C9__9S21159C12__9S21159C10[7]),  7,11},
  {&(_tg__ZTV9S21159C149S21159C13__9S21159C12__9S21159C10[5]),  5,7},
  {&(_tg__ZTV8S21159C8__A1__9S21159C12__9S21159C10[10]),  10,14},
  {&(_tg__ZTV8S21159C4__A__9S21159C12__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S21159C8__A2__9S21159C10[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21159C8__A2__9S21159C10[3]),  3,5},
  {&(_tg__ZTV8S21159C4__8S21159C8__A2__9S21159C10[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C8__A2__9S21159C10[5]),  5,7},
  {&(_tg__ZTV8S21159C9__8S21159C8__A2__9S21159C10[7]),  7,11},
};
extern VTBL_ENTRY _ZTI9S21159C10[];
extern  VTBL_ENTRY _ZTV9S21159C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C10[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21159C12D0Ev,_ZTv0_n32_N9S21159C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21159C12D0Ev,_ZThn492_N9S21159C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21159C12D1Ev,_ZTv0_n32_N9S21159C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S21159C12D1Ev,_ZThn492_N9S21159C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N9S21159C11D0Ev,_ZThn3388_N9S21159C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N9S21159C11D0Ev,_ZThn3164_N9S21159C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N9S21159C11D1Ev,_ZThn3388_N9S21159C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N9S21159C11D1Ev,_ZThn3164_N9S21159C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C11D0Ev,_ZTv0_n16_N9S21159C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N9S21159C11D0Ev,_ZThn3052_N9S21159C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C11D1Ev,_ZTv0_n16_N9S21159C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N9S21159C11D1Ev,_ZThn3052_N9S21159C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C11D0Ev,_ZTv0_n12_N9S21159C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N9S21159C11D0Ev,_ZThn2964_N9S21159C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C11D1Ev,_ZTv0_n12_N9S21159C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N9S21159C11D1Ev,_ZThn2964_N9S21159C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S21159C8D0Ev,_ZThn3388_N8S21159C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N8S21159C8D0Ev,_ZThn3164_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S21159C8D1Ev,_ZThn3388_N8S21159C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N8S21159C8D1Ev,_ZThn3164_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N8S21159C8D0Ev,_ZThn3052_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N8S21159C8D1Ev,_ZThn3052_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N8S21159C8D0Ev,_ZThn2964_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N8S21159C8D1Ev,_ZThn2964_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21159C10D0Ev,_ZTv0_n32_N9S21159C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7504_N9S21159C10D0Ev,_ZThn4560_N9S21159C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21159C10D1Ev,_ZTv0_n32_N9S21159C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7504_N9S21159C10D1Ev,_ZThn4560_N9S21159C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21159C10D0Ev,_ZTv0_n36_N9S21159C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N9S21159C10D0Ev,_ZThn4068_N9S21159C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21159C10D1Ev,_ZTv0_n36_N9S21159C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N9S21159C10D1Ev,_ZThn4068_N9S21159C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C10D0Ev,_ZTv0_n20_N9S21159C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N9S21159C10D0Ev,_ZThn3388_N9S21159C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N9S21159C10D0Ev,_ZThn3164_N9S21159C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C10D1Ev,_ZTv0_n20_N9S21159C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N9S21159C10D1Ev,_ZThn3388_N9S21159C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5152_N9S21159C10D1Ev,_ZThn3164_N9S21159C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C10D0Ev,_ZTv0_n16_N9S21159C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N9S21159C10D0Ev,_ZThn3052_N9S21159C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C10D1Ev,_ZTv0_n16_N9S21159C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4952_N9S21159C10D1Ev,_ZThn3052_N9S21159C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C10D0Ev,_ZTv0_n12_N9S21159C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N9S21159C10D0Ev,_ZThn2964_N9S21159C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C10D1Ev,_ZTv0_n12_N9S21159C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4832_N9S21159C10D1Ev,_ZThn2964_N9S21159C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C10 = {  "S21159C10", // class name
  bases_S21159C10, 24,
  &(vtc_S21159C10[0]), // expected_vtbl_contents
  &(vtt_S21159C10[0]), // expected_vtt_contents
  ABISELECT(7776,4704), // object size
  NSPAIRA(_ZTI9S21159C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21159C10),89, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21159C10),59, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21159C1  : virtual S21159C2 , virtual S21159C8 , S21159C10 {
  ::S21159C8 s21159c1f0[8];
  short s21159c1f1;
  ::S19674C9 s21159c1f2;
  void *s21159c1f3;
  ::S21159C8 s21159c1f4;
  ::S19674C2 s21159c1f5;
  ::S19674C3 s21159c1f6;
  virtual void  v1(); // _ZN8S21159C12v1Ev
  virtual void  v2(); // _ZN8S21159C12v2Ev
  ~S21159C1(); // tgen
  S21159C1(); // tgen
};
//SIG(1 S21159C1) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ VBC3 BC5{ m Fp[14]} Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC7{ VBC4 BC3 Fc:6 Fc[8] FD FC5 FC5} FD Fp Fp} VBC8{ VBC3 VBC4 VBC7 BC5 VBC9{ VBC3 VBC5 BC4 v3 v4 FC4 FD[7] FC4 FL Fp[5]} vd v5 v6 Fi Fi FC5 Fc Fc Fi Fs FL} BC10{ BC11{ BC8 vd Fs Fp Fi FL[10] Fc Fs Fs Fi} VBC12{ BC13{ BC8 BC14{ VBC9 BC5 BC4 Fi Fi Fi:28 Fi Fl} v7 v8 FU15{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} VBC8 BC4 v9} Fl FC8 Fi FL Fi Fi FC16{ VBC3 v10} FD[7] FC8 Fi:32 FL Fp Fp} v1 v2 FC8[8] Fs FU6 Fp FC8 FC17{ m FC18{ VBC19{ VBC3 v11} VBC20{ VBC3 VBC5 BC21{ VBC3 BC5 Fs[6] FL[3] FU6} v12 v13 FC21 FD[7] FC21 FL Fp[5]} vd FC22{ VBC21 BC3 Fc:6 Fc[8] FD FC5 FC5}[5] Fl Fi FC20 Fi Fi FC19}[5] Fp} FC18}


void  S21159C1 ::v1(){vfunc_called(this, "_ZN8S21159C12v1Ev");}
void  S21159C1 ::v2(){vfunc_called(this, "_ZN8S21159C12v2Ev");}
S21159C1 ::~S21159C1(){ note_dtor("S21159C1", this);} // tgen
S21159C1 ::S21159C1(){ note_ctor("S21159C1", this);} // tgen

static void Test_S21159C1()
{
  extern Class_Descriptor cd_S21159C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3964,9677)];
    init_test(&cd_S21159C1, buf);
    S21159C1 *dp, &lv = *(dp=new (buf) S21159C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(63408,38704), "sizeof(S21159C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21159C1)");
    /*is_ambiguous_... S21159C2::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C2*), ABISELECT(60464,36964), "S21159C1");
    /*is_ambiguous_... S21159C2::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C2*), ABISELECT(60464,36964), "S21159C1");
    /*is_ambiguous_... S21159C1::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*), ABISELECT(60464,36964), "S21159C1");
    /*is_ambiguous_... S21159C1::S21159C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C8*), ABISELECT(60464,36964), "S21159C1");
    check_base_class_offset(lv, (S19674C5*)(S21159C9*), ABISELECT(60464,36964), "S21159C1");
    check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C9*), ABISELECT(60464,36964), "S21159C1");
    /*is_ambiguous_... S21159C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C8*)(S21159C11*)(S21159C10*), ABISELECT(60464,36964), "S21159C1");
    /*is_ambiguous_... S21159C8::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(60464,36964), "S21159C1");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(60464,36964), "S21159C1");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C4*)(S21159C12*), ABISELECT(60464,36964), "S21159C1");
    /*is_ambiguous_... S21159C2::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C2*), ABISELECT(60248,36836), "S21159C1");
    /*is_ambiguous_... S21159C2::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C2*), ABISELECT(60240,36832), "S21159C1");
    /*is_ambiguous_... S21159C1::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*), ABISELECT(60984,37280), "S21159C1");
    check_base_class_offset(lv, (S21159C4*)(S21159C7*), ABISELECT(60976,37276), "S21159C1");
    /*is_ambiguous_... S21159C1::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C8*), ABISELECT(60976,37276), "S21159C1");
    /*is_ambiguous_... S21159C8::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C8*)(S21159C11*)(S21159C10*), ABISELECT(60976,37276), "S21159C1");
    /*is_ambiguous_... S21159C8::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(60976,37276), "S21159C1");
    /*is_ambiguous_... S21159C7::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21159C7*), ABISELECT(60592,37052), "S21159C1");
    check_base_class_offset(lv, (S21159C7*)(S21159C2*), ABISELECT(60592,37052), "S21159C1");
    /*is_ambiguous_... S21159C1::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C7*)(S21159C8*), ABISELECT(60592,37052), "S21159C1");
    check_base_class_offset(lv, (S21159C7*)(S21159C8*)(S21159C11*)(S21159C10*), ABISELECT(60592,37052), "S21159C1");
    check_base_class_offset(lv, (S21159C7*)(S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(60592,37052), "S21159C1");
    check_base_class_offset(lv, (S21159C2*), ABISELECT(60240,36832), "S21159C1");
    /*is_ambiguous_... S21159C1::S21159C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C8*), ABISELECT(61176,37392), "S21159C1");
    /*is_ambiguous_... S21159C9::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C9*), ABISELECT(62424,38156), "S21159C1");
    check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C9*), ABISELECT(61448,37536), "S21159C1");
    check_base_class_offset(lv, (S21159C4*)(S21159C9*), ABISELECT(61440,37532), "S21159C1");
    /*is_ambiguous_... S21159C1::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C9*)(S21159C8*), ABISELECT(61440,37532), "S21159C1");
    check_base_class_offset(lv, (S21159C9*)(S21159C8*)(S21159C11*)(S21159C10*), ABISELECT(61440,37532), "S21159C1");
    check_base_class_offset(lv, (S21159C9*)(S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(61440,37532), "S21159C1");
    check_base_class_offset(lv, (S21159C9*)(S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(61440,37532), "S21159C1");
    /*is_ambiguous_... S21159C1::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C8*), ABISELECT(61168,37388), "S21159C1");
    /*is_ambiguous_... S21159C12::S21159C8 */ AMB_check_base_class_offset(lv, (S21159C8*)(S21159C12*), ABISELECT(61168,37388), "S21159C1");
    /*is_ambiguous_... S21159C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C8*)(S21159C11*)(S21159C10*), ABISELECT(8,4), "S21159C1");
    check_base_class_offset(lv, (S21159C8*)(S21159C11*)(S21159C10*), 0, "S21159C1");
    check_base_class_offset(lv, (S21159C11*)(S21159C10*), 0, "S21159C1");
    /*is_ambiguous_... S21159C8::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(62552,38216), "S21159C1");
    check_base_class_offset(lv, (S21159C8*)(S21159C13*)(S21159C12*), ABISELECT(62544,38212), "S21159C1");
    /*is_ambiguous_... S21159C14::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(63000,38468), "S21159C1");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(62816,38360), "S21159C1");
    /*is_ambiguous_... S21159C14::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(62808,38356), "S21159C1");
    check_base_class_offset(lv, (S21159C14*)(S21159C13*)(S21159C12*), ABISELECT(62808,38356), "S21159C1");
    check_base_class_offset(lv, (S21159C13*)(S21159C12*), ABISELECT(62544,38212), "S21159C1");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21159C4*)(S21159C12*), ABISELECT(63224,38596), "S21159C1");
    /*is_ambiguous_... S21159C12::S21159C4 */ AMB_check_base_class_offset(lv, (S21159C4*)(S21159C12*), ABISELECT(63216,38592), "S21159C1");
    check_base_class_offset(lv, (S21159C12*)(S21159C10*), ABISELECT(62544,38212), "S21159C1");
    check_base_class_offset(lv, (S21159C10*), 0, "S21159C1");
    check_field_offset(lv, s21159c1f0, ABISELECT(4832,2964), "S21159C1.s21159c1f0");
    check_field_offset(lv, s21159c1f1, ABISELECT(21344,12948), "S21159C1.s21159c1f1");
    check_field_offset(lv, s21159c1f2, ABISELECT(21352,12952), "S21159C1.s21159c1f2");
    check_field_offset(lv, s21159c1f3, ABISELECT(21384,12968), "S21159C1.s21159c1f3");
    check_field_offset(lv, s21159c1f4, ABISELECT(21392,12972), "S21159C1.s21159c1f4");
    check_field_offset(lv, s21159c1f5, ABISELECT(23456,14220), "S21159C1.s21159c1f5");
    check_field_offset(lv, s21159c1f6, ABISELECT(54112,33064), "S21159C1.s21159c1f6");
    test_class_info(&lv, &cd_S21159C1);
    dp->~S21159C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21159C1(Test_S21159C1, "S21159C1", ABISELECT(63408,38704));

#else // __cplusplus

extern void _ZN8S21159C1C1Ev();
extern void _ZN8S21159C1D1Ev();
Name_Map name_map_S21159C1[] = {
  NSPAIR(_ZN8S21159C1C1Ev),
  NSPAIR(_ZN8S21159C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21159C7;
extern VTBL_ENTRY _ZTI8S21159C7[];
extern  VTBL_ENTRY _ZTV8S21159C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C7[];
extern Class_Descriptor cd_S21159C2;
extern VTBL_ENTRY _ZTI8S21159C2[];
extern  VTBL_ENTRY _ZTV8S21159C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C9;
extern VTBL_ENTRY _ZTI8S21159C9[];
extern  VTBL_ENTRY _ZTV8S21159C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C9[];
extern Class_Descriptor cd_S21159C8;
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C8;
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
extern Class_Descriptor cd_S21159C11;
extern VTBL_ENTRY _ZTI9S21159C11[];
extern  VTBL_ENTRY _ZTV9S21159C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C11[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C8;
extern VTBL_ENTRY _ZTI8S21159C8[];
extern  VTBL_ENTRY _ZTV8S21159C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C14;
extern VTBL_ENTRY _ZTI9S21159C14[];
extern  VTBL_ENTRY _ZTV9S21159C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C14[];
extern Class_Descriptor cd_S21159C13;
extern VTBL_ENTRY _ZTI9S21159C13[];
extern  VTBL_ENTRY _ZTV9S21159C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C13[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21159C4;
extern VTBL_ENTRY _ZTI8S21159C4[];
extern  VTBL_ENTRY _ZTV8S21159C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C4[];
extern Class_Descriptor cd_S21159C12;
extern VTBL_ENTRY _ZTI9S21159C12[];
extern  VTBL_ENTRY _ZTV9S21159C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C12[];
extern Class_Descriptor cd_S21159C10;
extern VTBL_ENTRY _ZTI9S21159C10[];
extern  VTBL_ENTRY _ZTV9S21159C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21159C10[];
static Base_Class bases_S21159C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(60464,36964), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(60248,36836), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21159C4,    ABISELECT(60240,36832), //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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(60984,37280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21159C4,    ABISELECT(60976,37276), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    ABISELECT(60592,37052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21159C7,    ABISELECT(60592,37052), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21159C2,    ABISELECT(60240,36832), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(61176,37392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(62424,38156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(61448,37536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C4,    ABISELECT(61440,37532), //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
    12, //immediately_derived
  0, 0},
  {&cd_S21159C9,    ABISELECT(61440,37532), //bcp->offset
    56, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21159C8,    ABISELECT(61168,37388), //bcp->offset
    42, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21159C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(62552,38216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C8,    ABISELECT(62544,38212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(63000,38468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(62816,38360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C4,    ABISELECT(62808,38356), //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
    11, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21159C14,    ABISELECT(62808,38356), //bcp->offset
    88, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21159C13,    ABISELECT(62544,38212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(63224,38596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21159C4,    ABISELECT(63216,38592), //bcp->offset
    95, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21159C12,    ABISELECT(62544,38212), //bcp->offset
    67, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S21159C10,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21159C1[];
extern void _ZN8S21159C1D1Ev();
extern void _ZN8S21159C1D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN8S21159C12v1Ev();
extern void _ZN8S21159C12v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S21159C1D1Ev,_ZTv0_n24_N8S21159C1D1Ev)();
extern void ABISELECT(_ZThn60240_N8S21159C1D1Ev,_ZThn36832_N8S21159C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21159C1D0Ev,_ZTv0_n24_N8S21159C1D0Ev)();
extern void ABISELECT(_ZThn60240_N8S21159C1D0Ev,_ZThn36832_N8S21159C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C1D1Ev,_ZTv0_n12_N8S21159C1D1Ev)();
extern void ABISELECT(_ZThn60464_N8S21159C1D1Ev,_ZThn36964_N8S21159C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C1D0Ev,_ZTv0_n12_N8S21159C1D0Ev)();
extern void ABISELECT(_ZThn60464_N8S21159C1D0Ev,_ZThn36964_N8S21159C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C1D1Ev,_ZTv0_n20_N8S21159C1D1Ev)();
extern void ABISELECT(_ZThn60592_N8S21159C1D1Ev,_ZThn37052_N8S21159C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C1D0Ev,_ZTv0_n20_N8S21159C1D0Ev)();
extern void ABISELECT(_ZThn60592_N8S21159C1D0Ev,_ZThn37052_N8S21159C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C1D1Ev,_ZTv0_n16_N8S21159C1D1Ev)();
extern void ABISELECT(_ZThn60976_N8S21159C1D1Ev,_ZThn37276_N8S21159C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C1D0Ev,_ZTv0_n16_N8S21159C1D0Ev)();
extern void ABISELECT(_ZThn60976_N8S21159C1D0Ev,_ZThn37276_N8S21159C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21159C1D1Ev,_ZTv0_n32_N8S21159C1D1Ev)();
extern void ABISELECT(_ZThn61168_N8S21159C1D1Ev,_ZThn37388_N8S21159C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21159C1D0Ev,_ZTv0_n32_N8S21159C1D0Ev)();
extern void ABISELECT(_ZThn61168_N8S21159C1D0Ev,_ZThn37388_N8S21159C1D0Ev)() __attribute__((weak));
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void ABISELECT(_ZTv0_n40_N8S21159C1D1Ev,_ZTv0_n20_N8S21159C1D1Ev)();
extern void ABISELECT(_ZThn61440_N8S21159C1D1Ev,_ZThn37532_N8S21159C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C1D0Ev,_ZTv0_n20_N8S21159C1D0Ev)();
extern void ABISELECT(_ZThn61440_N8S21159C1D0Ev,_ZThn37532_N8S21159C1D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
extern void ABISELECT(_ZTv0_n72_N8S21159C1D1Ev,_ZTv0_n36_N8S21159C1D1Ev)();
extern void ABISELECT(_ZThn62544_N8S21159C1D1Ev,_ZThn38212_N8S21159C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21159C1D0Ev,_ZTv0_n36_N8S21159C1D0Ev)();
extern void ABISELECT(_ZThn62544_N8S21159C1D0Ev,_ZThn38212_N8S21159C1D0Ev)() __attribute__((weak));
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN9S21159C132v7Ev();
extern void _ZN9S21159C132v8Ev();
extern void _ZN9S21159C122v9Ev();
extern void ABISELECT(_ZTvn264_n72_N8S21159C1D1Ev,_ZTvn144_n36_N8S21159C1D1Ev)();
extern void ABISELECT(_ZTvn264_n72_N8S21159C1D0Ev,_ZTvn144_n36_N8S21159C1D0Ev)();
extern void ABISELECT(_ZTvn672_n72_N8S21159C1D1Ev,_ZTvn380_n36_N8S21159C1D1Ev)();
extern void ABISELECT(_ZTvn672_n72_N8S21159C1D0Ev,_ZTvn380_n36_N8S21159C1D0Ev)();
static  VTBL_ENTRY vtc_S21159C1[] = {
  ABISELECT(60240,36832),
  ABISELECT(61168,37388),
  ABISELECT(62544,38212),
  ABISELECT(62424,38156),
  ABISELECT(61440,37532),
  ABISELECT(60592,37052),
  ABISELECT(60976,37276),
  ABISELECT(60464,36964),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C1[0]),
  (VTBL_ENTRY)&_ZN8S21159C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN8S21159C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21159C12v2Ev,
  ABISELECT(-60240,-36832),
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  ABISELECT(-60240,-36832),
  (VTBL_ENTRY)&(_ZTI8S21159C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21159C1D1Ev,_ZTv0_n24_N8S21159C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21159C1D0Ev,_ZTv0_n24_N8S21159C1D0Ev),
  ABISELECT(-60464,-36964),
  ABISELECT(-60464,-36964),
  (VTBL_ENTRY)&(_ZTI8S21159C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C1D1Ev,_ZTv0_n12_N8S21159C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C1D0Ev,_ZTv0_n12_N8S21159C1D0Ev),
  ABISELECT(-60592,-37052),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-60592,-37052),
  (VTBL_ENTRY)&(_ZTI8S21159C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C1D1Ev,_ZTv0_n20_N8S21159C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C1D0Ev,_ZTv0_n20_N8S21159C1D0Ev),
  ABISELECT(-60976,-37276),
  ABISELECT(-512,-312),
  ABISELECT(-60976,-37276),
  (VTBL_ENTRY)&(_ZTI8S21159C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C1D1Ev,_ZTv0_n16_N8S21159C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C1D0Ev,_ZTv0_n16_N8S21159C1D0Ev),
  0,
  0,
  ABISELECT(-61168,-37388),
  ABISELECT(1256,768),
  ABISELECT(272,144),
  ABISELECT(-576,-336),
  ABISELECT(-192,-112),
  ABISELECT(-704,-424),
  ABISELECT(-61168,-37388),
  (VTBL_ENTRY)&(_ZTI8S21159C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21159C1D1Ev,_ZTv0_n32_N8S21159C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21159C1D0Ev,_ZTv0_n32_N8S21159C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  0,
  0,
  ABISELECT(-61440,-37532),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(-61440,-37532),
  (VTBL_ENTRY)&(_ZTI8S21159C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C1D1Ev,_ZTv0_n20_N8S21159C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C1D0Ev,_ZTv0_n20_N8S21159C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-62544,-38212),
  ABISELECT(-1376,-824),
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1952,-1160),
  ABISELECT(-1568,-936),
  ABISELECT(-2080,-1248),
  ABISELECT(-62544,-38212),
  (VTBL_ENTRY)&(_ZTI8S21159C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21159C1D1Ev,_ZTv0_n36_N8S21159C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21159C1D0Ev,_ZTv0_n36_N8S21159C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21159C122v9Ev,
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2344,-1392),
  ABISELECT(-62808,-38356),
  (VTBL_ENTRY)&(_ZTI8S21159C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N8S21159C1D1Ev,_ZTvn144_n36_N8S21159C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N8S21159C1D0Ev,_ZTvn144_n36_N8S21159C1D0Ev),
  ABISELECT(-2752,-1628),
  ABISELECT(-63216,-38592),
  (VTBL_ENTRY)&(_ZTI8S21159C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N8S21159C1D1Ev,_ZTvn380_n36_N8S21159C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N8S21159C1D0Ev,_ZTvn380_n36_N8S21159C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21159C1[];
extern void _ZN9S21159C10D1Ev();
extern void _ZN9S21159C10D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C10__8S21159C1[] = {
  ABISELECT(61168,37388),
  ABISELECT(62544,38212),
  ABISELECT(62424,38156),
  ABISELECT(61440,37532),
  ABISELECT(60592,37052),
  ABISELECT(60976,37276),
  ABISELECT(60464,36964),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&_ZN9S21159C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C10D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void _ZN9S21159C11D1Ev();
extern void _ZN9S21159C11D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C119S21159C10__8S21159C1[] = {
  ABISELECT(62424,38156),
  ABISELECT(61440,37532),
  ABISELECT(60592,37052),
  ABISELECT(60976,37276),
  ABISELECT(60464,36964),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&_ZN9S21159C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C11D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C89S21159C119S21159C10__A1__8S21159C1[] = {
  ABISELECT(62424,38156),
  ABISELECT(61440,37532),
  ABISELECT(60592,37052),
  ABISELECT(60976,37276),
  ABISELECT(60464,36964),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn60464_N8S21159C8D1Ev,_ZThn36964_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn60464_N8S21159C8D0Ev,_ZThn36964_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C89S21159C119S21159C10__A1__8S21159C1[] = {
  ABISELECT(-60464,-36964),
  ABISELECT(-60464,-36964),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn60976_N8S21159C8D1Ev,_ZThn37276_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn60976_N8S21159C8D0Ev,_ZThn37276_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C89S21159C119S21159C10__A1__8S21159C1[] = {
  ABISELECT(-60976,-37276),
  ABISELECT(-512,-312),
  ABISELECT(-60976,-37276),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn60592_N8S21159C8D1Ev,_ZThn37052_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn60592_N8S21159C8D0Ev,_ZThn37052_N8S21159C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C89S21159C119S21159C10__A1__8S21159C1[] = {
  ABISELECT(-60592,-37052),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-60592,-37052),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn61440_N8S21159C8D1Ev,_ZThn37532_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn61440_N8S21159C8D0Ev,_ZThn37532_N8S21159C8D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C89S21159C119S21159C10__A1__8S21159C1[] = {
  0,
  0,
  ABISELECT(-61440,-37532),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(-61440,-37532),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21159C11D1Ev,_ZTv0_n12_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn60464_N9S21159C11D1Ev,_ZThn36964_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C11D0Ev,_ZTv0_n12_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn60464_N9S21159C11D0Ev,_ZThn36964_N9S21159C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C119S21159C10__8S21159C1[] = {
  ABISELECT(-60464,-36964),
  ABISELECT(-60464,-36964),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C11D1Ev,_ZTv0_n12_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C11D0Ev,_ZTv0_n12_N9S21159C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21159C11D1Ev,_ZTv0_n16_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn60976_N9S21159C11D1Ev,_ZThn37276_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C11D0Ev,_ZTv0_n16_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn60976_N9S21159C11D0Ev,_ZThn37276_N9S21159C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C119S21159C10__8S21159C1[] = {
  ABISELECT(-60976,-37276),
  ABISELECT(-512,-312),
  ABISELECT(-60976,-37276),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C11D1Ev,_ZTv0_n16_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C11D0Ev,_ZTv0_n16_N9S21159C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn60592_N9S21159C11D1Ev,_ZThn37052_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn60592_N9S21159C11D0Ev,_ZThn37052_N9S21159C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C119S21159C10__8S21159C1[] = {
  ABISELECT(-60592,-37052),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-60592,-37052),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev)();
extern void ABISELECT(_ZThn61440_N9S21159C11D1Ev,_ZThn37532_N9S21159C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev)();
extern void ABISELECT(_ZThn61440_N9S21159C11D0Ev,_ZThn37532_N9S21159C11D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C119S21159C10__8S21159C1[] = {
  0,
  0,
  ABISELECT(-61440,-37532),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(-61440,-37532),
  (VTBL_ENTRY)&(_ZTI9S21159C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21159C10D1Ev,_ZTv0_n12_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn60464_N9S21159C10D1Ev,_ZThn36964_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21159C10D0Ev,_ZTv0_n12_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn60464_N9S21159C10D0Ev,_ZThn36964_N9S21159C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C10__8S21159C1[] = {
  ABISELECT(-60464,-36964),
  ABISELECT(-60464,-36964),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C10D1Ev,_ZTv0_n12_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C10D0Ev,_ZTv0_n12_N9S21159C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21159C10D1Ev,_ZTv0_n16_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn60976_N9S21159C10D1Ev,_ZThn37276_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21159C10D0Ev,_ZTv0_n16_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn60976_N9S21159C10D0Ev,_ZThn37276_N9S21159C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C10__8S21159C1[] = {
  ABISELECT(-60976,-37276),
  ABISELECT(-512,-312),
  ABISELECT(-60976,-37276),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C10D1Ev,_ZTv0_n16_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C10D0Ev,_ZTv0_n16_N9S21159C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C10D1Ev,_ZTv0_n20_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn60592_N9S21159C10D1Ev,_ZThn37052_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C10D0Ev,_ZTv0_n20_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn60592_N9S21159C10D0Ev,_ZThn37052_N9S21159C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C10__8S21159C1[] = {
  ABISELECT(-60592,-37052),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-60592,-37052),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C10D1Ev,_ZTv0_n20_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C10D0Ev,_ZTv0_n20_N9S21159C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C10D1Ev,_ZTv0_n20_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn61440_N9S21159C10D1Ev,_ZThn37532_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21159C10D0Ev,_ZTv0_n20_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn61440_N9S21159C10D0Ev,_ZThn37532_N9S21159C10D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C10__8S21159C1[] = {
  0,
  0,
  ABISELECT(-61440,-37532),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(-61440,-37532),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C10D1Ev,_ZTv0_n20_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C10D0Ev,_ZTv0_n20_N9S21159C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S21159C10D1Ev,_ZTv0_n36_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn62544_N9S21159C10D1Ev,_ZThn38212_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21159C10D0Ev,_ZTv0_n36_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn62544_N9S21159C10D0Ev,_ZThn38212_N9S21159C10D0Ev)() __attribute__((weak));
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN9S21159C132v7Ev();
extern void _ZN9S21159C132v8Ev();
extern void _ZN9S21159C122v9Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C12__9S21159C10__8S21159C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-62544,-38212),
  ABISELECT(-1376,-824),
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1952,-1160),
  ABISELECT(-1568,-936),
  ABISELECT(-2080,-1248),
  ABISELECT(-62544,-38212),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21159C10D1Ev,_ZTv0_n36_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21159C10D0Ev,_ZTv0_n36_N9S21159C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21159C122v9Ev,
};
extern void ABISELECT(_ZTvn264_n72_N9S21159C10D1Ev,_ZTvn144_n36_N9S21159C10D1Ev)();
extern void ABISELECT(_ZTvn264_n72_N9S21159C10D0Ev,_ZTvn144_n36_N9S21159C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21159C149S21159C139S21159C12__9S21159C10__8S21159C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2344,-1392),
  ABISELECT(-62808,-38356),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S21159C10D1Ev,_ZTvn144_n36_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn264_n72_N9S21159C10D0Ev,_ZTvn144_n36_N9S21159C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21159C10D1Ev,_ZTv0_n32_N9S21159C10D1Ev)();
extern void ABISELECT(_ZThn61168_N9S21159C10D1Ev,_ZThn37388_N9S21159C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21159C10D0Ev,_ZTv0_n32_N9S21159C10D0Ev)();
extern void ABISELECT(_ZThn61168_N9S21159C10D0Ev,_ZThn37388_N9S21159C10D0Ev)() __attribute__((weak));
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C8__A2__9S21159C10__8S21159C1[] = {
  0,
  0,
  ABISELECT(-61168,-37388),
  ABISELECT(1256,768),
  ABISELECT(272,144),
  ABISELECT(-576,-336),
  ABISELECT(-192,-112),
  ABISELECT(-704,-424),
  ABISELECT(-61168,-37388),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21159C10D1Ev,_ZTv0_n32_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21159C10D0Ev,_ZTv0_n32_N9S21159C10D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTvn672_n72_N9S21159C10D1Ev,_ZTvn380_n36_N9S21159C10D1Ev)();
extern void ABISELECT(_ZTvn672_n72_N9S21159C10D0Ev,_ZTvn380_n36_N9S21159C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C49S21159C12__A3__9S21159C10__8S21159C1[] = {
  ABISELECT(-2752,-1628),
  ABISELECT(-63216,-38592),
  (VTBL_ENTRY)&(_ZTI9S21159C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S21159C10D1Ev,_ZTvn380_n36_N9S21159C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn672_n72_N9S21159C10D0Ev,_ZTvn380_n36_N9S21159C10D0Ev),
};
extern void _ZN8S21159C2D1Ev();
extern void _ZN8S21159C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C2__8S21159C1[] = {
  ABISELECT(736,444),
  ABISELECT(352,220),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C2[0]),
  (VTBL_ENTRY)&_ZN8S21159C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C2D0Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C48S21159C2__8S21159C1[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZThn224_N8S21159C4D1Ev,_ZThn132_N8S21159C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
extern void ABISELECT(_ZThn224_N8S21159C4D0Ev,_ZThn132_N8S21159C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C48S21159C2__8S21159C1[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C2D1Ev,_ZTv0_n12_N8S21159C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21159C2D1Ev,_ZThn132_N8S21159C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21159C2D0Ev,_ZTv0_n12_N8S21159C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21159C2D0Ev,_ZThn132_N8S21159C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C2__8S21159C1[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21159C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C2D1Ev,_ZTv0_n12_N8S21159C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C2D0Ev,_ZTv0_n12_N8S21159C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C2D1Ev,_ZTv0_n20_N8S21159C2D1Ev)();
extern void ABISELECT(_ZThn352_N8S21159C2D1Ev,_ZThn220_N8S21159C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C2D0Ev,_ZTv0_n20_N8S21159C2D0Ev)();
extern void ABISELECT(_ZThn352_N8S21159C2D0Ev,_ZThn220_N8S21159C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C2__8S21159C1[] = {
  ABISELECT(-352,-220),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI8S21159C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C2D1Ev,_ZTv0_n20_N8S21159C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C2D0Ev,_ZTv0_n20_N8S21159C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C2D1Ev,_ZTv0_n16_N8S21159C2D1Ev)();
extern void ABISELECT(_ZThn736_N8S21159C2D1Ev,_ZThn444_N8S21159C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C2D0Ev,_ZTv0_n16_N8S21159C2D0Ev)();
extern void ABISELECT(_ZThn736_N8S21159C2D0Ev,_ZThn444_N8S21159C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__A1__8S21159C2__8S21159C1[] = {
  ABISELECT(-736,-444),
  ABISELECT(-512,-312),
  ABISELECT(-736,-444),
  (VTBL_ENTRY)&(_ZTI8S21159C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C2D1Ev,_ZTv0_n16_N8S21159C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C2D0Ev,_ZTv0_n16_N8S21159C2D0Ev),
};
extern void _ZN8S21159C7D1Ev();
extern void _ZN8S21159C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C1[] = {
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&_ZN8S21159C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S21159C7D1Ev,_ZThn224_N8S21159C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev)();
extern void ABISELECT(_ZThn384_N8S21159C7D0Ev,_ZThn224_N8S21159C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C7__8S21159C1[] = {
  ABISELECT(-384,-224),
  ABISELECT(-512,-312),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C7__8S21159C1[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S21159C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D1Ev,_ZTv0_n12_N8S21159C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C7D0Ev,_ZTv0_n12_N8S21159C7D0Ev),
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C4__A1__8S21159C1[] = {
  ABISELECT(-512,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C4__A1__8S21159C1[] = {
  ABISELECT(512,312),
  ABISELECT(512,312),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C8__8S21159C1[] = {
  ABISELECT(1256,768),
  ABISELECT(272,144),
  ABISELECT(-576,-336),
  ABISELECT(-192,-112),
  ABISELECT(-704,-424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C8__8S21159C1[] = {
  ABISELECT(704,424),
  ABISELECT(704,424),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C8__8S21159C1[] = {
  ABISELECT(192,112),
  ABISELECT(-512,-312),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C8__8S21159C1[] = {
  ABISELECT(576,336),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(576,336),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S21159C8D1Ev,_ZThn144_N8S21159C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S21159C8D0Ev,_ZThn144_N8S21159C8D0Ev)() __attribute__((weak));
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C8__8S21159C1[] = {
  0,
  0,
  ABISELECT(-272,-144),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN8S21159C9D1Ev();
extern void _ZN8S21159C9D0Ev();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C1[] = {
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&_ZN8S21159C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C48S21159C9__A2__8S21159C1[] = {
  ABISELECT(-976,-568),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C48S21159C9__A2__8S21159C1[] = {
  ABISELECT(976,568),
  ABISELECT(976,568),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C9__8S21159C1[] = {
  ABISELECT(976,568),
  ABISELECT(976,568),
  (VTBL_ENTRY)&(_ZTI8S21159C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D1Ev,_ZTv0_n12_N8S21159C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C9D0Ev,_ZTv0_n12_N8S21159C9D0Ev),
};
extern void _ZN9S21159C12D1Ev();
extern void _ZN9S21159C12D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN9S21159C132v7Ev();
extern void _ZN9S21159C132v8Ev();
extern void _ZN9S21159C122v9Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C12__8S21159C1[] = {
  ABISELECT(-1376,-824),
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1952,-1160),
  ABISELECT(-1568,-936),
  ABISELECT(-2080,-1248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&_ZN9S21159C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C12D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v8Ev,
  (VTBL_ENTRY)&_ZN9S21159C122v9Ev,
};
extern void _ZN9S21159C13D1Ev();
extern void _ZN9S21159C13D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
extern void _ZN9S21159C132v7Ev();
extern void _ZN9S21159C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C139S21159C12__8S21159C1[] = {
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1952,-1160),
  ABISELECT(-1568,-936),
  ABISELECT(-2080,-1248),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&_ZN9S21159C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C13D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v7Ev,
  (VTBL_ENTRY)&_ZN9S21159C132v8Ev,
};
extern void _ZN8S21159C8D1Ev();
extern void _ZN8S21159C8D0Ev();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C89S21159C139S21159C12__A2__8S21159C1[] = {
  ABISELECT(-120,-56),
  ABISELECT(-1104,-680),
  ABISELECT(-1952,-1160),
  ABISELECT(-1568,-936),
  ABISELECT(-2080,-1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&_ZN8S21159C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C89S21159C139S21159C12__A2__8S21159C1[] = {
  ABISELECT(2080,1248),
  ABISELECT(2080,1248),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__8S21159C89S21159C139S21159C12__A2__8S21159C1[] = {
  ABISELECT(1568,936),
  ABISELECT(-512,-312),
  ABISELECT(1568,936),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C7__8S21159C89S21159C139S21159C12__A2__8S21159C1[] = {
  ABISELECT(1952,1160),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(1952,1160),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev)();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__8S21159C89S21159C139S21159C12__A2__8S21159C1[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI8S21159C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void _ZN9S21159C14D1Ev();
extern void _ZN9S21159C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21159C149S21159C139S21159C12__8S21159C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2344,-1392),
  0,
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&_ZN9S21159C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21159C14D0Ev,
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C49S21159C149S21159C139S21159C12__A3__8S21159C1[] = {
  ABISELECT(-2344,-1392),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C49S21159C149S21159C139S21159C12__A3__8S21159C1[] = {
  ABISELECT(2344,1392),
  ABISELECT(2344,1392),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev)();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C149S21159C139S21159C12__8S21159C1[] = {
  0,
  0,
  ABISELECT(1368,824),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(1368,824),
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C14D1Ev,_ZTv0_n20_N9S21159C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C14D0Ev,_ZTv0_n20_N9S21159C14D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C149S21159C139S21159C12__8S21159C1[] = {
  ABISELECT(2344,1392),
  ABISELECT(2344,1392),
  (VTBL_ENTRY)&(_ZTI9S21159C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C14D1Ev,_ZTv0_n12_N9S21159C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C14D0Ev,_ZTv0_n12_N9S21159C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21159C13D1Ev,_ZTv0_n12_N9S21159C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21159C13D0Ev,_ZTv0_n12_N9S21159C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C139S21159C12__8S21159C1[] = {
  ABISELECT(2080,1248),
  ABISELECT(2080,1248),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C13D1Ev,_ZTv0_n12_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C13D0Ev,_ZTv0_n12_N9S21159C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21159C13D1Ev,_ZTv0_n16_N9S21159C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21159C13D0Ev,_ZTv0_n16_N9S21159C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C139S21159C12__8S21159C1[] = {
  ABISELECT(1568,936),
  ABISELECT(-512,-312),
  ABISELECT(1568,936),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C13D1Ev,_ZTv0_n16_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C13D0Ev,_ZTv0_n16_N9S21159C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C139S21159C12__8S21159C1[] = {
  ABISELECT(1952,1160),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(1952,1160),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev)();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C139S21159C12__8S21159C1[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D1Ev,_ZTv0_n20_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C13D0Ev,_ZTv0_n20_N9S21159C13D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZThn264_N9S21159C13D1Ev,_ZThn144_N9S21159C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S21159C13D0Ev,_ZThn144_N9S21159C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21159C14__9S21159C139S21159C12__8S21159C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2344,-1392),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21159C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C13D1Ev,_ZThn144_N9S21159C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C13D0Ev,_ZThn144_N9S21159C13D0Ev),
};
extern void _ZN8S21159C4D1Ev();
extern void _ZN8S21159C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C49S21159C12__A4__8S21159C1[] = {
  ABISELECT(-2752,-1628),
  0,
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&_ZN8S21159C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21159C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21159C49S21159C12__A4__8S21159C1[] = {
  ABISELECT(2752,1628),
  ABISELECT(2752,1628),
  (VTBL_ENTRY)&(_ZTI8S21159C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21159C12D1Ev,_ZTv0_n12_N9S21159C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21159C12D0Ev,_ZTv0_n12_N9S21159C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21159C12__8S21159C1[] = {
  ABISELECT(2080,1248),
  ABISELECT(2080,1248),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C12D1Ev,_ZTv0_n12_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21159C12D0Ev,_ZTv0_n12_N9S21159C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21159C12D1Ev,_ZTv0_n16_N9S21159C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21159C12D0Ev,_ZTv0_n16_N9S21159C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__9S21159C12__8S21159C1[] = {
  ABISELECT(1568,936),
  ABISELECT(-512,-312),
  ABISELECT(1568,936),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C12D1Ev,_ZTv0_n16_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21159C12D0Ev,_ZTv0_n16_N9S21159C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C7__9S21159C12__8S21159C1[] = {
  ABISELECT(1952,1160),
  ABISELECT(-128,-88),
  ABISELECT(384,224),
  ABISELECT(1952,1160),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev)();
extern void _ZN8S21159C92v3Ev();
extern void _ZN8S21159C92v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C9__9S21159C12__8S21159C1[] = {
  0,
  0,
  ABISELECT(1104,680),
  ABISELECT(984,624),
  ABISELECT(-976,-568),
  ABISELECT(1104,680),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D1Ev,_ZTv0_n20_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21159C12D0Ev,_ZTv0_n20_N9S21159C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C92v3Ev,
  (VTBL_ENTRY)&_ZN8S21159C92v4Ev,
};
extern void ABISELECT(_ZThn264_N9S21159C12D1Ev,_ZThn144_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S21159C12D0Ev,_ZThn144_N9S21159C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21159C149S21159C13__9S21159C12__8S21159C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-1368,-824),
  ABISELECT(-2344,-1392),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C12D1Ev,_ZThn144_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn264_N9S21159C12D0Ev,_ZThn144_N9S21159C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S21159C12D1Ev,_ZTv0_n32_N9S21159C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21159C12D0Ev,_ZTv0_n32_N9S21159C12D0Ev)();
extern void _ZN8S21159C82v5Ev();
extern void _ZN8S21159C82v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21159C8__A1__9S21159C12__8S21159C1[] = {
  0,
  0,
  ABISELECT(1376,824),
  ABISELECT(1256,768),
  ABISELECT(272,144),
  ABISELECT(-576,-336),
  ABISELECT(-192,-112),
  ABISELECT(-704,-424),
  ABISELECT(1376,824),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21159C12D1Ev,_ZTv0_n32_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21159C12D0Ev,_ZTv0_n32_N9S21159C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21159C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21159C82v6Ev,
};
extern void ABISELECT(_ZThn672_N9S21159C12D1Ev,_ZThn380_N9S21159C12D1Ev)();
extern void ABISELECT(_ZThn672_N9S21159C12D0Ev,_ZThn380_N9S21159C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21159C4__A__9S21159C12__8S21159C1[] = {
  ABISELECT(-2752,-1628),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S21159C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21159C12D1Ev,_ZThn380_N9S21159C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn672_N9S21159C12D0Ev,_ZThn380_N9S21159C12D0Ev),
};
static  VTT_ENTRY vtt_S21159C1[] = {
  {&(_ZTV8S21159C1[10]),  10,100},
  {&(_tg__ZTV9S21159C10__8S21159C1[9]),  9,13},
  {&(_tg__ZTV9S21159C119S21159C10__8S21159C1[7]),  7,11},
  {&(_tg__ZTV8S21159C89S21159C119S21159C10__A1__8S21159C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21159C89S21159C119S21159C10__A1__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C4__8S21159C89S21159C119S21159C10__A1__8S21159C1[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C89S21159C119S21159C10__A1__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C9__8S21159C89S21159C119S21159C10__A1__8S21159C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21159C119S21159C10__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C4__9S21159C119S21159C10__8S21159C1[4]),  4,6},
  {&(_tg__ZTV8S21159C7__9S21159C119S21159C10__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C9__9S21159C119S21159C10__8S21159C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21159C10__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C4__9S21159C10__8S21159C1[4]),  4,6},
  {&(_tg__ZTV8S21159C7__9S21159C10__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C9__9S21159C10__8S21159C1[7]),  7,11},
  {&(_tg__ZTV9S21159C12__9S21159C10__8S21159C1[14]),  14,21},
  {&(_tg__ZTV9S21159C149S21159C139S21159C12__9S21159C10__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C8__A2__9S21159C10__8S21159C1[10]),  10,14},
  {&(_tg__ZTV8S21159C49S21159C12__A3__9S21159C10__8S21159C1[3]),  3,5},
  {&(_ZTV8S21159C1[22]),  22,100},
  {&(_ZTV8S21159C1[27]),  27,100},
  {&(_ZTV8S21159C1[34]),  34,100},
  {&(_ZTV8S21159C1[40]),  40,100},
  {&(_ZTV8S21159C1[52]),  52,100},
  {&(_ZTV8S21159C1[63]),  63,100},
  {&(_ZTV8S21159C1[81]),  81,100},
  {&(_ZTV8S21159C1[93]),  93,100},
  {&(_ZTV8S21159C1[98]),  98,100},
  {&(_tg__ZTV8S21159C2__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C48S21159C2__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C48S21159C2__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C2__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C7__8S21159C2__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C4__A1__8S21159C2__8S21159C1[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C1[4]),  4,6},
  {&(_tg__ZTV8S21159C4__8S21159C7__8S21159C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__8S21159C7__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C4__A1__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C4__A1__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C8__8S21159C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21159C8__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C4__8S21159C8__8S21159C1[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C8__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C9__8S21159C8__8S21159C1[7]),  7,11},
  {&(_tg__ZTV8S21159C9__8S21159C1[4]),  4,8},
  {&(_tg__ZTV8S21159C48S21159C9__A2__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C48S21159C9__A2__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C9__8S21159C1[3]),  3,5},
  {&(_tg__ZTV9S21159C12__8S21159C1[8]),  8,15},
  {&(_tg__ZTV9S21159C139S21159C12__8S21159C1[7]),  7,13},
  {&(_tg__ZTV8S21159C89S21159C139S21159C12__A2__8S21159C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21159C89S21159C139S21159C12__A2__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C4__8S21159C89S21159C139S21159C12__A2__8S21159C1[4]),  4,6},
  {&(_tg__ZTV8S21159C7__8S21159C89S21159C139S21159C12__A2__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C9__8S21159C89S21159C139S21159C12__A2__8S21159C1[7]),  7,11},
  {&(_tg__ZTV9S21159C149S21159C139S21159C12__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C49S21159C149S21159C139S21159C12__A3__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C49S21159C149S21159C139S21159C12__A3__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C9__9S21159C149S21159C139S21159C12__8S21159C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__9S21159C149S21159C139S21159C12__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21159C139S21159C12__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C4__9S21159C139S21159C12__8S21159C1[4]),  4,6},
  {&(_tg__ZTV8S21159C7__9S21159C139S21159C12__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C9__9S21159C139S21159C12__8S21159C1[7]),  7,11},
  {&(_tg__ZTV9S21159C14__9S21159C139S21159C12__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C49S21159C12__A4__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21159C49S21159C12__A4__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__9S21159C12__8S21159C1[3]),  3,5},
  {&(_tg__ZTV8S21159C4__9S21159C12__8S21159C1[4]),  4,6},
  {&(_tg__ZTV8S21159C7__9S21159C12__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C9__9S21159C12__8S21159C1[7]),  7,11},
  {&(_tg__ZTV9S21159C149S21159C13__9S21159C12__8S21159C1[5]),  5,7},
  {&(_tg__ZTV8S21159C8__A1__9S21159C12__8S21159C1[10]),  10,14},
  {&(_tg__ZTV8S21159C4__A__9S21159C12__8S21159C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21159C1[];
extern  VTBL_ENTRY _ZTV8S21159C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21159C1[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C7D0Ev,_ZTv0_n16_N8S21159C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21159C7D0Ev,_ZThn224_N8S21159C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C7D1Ev,_ZTv0_n16_N8S21159C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21159C7D1Ev,_ZThn224_N8S21159C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C2D0Ev,_ZTv0_n16_N8S21159C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S21159C2D0Ev,_ZThn444_N8S21159C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C2D1Ev,_ZTv0_n16_N8S21159C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S21159C2D1Ev,_ZThn444_N8S21159C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C2D0Ev,_ZTv0_n20_N8S21159C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21159C2D0Ev,_ZThn220_N8S21159C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C2D1Ev,_ZTv0_n20_N8S21159C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21159C2D1Ev,_ZThn220_N8S21159C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C2D0Ev,_ZTv0_n12_N8S21159C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21159C2D0Ev,_ZThn132_N8S21159C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C2D1Ev,_ZTv0_n12_N8S21159C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21159C2D1Ev,_ZThn132_N8S21159C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D0Ev,_ZTv0_n12_N8S21159C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21159C4D0Ev,_ZThn132_N8S21159C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C4D1Ev,_ZTv0_n12_N8S21159C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21159C4D1Ev,_ZThn132_N8S21159C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21159C10D0Ev,_ZTv0_n32_N9S21159C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61168_N9S21159C10D0Ev,_ZThn37388_N9S21159C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21159C10D1Ev,_ZTv0_n32_N9S21159C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61168_N9S21159C10D1Ev,_ZThn37388_N9S21159C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21159C10D0Ev,_ZTv0_n36_N9S21159C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62544_N9S21159C10D0Ev,_ZThn38212_N9S21159C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21159C10D1Ev,_ZTv0_n36_N9S21159C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62544_N9S21159C10D1Ev,_ZThn38212_N9S21159C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C10D0Ev,_ZTv0_n20_N9S21159C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N9S21159C10D0Ev,_ZThn37532_N9S21159C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N9S21159C10D0Ev,_ZThn37052_N9S21159C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C10D1Ev,_ZTv0_n20_N9S21159C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N9S21159C10D1Ev,_ZThn37532_N9S21159C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N9S21159C10D1Ev,_ZThn37052_N9S21159C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C10D0Ev,_ZTv0_n16_N9S21159C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N9S21159C10D0Ev,_ZThn37276_N9S21159C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C10D1Ev,_ZTv0_n16_N9S21159C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N9S21159C10D1Ev,_ZThn37276_N9S21159C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C10D0Ev,_ZTv0_n12_N9S21159C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N9S21159C10D0Ev,_ZThn36964_N9S21159C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C10D1Ev,_ZTv0_n12_N9S21159C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N9S21159C10D1Ev,_ZThn36964_N9S21159C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C11D0Ev,_ZTv0_n20_N9S21159C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N9S21159C11D0Ev,_ZThn37532_N9S21159C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N9S21159C11D0Ev,_ZThn37052_N9S21159C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21159C11D1Ev,_ZTv0_n20_N9S21159C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N9S21159C11D1Ev,_ZThn37532_N9S21159C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N9S21159C11D1Ev,_ZThn37052_N9S21159C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C11D0Ev,_ZTv0_n16_N9S21159C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N9S21159C11D0Ev,_ZThn37276_N9S21159C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21159C11D1Ev,_ZTv0_n16_N9S21159C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N9S21159C11D1Ev,_ZThn37276_N9S21159C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C11D0Ev,_ZTv0_n12_N9S21159C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N9S21159C11D0Ev,_ZThn36964_N9S21159C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21159C11D1Ev,_ZTv0_n12_N9S21159C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N9S21159C11D1Ev,_ZThn36964_N9S21159C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D0Ev,_ZTv0_n20_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21159C8D0Ev,_ZThn144_N8S21159C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N8S21159C8D0Ev,_ZThn37532_N8S21159C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N8S21159C8D0Ev,_ZThn37052_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C8D1Ev,_ZTv0_n20_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21159C8D1Ev,_ZThn144_N8S21159C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N8S21159C8D1Ev,_ZThn37532_N8S21159C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N8S21159C8D1Ev,_ZThn37052_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D0Ev,_ZTv0_n16_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N8S21159C8D0Ev,_ZThn37276_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C8D1Ev,_ZTv0_n16_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N8S21159C8D1Ev,_ZThn37276_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D0Ev,_ZTv0_n12_N8S21159C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N8S21159C8D0Ev,_ZThn36964_N8S21159C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C8D1Ev,_ZTv0_n12_N8S21159C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N8S21159C8D1Ev,_ZThn36964_N8S21159C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21159C1D0Ev,_ZTv0_n36_N8S21159C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62544_N8S21159C1D0Ev,_ZThn38212_N8S21159C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21159C1D1Ev,_ZTv0_n36_N8S21159C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62544_N8S21159C1D1Ev,_ZThn38212_N8S21159C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21159C1D0Ev,_ZTv0_n32_N8S21159C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61168_N8S21159C1D0Ev,_ZThn37388_N8S21159C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21159C1D1Ev,_ZTv0_n32_N8S21159C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61168_N8S21159C1D1Ev,_ZThn37388_N8S21159C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C1D0Ev,_ZTv0_n16_N8S21159C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N8S21159C1D0Ev,_ZThn37276_N8S21159C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21159C1D1Ev,_ZTv0_n16_N8S21159C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60976_N8S21159C1D1Ev,_ZThn37276_N8S21159C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C1D0Ev,_ZTv0_n20_N8S21159C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N8S21159C1D0Ev,_ZThn37532_N8S21159C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N8S21159C1D0Ev,_ZThn37052_N8S21159C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21159C1D1Ev,_ZTv0_n20_N8S21159C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn61440_N8S21159C1D1Ev,_ZThn37532_N8S21159C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn60592_N8S21159C1D1Ev,_ZThn37052_N8S21159C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C1D0Ev,_ZTv0_n12_N8S21159C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N8S21159C1D0Ev,_ZThn36964_N8S21159C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21159C1D1Ev,_ZTv0_n12_N8S21159C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60464_N8S21159C1D1Ev,_ZThn36964_N8S21159C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21159C1D0Ev,_ZTv0_n24_N8S21159C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60240_N8S21159C1D0Ev,_ZThn36832_N8S21159C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21159C1D1Ev,_ZTv0_n24_N8S21159C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60240_N8S21159C1D1Ev,_ZThn36832_N8S21159C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21159C1 = {  "S21159C1", // class name
  bases_S21159C1, 28,
  &(vtc_S21159C1[0]), // expected_vtbl_contents
  &(vtt_S21159C1[0]), // expected_vtt_contents
  ABISELECT(63408,38704), // object size
  NSPAIRA(_ZTI8S21159C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21159C1),100, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21159C1),75, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3295C3  {
  int s3295c3f0;
  __tsi64 s3295c3f1;
  void *s3295c3f2[4];
  int s3295c3f3[2];
  void *s3295c3f4;
  ::S3164C4_nt s3295c3f5;
  void *s3295c3f6[2];
  virtual  ~S3295C3(); // _ZN7S3295C3D1Ev
  virtual void  v5(); // _ZN7S3295C32v5Ev
  virtual void  v6(); // _ZN7S3295C32v6Ev
  virtual void  v7(); // _ZN7S3295C32v7Ev
  virtual void  v8(); // _ZN7S3295C32v8Ev
  virtual void  v9(); // _ZN7S3295C32v9Ev
  virtual void  v10(); // _ZN7S3295C33v10Ev
  virtual void  v11(); // _ZN7S3295C33v11Ev
  virtual void  v12(); // _ZN7S3295C33v12Ev
  virtual void  v13(); // _ZN7S3295C33v13Ev
  virtual void  v14(); // _ZN7S3295C33v14Ev
  virtual void  v15(); // _ZN7S3295C33v15Ev
  virtual void  v16(); // _ZN7S3295C33v16Ev
  virtual void  v17(); // _ZN7S3295C33v17Ev
  virtual void  v18(); // _ZN7S3295C33v18Ev
  virtual void  v19(); // _ZN7S3295C33v19Ev
  virtual void  v20(); // _ZN7S3295C33v20Ev
  virtual void  v21(); // _ZN7S3295C33v21Ev
  virtual void  v22(); // _ZN7S3295C33v22Ev
  virtual void  v23(); // _ZN7S3295C33v23Ev
  virtual void  v24(); // _ZN7S3295C33v24Ev
  virtual void  v25(); // _ZN7S3295C33v25Ev
  virtual void  v26(); // _ZN7S3295C33v26Ev
  virtual void  v27(); // _ZN7S3295C33v27Ev
  virtual void  v28(); // _ZN7S3295C33v28Ev
  virtual void  v29(); // _ZN7S3295C33v29Ev
  virtual void  v30(); // _ZN7S3295C33v30Ev
  virtual void  v31(); // _ZN7S3295C33v31Ev
  virtual void  v32(); // _ZN7S3295C33v32Ev
  virtual void  v33(); // _ZN7S3295C33v33Ev
  virtual void  v34(); // _ZN7S3295C33v34Ev
  virtual void  v35(); // _ZN7S3295C33v35Ev
  virtual void  v36(); // _ZN7S3295C33v36Ev
  virtual void  v37(); // _ZN7S3295C33v37Ev
  virtual void  v38(); // _ZN7S3295C33v38Ev
  virtual void  v39(); // _ZN7S3295C33v39Ev
  virtual void  v40(); // _ZN7S3295C33v40Ev
  virtual void  v41(); // _ZN7S3295C33v41Ev
  virtual void  v42(); // _ZN7S3295C33v42Ev
  virtual void  v43(); // _ZN7S3295C33v43Ev
  virtual void  v44(); // _ZN7S3295C33v44Ev
  virtual void  v45(); // _ZN7S3295C33v45Ev
  virtual void  v46(); // _ZN7S3295C33v46Ev
  virtual void  v47(); // _ZN7S3295C33v47Ev
  virtual void  v48(); // _ZN7S3295C33v48Ev
  virtual void  v49(); // _ZN7S3295C33v49Ev
  virtual void  v50(); // _ZN7S3295C33v50Ev
  virtual void  v51(); // _ZN7S3295C33v51Ev
  virtual void  v52(); // _ZN7S3295C33v52Ev
  virtual void  v53(); // _ZN7S3295C33v53Ev
  virtual void  v54(); // _ZN7S3295C33v54Ev
  virtual void  v55(); // _ZN7S3295C33v55Ev
  virtual void  v56(); // _ZN7S3295C33v56Ev
  virtual void  v57(); // _ZN7S3295C33v57Ev
  virtual void  v58(); // _ZN7S3295C33v58Ev
  virtual void  v59(); // _ZN7S3295C33v59Ev
  virtual void  v60(); // _ZN7S3295C33v60Ev
  virtual void  v61(); // _ZN7S3295C33v61Ev
  virtual void  v62(); // _ZN7S3295C33v62Ev
  virtual void  v63(); // _ZN7S3295C33v63Ev
  virtual void  v64(); // _ZN7S3295C33v64Ev
  virtual void  v65(); // _ZN7S3295C33v65Ev
  virtual void  v66(); // _ZN7S3295C33v66Ev
  virtual void  v67(); // _ZN7S3295C33v67Ev
  virtual void  v68(); // _ZN7S3295C33v68Ev
  S3295C3(); // tgen
};
//SIG(-1 S3295C3) 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]}


 S3295C3 ::~S3295C3(){ note_dtor("S3295C3", this);}
void  S3295C3 ::v5(){vfunc_called(this, "_ZN7S3295C32v5Ev");}
void  S3295C3 ::v6(){vfunc_called(this, "_ZN7S3295C32v6Ev");}
void  S3295C3 ::v7(){vfunc_called(this, "_ZN7S3295C32v7Ev");}
void  S3295C3 ::v8(){vfunc_called(this, "_ZN7S3295C32v8Ev");}
void  S3295C3 ::v9(){vfunc_called(this, "_ZN7S3295C32v9Ev");}
void  S3295C3 ::v10(){vfunc_called(this, "_ZN7S3295C33v10Ev");}
void  S3295C3 ::v11(){vfunc_called(this, "_ZN7S3295C33v11Ev");}
void  S3295C3 ::v12(){vfunc_called(this, "_ZN7S3295C33v12Ev");}
void  S3295C3 ::v13(){vfunc_called(this, "_ZN7S3295C33v13Ev");}
void  S3295C3 ::v14(){vfunc_called(this, "_ZN7S3295C33v14Ev");}
void  S3295C3 ::v15(){vfunc_called(this, "_ZN7S3295C33v15Ev");}
void  S3295C3 ::v16(){vfunc_called(this, "_ZN7S3295C33v16Ev");}
void  S3295C3 ::v17(){vfunc_called(this, "_ZN7S3295C33v17Ev");}
void  S3295C3 ::v18(){vfunc_called(this, "_ZN7S3295C33v18Ev");}
void  S3295C3 ::v19(){vfunc_called(this, "_ZN7S3295C33v19Ev");}
void  S3295C3 ::v20(){vfunc_called(this, "_ZN7S3295C33v20Ev");}
void  S3295C3 ::v21(){vfunc_called(this, "_ZN7S3295C33v21Ev");}
void  S3295C3 ::v22(){vfunc_called(this, "_ZN7S3295C33v22Ev");}
void  S3295C3 ::v23(){vfunc_called(this, "_ZN7S3295C33v23Ev");}
void  S3295C3 ::v24(){vfunc_called(this, "_ZN7S3295C33v24Ev");}
void  S3295C3 ::v25(){vfunc_called(this, "_ZN7S3295C33v25Ev");}
void  S3295C3 ::v26(){vfunc_called(this, "_ZN7S3295C33v26Ev");}
void  S3295C3 ::v27(){vfunc_called(this, "_ZN7S3295C33v27Ev");}
void  S3295C3 ::v28(){vfunc_called(this, "_ZN7S3295C33v28Ev");}
void  S3295C3 ::v29(){vfunc_called(this, "_ZN7S3295C33v29Ev");}
void  S3295C3 ::v30(){vfunc_called(this, "_ZN7S3295C33v30Ev");}
void  S3295C3 ::v31(){vfunc_called(this, "_ZN7S3295C33v31Ev");}
void  S3295C3 ::v32(){vfunc_called(this, "_ZN7S3295C33v32Ev");}
void  S3295C3 ::v33(){vfunc_called(this, "_ZN7S3295C33v33Ev");}
void  S3295C3 ::v34(){vfunc_called(this, "_ZN7S3295C33v34Ev");}
void  S3295C3 ::v35(){vfunc_called(this, "_ZN7S3295C33v35Ev");}
void  S3295C3 ::v36(){vfunc_called(this, "_ZN7S3295C33v36Ev");}
void  S3295C3 ::v37(){vfunc_called(this, "_ZN7S3295C33v37Ev");}
void  S3295C3 ::v38(){vfunc_called(this, "_ZN7S3295C33v38Ev");}
void  S3295C3 ::v39(){vfunc_called(this, "_ZN7S3295C33v39Ev");}
void  S3295C3 ::v40(){vfunc_called(this, "_ZN7S3295C33v40Ev");}
void  S3295C3 ::v41(){vfunc_called(this, "_ZN7S3295C33v41Ev");}
void  S3295C3 ::v42(){vfunc_called(this, "_ZN7S3295C33v42Ev");}
void  S3295C3 ::v43(){vfunc_called(this, "_ZN7S3295C33v43Ev");}
void  S3295C3 ::v44(){vfunc_called(this, "_ZN7S3295C33v44Ev");}
void  S3295C3 ::v45(){vfunc_called(this, "_ZN7S3295C33v45Ev");}
void  S3295C3 ::v46(){vfunc_called(this, "_ZN7S3295C33v46Ev");}
void  S3295C3 ::v47(){vfunc_called(this, "_ZN7S3295C33v47Ev");}
void  S3295C3 ::v48(){vfunc_called(this, "_ZN7S3295C33v48Ev");}
void  S3295C3 ::v49(){vfunc_called(this, "_ZN7S3295C33v49Ev");}
void  S3295C3 ::v50(){vfunc_called(this, "_ZN7S3295C33v50Ev");}
void  S3295C3 ::v51(){vfunc_called(this, "_ZN7S3295C33v51Ev");}
void  S3295C3 ::v52(){vfunc_called(this, "_ZN7S3295C33v52Ev");}
void  S3295C3 ::v53(){vfunc_called(this, "_ZN7S3295C33v53Ev");}
void  S3295C3 ::v54(){vfunc_called(this, "_ZN7S3295C33v54Ev");}
void  S3295C3 ::v55(){vfunc_called(this, "_ZN7S3295C33v55Ev");}
void  S3295C3 ::v56(){vfunc_called(this, "_ZN7S3295C33v56Ev");}
void  S3295C3 ::v57(){vfunc_called(this, "_ZN7S3295C33v57Ev");}
void  S3295C3 ::v58(){vfunc_called(this, "_ZN7S3295C33v58Ev");}
void  S3295C3 ::v59(){vfunc_called(this, "_ZN7S3295C33v59Ev");}
void  S3295C3 ::v60(){vfunc_called(this, "_ZN7S3295C33v60Ev");}
void  S3295C3 ::v61(){vfunc_called(this, "_ZN7S3295C33v61Ev");}
void  S3295C3 ::v62(){vfunc_called(this, "_ZN7S3295C33v62Ev");}
void  S3295C3 ::v63(){vfunc_called(this, "_ZN7S3295C33v63Ev");}
void  S3295C3 ::v64(){vfunc_called(this, "_ZN7S3295C33v64Ev");}
void  S3295C3 ::v65(){vfunc_called(this, "_ZN7S3295C33v65Ev");}
void  S3295C3 ::v66(){vfunc_called(this, "_ZN7S3295C33v66Ev");}
void  S3295C3 ::v67(){vfunc_called(this, "_ZN7S3295C33v67Ev");}
void  S3295C3 ::v68(){vfunc_called(this, "_ZN7S3295C33v68Ev");}
S3295C3 ::S3295C3(){ note_ctor("S3295C3", this);} // tgen

static void Test_S3295C3()
{
  extern Class_Descriptor cd_S3295C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3295C3, buf);
    S3295C3 *dp, &lv = *(dp=new (buf) S3295C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3295C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3295C3)");
    check_field_offset(lv, s3295c3f0, ABISELECT(8,4), "S3295C3.s3295c3f0");
    check_field_offset(lv, s3295c3f1, ABISELECT(16,8), "S3295C3.s3295c3f1");
    check_field_offset(lv, s3295c3f2, ABISELECT(24,16), "S3295C3.s3295c3f2");
    check_field_offset(lv, s3295c3f3, ABISELECT(56,32), "S3295C3.s3295c3f3");
    check_field_offset(lv, s3295c3f4, ABISELECT(64,40), "S3295C3.s3295c3f4");
    check_field_offset(lv, s3295c3f5, ABISELECT(72,44), "S3295C3.s3295c3f5");
    check_field_offset(lv, s3295c3f6, ABISELECT(80,52), "S3295C3.s3295c3f6");
    test_class_info(&lv, &cd_S3295C3);
    dp->~S3295C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3295C3(Test_S3295C3, "S3295C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3295C3C1Ev();
extern void _ZN7S3295C3D1Ev();
Name_Map name_map_S3295C3[] = {
  NSPAIR(_ZN7S3295C3C1Ev),
  NSPAIR(_ZN7S3295C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3295C3[];
extern void _ZN7S3295C3D1Ev();
extern void _ZN7S3295C3D0Ev();
extern void _ZN7S3295C32v5Ev();
extern void _ZN7S3295C32v6Ev();
extern void _ZN7S3295C32v7Ev();
extern void _ZN7S3295C32v8Ev();
extern void _ZN7S3295C32v9Ev();
extern void _ZN7S3295C33v10Ev();
extern void _ZN7S3295C33v11Ev();
extern void _ZN7S3295C33v12Ev();
extern void _ZN7S3295C33v13Ev();
extern void _ZN7S3295C33v14Ev();
extern void _ZN7S3295C33v15Ev();
extern void _ZN7S3295C33v16Ev();
extern void _ZN7S3295C33v17Ev();
extern void _ZN7S3295C33v18Ev();
extern void _ZN7S3295C33v19Ev();
extern void _ZN7S3295C33v20Ev();
extern void _ZN7S3295C33v21Ev();
extern void _ZN7S3295C33v22Ev();
extern void _ZN7S3295C33v23Ev();
extern void _ZN7S3295C33v24Ev();
extern void _ZN7S3295C33v25Ev();
extern void _ZN7S3295C33v26Ev();
extern void _ZN7S3295C33v27Ev();
extern void _ZN7S3295C33v28Ev();
extern void _ZN7S3295C33v29Ev();
extern void _ZN7S3295C33v30Ev();
extern void _ZN7S3295C33v31Ev();
extern void _ZN7S3295C33v32Ev();
extern void _ZN7S3295C33v33Ev();
extern void _ZN7S3295C33v34Ev();
extern void _ZN7S3295C33v35Ev();
extern void _ZN7S3295C33v36Ev();
extern void _ZN7S3295C33v37Ev();
extern void _ZN7S3295C33v38Ev();
extern void _ZN7S3295C33v39Ev();
extern void _ZN7S3295C33v40Ev();
extern void _ZN7S3295C33v41Ev();
extern void _ZN7S3295C33v42Ev();
extern void _ZN7S3295C33v43Ev();
extern void _ZN7S3295C33v44Ev();
extern void _ZN7S3295C33v45Ev();
extern void _ZN7S3295C33v46Ev();
extern void _ZN7S3295C33v47Ev();
extern void _ZN7S3295C33v48Ev();
extern void _ZN7S3295C33v49Ev();
extern void _ZN7S3295C33v50Ev();
extern void _ZN7S3295C33v51Ev();
extern void _ZN7S3295C33v52Ev();
extern void _ZN7S3295C33v53Ev();
extern void _ZN7S3295C33v54Ev();
extern void _ZN7S3295C33v55Ev();
extern void _ZN7S3295C33v56Ev();
extern void _ZN7S3295C33v57Ev();
extern void _ZN7S3295C33v58Ev();
extern void _ZN7S3295C33v59Ev();
extern void _ZN7S3295C33v60Ev();
extern void _ZN7S3295C33v61Ev();
extern void _ZN7S3295C33v62Ev();
extern void _ZN7S3295C33v63Ev();
extern void _ZN7S3295C33v64Ev();
extern void _ZN7S3295C33v65Ev();
extern void _ZN7S3295C33v66Ev();
extern void _ZN7S3295C33v67Ev();
extern void _ZN7S3295C33v68Ev();
static  VTBL_ENTRY vtc_S3295C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3295C3[0]),
  (VTBL_ENTRY)&_ZN7S3295C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3295C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v68Ev,
};
extern VTBL_ENTRY _ZTI7S3295C3[];
extern  VTBL_ENTRY _ZTV7S3295C3[];
Class_Descriptor cd_S3295C3 = {  "S3295C3", // class name
  0,0,//no base classes
  &(vtc_S3295C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3295C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3295C3),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  S3295C2_nt  : S3295C3 {
  void *s3295c2f0;
  ::S3164C4_nt s3295c2f1;
  int s3295c2f2[5];
  unsigned int s3295c2f3:1;
  unsigned int s3295c2f4:1;
  unsigned int s3295c2f5:1;
  unsigned int s3295c2f6:1;
  unsigned int s3295c2f7:1;
  ::S3164C27 s3295c2f8;
  ::S3164C23 s3295c2f9;
  unsigned int s3295c2f10:1;
  int s3295c2f11[2];
  void *s3295c2f12;
  int s3295c2f13[3];
  virtual  ~S3295C2_nt(); // _ZN10S3295C2_ntD1Ev
  virtual void  v69(); // _ZN10S3295C2_nt3v69Ev
  virtual void  v70(); // _ZN10S3295C2_nt3v70Ev
  virtual void  v71(); // _ZN10S3295C2_nt3v71Ev
  virtual void  v72(); // _ZN10S3295C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3295C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3295C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3295C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3295C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3295C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3295C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3295C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3295C2_nt3v80Ev
  virtual void  v81(); // _ZN10S3295C2_nt3v81Ev
  S3295C2_nt(); // tgen
};
//SIG(-1 S3295C2_nt) C1{ BC2{ vd 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 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 Fp FC3 Fi[5] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC7{ BC8{ BC6}} Fi:1 Fi[2] Fp Fi[3]}


 S3295C2_nt ::~S3295C2_nt(){ note_dtor("S3295C2_nt", this);}
void  S3295C2_nt ::v69(){vfunc_called(this, "_ZN10S3295C2_nt3v69Ev");}
void  S3295C2_nt ::v70(){vfunc_called(this, "_ZN10S3295C2_nt3v70Ev");}
void  S3295C2_nt ::v71(){vfunc_called(this, "_ZN10S3295C2_nt3v71Ev");}
void  S3295C2_nt ::v72(){vfunc_called(this, "_ZN10S3295C2_nt3v72Ev");}
void  S3295C2_nt ::v73(){vfunc_called(this, "_ZN10S3295C2_nt3v73Ev");}
void  S3295C2_nt ::v74(){vfunc_called(this, "_ZN10S3295C2_nt3v74Ev");}
void  S3295C2_nt ::v75(){vfunc_called(this, "_ZN10S3295C2_nt3v75Ev");}
void  S3295C2_nt ::v76(){vfunc_called(this, "_ZN10S3295C2_nt3v76Ev");}
void  S3295C2_nt ::v77(){vfunc_called(this, "_ZN10S3295C2_nt3v77Ev");}
void  S3295C2_nt ::v78(){vfunc_called(this, "_ZN10S3295C2_nt3v78Ev");}
void  S3295C2_nt ::v79(){vfunc_called(this, "_ZN10S3295C2_nt3v79Ev");}
void  S3295C2_nt ::v80(){vfunc_called(this, "_ZN10S3295C2_nt3v80Ev");}
void  S3295C2_nt ::v81(){vfunc_called(this, "_ZN10S3295C2_nt3v81Ev");}
S3295C2_nt ::S3295C2_nt(){ note_ctor("S3295C2_nt", this);} // tgen

//skip512 S3295C2_nt

#else // __cplusplus

extern void _ZN10S3295C2_ntC1Ev();
extern void _ZN10S3295C2_ntD1Ev();
Name_Map name_map_S3295C2_nt[] = {
  NSPAIR(_ZN10S3295C2_ntC1Ev),
  NSPAIR(_ZN10S3295C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3295C3;
extern VTBL_ENTRY _ZTI7S3295C3[];
extern  VTBL_ENTRY _ZTV7S3295C3[];
static Base_Class bases_S3295C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3295C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3295C2_nt[];
extern void _ZN10S3295C2_ntD1Ev();
extern void _ZN10S3295C2_ntD0Ev();
extern void _ZN7S3295C32v5Ev();
extern void _ZN7S3295C32v6Ev();
extern void _ZN7S3295C32v7Ev();
extern void _ZN7S3295C32v8Ev();
extern void _ZN7S3295C32v9Ev();
extern void _ZN7S3295C33v10Ev();
extern void _ZN7S3295C33v11Ev();
extern void _ZN7S3295C33v12Ev();
extern void _ZN7S3295C33v13Ev();
extern void _ZN7S3295C33v14Ev();
extern void _ZN7S3295C33v15Ev();
extern void _ZN7S3295C33v16Ev();
extern void _ZN7S3295C33v17Ev();
extern void _ZN7S3295C33v18Ev();
extern void _ZN7S3295C33v19Ev();
extern void _ZN7S3295C33v20Ev();
extern void _ZN7S3295C33v21Ev();
extern void _ZN7S3295C33v22Ev();
extern void _ZN7S3295C33v23Ev();
extern void _ZN7S3295C33v24Ev();
extern void _ZN7S3295C33v25Ev();
extern void _ZN7S3295C33v26Ev();
extern void _ZN7S3295C33v27Ev();
extern void _ZN7S3295C33v28Ev();
extern void _ZN7S3295C33v29Ev();
extern void _ZN7S3295C33v30Ev();
extern void _ZN7S3295C33v31Ev();
extern void _ZN7S3295C33v32Ev();
extern void _ZN7S3295C33v33Ev();
extern void _ZN7S3295C33v34Ev();
extern void _ZN7S3295C33v35Ev();
extern void _ZN7S3295C33v36Ev();
extern void _ZN7S3295C33v37Ev();
extern void _ZN7S3295C33v38Ev();
extern void _ZN7S3295C33v39Ev();
extern void _ZN7S3295C33v40Ev();
extern void _ZN7S3295C33v41Ev();
extern void _ZN7S3295C33v42Ev();
extern void _ZN7S3295C33v43Ev();
extern void _ZN7S3295C33v44Ev();
extern void _ZN7S3295C33v45Ev();
extern void _ZN7S3295C33v46Ev();
extern void _ZN7S3295C33v47Ev();
extern void _ZN7S3295C33v48Ev();
extern void _ZN7S3295C33v49Ev();
extern void _ZN7S3295C33v50Ev();
extern void _ZN7S3295C33v51Ev();
extern void _ZN7S3295C33v52Ev();
extern void _ZN7S3295C33v53Ev();
extern void _ZN7S3295C33v54Ev();
extern void _ZN7S3295C33v55Ev();
extern void _ZN7S3295C33v56Ev();
extern void _ZN7S3295C33v57Ev();
extern void _ZN7S3295C33v58Ev();
extern void _ZN7S3295C33v59Ev();
extern void _ZN7S3295C33v60Ev();
extern void _ZN7S3295C33v61Ev();
extern void _ZN7S3295C33v62Ev();
extern void _ZN7S3295C33v63Ev();
extern void _ZN7S3295C33v64Ev();
extern void _ZN7S3295C33v65Ev();
extern void _ZN7S3295C33v66Ev();
extern void _ZN7S3295C33v67Ev();
extern void _ZN7S3295C33v68Ev();
extern void _ZN10S3295C2_nt3v69Ev();
extern void _ZN10S3295C2_nt3v70Ev();
extern void _ZN10S3295C2_nt3v71Ev();
extern void _ZN10S3295C2_nt3v72Ev();
extern void _ZN10S3295C2_nt3v73Ev();
extern void _ZN10S3295C2_nt3v74Ev();
extern void _ZN10S3295C2_nt3v75Ev();
extern void _ZN10S3295C2_nt3v76Ev();
extern void _ZN10S3295C2_nt3v77Ev();
extern void _ZN10S3295C2_nt3v78Ev();
extern void _ZN10S3295C2_nt3v79Ev();
extern void _ZN10S3295C2_nt3v80Ev();
extern void _ZN10S3295C2_nt3v81Ev();
static  VTBL_ENTRY vtc_S3295C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3295C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3295C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v68Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v81Ev,
};
extern VTBL_ENTRY _ZTI10S3295C2_nt[];
VTBL_ENTRY *P__ZTI10S3295C2_nt = _ZTI10S3295C2_nt; 
extern  VTBL_ENTRY _ZTV10S3295C2_nt[];
Class_Descriptor cd_S3295C2_nt = {  "S3295C2_nt", // class name
  bases_S3295C2_nt, 1,
  &(vtc_S3295C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI10S3295C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3295C2_nt),81, //virtual function table var
  2, // 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  S3295C1  : S3295C2_nt {
  int s3295c1f0;
  char s3295c1f1[2];
  unsigned int s3295c1f2:1;
  int s3295c1f3[2];
  virtual  ~S3295C1(); // _ZN7S3295C1D1Ev
  virtual void  v1(); // _ZN7S3295C12v1Ev
  virtual void  v2(); // _ZN7S3295C12v2Ev
  virtual void  v3(); // _ZN7S3295C12v3Ev
  virtual void  v4(); // _ZN7S3295C12v4Ev
  S3295C1(); // tgen
};
//SIG(1 S3295C1) 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 v77 v78 v79 v80 v81 Fp FC4 Fi[5] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC8{ BC9{ BC7}} Fi:1 Fi[2] Fp Fi[3]} vd v1 v2 v3 v4 Fi Fc[2] Fi:1 Fi[2]}


 S3295C1 ::~S3295C1(){ note_dtor("S3295C1", this);}
void  S3295C1 ::v1(){vfunc_called(this, "_ZN7S3295C12v1Ev");}
void  S3295C1 ::v2(){vfunc_called(this, "_ZN7S3295C12v2Ev");}
void  S3295C1 ::v3(){vfunc_called(this, "_ZN7S3295C12v3Ev");}
void  S3295C1 ::v4(){vfunc_called(this, "_ZN7S3295C12v4Ev");}
S3295C1 ::S3295C1(){ note_ctor("S3295C1", this);} // tgen

static void Test_S3295C1()
{
  extern Class_Descriptor cd_S3295C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,42)];
    init_test(&cd_S3295C1, buf);
    S3295C1 *dp, &lv = *(dp=new (buf) S3295C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S3295C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3295C1)");
    check_base_class_offset(lv, (S3295C3*)(S3295C2_nt*), 0, "S3295C1");
    check_base_class_offset(lv, (S3295C2_nt*), 0, "S3295C1");
    check_field_offset(lv, s3295c1f0, ABISELECT(204,148), "S3295C1.s3295c1f0");
    check_field_offset(lv, s3295c1f1, ABISELECT(208,152), "S3295C1.s3295c1f1");
    set_bf_and_test(lv, s3295c1f2, ABISELECT(210,154), 0, 1, 1, "S3295C1");
    check_field_offset(lv, s3295c1f3, ABISELECT(212,156), "S3295C1.s3295c1f3");
    test_class_info(&lv, &cd_S3295C1);
    dp->~S3295C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3295C1(Test_S3295C1, "S3295C1", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN7S3295C1C1Ev();
extern void _ZN7S3295C1D1Ev();
Name_Map name_map_S3295C1[] = {
  NSPAIR(_ZN7S3295C1C1Ev),
  NSPAIR(_ZN7S3295C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3295C3;
extern VTBL_ENTRY _ZTI7S3295C3[];
extern  VTBL_ENTRY _ZTV7S3295C3[];
extern Class_Descriptor cd_S3295C2_nt;
extern VTBL_ENTRY _ZTI10S3295C2_nt[];
extern  VTBL_ENTRY _ZTV10S3295C2_nt[];
static Base_Class bases_S3295C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3295C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3295C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3295C1[];
extern void _ZN7S3295C1D1Ev();
extern void _ZN7S3295C1D0Ev();
extern void _ZN7S3295C32v5Ev();
extern void _ZN7S3295C32v6Ev();
extern void _ZN7S3295C32v7Ev();
extern void _ZN7S3295C32v8Ev();
extern void _ZN7S3295C32v9Ev();
extern void _ZN7S3295C33v10Ev();
extern void _ZN7S3295C33v11Ev();
extern void _ZN7S3295C33v12Ev();
extern void _ZN7S3295C33v13Ev();
extern void _ZN7S3295C33v14Ev();
extern void _ZN7S3295C33v15Ev();
extern void _ZN7S3295C33v16Ev();
extern void _ZN7S3295C33v17Ev();
extern void _ZN7S3295C33v18Ev();
extern void _ZN7S3295C33v19Ev();
extern void _ZN7S3295C33v20Ev();
extern void _ZN7S3295C33v21Ev();
extern void _ZN7S3295C33v22Ev();
extern void _ZN7S3295C33v23Ev();
extern void _ZN7S3295C33v24Ev();
extern void _ZN7S3295C33v25Ev();
extern void _ZN7S3295C33v26Ev();
extern void _ZN7S3295C33v27Ev();
extern void _ZN7S3295C33v28Ev();
extern void _ZN7S3295C33v29Ev();
extern void _ZN7S3295C33v30Ev();
extern void _ZN7S3295C33v31Ev();
extern void _ZN7S3295C33v32Ev();
extern void _ZN7S3295C33v33Ev();
extern void _ZN7S3295C33v34Ev();
extern void _ZN7S3295C33v35Ev();
extern void _ZN7S3295C33v36Ev();
extern void _ZN7S3295C33v37Ev();
extern void _ZN7S3295C33v38Ev();
extern void _ZN7S3295C33v39Ev();
extern void _ZN7S3295C33v40Ev();
extern void _ZN7S3295C33v41Ev();
extern void _ZN7S3295C33v42Ev();
extern void _ZN7S3295C33v43Ev();
extern void _ZN7S3295C33v44Ev();
extern void _ZN7S3295C33v45Ev();
extern void _ZN7S3295C33v46Ev();
extern void _ZN7S3295C33v47Ev();
extern void _ZN7S3295C33v48Ev();
extern void _ZN7S3295C33v49Ev();
extern void _ZN7S3295C33v50Ev();
extern void _ZN7S3295C33v51Ev();
extern void _ZN7S3295C33v52Ev();
extern void _ZN7S3295C33v53Ev();
extern void _ZN7S3295C33v54Ev();
extern void _ZN7S3295C33v55Ev();
extern void _ZN7S3295C33v56Ev();
extern void _ZN7S3295C33v57Ev();
extern void _ZN7S3295C33v58Ev();
extern void _ZN7S3295C33v59Ev();
extern void _ZN7S3295C33v60Ev();
extern void _ZN7S3295C33v61Ev();
extern void _ZN7S3295C33v62Ev();
extern void _ZN7S3295C33v63Ev();
extern void _ZN7S3295C33v64Ev();
extern void _ZN7S3295C33v65Ev();
extern void _ZN7S3295C33v66Ev();
extern void _ZN7S3295C33v67Ev();
extern void _ZN7S3295C33v68Ev();
extern void _ZN10S3295C2_nt3v69Ev();
extern void _ZN10S3295C2_nt3v70Ev();
extern void _ZN10S3295C2_nt3v71Ev();
extern void _ZN10S3295C2_nt3v72Ev();
extern void _ZN10S3295C2_nt3v73Ev();
extern void _ZN10S3295C2_nt3v74Ev();
extern void _ZN10S3295C2_nt3v75Ev();
extern void _ZN10S3295C2_nt3v76Ev();
extern void _ZN10S3295C2_nt3v77Ev();
extern void _ZN10S3295C2_nt3v78Ev();
extern void _ZN10S3295C2_nt3v79Ev();
extern void _ZN10S3295C2_nt3v80Ev();
extern void _ZN10S3295C2_nt3v81Ev();
extern void _ZN7S3295C12v1Ev();
extern void _ZN7S3295C12v2Ev();
extern void _ZN7S3295C12v3Ev();
extern void _ZN7S3295C12v4Ev();
static  VTBL_ENTRY vtc_S3295C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3295C1[0]),
  (VTBL_ENTRY)&_ZN7S3295C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3295C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3295C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3295C33v68Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3295C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN7S3295C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3295C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3295C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3295C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S3295C1[];
extern  VTBL_ENTRY _ZTV7S3295C1[];
Class_Descriptor cd_S3295C1 = {  "S3295C1", // class name
  bases_S3295C1, 2,
  &(vtc_S3295C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI7S3295C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3295C1),85, //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  S19553C6  {
  void *s19553c6f0[4];
  virtual void  v66(); // _ZN8S19553C63v66Ev
  virtual void  v67(); // _ZN8S19553C63v67Ev
  virtual void  v68(); // _ZN8S19553C63v68Ev
  virtual void  v69(); // _ZN8S19553C63v69Ev
  virtual void  v70(); // _ZN8S19553C63v70Ev
  ~S19553C6(); // tgen
  S19553C6(); // tgen
};
//SIG(-1 S19553C6) C1{ v1 v2 v3 v4 v5 Fp[4]}


void  S19553C6 ::v66(){vfunc_called(this, "_ZN8S19553C63v66Ev");}
void  S19553C6 ::v67(){vfunc_called(this, "_ZN8S19553C63v67Ev");}
void  S19553C6 ::v68(){vfunc_called(this, "_ZN8S19553C63v68Ev");}
void  S19553C6 ::v69(){vfunc_called(this, "_ZN8S19553C63v69Ev");}
void  S19553C6 ::v70(){vfunc_called(this, "_ZN8S19553C63v70Ev");}
S19553C6 ::~S19553C6(){ note_dtor("S19553C6", this);} // tgen
S19553C6 ::S19553C6(){ note_ctor("S19553C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19553C6C1Ev();
extern void _ZN8S19553C6D1Ev();
Name_Map name_map_S19553C6[] = {
  NSPAIR(_ZN8S19553C6C1Ev),
  NSPAIR(_ZN8S19553C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19553C6[];
extern void _ZN8S19553C63v66Ev();
extern void _ZN8S19553C63v67Ev();
extern void _ZN8S19553C63v68Ev();
extern void _ZN8S19553C63v69Ev();
extern void _ZN8S19553C63v70Ev();
static  VTBL_ENTRY vtc_S19553C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C6[0]),
  (VTBL_ENTRY)&_ZN8S19553C63v66Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v67Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v68Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v69Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v70Ev,
};
extern VTBL_ENTRY _ZTI8S19553C6[];
extern  VTBL_ENTRY _ZTV8S19553C6[];
Class_Descriptor cd_S19553C6 = {  "S19553C6", // class name
  0,0,//no base classes
  &(vtc_S19553C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S19553C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19553C6),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  S19553C8  {
  long double s19553c8f0;
  void *s19553c8f1[5];
  virtual void  v52(); // _ZN8S19553C83v52Ev
  virtual void  v53(); // _ZN8S19553C83v53Ev
  virtual void  v54(); // _ZN8S19553C83v54Ev
  virtual void  v55(); // _ZN8S19553C83v55Ev
  virtual void  v56(); // _ZN8S19553C83v56Ev
  virtual void  v57(); // _ZN8S19553C83v57Ev
  virtual void  v58(); // _ZN8S19553C83v58Ev
  ~S19553C8(); // tgen
  S19553C8(); // tgen
};
//SIG(-1 S19553C8) C1{ v1 v2 v3 v4 v5 v6 v7 FD Fp[5]}


void  S19553C8 ::v52(){vfunc_called(this, "_ZN8S19553C83v52Ev");}
void  S19553C8 ::v53(){vfunc_called(this, "_ZN8S19553C83v53Ev");}
void  S19553C8 ::v54(){vfunc_called(this, "_ZN8S19553C83v54Ev");}
void  S19553C8 ::v55(){vfunc_called(this, "_ZN8S19553C83v55Ev");}
void  S19553C8 ::v56(){vfunc_called(this, "_ZN8S19553C83v56Ev");}
void  S19553C8 ::v57(){vfunc_called(this, "_ZN8S19553C83v57Ev");}
void  S19553C8 ::v58(){vfunc_called(this, "_ZN8S19553C83v58Ev");}
S19553C8 ::~S19553C8(){ note_dtor("S19553C8", this);} // tgen
S19553C8 ::S19553C8(){ note_ctor("S19553C8", this);} // tgen

static void Test_S19553C8()
{
  extern Class_Descriptor cd_S19553C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S19553C8, buf);
    S19553C8 *dp, &lv = *(dp=new (buf) S19553C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S19553C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C8)");
    check_field_offset(lv, s19553c8f0, ABISELECT(16,4), "S19553C8.s19553c8f0");
    check_field_offset(lv, s19553c8f1, ABISELECT(32,16), "S19553C8.s19553c8f1");
    test_class_info(&lv, &cd_S19553C8);
    dp->~S19553C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C8(Test_S19553C8, "S19553C8", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S19553C8C1Ev();
extern void _ZN8S19553C8D1Ev();
Name_Map name_map_S19553C8[] = {
  NSPAIR(_ZN8S19553C8C1Ev),
  NSPAIR(_ZN8S19553C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19553C8[];
extern void _ZN8S19553C83v52Ev();
extern void _ZN8S19553C83v53Ev();
extern void _ZN8S19553C83v54Ev();
extern void _ZN8S19553C83v55Ev();
extern void _ZN8S19553C83v56Ev();
extern void _ZN8S19553C83v57Ev();
extern void _ZN8S19553C83v58Ev();
static  VTBL_ENTRY vtc_S19553C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C8[0]),
  (VTBL_ENTRY)&_ZN8S19553C83v52Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v53Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v54Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v55Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v56Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v57Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v58Ev,
};
extern VTBL_ENTRY _ZTI8S19553C8[];
extern  VTBL_ENTRY _ZTV8S19553C8[];
Class_Descriptor cd_S19553C8 = {  "S19553C8", // class name
  0,0,//no base classes
  &(vtc_S19553C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S19553C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19553C8),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  S19553C7  {
  ::S19553C8 s19553c7f0;
  void  mf19553c7(); // _ZN8S19553C79mf19553c7Ev
};
//SIG(-1 S19553C7) C1{ m FC2{ v1 v2 v3 v4 v5 v6 v7 FD Fp[5]}}


void  S19553C7 ::mf19553c7(){}

static void Test_S19553C7()
{
  {
    init_simple_test("S19553C7");
    S19553C7 lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S19553C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C7)");
    check_field_offset(lv, s19553c7f0, 0, "S19553C7.s19553c7f0");
  }
}
static Arrange_To_Call_Me vS19553C7(Test_S19553C7, "S19553C7", ABISELECT(80,36));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19553C7[];
VTBL_ENTRY *P__ZTI8S19553C7 = _ZTI8S19553C7; 
Class_Descriptor cd_S19553C7 = {  "S19553C7", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S19553C7),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  S19553C5  : virtual S19553C6 {
  ::S19553C7 s19553c5f0;
  virtual void  v71(); // _ZN8S19553C53v71Ev
  virtual void  v72(); // _ZN8S19553C53v72Ev
  virtual void  v73(); // _ZN8S19553C53v73Ev
  virtual void  v74(); // _ZN8S19553C53v74Ev
  ~S19553C5(); // tgen
  S19553C5(); // tgen
};
//SIG(-1 S19553C5) C1{ VBC2{ v5 v6 v7 v8 v9 Fp[4]} v1 v2 v3 v4 FC3{ m FC4{ v10 v11 v12 v13 v14 v15 v16 FD Fp[5]}}}


void  S19553C5 ::v71(){vfunc_called(this, "_ZN8S19553C53v71Ev");}
void  S19553C5 ::v72(){vfunc_called(this, "_ZN8S19553C53v72Ev");}
void  S19553C5 ::v73(){vfunc_called(this, "_ZN8S19553C53v73Ev");}
void  S19553C5 ::v74(){vfunc_called(this, "_ZN8S19553C53v74Ev");}
S19553C5 ::~S19553C5(){ note_dtor("S19553C5", this);} // tgen
S19553C5 ::S19553C5(){ note_ctor("S19553C5", this);} // tgen

static void Test_S19553C5()
{
  extern Class_Descriptor cd_S19553C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,16)];
    init_test(&cd_S19553C5, buf);
    S19553C5 *dp, &lv = *(dp=new (buf) S19553C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,60), "sizeof(S19553C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C5)");
    check_base_class_offset(lv, (S19553C6*), ABISELECT(96,40), "S19553C5");
    check_field_offset(lv, s19553c5f0, ABISELECT(16,4), "S19553C5.s19553c5f0");
    test_class_info(&lv, &cd_S19553C5);
    dp->~S19553C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C5(Test_S19553C5, "S19553C5", ABISELECT(144,60));

#else // __cplusplus

extern void _ZN8S19553C5C1Ev();
extern void _ZN8S19553C5D1Ev();
Name_Map name_map_S19553C5[] = {
  NSPAIR(_ZN8S19553C5C1Ev),
  NSPAIR(_ZN8S19553C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19553C6;
extern VTBL_ENTRY _ZTI8S19553C6[];
extern  VTBL_ENTRY _ZTV8S19553C6[];
static Base_Class bases_S19553C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19553C6,    ABISELECT(96,40), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19553C5[];
extern void _ZN8S19553C53v71Ev();
extern void _ZN8S19553C53v72Ev();
extern void _ZN8S19553C53v73Ev();
extern void _ZN8S19553C53v74Ev();
extern void _ZN8S19553C63v66Ev();
extern void _ZN8S19553C63v67Ev();
extern void _ZN8S19553C63v68Ev();
extern void _ZN8S19553C63v69Ev();
extern void _ZN8S19553C63v70Ev();
static  VTBL_ENTRY vtc_S19553C5[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C5[0]),
  (VTBL_ENTRY)&_ZN8S19553C53v71Ev,
  (VTBL_ENTRY)&_ZN8S19553C53v72Ev,
  (VTBL_ENTRY)&_ZN8S19553C53v73Ev,
  (VTBL_ENTRY)&_ZN8S19553C53v74Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S19553C5[0]),
  (VTBL_ENTRY)&_ZN8S19553C63v66Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v67Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v68Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v69Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v70Ev,
};
extern VTBL_ENTRY _ZTV8S19553C5[];
static  VTT_ENTRY vtt_S19553C5[] = {
  {&(_ZTV8S19553C5[3]),  3,19},
  {&(_ZTV8S19553C5[14]),  14,19},
};
extern VTBL_ENTRY _ZTI8S19553C5[];
extern  VTBL_ENTRY _ZTV8S19553C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19553C5[];
Class_Descriptor cd_S19553C5 = {  "S19553C5", // class name
  bases_S19553C5, 1,
  &(vtc_S19553C5[0]), // expected_vtbl_contents
  &(vtt_S19553C5[0]), // expected_vtt_contents
  ABISELECT(144,60), // object size
  NSPAIRA(_ZTI8S19553C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19553C5),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19553C5),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  S19553C4  {
  long s19553c4f0[6];
  ::S19553C5 s19553c4f1;
  virtual  ~S19553C4(); // _ZN8S19553C4D1Ev
  virtual void  v8(); // _ZN8S19553C42v8Ev
  virtual void  v9(); // _ZN8S19553C42v9Ev
  virtual void  v10(); // _ZN8S19553C43v10Ev
  virtual void  v11(); // _ZN8S19553C43v11Ev
  S19553C4(); // tgen
};
//SIG(-1 S19553C4) C1{ vd v1 v2 v3 v4 Fl[6] FC2{ VBC3{ v9 v10 v11 v12 v13 Fp[4]} v5 v6 v7 v8 FC4{ m FC5{ v14 v15 v16 v17 v18 v19 v20 FD Fp[5]}}}}


 S19553C4 ::~S19553C4(){ note_dtor("S19553C4", this);}
void  S19553C4 ::v8(){vfunc_called(this, "_ZN8S19553C42v8Ev");}
void  S19553C4 ::v9(){vfunc_called(this, "_ZN8S19553C42v9Ev");}
void  S19553C4 ::v10(){vfunc_called(this, "_ZN8S19553C43v10Ev");}
void  S19553C4 ::v11(){vfunc_called(this, "_ZN8S19553C43v11Ev");}
S19553C4 ::S19553C4(){ note_ctor("S19553C4", this);} // tgen

static void Test_S19553C4()
{
  extern Class_Descriptor cd_S19553C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,23)];
    init_test(&cd_S19553C4, buf);
    S19553C4 *dp, &lv = *(dp=new (buf) S19553C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,88), "sizeof(S19553C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C4)");
    check_field_offset(lv, s19553c4f0, ABISELECT(8,4), "S19553C4.s19553c4f0");
    check_field_offset(lv, s19553c4f1, ABISELECT(64,28), "S19553C4.s19553c4f1");
    test_class_info(&lv, &cd_S19553C4);
    dp->~S19553C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C4(Test_S19553C4, "S19553C4", ABISELECT(208,88));

#else // __cplusplus

extern void _ZN8S19553C4C1Ev();
extern void _ZN8S19553C4D1Ev();
Name_Map name_map_S19553C4[] = {
  NSPAIR(_ZN8S19553C4C1Ev),
  NSPAIR(_ZN8S19553C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19553C4[];
extern void _ZN8S19553C4D1Ev();
extern void _ZN8S19553C4D0Ev();
extern void _ZN8S19553C42v8Ev();
extern void _ZN8S19553C42v9Ev();
extern void _ZN8S19553C43v10Ev();
extern void _ZN8S19553C43v11Ev();
static  VTBL_ENTRY vtc_S19553C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C4[0]),
  (VTBL_ENTRY)&_ZN8S19553C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19553C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19553C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19553C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v11Ev,
};
extern VTBL_ENTRY _ZTI8S19553C4[];
extern  VTBL_ENTRY _ZTV8S19553C4[];
Class_Descriptor cd_S19553C4 = {  "S19553C4", // class name
  0,0,//no base classes
  &(vtc_S19553C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,88), // object size
  NSPAIRA(_ZTI8S19553C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19553C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S19553C10_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19553C12  : S19553C7 , virtual S19553C8 {
  __tsi64 s19553c12f0;
  void *s19553c12f1;
  virtual void  v59(); // _ZN9S19553C123v59Ev
  virtual void  v60(); // _ZN9S19553C123v60Ev
  virtual void  v61(); // _ZN9S19553C123v61Ev
  virtual void  v62(); // _ZN9S19553C123v62Ev
  virtual void  v63(); // _ZN9S19553C123v63Ev
  virtual void  v64(); // _ZN9S19553C123v64Ev
  virtual void  v65(); // _ZN9S19553C123v65Ev
  ~S19553C12(); // tgen
  S19553C12(); // tgen
};
//SIG(-1 S19553C12) C1{ BC2{ m FC3{ v8 v9 v10 v11 v12 v13 v14 FD Fp[5]}} VBC3 v1 v2 v3 v4 v5 v6 v7 FL Fp}


void  S19553C12 ::v59(){vfunc_called(this, "_ZN9S19553C123v59Ev");}
void  S19553C12 ::v60(){vfunc_called(this, "_ZN9S19553C123v60Ev");}
void  S19553C12 ::v61(){vfunc_called(this, "_ZN9S19553C123v61Ev");}
void  S19553C12 ::v62(){vfunc_called(this, "_ZN9S19553C123v62Ev");}
void  S19553C12 ::v63(){vfunc_called(this, "_ZN9S19553C123v63Ev");}
void  S19553C12 ::v64(){vfunc_called(this, "_ZN9S19553C123v64Ev");}
void  S19553C12 ::v65(){vfunc_called(this, "_ZN9S19553C123v65Ev");}
S19553C12 ::~S19553C12(){ note_dtor("S19553C12", this);} // tgen
S19553C12 ::S19553C12(){ note_ctor("S19553C12", this);} // tgen

static void Test_S19553C12()
{
  extern Class_Descriptor cd_S19553C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,23)];
    init_test(&cd_S19553C12, buf);
    S19553C12 *dp, &lv = *(dp=new (buf) S19553C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,88), "sizeof(S19553C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C12)");
    check_base_class_offset(lv, (S19553C7*), ABISELECT(16,4), "S19553C12");
    check_base_class_offset(lv, (S19553C8*), ABISELECT(112,52), "S19553C12");
    check_field_offset(lv, s19553c12f0, ABISELECT(96,40), "S19553C12.s19553c12f0");
    check_field_offset(lv, s19553c12f1, ABISELECT(104,48), "S19553C12.s19553c12f1");
    test_class_info(&lv, &cd_S19553C12);
    dp->~S19553C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C12(Test_S19553C12, "S19553C12", ABISELECT(192,88));

#else // __cplusplus

extern void _ZN9S19553C12C1Ev();
extern void _ZN9S19553C12D1Ev();
Name_Map name_map_S19553C12[] = {
  NSPAIR(_ZN9S19553C12C1Ev),
  NSPAIR(_ZN9S19553C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19553C7;
extern VTBL_ENTRY _ZTI8S19553C7[];
extern Class_Descriptor cd_S19553C8;
extern VTBL_ENTRY _ZTI8S19553C8[];
extern  VTBL_ENTRY _ZTV8S19553C8[];
static Base_Class bases_S19553C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19553C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19553C8,    ABISELECT(112,52), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19553C12[];
extern void _ZN9S19553C123v59Ev();
extern void _ZN9S19553C123v60Ev();
extern void _ZN9S19553C123v61Ev();
extern void _ZN9S19553C123v62Ev();
extern void _ZN9S19553C123v63Ev();
extern void _ZN9S19553C123v64Ev();
extern void _ZN9S19553C123v65Ev();
extern void _ZN8S19553C83v52Ev();
extern void _ZN8S19553C83v53Ev();
extern void _ZN8S19553C83v54Ev();
extern void _ZN8S19553C83v55Ev();
extern void _ZN8S19553C83v56Ev();
extern void _ZN8S19553C83v57Ev();
extern void _ZN8S19553C83v58Ev();
static  VTBL_ENTRY vtc_S19553C12[] = {
  ABISELECT(112,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19553C12[0]),
  (VTBL_ENTRY)&_ZN9S19553C123v59Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v60Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v61Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v62Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v63Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v64Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v65Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI9S19553C12[0]),
  (VTBL_ENTRY)&_ZN8S19553C83v52Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v53Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v54Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v55Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v56Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v57Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v58Ev,
};
extern VTBL_ENTRY _ZTV9S19553C12[];
static  VTT_ENTRY vtt_S19553C12[] = {
  {&(_ZTV9S19553C12[3]),  3,26},
  {&(_ZTV9S19553C12[19]),  19,26},
};
extern VTBL_ENTRY _ZTI9S19553C12[];
extern  VTBL_ENTRY _ZTV9S19553C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19553C12[];
Class_Descriptor cd_S19553C12 = {  "S19553C12", // class name
  bases_S19553C12, 2,
  &(vtc_S19553C12[0]), // expected_vtbl_contents
  &(vtt_S19553C12[0]), // expected_vtt_contents
  ABISELECT(192,88), // object size
  NSPAIRA(_ZTI9S19553C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19553C12),26, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19553C12),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  S19553C11  : virtual S19553C12 , virtual S19553C5 {
  int s19553c11f0[2];
  long double s19553c11f1[8];
  virtual void  v45(); // _ZN9S19553C113v45Ev
  virtual void  v46(); // _ZN9S19553C113v46Ev
  virtual void  v47(); // _ZN9S19553C113v47Ev
  virtual void  v48(); // _ZN9S19553C113v48Ev
  virtual void  v49(); // _ZN9S19553C113v49Ev
  virtual void  v50(); // _ZN9S19553C113v50Ev
  virtual void  v51(); // _ZN9S19553C113v51Ev
  ~S19553C11(); // tgen
  S19553C11(); // tgen
};
//SIG(-1 S19553C11) C1{ VBC2{ BC3{ m FC4{ v8 v9 v10 v11 v12 v13 v14 FD Fp[5]}} VBC4 v15 v16 v17 v18 v19 v20 v21 FL Fp} VBC5{ VBC6{ v22 v23 v24 v25 v26 Fp[4]} v27 v28 v29 v30 FC3} v1 v2 v3 v4 v5 v6 v7 Fi[2] FD[8]}


void  S19553C11 ::v45(){vfunc_called(this, "_ZN9S19553C113v45Ev");}
void  S19553C11 ::v46(){vfunc_called(this, "_ZN9S19553C113v46Ev");}
void  S19553C11 ::v47(){vfunc_called(this, "_ZN9S19553C113v47Ev");}
void  S19553C11 ::v48(){vfunc_called(this, "_ZN9S19553C113v48Ev");}
void  S19553C11 ::v49(){vfunc_called(this, "_ZN9S19553C113v49Ev");}
void  S19553C11 ::v50(){vfunc_called(this, "_ZN9S19553C113v50Ev");}
void  S19553C11 ::v51(){vfunc_called(this, "_ZN9S19553C113v51Ev");}
S19553C11 ::~S19553C11(){ note_dtor("S19553C11", this);} // tgen
S19553C11 ::S19553C11(){ note_ctor("S19553C11", this);} // tgen

static void Test_S19553C11()
{
  extern Class_Descriptor cd_S19553C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,65)];
    init_test(&cd_S19553C11, buf);
    S19553C11 *dp, &lv = *(dp=new (buf) S19553C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,256), "sizeof(S19553C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C11)");
    check_base_class_offset(lv, (S19553C7*)(S19553C12*), ABISELECT(160,112), "S19553C11");
    check_base_class_offset(lv, (S19553C8*)(S19553C12*), ABISELECT(256,160), "S19553C11");
    check_base_class_offset(lv, (S19553C12*), ABISELECT(144,108), "S19553C11");
    check_base_class_offset(lv, (S19553C6*)(S19553C5*), ABISELECT(432,236), "S19553C11");
    check_base_class_offset(lv, (S19553C5*), ABISELECT(336,196), "S19553C11");
    check_field_offset(lv, s19553c11f0, ABISELECT(8,4), "S19553C11.s19553c11f0");
    check_field_offset(lv, s19553c11f1, ABISELECT(16,12), "S19553C11.s19553c11f1");
    test_class_info(&lv, &cd_S19553C11);
    dp->~S19553C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C11(Test_S19553C11, "S19553C11", ABISELECT(480,256));

#else // __cplusplus

extern void _ZN9S19553C11C1Ev();
extern void _ZN9S19553C11D1Ev();
Name_Map name_map_S19553C11[] = {
  NSPAIR(_ZN9S19553C11C1Ev),
  NSPAIR(_ZN9S19553C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19553C7;
extern VTBL_ENTRY _ZTI8S19553C7[];
extern Class_Descriptor cd_S19553C8;
extern VTBL_ENTRY _ZTI8S19553C8[];
extern  VTBL_ENTRY _ZTV8S19553C8[];
extern Class_Descriptor cd_S19553C12;
extern VTBL_ENTRY _ZTI9S19553C12[];
extern  VTBL_ENTRY _ZTV9S19553C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19553C12[];
extern Class_Descriptor cd_S19553C6;
extern VTBL_ENTRY _ZTI8S19553C6[];
extern  VTBL_ENTRY _ZTV8S19553C6[];
extern Class_Descriptor cd_S19553C5;
extern VTBL_ENTRY _ZTI8S19553C5[];
extern  VTBL_ENTRY _ZTV8S19553C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19553C5[];
static Base_Class bases_S19553C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19553C7,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19553C8,    ABISELECT(256,160), //bcp->offset
    30, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19553C12,    ABISELECT(144,108), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19553C6,    ABISELECT(432,236), //bcp->offset
    57, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19553C5,    ABISELECT(336,196), //bcp->offset
    46, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19553C11[];
extern void _ZN9S19553C113v45Ev();
extern void _ZN9S19553C113v46Ev();
extern void _ZN9S19553C113v47Ev();
extern void _ZN9S19553C113v48Ev();
extern void _ZN9S19553C113v49Ev();
extern void _ZN9S19553C113v50Ev();
extern void _ZN9S19553C113v51Ev();
extern void _ZN9S19553C123v59Ev();
extern void _ZN9S19553C123v60Ev();
extern void _ZN9S19553C123v61Ev();
extern void _ZN9S19553C123v62Ev();
extern void _ZN9S19553C123v63Ev();
extern void _ZN9S19553C123v64Ev();
extern void _ZN9S19553C123v65Ev();
extern void _ZN8S19553C83v52Ev();
extern void _ZN8S19553C83v53Ev();
extern void _ZN8S19553C83v54Ev();
extern void _ZN8S19553C83v55Ev();
extern void _ZN8S19553C83v56Ev();
extern void _ZN8S19553C83v57Ev();
extern void _ZN8S19553C83v58Ev();
extern void _ZN8S19553C53v71Ev();
extern void _ZN8S19553C53v72Ev();
extern void _ZN8S19553C53v73Ev();
extern void _ZN8S19553C53v74Ev();
extern void _ZN8S19553C63v66Ev();
extern void _ZN8S19553C63v67Ev();
extern void _ZN8S19553C63v68Ev();
extern void _ZN8S19553C63v69Ev();
extern void _ZN8S19553C63v70Ev();
static  VTBL_ENTRY vtc_S19553C11[] = {
  ABISELECT(432,236),
  ABISELECT(336,196),
  ABISELECT(256,160),
  ABISELECT(144,108),
  0,
  (VTBL_ENTRY)&(_ZTI9S19553C11[0]),
  (VTBL_ENTRY)&_ZN9S19553C113v45Ev,
  (VTBL_ENTRY)&_ZN9S19553C113v46Ev,
  (VTBL_ENTRY)&_ZN9S19553C113v47Ev,
  (VTBL_ENTRY)&_ZN9S19553C113v48Ev,
  (VTBL_ENTRY)&_ZN9S19553C113v49Ev,
  (VTBL_ENTRY)&_ZN9S19553C113v50Ev,
  (VTBL_ENTRY)&_ZN9S19553C113v51Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,52),
  ABISELECT(-144,-108),
  (VTBL_ENTRY)&(_ZTI9S19553C11[0]),
  (VTBL_ENTRY)&_ZN9S19553C123v59Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v60Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v61Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v62Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v63Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v64Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v65Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI9S19553C11[0]),
  (VTBL_ENTRY)&_ZN8S19553C83v52Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v53Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v54Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v55Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v56Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v57Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v58Ev,
  0,
  0,
  0,
  0,
  ABISELECT(96,40),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI9S19553C11[0]),
  (VTBL_ENTRY)&_ZN8S19553C53v71Ev,
  (VTBL_ENTRY)&_ZN8S19553C53v72Ev,
  (VTBL_ENTRY)&_ZN8S19553C53v73Ev,
  (VTBL_ENTRY)&_ZN8S19553C53v74Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-236),
  (VTBL_ENTRY)&(_ZTI9S19553C11[0]),
  (VTBL_ENTRY)&_ZN8S19553C63v66Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v67Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v68Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v69Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v70Ev,
};
extern VTBL_ENTRY _ZTV9S19553C11[];
extern void _ZN9S19553C123v59Ev();
extern void _ZN9S19553C123v60Ev();
extern void _ZN9S19553C123v61Ev();
extern void _ZN9S19553C123v62Ev();
extern void _ZN9S19553C123v63Ev();
extern void _ZN9S19553C123v64Ev();
extern void _ZN9S19553C123v65Ev();
static  VTBL_ENTRY _tg__ZTV9S19553C12__9S19553C11[] = {
  ABISELECT(112,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19553C12[0]),
  (VTBL_ENTRY)&_ZN9S19553C123v59Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v60Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v61Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v62Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v63Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v64Ev,
  (VTBL_ENTRY)&_ZN9S19553C123v65Ev,
};
extern void _ZN8S19553C83v52Ev();
extern void _ZN8S19553C83v53Ev();
extern void _ZN8S19553C83v54Ev();
extern void _ZN8S19553C83v55Ev();
extern void _ZN8S19553C83v56Ev();
extern void _ZN8S19553C83v57Ev();
extern void _ZN8S19553C83v58Ev();
static  VTBL_ENTRY _tg__ZTV8S19553C8__9S19553C12__9S19553C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI9S19553C12[0]),
  (VTBL_ENTRY)&_ZN8S19553C83v52Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v53Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v54Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v55Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v56Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v57Ev,
  (VTBL_ENTRY)&_ZN8S19553C83v58Ev,
};
extern void _ZN8S19553C53v71Ev();
extern void _ZN8S19553C53v72Ev();
extern void _ZN8S19553C53v73Ev();
extern void _ZN8S19553C53v74Ev();
static  VTBL_ENTRY _tg__ZTV8S19553C5__9S19553C11[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C5[0]),
  (VTBL_ENTRY)&_ZN8S19553C53v71Ev,
  (VTBL_ENTRY)&_ZN8S19553C53v72Ev,
  (VTBL_ENTRY)&_ZN8S19553C53v73Ev,
  (VTBL_ENTRY)&_ZN8S19553C53v74Ev,
};
extern void _ZN8S19553C63v66Ev();
extern void _ZN8S19553C63v67Ev();
extern void _ZN8S19553C63v68Ev();
extern void _ZN8S19553C63v69Ev();
extern void _ZN8S19553C63v70Ev();
static  VTBL_ENTRY _tg__ZTV8S19553C6__8S19553C5__9S19553C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S19553C5[0]),
  (VTBL_ENTRY)&_ZN8S19553C63v66Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v67Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v68Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v69Ev,
  (VTBL_ENTRY)&_ZN8S19553C63v70Ev,
};
static  VTT_ENTRY vtt_S19553C11[] = {
  {&(_ZTV9S19553C11[6]),  6,69},
  {&(_ZTV9S19553C11[23]),  23,69},
  {&(_ZTV9S19553C11[39]),  39,69},
  {&(_ZTV9S19553C11[53]),  53,69},
  {&(_ZTV9S19553C11[64]),  64,69},
  {&(_tg__ZTV9S19553C12__9S19553C11[3]),  3,10},
  {&(_tg__ZTV8S19553C8__9S19553C12__9S19553C11[9]),  9,16},
  {&(_tg__ZTV8S19553C5__9S19553C11[3]),  3,7},
  {&(_tg__ZTV8S19553C6__8S19553C5__9S19553C11[7]),  7,12},
};
extern VTBL_ENTRY _ZTI9S19553C11[];
extern  VTBL_ENTRY _ZTV9S19553C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19553C11[];
Class_Descriptor cd_S19553C11 = {  "S19553C11", // class name
  bases_S19553C11, 5,
  &(vtc_S19553C11[0]), // expected_vtbl_contents
  &(vtt_S19553C11[0]), // expected_vtt_contents
  ABISELECT(480,256), // object size
  NSPAIRA(_ZTI9S19553C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19553C11),69, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19553C11),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19553C9  {
  void *s19553c9f0;
  int s19553c9f1;
  ::S19553C10_nt s19553c9f2;
  ::S19553C11 s19553c9f3;
  virtual  ~S19553C9(); // _ZN8S19553C9D1Ev
  virtual void  v12(); // _ZN8S19553C93v12Ev
  virtual void  v13(); // _ZN8S19553C93v13Ev
  virtual void  v14(); // _ZN8S19553C93v14Ev
  virtual void  v15(); // _ZN8S19553C93v15Ev
  virtual void  v16(); // _ZN8S19553C93v16Ev
  S19553C9(); // tgen
};
//SIG(-1 S19553C9) C1{ vd v1 v2 v3 v4 v5 Fp Fi FC2{} FC3{ VBC4{ BC5{ m FC6{ v13 v14 v15 v16 v17 v18 v19 FD Fp[5]}} VBC6 v20 v21 v22 v23 v24 v25 v26 FL Fp} VBC7{ VBC8{ v27 v28 v29 v30 v31 Fp[4]} v32 v33 v34 v35 FC5} v6 v7 v8 v9 v10 v11 v12 Fi[2] FD[8]}}


 S19553C9 ::~S19553C9(){ note_dtor("S19553C9", this);}
void  S19553C9 ::v12(){vfunc_called(this, "_ZN8S19553C93v12Ev");}
void  S19553C9 ::v13(){vfunc_called(this, "_ZN8S19553C93v13Ev");}
void  S19553C9 ::v14(){vfunc_called(this, "_ZN8S19553C93v14Ev");}
void  S19553C9 ::v15(){vfunc_called(this, "_ZN8S19553C93v15Ev");}
void  S19553C9 ::v16(){vfunc_called(this, "_ZN8S19553C93v16Ev");}
S19553C9 ::S19553C9(){ note_ctor("S19553C9", this);} // tgen

static void Test_S19553C9()
{
  extern Class_Descriptor cd_S19553C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,69)];
    init_test(&cd_S19553C9, buf);
    S19553C9 *dp, &lv = *(dp=new (buf) S19553C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,272), "sizeof(S19553C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C9)");
    check_field_offset(lv, s19553c9f0, ABISELECT(8,4), "S19553C9.s19553c9f0");
    check_field_offset(lv, s19553c9f1, ABISELECT(16,8), "S19553C9.s19553c9f1");
    check_field_offset(lv, s19553c9f2, ABISELECT(20,12), "S19553C9.s19553c9f2");
    check_field_offset(lv, s19553c9f3, ABISELECT(32,16), "S19553C9.s19553c9f3");
    test_class_info(&lv, &cd_S19553C9);
    dp->~S19553C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C9(Test_S19553C9, "S19553C9", ABISELECT(512,272));

#else // __cplusplus

extern void _ZN8S19553C9C1Ev();
extern void _ZN8S19553C9D1Ev();
Name_Map name_map_S19553C9[] = {
  NSPAIR(_ZN8S19553C9C1Ev),
  NSPAIR(_ZN8S19553C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19553C9[];
extern void _ZN8S19553C9D1Ev();
extern void _ZN8S19553C9D0Ev();
extern void _ZN8S19553C93v12Ev();
extern void _ZN8S19553C93v13Ev();
extern void _ZN8S19553C93v14Ev();
extern void _ZN8S19553C93v15Ev();
extern void _ZN8S19553C93v16Ev();
static  VTBL_ENTRY vtc_S19553C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C9[0]),
  (VTBL_ENTRY)&_ZN8S19553C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19553C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v16Ev,
};
extern VTBL_ENTRY _ZTI8S19553C9[];
extern  VTBL_ENTRY _ZTV8S19553C9[];
Class_Descriptor cd_S19553C9 = {  "S19553C9", // class name
  0,0,//no base classes
  &(vtc_S19553C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(512,272), // object size
  NSPAIRA(_ZTI8S19553C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19553C9),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19553C3  : virtual S19553C4 , S19553C9 {
  long double s19553c3f0;
  int s19553c3f1[2];
  virtual  ~S19553C3(); // _ZN8S19553C3D2Ev
  virtual void  v17(); // _ZN8S19553C33v17Ev
  virtual void  v18(); // _ZN8S19553C33v18Ev
  virtual void  v19(); // _ZN8S19553C33v19Ev
  virtual void  v20(); // _ZN8S19553C33v20Ev
  virtual void  v21(); // _ZN8S19553C33v21Ev
  S19553C3(); // tgen
};
//SIG(-1 S19553C3) C1{ VBC2{ vd v6 v7 v8 v9 Fl[6] FC3{ VBC4{ v36 v37 v38 v39 v40 Fp[4]} v41 v42 v43 v44 FC5{ m FC6{ v22 v23 v24 v25 v26 v27 v28 FD Fp[5]}}}} BC7{ vd v10 v11 v12 v13 v14 Fp Fi FC8{} FC9{ VBC10{ BC5 VBC6 v29 v30 v31 v32 v33 v34 v35 FL Fp} VBC3 v15 v16 v17 v18 v19 v20 v21 Fi[2] FD[8]}} vd v1 v2 v3 v4 v5 FD Fi[2]}


 S19553C3 ::~S19553C3(){ note_dtor("S19553C3", this);}
void  S19553C3 ::v17(){vfunc_called(this, "_ZN8S19553C33v17Ev");}
void  S19553C3 ::v18(){vfunc_called(this, "_ZN8S19553C33v18Ev");}
void  S19553C3 ::v19(){vfunc_called(this, "_ZN8S19553C33v19Ev");}
void  S19553C3 ::v20(){vfunc_called(this, "_ZN8S19553C33v20Ev");}
void  S19553C3 ::v21(){vfunc_called(this, "_ZN8S19553C33v21Ev");}
S19553C3 ::S19553C3(){ note_ctor("S19553C3", this);} // tgen

static void Test_S19553C3()
{
  extern Class_Descriptor cd_S19553C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(48,96)];
    init_test(&cd_S19553C3, buf);
    S19553C3 *dp, &lv = *(dp=new (buf) S19553C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,380), "sizeof(S19553C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C3)");
    check_base_class_offset(lv, (S19553C4*), ABISELECT(544,292), "S19553C3");
    check_base_class_offset(lv, (S19553C9*), 0, "S19553C3");
    check_field_offset(lv, s19553c3f0, ABISELECT(512,272), "S19553C3.s19553c3f0");
    check_field_offset(lv, s19553c3f1, ABISELECT(528,284), "S19553C3.s19553c3f1");
    test_class_info(&lv, &cd_S19553C3);
    dp->~S19553C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C3(Test_S19553C3, "S19553C3", ABISELECT(752,380));

#else // __cplusplus

extern void _ZN8S19553C3C1Ev();
extern void _ZN8S19553C3D2Ev();
Name_Map name_map_S19553C3[] = {
  NSPAIR(_ZN8S19553C3C1Ev),
  NSPAIR(_ZN8S19553C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19553C4;
extern VTBL_ENTRY _ZTI8S19553C4[];
extern  VTBL_ENTRY _ZTV8S19553C4[];
extern Class_Descriptor cd_S19553C9;
extern VTBL_ENTRY _ZTI8S19553C9[];
extern  VTBL_ENTRY _ZTV8S19553C9[];
static Base_Class bases_S19553C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19553C4,    ABISELECT(544,292), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19553C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19553C3[];
extern void _ZN8S19553C3D1Ev();
extern void _ZN8S19553C3D0Ev();
extern void _ZN8S19553C93v12Ev();
extern void _ZN8S19553C93v13Ev();
extern void _ZN8S19553C93v14Ev();
extern void _ZN8S19553C93v15Ev();
extern void _ZN8S19553C93v16Ev();
extern void _ZN8S19553C33v17Ev();
extern void _ZN8S19553C33v18Ev();
extern void _ZN8S19553C33v19Ev();
extern void _ZN8S19553C33v20Ev();
extern void _ZN8S19553C33v21Ev();
extern void ABISELECT(_ZTv0_n24_N8S19553C3D1Ev,_ZTv0_n12_N8S19553C3D1Ev)();
extern void ABISELECT(_ZThn544_N8S19553C3D1Ev,_ZThn292_N8S19553C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19553C3D0Ev,_ZTv0_n12_N8S19553C3D0Ev)();
extern void ABISELECT(_ZThn544_N8S19553C3D0Ev,_ZThn292_N8S19553C3D0Ev)() __attribute__((weak));
extern void _ZN8S19553C42v8Ev();
extern void _ZN8S19553C42v9Ev();
extern void _ZN8S19553C43v10Ev();
extern void _ZN8S19553C43v11Ev();
static  VTBL_ENTRY vtc_S19553C3[] = {
  ABISELECT(544,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C3[0]),
  (VTBL_ENTRY)&_ZN8S19553C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19553C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v21Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  (VTBL_ENTRY)&(_ZTI8S19553C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C3D1Ev,_ZTv0_n12_N8S19553C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C3D0Ev,_ZTv0_n12_N8S19553C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19553C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19553C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S19553C3[];
static  VTT_ENTRY vtt_S19553C3[] = {
  {&(_ZTV8S19553C3[3]),  3,28},
  {&(_ZTV8S19553C3[22]),  22,28},
};
extern VTBL_ENTRY _ZTI8S19553C3[];
extern  VTBL_ENTRY _ZTV8S19553C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19553C3[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C3D0Ev,_ZTv0_n12_N8S19553C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19553C3D0Ev,_ZThn292_N8S19553C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C3D1Ev,_ZTv0_n12_N8S19553C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19553C3D1Ev,_ZThn292_N8S19553C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19553C3 = {  "S19553C3", // class name
  bases_S19553C3, 2,
  &(vtc_S19553C3[0]), // expected_vtbl_contents
  &(vtt_S19553C3[0]), // expected_vtt_contents
  ABISELECT(752,380), // object size
  NSPAIRA(_ZTI8S19553C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19553C3),28, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19553C3),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19553C13  {
  __tsi64 s19553c13f0;
  long double s19553c13f1;
  virtual  ~S19553C13(); // _ZN9S19553C13D1Ev
  virtual void  v22(); // _ZN9S19553C133v22Ev
  virtual void  v23(); // _ZN9S19553C133v23Ev
  virtual void  v24(); // _ZN9S19553C133v24Ev
  virtual void  v25(); // _ZN9S19553C133v25Ev
  virtual void  v26(); // _ZN9S19553C133v26Ev
  virtual void  v27(); // _ZN9S19553C133v27Ev
  S19553C13(); // tgen
};
//SIG(-1 S19553C13) C1{ vd v1 v2 v3 v4 v5 v6 FL FD}


 S19553C13 ::~S19553C13(){ note_dtor("S19553C13", this);}
void  S19553C13 ::v22(){vfunc_called(this, "_ZN9S19553C133v22Ev");}
void  S19553C13 ::v23(){vfunc_called(this, "_ZN9S19553C133v23Ev");}
void  S19553C13 ::v24(){vfunc_called(this, "_ZN9S19553C133v24Ev");}
void  S19553C13 ::v25(){vfunc_called(this, "_ZN9S19553C133v25Ev");}
void  S19553C13 ::v26(){vfunc_called(this, "_ZN9S19553C133v26Ev");}
void  S19553C13 ::v27(){vfunc_called(this, "_ZN9S19553C133v27Ev");}
S19553C13 ::S19553C13(){ note_ctor("S19553C13", this);} // tgen

static void Test_S19553C13()
{
  extern Class_Descriptor cd_S19553C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,7)];
    init_test(&cd_S19553C13, buf);
    S19553C13 *dp, &lv = *(dp=new (buf) S19553C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19553C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C13)");
    check_field_offset(lv, s19553c13f0, ABISELECT(8,4), "S19553C13.s19553c13f0");
    check_field_offset(lv, s19553c13f1, ABISELECT(16,12), "S19553C13.s19553c13f1");
    test_class_info(&lv, &cd_S19553C13);
    dp->~S19553C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C13(Test_S19553C13, "S19553C13", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S19553C13C1Ev();
extern void _ZN9S19553C13D1Ev();
Name_Map name_map_S19553C13[] = {
  NSPAIR(_ZN9S19553C13C1Ev),
  NSPAIR(_ZN9S19553C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19553C13[];
extern void _ZN9S19553C13D1Ev();
extern void _ZN9S19553C13D0Ev();
extern void _ZN9S19553C133v22Ev();
extern void _ZN9S19553C133v23Ev();
extern void _ZN9S19553C133v24Ev();
extern void _ZN9S19553C133v25Ev();
extern void _ZN9S19553C133v26Ev();
extern void _ZN9S19553C133v27Ev();
static  VTBL_ENTRY vtc_S19553C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19553C13[0]),
  (VTBL_ENTRY)&_ZN9S19553C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19553C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v22Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v23Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v24Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v25Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v26Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v27Ev,
};
extern VTBL_ENTRY _ZTI9S19553C13[];
extern  VTBL_ENTRY _ZTV9S19553C13[];
Class_Descriptor cd_S19553C13 = {  "S19553C13", // class name
  0,0,//no base classes
  &(vtc_S19553C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S19553C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19553C13),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19553C2  : S19553C3 , virtual S19553C13 {
  __tsi64 s19553c2f0:37;
  __tsi64 s19553c2f1[10];
  virtual  ~S19553C2(); // _ZN8S19553C2D2Ev
  virtual void  v28(); // _ZN8S19553C23v28Ev
  virtual void  v29(); // _ZN8S19553C23v29Ev
  virtual void  v30(); // _ZN8S19553C23v30Ev
  virtual void  v31(); // _ZN8S19553C23v31Ev
  S19553C2(); // tgen
};
//SIG(-1 S19553C2) C1{ BC2{ VBC3{ vd v5 v6 v7 v8 Fl[6] FC4{ VBC5{ v46 v47 v48 v49 v50 Fp[4]} v51 v52 v53 v54 FC6{ m FC7{ v32 v33 v34 v35 v36 v37 v38 FD Fp[5]}}}} BC8{ vd v9 v10 v11 v12 v13 Fp Fi FC9{} FC10{ VBC11{ BC6 VBC7 v39 v40 v41 v42 v43 v44 v45 FL Fp} VBC4 v25 v26 v27 v28 v29 v30 v31 Fi[2] FD[8]}} vd v14 v15 v16 v17 v18 FD Fi[2]} VBC12{ vd v19 v20 v21 v22 v23 v24 FL FD} vd v1 v2 v3 v4 FL:37 FL[10]}


 S19553C2 ::~S19553C2(){ note_dtor("S19553C2", this);}
void  S19553C2 ::v28(){vfunc_called(this, "_ZN8S19553C23v28Ev");}
void  S19553C2 ::v29(){vfunc_called(this, "_ZN8S19553C23v29Ev");}
void  S19553C2 ::v30(){vfunc_called(this, "_ZN8S19553C23v30Ev");}
void  S19553C2 ::v31(){vfunc_called(this, "_ZN8S19553C23v31Ev");}
S19553C2 ::S19553C2(){ note_ctor("S19553C2", this);} // tgen

static void Test_S19553C2()
{
  extern Class_Descriptor cd_S19553C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(55,124)];
    init_test(&cd_S19553C2, buf);
    S19553C2 *dp, &lv = *(dp=new (buf) S19553C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(864,492), "sizeof(S19553C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C2)");
    check_base_class_offset(lv, (S19553C4*)(S19553C3*), ABISELECT(624,380), "S19553C2");
    check_base_class_offset(lv, (S19553C9*)(S19553C3*), 0, "S19553C2");
    check_base_class_offset(lv, (S19553C3*), 0, "S19553C2");
    check_base_class_offset(lv, (S19553C13*), ABISELECT(832,468), "S19553C2");
    set_bf_and_test(lv, s19553c2f0, ABISELECT(536,292), 0, 37, 1, "S19553C2");
    set_bf_and_test(lv, s19553c2f0, ABISELECT(536,292), 0, 37, hide_sll(1LL<<36), "S19553C2");
    check_field_offset(lv, s19553c2f1, ABISELECT(544,300), "S19553C2.s19553c2f1");
    test_class_info(&lv, &cd_S19553C2);
    dp->~S19553C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C2(Test_S19553C2, "S19553C2", ABISELECT(864,492));

#else // __cplusplus

extern void _ZN8S19553C2C1Ev();
extern void _ZN8S19553C2D2Ev();
Name_Map name_map_S19553C2[] = {
  NSPAIR(_ZN8S19553C2C1Ev),
  NSPAIR(_ZN8S19553C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19553C4;
extern VTBL_ENTRY _ZTI8S19553C4[];
extern  VTBL_ENTRY _ZTV8S19553C4[];
extern Class_Descriptor cd_S19553C9;
extern VTBL_ENTRY _ZTI8S19553C9[];
extern  VTBL_ENTRY _ZTV8S19553C9[];
extern Class_Descriptor cd_S19553C3;
extern VTBL_ENTRY _ZTI8S19553C3[];
extern  VTBL_ENTRY _ZTV8S19553C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19553C3[];
extern Class_Descriptor cd_S19553C13;
extern VTBL_ENTRY _ZTI9S19553C13[];
extern  VTBL_ENTRY _ZTV9S19553C13[];
static Base_Class bases_S19553C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19553C4,    ABISELECT(624,380), //bcp->offset
    20, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19553C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19553C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19553C13,    ABISELECT(832,468), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19553C2[];
extern void _ZN8S19553C2D1Ev();
extern void _ZN8S19553C2D0Ev();
extern void _ZN8S19553C93v12Ev();
extern void _ZN8S19553C93v13Ev();
extern void _ZN8S19553C93v14Ev();
extern void _ZN8S19553C93v15Ev();
extern void _ZN8S19553C93v16Ev();
extern void _ZN8S19553C33v17Ev();
extern void _ZN8S19553C33v18Ev();
extern void _ZN8S19553C33v19Ev();
extern void _ZN8S19553C33v20Ev();
extern void _ZN8S19553C33v21Ev();
extern void _ZN8S19553C23v28Ev();
extern void _ZN8S19553C23v29Ev();
extern void _ZN8S19553C23v30Ev();
extern void _ZN8S19553C23v31Ev();
extern void ABISELECT(_ZTv0_n24_N8S19553C2D1Ev,_ZTv0_n12_N8S19553C2D1Ev)();
extern void ABISELECT(_ZThn624_N8S19553C2D1Ev,_ZThn380_N8S19553C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19553C2D0Ev,_ZTv0_n12_N8S19553C2D0Ev)();
extern void ABISELECT(_ZThn624_N8S19553C2D0Ev,_ZThn380_N8S19553C2D0Ev)() __attribute__((weak));
extern void _ZN8S19553C42v8Ev();
extern void _ZN8S19553C42v9Ev();
extern void _ZN8S19553C43v10Ev();
extern void _ZN8S19553C43v11Ev();
extern void ABISELECT(_ZTv0_n24_N8S19553C2D1Ev,_ZTv0_n12_N8S19553C2D1Ev)();
extern void ABISELECT(_ZThn832_N8S19553C2D1Ev,_ZThn468_N8S19553C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19553C2D0Ev,_ZTv0_n12_N8S19553C2D0Ev)();
extern void ABISELECT(_ZThn832_N8S19553C2D0Ev,_ZThn468_N8S19553C2D0Ev)() __attribute__((weak));
extern void _ZN9S19553C133v22Ev();
extern void _ZN9S19553C133v23Ev();
extern void _ZN9S19553C133v24Ev();
extern void _ZN9S19553C133v25Ev();
extern void _ZN9S19553C133v26Ev();
extern void _ZN9S19553C133v27Ev();
static  VTBL_ENTRY vtc_S19553C2[] = {
  ABISELECT(832,468),
  ABISELECT(624,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C2[0]),
  (VTBL_ENTRY)&_ZN8S19553C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19553C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v28Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v29Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v30Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v31Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-624,-380),
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI8S19553C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C2D1Ev,_ZTv0_n12_N8S19553C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C2D0Ev,_ZTv0_n12_N8S19553C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19553C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19553C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-468),
  ABISELECT(-832,-468),
  (VTBL_ENTRY)&(_ZTI8S19553C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C2D1Ev,_ZTv0_n12_N8S19553C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C2D0Ev,_ZTv0_n12_N8S19553C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19553C133v22Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v23Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v24Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v25Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v26Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v27Ev,
};
extern VTBL_ENTRY _ZTV8S19553C2[];
extern void _ZN8S19553C3D1Ev();
extern void _ZN8S19553C3D0Ev();
extern void _ZN8S19553C93v12Ev();
extern void _ZN8S19553C93v13Ev();
extern void _ZN8S19553C93v14Ev();
extern void _ZN8S19553C93v15Ev();
extern void _ZN8S19553C93v16Ev();
extern void _ZN8S19553C33v17Ev();
extern void _ZN8S19553C33v18Ev();
extern void _ZN8S19553C33v19Ev();
extern void _ZN8S19553C33v20Ev();
extern void _ZN8S19553C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S19553C3__8S19553C2[] = {
  ABISELECT(624,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C3[0]),
  (VTBL_ENTRY)&_ZN8S19553C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19553C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19553C3D1Ev,_ZTv0_n12_N8S19553C3D1Ev)();
extern void ABISELECT(_ZThn624_N8S19553C3D1Ev,_ZThn380_N8S19553C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19553C3D0Ev,_ZTv0_n12_N8S19553C3D0Ev)();
extern void ABISELECT(_ZThn624_N8S19553C3D0Ev,_ZThn380_N8S19553C3D0Ev)() __attribute__((weak));
extern void _ZN8S19553C42v8Ev();
extern void _ZN8S19553C42v9Ev();
extern void _ZN8S19553C43v10Ev();
extern void _ZN8S19553C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19553C4__8S19553C3__8S19553C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-624,-380),
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI8S19553C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C3D1Ev,_ZTv0_n12_N8S19553C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C3D0Ev,_ZTv0_n12_N8S19553C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19553C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19553C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v11Ev,
};
static  VTT_ENTRY vtt_S19553C2[] = {
  {&(_ZTV8S19553C2[4]),  4,50},
  {&(_tg__ZTV8S19553C3__8S19553C2[3]),  3,15},
  {&(_tg__ZTV8S19553C4__8S19553C3__8S19553C2[7]),  7,13},
  {&(_ZTV8S19553C2[27]),  27,50},
  {&(_ZTV8S19553C2[42]),  42,50},
};
extern VTBL_ENTRY _ZTI8S19553C2[];
extern  VTBL_ENTRY _ZTV8S19553C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19553C2[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C3D0Ev,_ZTv0_n12_N8S19553C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19553C3D0Ev,_ZThn380_N8S19553C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C3D1Ev,_ZTv0_n12_N8S19553C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19553C3D1Ev,_ZThn380_N8S19553C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C2D0Ev,_ZTv0_n12_N8S19553C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19553C2D0Ev,_ZThn468_N8S19553C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19553C2D0Ev,_ZThn380_N8S19553C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C2D1Ev,_ZTv0_n12_N8S19553C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19553C2D1Ev,_ZThn468_N8S19553C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19553C2D1Ev,_ZThn380_N8S19553C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19553C2 = {  "S19553C2", // class name
  bases_S19553C2, 4,
  &(vtc_S19553C2[0]), // expected_vtbl_contents
  &(vtt_S19553C2[0]), // expected_vtt_contents
  ABISELECT(864,492), // object size
  NSPAIRA(_ZTI8S19553C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19553C2),50, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19553C2),5, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19553C14  {
  int s19553c14f0[5];
  virtual void  v32(); // _ZN9S19553C143v32Ev
  virtual void  v33(); // _ZN9S19553C143v33Ev
  virtual void  v34(); // _ZN9S19553C143v34Ev
  virtual void  v35(); // _ZN9S19553C143v35Ev
  ~S19553C14(); // tgen
  S19553C14(); // tgen
};
//SIG(-1 S19553C14) C1{ v1 v2 v3 v4 Fi[5]}


void  S19553C14 ::v32(){vfunc_called(this, "_ZN9S19553C143v32Ev");}
void  S19553C14 ::v33(){vfunc_called(this, "_ZN9S19553C143v33Ev");}
void  S19553C14 ::v34(){vfunc_called(this, "_ZN9S19553C143v34Ev");}
void  S19553C14 ::v35(){vfunc_called(this, "_ZN9S19553C143v35Ev");}
S19553C14 ::~S19553C14(){ note_dtor("S19553C14", this);} // tgen
S19553C14 ::S19553C14(){ note_ctor("S19553C14", this);} // tgen

static void Test_S19553C14()
{
  extern Class_Descriptor cd_S19553C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19553C14, buf);
    S19553C14 *dp, &lv = *(dp=new (buf) S19553C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19553C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19553C14)");
    check_field_offset(lv, s19553c14f0, ABISELECT(8,4), "S19553C14.s19553c14f0");
    test_class_info(&lv, &cd_S19553C14);
    dp->~S19553C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C14(Test_S19553C14, "S19553C14", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S19553C14C1Ev();
extern void _ZN9S19553C14D1Ev();
Name_Map name_map_S19553C14[] = {
  NSPAIR(_ZN9S19553C14C1Ev),
  NSPAIR(_ZN9S19553C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19553C14[];
extern void _ZN9S19553C143v32Ev();
extern void _ZN9S19553C143v33Ev();
extern void _ZN9S19553C143v34Ev();
extern void _ZN9S19553C143v35Ev();
static  VTBL_ENTRY vtc_S19553C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19553C14[0]),
  (VTBL_ENTRY)&_ZN9S19553C143v32Ev,
  (VTBL_ENTRY)&_ZN9S19553C143v33Ev,
  (VTBL_ENTRY)&_ZN9S19553C143v34Ev,
  (VTBL_ENTRY)&_ZN9S19553C143v35Ev,
};
extern VTBL_ENTRY _ZTI9S19553C14[];
extern  VTBL_ENTRY _ZTV9S19553C14[];
Class_Descriptor cd_S19553C14 = {  "S19553C14", // class name
  0,0,//no base classes
  &(vtc_S19553C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S19553C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19553C14),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  S19553C15_nt  {
  virtual void  v36(); // _ZN12S19553C15_nt3v36Ev
  virtual void  v37(); // _ZN12S19553C15_nt3v37Ev
  virtual void  v38(); // _ZN12S19553C15_nt3v38Ev
  virtual void  v39(); // _ZN12S19553C15_nt3v39Ev
  virtual void  v40(); // _ZN12S19553C15_nt3v40Ev
  virtual void  v41(); // _ZN12S19553C15_nt3v41Ev
  virtual void  v42(); // _ZN12S19553C15_nt3v42Ev
  virtual void  v43(); // _ZN12S19553C15_nt3v43Ev
  virtual void  v44(); // _ZN12S19553C15_nt3v44Ev
  ~S19553C15_nt(); // tgen
  S19553C15_nt(); // tgen
};
//SIG(-1 S19553C15_nt) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S19553C15_nt ::v36(){vfunc_called(this, "_ZN12S19553C15_nt3v36Ev");}
void  S19553C15_nt ::v37(){vfunc_called(this, "_ZN12S19553C15_nt3v37Ev");}
void  S19553C15_nt ::v38(){vfunc_called(this, "_ZN12S19553C15_nt3v38Ev");}
void  S19553C15_nt ::v39(){vfunc_called(this, "_ZN12S19553C15_nt3v39Ev");}
void  S19553C15_nt ::v40(){vfunc_called(this, "_ZN12S19553C15_nt3v40Ev");}
void  S19553C15_nt ::v41(){vfunc_called(this, "_ZN12S19553C15_nt3v41Ev");}
void  S19553C15_nt ::v42(){vfunc_called(this, "_ZN12S19553C15_nt3v42Ev");}
void  S19553C15_nt ::v43(){vfunc_called(this, "_ZN12S19553C15_nt3v43Ev");}
void  S19553C15_nt ::v44(){vfunc_called(this, "_ZN12S19553C15_nt3v44Ev");}
S19553C15_nt ::~S19553C15_nt(){ note_dtor("S19553C15_nt", this);} // tgen
S19553C15_nt ::S19553C15_nt(){ note_ctor("S19553C15_nt", this);} // tgen

//skip512 S19553C15_nt

#else // __cplusplus

extern void _ZN12S19553C15_ntC1Ev();
extern void _ZN12S19553C15_ntD1Ev();
Name_Map name_map_S19553C15_nt[] = {
  NSPAIR(_ZN12S19553C15_ntC1Ev),
  NSPAIR(_ZN12S19553C15_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19553C15_nt[];
extern void _ZN12S19553C15_nt3v36Ev();
extern void _ZN12S19553C15_nt3v37Ev();
extern void _ZN12S19553C15_nt3v38Ev();
extern void _ZN12S19553C15_nt3v39Ev();
extern void _ZN12S19553C15_nt3v40Ev();
extern void _ZN12S19553C15_nt3v41Ev();
extern void _ZN12S19553C15_nt3v42Ev();
extern void _ZN12S19553C15_nt3v43Ev();
extern void _ZN12S19553C15_nt3v44Ev();
static  VTBL_ENTRY vtc_S19553C15_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19553C15_nt[0]),
  (VTBL_ENTRY)&_ZN12S19553C15_nt3v36Ev,
  (VTBL_ENTRY)&_ZN12S19553C15_nt3v37Ev,
  (VTBL_ENTRY)&_ZN12S19553C15_nt3v38Ev,
  (VTBL_ENTRY)&_ZN12S19553C15_nt3v39Ev,
  (VTBL_ENTRY)&_ZN12S19553C15_nt3v40Ev,
  (VTBL_ENTRY)&_ZN12S19553C15_nt3v41Ev,
  (VTBL_ENTRY)&_ZN12S19553C15_nt3v42Ev,
  (VTBL_ENTRY)&_ZN12S19553C15_nt3v43Ev,
  (VTBL_ENTRY)&_ZN12S19553C15_nt3v44Ev,
};
extern VTBL_ENTRY _ZTI12S19553C15_nt[];
VTBL_ENTRY *P__ZTI12S19553C15_nt = _ZTI12S19553C15_nt; 
extern  VTBL_ENTRY _ZTV12S19553C15_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19553C1  : virtual S19553C2 , virtual S19553C14 {
  ::S19553C15_nt s19553c1f0;
  virtual void  v1(); // _ZN8S19553C12v1Ev
  virtual void  v2(); // _ZN8S19553C12v2Ev
  virtual void  v3(); // _ZN8S19553C12v3Ev
  virtual void  v4(); // _ZN8S19553C12v4Ev
  virtual void  v5(); // _ZN8S19553C12v5Ev
  virtual void  v6(); // _ZN8S19553C12v6Ev
  virtual void  v7(); // _ZN8S19553C12v7Ev
  ~S19553C1(); // tgen
  S19553C1(); // tgen
};
//SIG(1 S19553C1) C1{ VBC2{ BC3{ VBC4{ vd v8 v9 v10 v11 Fl[6] FC5{ VBC6{ v66 v67 v68 v69 v70 Fp[4]} v71 v72 v73 v74 FC7{ m FC8{ v52 v53 v54 v55 v56 v57 v58 FD Fp[5]}}}} BC9{ vd v12 v13 v14 v15 v16 Fp Fi FC10{} FC11{ VBC12{ BC7 VBC8 v59 v60 v61 v62 v63 v64 v65 FL Fp} VBC5 v45 v46 v47 v48 v49 v50 v51 Fi[2] FD[8]}} vd v17 v18 v19 v20 v21 FD Fi[2]} VBC13{ vd v22 v23 v24 v25 v26 v27 FL FD} vd v28 v29 v30 v31 FL:37 FL[10]} VBC14{ v32 v33 v34 v35 Fi[5]} v1 v2 v3 v4 v5 v6 v7 FC15{ v36 v37 v38 v39 v40 v41 v42 v43 v44}}


void  S19553C1 ::v1(){vfunc_called(this, "_ZN8S19553C12v1Ev");}
void  S19553C1 ::v2(){vfunc_called(this, "_ZN8S19553C12v2Ev");}
void  S19553C1 ::v3(){vfunc_called(this, "_ZN8S19553C12v3Ev");}
void  S19553C1 ::v4(){vfunc_called(this, "_ZN8S19553C12v4Ev");}
void  S19553C1 ::v5(){vfunc_called(this, "_ZN8S19553C12v5Ev");}
void  S19553C1 ::v6(){vfunc_called(this, "_ZN8S19553C12v6Ev");}
void  S19553C1 ::v7(){vfunc_called(this, "_ZN8S19553C12v7Ev");}
S19553C1 ::~S19553C1(){ note_dtor("S19553C1", this);} // tgen
S19553C1 ::S19553C1(){ note_ctor("S19553C1", this);} // tgen

static void Test_S19553C1()
{
  extern Class_Descriptor cd_S19553C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,132)];
    init_test(&cd_S19553C1, buf);
    S19553C1 *dp, &lv = *(dp=new (buf) S19553C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,524), "sizeof(S19553C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19553C1)");
    check_base_class_offset(lv, (S19553C4*)(S19553C3*)(S19553C2*), ABISELECT(640,388), "S19553C1");
    check_base_class_offset(lv, (S19553C9*)(S19553C3*)(S19553C2*), ABISELECT(16,8), "S19553C1");
    check_base_class_offset(lv, (S19553C3*)(S19553C2*), ABISELECT(16,8), "S19553C1");
    check_base_class_offset(lv, (S19553C13*)(S19553C2*), ABISELECT(848,476), "S19553C1");
    check_base_class_offset(lv, (S19553C2*), ABISELECT(16,8), "S19553C1");
    check_base_class_offset(lv, (S19553C14*), ABISELECT(880,500), "S19553C1");
    check_field_offset(lv, s19553c1f0, ABISELECT(8,4), "S19553C1.s19553c1f0");
    test_class_info(&lv, &cd_S19553C1);
    dp->~S19553C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19553C1(Test_S19553C1, "S19553C1", ABISELECT(912,524));

#else // __cplusplus

extern void _ZN8S19553C1C1Ev();
extern void _ZN8S19553C1D1Ev();
Name_Map name_map_S19553C1[] = {
  NSPAIR(_ZN8S19553C1C1Ev),
  NSPAIR(_ZN8S19553C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19553C4;
extern VTBL_ENTRY _ZTI8S19553C4[];
extern  VTBL_ENTRY _ZTV8S19553C4[];
extern Class_Descriptor cd_S19553C9;
extern VTBL_ENTRY _ZTI8S19553C9[];
extern  VTBL_ENTRY _ZTV8S19553C9[];
extern Class_Descriptor cd_S19553C3;
extern VTBL_ENTRY _ZTI8S19553C3[];
extern  VTBL_ENTRY _ZTV8S19553C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19553C3[];
extern Class_Descriptor cd_S19553C13;
extern VTBL_ENTRY _ZTI9S19553C13[];
extern  VTBL_ENTRY _ZTV9S19553C13[];
extern Class_Descriptor cd_S19553C2;
extern VTBL_ENTRY _ZTI8S19553C2[];
extern  VTBL_ENTRY _ZTV8S19553C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19553C2[];
extern Class_Descriptor cd_S19553C14;
extern VTBL_ENTRY _ZTI9S19553C14[];
extern  VTBL_ENTRY _ZTV9S19553C14[];
static Base_Class bases_S19553C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19553C4,    ABISELECT(640,388), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19553C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19553C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19553C13,    ABISELECT(848,476), //bcp->offset
    63, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19553C2,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19553C14,    ABISELECT(880,500), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19553C1[];
extern void _ZN8S19553C12v1Ev();
extern void _ZN8S19553C12v2Ev();
extern void _ZN8S19553C12v3Ev();
extern void _ZN8S19553C12v4Ev();
extern void _ZN8S19553C12v5Ev();
extern void _ZN8S19553C12v6Ev();
extern void _ZN8S19553C12v7Ev();
extern void _ZN8S19553C1D1Ev();
extern void _ZN8S19553C1D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S19553C1D1Ev,_ZTv0_n20_N8S19553C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19553C1D1Ev,_ZThn8_N8S19553C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19553C1D0Ev,_ZTv0_n20_N8S19553C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19553C1D0Ev,_ZThn8_N8S19553C1D0Ev)() __attribute__((weak));
extern void _ZN8S19553C93v12Ev();
extern void _ZN8S19553C93v13Ev();
extern void _ZN8S19553C93v14Ev();
extern void _ZN8S19553C93v15Ev();
extern void _ZN8S19553C93v16Ev();
extern void _ZN8S19553C33v17Ev();
extern void _ZN8S19553C33v18Ev();
extern void _ZN8S19553C33v19Ev();
extern void _ZN8S19553C33v20Ev();
extern void _ZN8S19553C33v21Ev();
extern void _ZN8S19553C23v28Ev();
extern void _ZN8S19553C23v29Ev();
extern void _ZN8S19553C23v30Ev();
extern void _ZN8S19553C23v31Ev();
extern void ABISELECT(_ZTv0_n24_N8S19553C1D1Ev,_ZTv0_n12_N8S19553C1D1Ev)();
extern void ABISELECT(_ZThn640_N8S19553C1D1Ev,_ZThn388_N8S19553C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19553C1D0Ev,_ZTv0_n12_N8S19553C1D0Ev)();
extern void ABISELECT(_ZThn640_N8S19553C1D0Ev,_ZThn388_N8S19553C1D0Ev)() __attribute__((weak));
extern void _ZN8S19553C42v8Ev();
extern void _ZN8S19553C42v9Ev();
extern void _ZN8S19553C43v10Ev();
extern void _ZN8S19553C43v11Ev();
extern void ABISELECT(_ZTv0_n24_N8S19553C1D1Ev,_ZTv0_n12_N8S19553C1D1Ev)();
extern void ABISELECT(_ZThn848_N8S19553C1D1Ev,_ZThn476_N8S19553C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19553C1D0Ev,_ZTv0_n12_N8S19553C1D0Ev)();
extern void ABISELECT(_ZThn848_N8S19553C1D0Ev,_ZThn476_N8S19553C1D0Ev)() __attribute__((weak));
extern void _ZN9S19553C133v22Ev();
extern void _ZN9S19553C133v23Ev();
extern void _ZN9S19553C133v24Ev();
extern void _ZN9S19553C133v25Ev();
extern void _ZN9S19553C133v26Ev();
extern void _ZN9S19553C133v27Ev();
extern void _ZN9S19553C143v32Ev();
extern void _ZN9S19553C143v33Ev();
extern void _ZN9S19553C143v34Ev();
extern void _ZN9S19553C143v35Ev();
static  VTBL_ENTRY vtc_S19553C1[] = {
  ABISELECT(880,500),
  ABISELECT(848,476),
  ABISELECT(640,388),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C1[0]),
  (VTBL_ENTRY)&_ZN8S19553C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19553C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19553C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19553C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19553C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19553C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19553C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19553C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19553C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(832,468),
  ABISELECT(624,380),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19553C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19553C1D1Ev,_ZTv0_n20_N8S19553C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19553C1D0Ev,_ZTv0_n20_N8S19553C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19553C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v28Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v29Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v30Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v31Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-388),
  ABISELECT(-640,-388),
  (VTBL_ENTRY)&(_ZTI8S19553C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C1D1Ev,_ZTv0_n12_N8S19553C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C1D0Ev,_ZTv0_n12_N8S19553C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19553C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19553C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-848,-476),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI8S19553C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C1D1Ev,_ZTv0_n12_N8S19553C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C1D0Ev,_ZTv0_n12_N8S19553C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19553C133v22Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v23Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v24Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v25Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v26Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v27Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-880,-500),
  (VTBL_ENTRY)&(_ZTI8S19553C1[0]),
  (VTBL_ENTRY)&_ZN9S19553C143v32Ev,
  (VTBL_ENTRY)&_ZN9S19553C143v33Ev,
  (VTBL_ENTRY)&_ZN9S19553C143v34Ev,
  (VTBL_ENTRY)&_ZN9S19553C143v35Ev,
};
extern VTBL_ENTRY _ZTV8S19553C1[];
extern void _ZN8S19553C2D1Ev();
extern void _ZN8S19553C2D0Ev();
extern void _ZN8S19553C93v12Ev();
extern void _ZN8S19553C93v13Ev();
extern void _ZN8S19553C93v14Ev();
extern void _ZN8S19553C93v15Ev();
extern void _ZN8S19553C93v16Ev();
extern void _ZN8S19553C33v17Ev();
extern void _ZN8S19553C33v18Ev();
extern void _ZN8S19553C33v19Ev();
extern void _ZN8S19553C33v20Ev();
extern void _ZN8S19553C33v21Ev();
extern void _ZN8S19553C23v28Ev();
extern void _ZN8S19553C23v29Ev();
extern void _ZN8S19553C23v30Ev();
extern void _ZN8S19553C23v31Ev();
static  VTBL_ENTRY _tg__ZTV8S19553C2__8S19553C1[] = {
  ABISELECT(832,468),
  ABISELECT(624,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C2[0]),
  (VTBL_ENTRY)&_ZN8S19553C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19553C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v28Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v29Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v30Ev,
  (VTBL_ENTRY)&_ZN8S19553C23v31Ev,
};
extern void _ZN8S19553C3D1Ev();
extern void _ZN8S19553C3D0Ev();
extern void _ZN8S19553C93v12Ev();
extern void _ZN8S19553C93v13Ev();
extern void _ZN8S19553C93v14Ev();
extern void _ZN8S19553C93v15Ev();
extern void _ZN8S19553C93v16Ev();
extern void _ZN8S19553C33v17Ev();
extern void _ZN8S19553C33v18Ev();
extern void _ZN8S19553C33v19Ev();
extern void _ZN8S19553C33v20Ev();
extern void _ZN8S19553C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S19553C38S19553C2__8S19553C1[] = {
  ABISELECT(624,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19553C3[0]),
  (VTBL_ENTRY)&_ZN8S19553C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19553C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19553C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19553C33v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19553C3D1Ev,_ZTv0_n12_N8S19553C3D1Ev)();
extern void ABISELECT(_ZThn624_N8S19553C3D1Ev,_ZThn380_N8S19553C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19553C3D0Ev,_ZTv0_n12_N8S19553C3D0Ev)();
extern void ABISELECT(_ZThn624_N8S19553C3D0Ev,_ZThn380_N8S19553C3D0Ev)() __attribute__((weak));
extern void _ZN8S19553C42v8Ev();
extern void _ZN8S19553C42v9Ev();
extern void _ZN8S19553C43v10Ev();
extern void _ZN8S19553C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19553C4__8S19553C38S19553C2__8S19553C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-624,-380),
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI8S19553C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C3D1Ev,_ZTv0_n12_N8S19553C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C3D0Ev,_ZTv0_n12_N8S19553C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19553C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19553C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v11Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19553C2D1Ev,_ZTv0_n12_N8S19553C2D1Ev)();
extern void ABISELECT(_ZThn624_N8S19553C2D1Ev,_ZThn380_N8S19553C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19553C2D0Ev,_ZTv0_n12_N8S19553C2D0Ev)();
extern void ABISELECT(_ZThn624_N8S19553C2D0Ev,_ZThn380_N8S19553C2D0Ev)() __attribute__((weak));
extern void _ZN8S19553C42v8Ev();
extern void _ZN8S19553C42v9Ev();
extern void _ZN8S19553C43v10Ev();
extern void _ZN8S19553C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19553C4__8S19553C2__8S19553C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-624,-380),
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI8S19553C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C2D1Ev,_ZTv0_n12_N8S19553C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C2D0Ev,_ZTv0_n12_N8S19553C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19553C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19553C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19553C43v11Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19553C2D1Ev,_ZTv0_n12_N8S19553C2D1Ev)();
extern void ABISELECT(_ZThn832_N8S19553C2D1Ev,_ZThn468_N8S19553C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19553C2D0Ev,_ZTv0_n12_N8S19553C2D0Ev)();
extern void ABISELECT(_ZThn832_N8S19553C2D0Ev,_ZThn468_N8S19553C2D0Ev)() __attribute__((weak));
extern void _ZN9S19553C133v22Ev();
extern void _ZN9S19553C133v23Ev();
extern void _ZN9S19553C133v24Ev();
extern void _ZN9S19553C133v25Ev();
extern void _ZN9S19553C133v26Ev();
extern void _ZN9S19553C133v27Ev();
static  VTBL_ENTRY _tg__ZTV9S19553C13__8S19553C2__8S19553C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-468),
  ABISELECT(-832,-468),
  (VTBL_ENTRY)&(_ZTI8S19553C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C2D1Ev,_ZTv0_n12_N8S19553C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19553C2D0Ev,_ZTv0_n12_N8S19553C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19553C133v22Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v23Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v24Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v25Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v26Ev,
  (VTBL_ENTRY)&_ZN9S19553C133v27Ev,
};
static  VTT_ENTRY vtt_S19553C1[] = {
  {&(_ZTV8S19553C1[6]),  6,90},
  {&(_ZTV8S19553C1[34]),  34,90},
  {&(_ZTV8S19553C1[57]),  57,90},
  {&(_ZTV8S19553C1[72]),  72,90},
  {&(_ZTV8S19553C1[86]),  86,90},
  {&(_tg__ZTV8S19553C2__8S19553C1[4]),  4,20},
  {&(_tg__ZTV8S19553C38S19553C2__8S19553C1[3]),  3,15},
  {&(_tg__ZTV8S19553C4__8S19553C38S19553C2__8S19553C1[7]),  7,13},
  {&(_tg__ZTV8S19553C4__8S19553C2__8S19553C1[7]),  7,13},
  {&(_tg__ZTV9S19553C13__8S19553C2__8S19553C1[9]),  9,17},
};
extern VTBL_ENTRY _ZTI8S19553C1[];
extern  VTBL_ENTRY _ZTV8S19553C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19553C1[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C2D0Ev,_ZTv0_n12_N8S19553C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19553C2D0Ev,_ZThn468_N8S19553C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19553C2D0Ev,_ZThn380_N8S19553C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C2D1Ev,_ZTv0_n12_N8S19553C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19553C2D1Ev,_ZThn468_N8S19553C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19553C2D1Ev,_ZThn380_N8S19553C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C3D0Ev,_ZTv0_n12_N8S19553C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19553C3D0Ev,_ZThn380_N8S19553C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C3D1Ev,_ZTv0_n12_N8S19553C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19553C3D1Ev,_ZThn380_N8S19553C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C1D0Ev,_ZTv0_n12_N8S19553C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19553C1D0Ev,_ZThn476_N8S19553C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19553C1D0Ev,_ZThn388_N8S19553C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19553C1D1Ev,_ZTv0_n12_N8S19553C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19553C1D1Ev,_ZThn476_N8S19553C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19553C1D1Ev,_ZThn388_N8S19553C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19553C1D0Ev,_ZTv0_n20_N8S19553C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19553C1D0Ev,_ZThn8_N8S19553C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19553C1D1Ev,_ZTv0_n20_N8S19553C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19553C1D1Ev,_ZThn8_N8S19553C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19553C1 = {  "S19553C1", // class name
  bases_S19553C1, 6,
  &(vtc_S19553C1[0]), // expected_vtbl_contents
  &(vtt_S19553C1[0]), // expected_vtt_contents
  ABISELECT(912,524), // object size
  NSPAIRA(_ZTI8S19553C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19553C1),90, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19553C1),10, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19552C6  {
  void *s19552c6f0[4];
  virtual void  v66(); // _ZN8S19552C63v66Ev
  virtual void  v67(); // _ZN8S19552C63v67Ev
  virtual void  v68(); // _ZN8S19552C63v68Ev
  virtual void  v69(); // _ZN8S19552C63v69Ev
  virtual void  v70(); // _ZN8S19552C63v70Ev
  ~S19552C6(); // tgen
  S19552C6(); // tgen
};
//SIG(-1 S19552C6) C1{ v1 v2 v3 v4 v5 Fp[4]}


void  S19552C6 ::v66(){vfunc_called(this, "_ZN8S19552C63v66Ev");}
void  S19552C6 ::v67(){vfunc_called(this, "_ZN8S19552C63v67Ev");}
void  S19552C6 ::v68(){vfunc_called(this, "_ZN8S19552C63v68Ev");}
void  S19552C6 ::v69(){vfunc_called(this, "_ZN8S19552C63v69Ev");}
void  S19552C6 ::v70(){vfunc_called(this, "_ZN8S19552C63v70Ev");}
S19552C6 ::~S19552C6(){ note_dtor("S19552C6", this);} // tgen
S19552C6 ::S19552C6(){ note_ctor("S19552C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19552C6C1Ev();
extern void _ZN8S19552C6D1Ev();
Name_Map name_map_S19552C6[] = {
  NSPAIR(_ZN8S19552C6C1Ev),
  NSPAIR(_ZN8S19552C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19552C6[];
extern void _ZN8S19552C63v66Ev();
extern void _ZN8S19552C63v67Ev();
extern void _ZN8S19552C63v68Ev();
extern void _ZN8S19552C63v69Ev();
extern void _ZN8S19552C63v70Ev();
static  VTBL_ENTRY vtc_S19552C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19552C6[0]),
  (VTBL_ENTRY)&_ZN8S19552C63v66Ev,
  (VTBL_ENTRY)&_ZN8S19552C63v67Ev,
  (VTBL_ENTRY)&_ZN8S19552C63v68Ev,
  (VTBL_ENTRY)&_ZN8S19552C63v69Ev,
  (VTBL_ENTRY)&_ZN8S19552C63v70Ev,
};
extern VTBL_ENTRY _ZTI8S19552C6[];
extern  VTBL_ENTRY _ZTV8S19552C6[];
Class_Descriptor cd_S19552C6 = {  "S19552C6", // class name
  0,0,//no base classes
  &(vtc_S19552C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S19552C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19552C6),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  S19552C5  : virtual S19552C6 {
  ::S19553C7 s19552c5f0;
  virtual void  v71(); // _ZN8S19552C53v71Ev
  virtual void  v72(); // _ZN8S19552C53v72Ev
  virtual void  v73(); // _ZN8S19552C53v73Ev
  virtual void  v74(); // _ZN8S19552C53v74Ev
  ~S19552C5(); // tgen
  S19552C5(); // tgen
};
//SIG(-1 S19552C5) C1{ VBC2{ v5 v6 v7 v8 v9 Fp[4]} v1 v2 v3 v4 FC3{ m FC4{ v10 v11 v12 v13 v14 v15 v16 FD Fp[5]}}}


void  S19552C5 ::v71(){vfunc_called(this, "_ZN8S19552C53v71Ev");}
void  S19552C5 ::v72(){vfunc_called(this, "_ZN8S19552C53v72Ev");}
void  S19552C5 ::v73(){vfunc_called(this, "_ZN8S19552C53v73Ev");}
void  S19552C5 ::v74(){vfunc_called(this, "_ZN8S19552C53v74Ev");}
S19552C5 ::~S19552C5(){ note_dtor("S19552C5", this);} // tgen
S19552C5 ::S19552C5(){ note_ctor("S19552C5", this);} // tgen

static void Test_S19552C5()
{
  extern Class_Descriptor cd_S19552C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,16)];
    init_test(&cd_S19552C5, buf);
    S19552C5 *dp, &lv = *(dp=new (buf) S19552C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,60), "sizeof(S19552C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19552C5)");
    check_base_class_offset(lv, (S19552C6*), ABISELECT(96,40), "S19552C5");
    check_field_offset(lv, s19552c5f0, ABISELECT(16,4), "S19552C5.s19552c5f0");
    test_class_info(&lv, &cd_S19552C5);
    dp->~S19552C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19552C5(Test_S19552C5, "S19552C5", ABISELECT(144,60));

#else // __cplusplus

extern void _ZN8S19552C5C1Ev();
extern void _ZN8S19552C5D1Ev();
Name_Map name_map_S19552C5[] = {
  NSPAIR(_ZN8S19552C5C1Ev),
  NSPAIR(_ZN8S19552C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19552C6;
extern VTBL_ENTRY _ZTI8S19552C6[];
extern  VTBL_ENTRY _ZTV8S19552C6[];
static Base_Class bases_S19552C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19552C6,    ABISELECT(96,40), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19552C5[];
extern void _ZN8S19552C53v71Ev();
extern void _ZN8S19552C53v72Ev();
extern void _ZN8S19552C53v73Ev();
extern void _ZN8S19552C53v74Ev();
extern void _ZN8S19552C63v66Ev();
extern void _ZN8S19552C63v67Ev();
extern void _ZN8S19552C63v68Ev();
extern void _ZN8S19552C63v69Ev();
extern void _ZN8S19552C63v70Ev();
static  VTBL_ENTRY vtc_S19552C5[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19552C5[0]),
  (VTBL_ENTRY)&_ZN8S19552C53v71Ev,
  (VTBL_ENTRY)&_ZN8S19552C53v72Ev,
  (VTBL_ENTRY)&_ZN8S19552C53v73Ev,
  (VTBL_ENTRY)&_ZN8S19552C53v74Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S19552C5[0]),
  (VTBL_ENTRY)&_ZN8S19552C63v66Ev,
  (VTBL_ENTRY)&_ZN8S19552C63v67Ev,
  (VTBL_ENTRY)&_ZN8S19552C63v68Ev,
  (VTBL_ENTRY)&_ZN8S19552C63v69Ev,
  (VTBL_ENTRY)&_ZN8S19552C63v70Ev,
};
extern VTBL_ENTRY _ZTV8S19552C5[];
static  VTT_ENTRY vtt_S19552C5[] = {
  {&(_ZTV8S19552C5[3]),  3,19},
  {&(_ZTV8S19552C5[14]),  14,19},
};
extern VTBL_ENTRY _ZTI8S19552C5[];
extern  VTBL_ENTRY _ZTV8S19552C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19552C5[];
Class_Descriptor cd_S19552C5 = {  "S19552C5", // class name
  bases_S19552C5, 1,
  &(vtc_S19552C5[0]), // expected_vtbl_contents
  &(vtt_S19552C5[0]), // expected_vtt_contents
  ABISELECT(144,60), // object size
  NSPAIRA(_ZTI8S19552C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19552C5),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19552C5),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  S19552C4  {
  long s19552c4f0[6];
  ::S19552C5 s19552c4f1;
  virtual  ~S19552C4(); // _ZN8S19552C4D1Ev
  virtual void  v8(); // _ZN8S19552C42v8Ev
  virtual void  v9(); // _ZN8S19552C42v9Ev
  virtual void  v10(); // _ZN8S19552C43v10Ev
  virtual void  v11(); // _ZN8S19552C43v11Ev
  S19552C4(); // tgen
};
//SIG(-1 S19552C4) C1{ vd v1 v2 v3 v4 Fl[6] FC2{ VBC3{ v9 v10 v11 v12 v13 Fp[4]} v5 v6 v7 v8 FC4{ m FC5{ v14 v15 v16 v17 v18 v19 v20 FD Fp[5]}}}}


 S19552C4 ::~S19552C4(){ note_dtor("S19552C4", this);}
void  S19552C4 ::v8(){vfunc_called(this, "_ZN8S19552C42v8Ev");}
void  S19552C4 ::v9(){vfunc_called(this, "_ZN8S19552C42v9Ev");}
void  S19552C4 ::v10(){vfunc_called(this, "_ZN8S19552C43v10Ev");}
void  S19552C4 ::v11(){vfunc_called(this, "_ZN8S19552C43v11Ev");}
S19552C4 ::S19552C4(){ note_ctor("S19552C4", this);} // tgen

static void Test_S19552C4()
{
  extern Class_Descriptor cd_S19552C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,23)];
    init_test(&cd_S19552C4, buf);
    S19552C4 *dp, &lv = *(dp=new (buf) S19552C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,88), "sizeof(S19552C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19552C4)");
    check_field_offset(lv, s19552c4f0, ABISELECT(8,4), "S19552C4.s19552c4f0");
    check_field_offset(lv, s19552c4f1, ABISELECT(64,28), "S19552C4.s19552c4f1");
    test_class_info(&lv, &cd_S19552C4);
    dp->~S19552C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19552C4(Test_S19552C4, "S19552C4", ABISELECT(208,88));

#else // __cplusplus

extern void _ZN8S19552C4C1Ev();
extern void _ZN8S19552C4D1Ev();
Name_Map name_map_S19552C4[] = {
  NSPAIR(_ZN8S19552C4C1Ev),
  NSPAIR(_ZN8S19552C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19552C4[];
extern void _ZN8S19552C4D1Ev();
extern void _ZN8S19552C4D0Ev();
extern void _ZN8S19552C42v8Ev();
extern void _ZN8S19552C42v9Ev();
extern void _ZN8S19552C43v10Ev();
extern void _ZN8S19552C43v11Ev();
static  VTBL_ENTRY vtc_S19552C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19552C4[0]),
  (VTBL_ENTRY)&_ZN8S19552C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19552C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19552C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19552C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v11Ev,
};
extern VTBL_ENTRY _ZTI8S19552C4[];
extern  VTBL_ENTRY _ZTV8S19552C4[];
Class_Descriptor cd_S19552C4 = {  "S19552C4", // class name
  0,0,//no base classes
  &(vtc_S19552C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,88), // object size
  NSPAIRA(_ZTI8S19552C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19552C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19552C9  {
  void *s19552c9f0;
  int s19552c9f1;
  ::S19553C10_nt s19552c9f2;
  ::S19553C11 s19552c9f3;
  virtual  ~S19552C9(); // _ZN8S19552C9D1Ev
  virtual void  v12(); // _ZN8S19552C93v12Ev
  virtual void  v13(); // _ZN8S19552C93v13Ev
  virtual void  v14(); // _ZN8S19552C93v14Ev
  virtual void  v15(); // _ZN8S19552C93v15Ev
  virtual void  v16(); // _ZN8S19552C93v16Ev
  S19552C9(); // tgen
};
//SIG(-1 S19552C9) C1{ vd v1 v2 v3 v4 v5 Fp Fi FC2{} FC3{ VBC4{ BC5{ m FC6{ v13 v14 v15 v16 v17 v18 v19 FD Fp[5]}} VBC6 v20 v21 v22 v23 v24 v25 v26 FL Fp} VBC7{ VBC8{ v27 v28 v29 v30 v31 Fp[4]} v32 v33 v34 v35 FC5} v6 v7 v8 v9 v10 v11 v12 Fi[2] FD[8]}}


 S19552C9 ::~S19552C9(){ note_dtor("S19552C9", this);}
void  S19552C9 ::v12(){vfunc_called(this, "_ZN8S19552C93v12Ev");}
void  S19552C9 ::v13(){vfunc_called(this, "_ZN8S19552C93v13Ev");}
void  S19552C9 ::v14(){vfunc_called(this, "_ZN8S19552C93v14Ev");}
void  S19552C9 ::v15(){vfunc_called(this, "_ZN8S19552C93v15Ev");}
void  S19552C9 ::v16(){vfunc_called(this, "_ZN8S19552C93v16Ev");}
S19552C9 ::S19552C9(){ note_ctor("S19552C9", this);} // tgen

static void Test_S19552C9()
{
  extern Class_Descriptor cd_S19552C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,69)];
    init_test(&cd_S19552C9, buf);
    S19552C9 *dp, &lv = *(dp=new (buf) S19552C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,272), "sizeof(S19552C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19552C9)");
    check_field_offset(lv, s19552c9f0, ABISELECT(8,4), "S19552C9.s19552c9f0");
    check_field_offset(lv, s19552c9f1, ABISELECT(16,8), "S19552C9.s19552c9f1");
    check_field_offset(lv, s19552c9f2, ABISELECT(20,12), "S19552C9.s19552c9f2");
    check_field_offset(lv, s19552c9f3, ABISELECT(32,16), "S19552C9.s19552c9f3");
    test_class_info(&lv, &cd_S19552C9);
    dp->~S19552C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19552C9(Test_S19552C9, "S19552C9", ABISELECT(512,272));

#else // __cplusplus

extern void _ZN8S19552C9C1Ev();
extern void _ZN8S19552C9D1Ev();
Name_Map name_map_S19552C9[] = {
  NSPAIR(_ZN8S19552C9C1Ev),
  NSPAIR(_ZN8S19552C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19552C9[];
extern void _ZN8S19552C9D1Ev();
extern void _ZN8S19552C9D0Ev();
extern void _ZN8S19552C93v12Ev();
extern void _ZN8S19552C93v13Ev();
extern void _ZN8S19552C93v14Ev();
extern void _ZN8S19552C93v15Ev();
extern void _ZN8S19552C93v16Ev();
static  VTBL_ENTRY vtc_S19552C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19552C9[0]),
  (VTBL_ENTRY)&_ZN8S19552C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19552C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v16Ev,
};
extern VTBL_ENTRY _ZTI8S19552C9[];
extern  VTBL_ENTRY _ZTV8S19552C9[];
Class_Descriptor cd_S19552C9 = {  "S19552C9", // class name
  0,0,//no base classes
  &(vtc_S19552C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(512,272), // object size
  NSPAIRA(_ZTI8S19552C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19552C9),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19552C3  : virtual S19552C4 , S19552C9 {
  long double s19552c3f0;
  int s19552c3f1[2];
  virtual  ~S19552C3(); // _ZN8S19552C3D2Ev
  virtual void  v17(); // _ZN8S19552C33v17Ev
  virtual void  v18(); // _ZN8S19552C33v18Ev
  virtual void  v19(); // _ZN8S19552C33v19Ev
  virtual void  v20(); // _ZN8S19552C33v20Ev
  virtual void  v21(); // _ZN8S19552C33v21Ev
  S19552C3(); // tgen
};
//SIG(-1 S19552C3) C1{ VBC2{ vd v6 v7 v8 v9 Fl[6] FC3{ VBC4{ v49 v50 v51 v52 v53 Fp[4]} v45 v46 v47 v48 FC5{ m FC6{ v22 v23 v24 v25 v26 v27 v28 FD Fp[5]}}}} BC7{ vd v10 v11 v12 v13 v14 Fp Fi FC8{} FC9{ VBC10{ BC5 VBC6 v29 v30 v31 v32 v33 v34 v35 FL Fp} VBC11{ VBC12{ v36 v37 v38 v39 v40 Fp[4]} v41 v42 v43 v44 FC5} v15 v16 v17 v18 v19 v20 v21 Fi[2] FD[8]}} vd v1 v2 v3 v4 v5 FD Fi[2]}


 S19552C3 ::~S19552C3(){ note_dtor("S19552C3", this);}
void  S19552C3 ::v17(){vfunc_called(this, "_ZN8S19552C33v17Ev");}
void  S19552C3 ::v18(){vfunc_called(this, "_ZN8S19552C33v18Ev");}
void  S19552C3 ::v19(){vfunc_called(this, "_ZN8S19552C33v19Ev");}
void  S19552C3 ::v20(){vfunc_called(this, "_ZN8S19552C33v20Ev");}
void  S19552C3 ::v21(){vfunc_called(this, "_ZN8S19552C33v21Ev");}
S19552C3 ::S19552C3(){ note_ctor("S19552C3", this);} // tgen

static void Test_S19552C3()
{
  extern Class_Descriptor cd_S19552C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(48,96)];
    init_test(&cd_S19552C3, buf);
    S19552C3 *dp, &lv = *(dp=new (buf) S19552C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,380), "sizeof(S19552C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19552C3)");
    check_base_class_offset(lv, (S19552C4*), ABISELECT(544,292), "S19552C3");
    check_base_class_offset(lv, (S19552C9*), 0, "S19552C3");
    check_field_offset(lv, s19552c3f0, ABISELECT(512,272), "S19552C3.s19552c3f0");
    check_field_offset(lv, s19552c3f1, ABISELECT(528,284), "S19552C3.s19552c3f1");
    test_class_info(&lv, &cd_S19552C3);
    dp->~S19552C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19552C3(Test_S19552C3, "S19552C3", ABISELECT(752,380));

#else // __cplusplus

extern void _ZN8S19552C3C1Ev();
extern void _ZN8S19552C3D2Ev();
Name_Map name_map_S19552C3[] = {
  NSPAIR(_ZN8S19552C3C1Ev),
  NSPAIR(_ZN8S19552C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19552C4;
extern VTBL_ENTRY _ZTI8S19552C4[];
extern  VTBL_ENTRY _ZTV8S19552C4[];
extern Class_Descriptor cd_S19552C9;
extern VTBL_ENTRY _ZTI8S19552C9[];
extern  VTBL_ENTRY _ZTV8S19552C9[];
static Base_Class bases_S19552C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19552C4,    ABISELECT(544,292), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19552C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19552C3[];
extern void _ZN8S19552C3D1Ev();
extern void _ZN8S19552C3D0Ev();
extern void _ZN8S19552C93v12Ev();
extern void _ZN8S19552C93v13Ev();
extern void _ZN8S19552C93v14Ev();
extern void _ZN8S19552C93v15Ev();
extern void _ZN8S19552C93v16Ev();
extern void _ZN8S19552C33v17Ev();
extern void _ZN8S19552C33v18Ev();
extern void _ZN8S19552C33v19Ev();
extern void _ZN8S19552C33v20Ev();
extern void _ZN8S19552C33v21Ev();
extern void ABISELECT(_ZTv0_n24_N8S19552C3D1Ev,_ZTv0_n12_N8S19552C3D1Ev)();
extern void ABISELECT(_ZThn544_N8S19552C3D1Ev,_ZThn292_N8S19552C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19552C3D0Ev,_ZTv0_n12_N8S19552C3D0Ev)();
extern void ABISELECT(_ZThn544_N8S19552C3D0Ev,_ZThn292_N8S19552C3D0Ev)() __attribute__((weak));
extern void _ZN8S19552C42v8Ev();
extern void _ZN8S19552C42v9Ev();
extern void _ZN8S19552C43v10Ev();
extern void _ZN8S19552C43v11Ev();
static  VTBL_ENTRY vtc_S19552C3[] = {
  ABISELECT(544,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19552C3[0]),
  (VTBL_ENTRY)&_ZN8S19552C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19552C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v21Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  (VTBL_ENTRY)&(_ZTI8S19552C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C3D1Ev,_ZTv0_n12_N8S19552C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C3D0Ev,_ZTv0_n12_N8S19552C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19552C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19552C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S19552C3[];
static  VTT_ENTRY vtt_S19552C3[] = {
  {&(_ZTV8S19552C3[3]),  3,28},
  {&(_ZTV8S19552C3[22]),  22,28},
};
extern VTBL_ENTRY _ZTI8S19552C3[];
extern  VTBL_ENTRY _ZTV8S19552C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19552C3[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C3D0Ev,_ZTv0_n12_N8S19552C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19552C3D0Ev,_ZThn292_N8S19552C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C3D1Ev,_ZTv0_n12_N8S19552C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19552C3D1Ev,_ZThn292_N8S19552C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19552C3 = {  "S19552C3", // class name
  bases_S19552C3, 2,
  &(vtc_S19552C3[0]), // expected_vtbl_contents
  &(vtt_S19552C3[0]), // expected_vtt_contents
  ABISELECT(752,380), // object size
  NSPAIRA(_ZTI8S19552C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19552C3),28, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19552C3),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19552C13  {
  __tsi64 s19552c13f0;
  long double s19552c13f1;
  virtual  ~S19552C13(); // _ZN9S19552C13D1Ev
  virtual void  v22(); // _ZN9S19552C133v22Ev
  virtual void  v23(); // _ZN9S19552C133v23Ev
  virtual void  v24(); // _ZN9S19552C133v24Ev
  virtual void  v25(); // _ZN9S19552C133v25Ev
  virtual void  v26(); // _ZN9S19552C133v26Ev
  virtual void  v27(); // _ZN9S19552C133v27Ev
  S19552C13(); // tgen
};
//SIG(-1 S19552C13) C1{ vd v1 v2 v3 v4 v5 v6 FL FD}


 S19552C13 ::~S19552C13(){ note_dtor("S19552C13", this);}
void  S19552C13 ::v22(){vfunc_called(this, "_ZN9S19552C133v22Ev");}
void  S19552C13 ::v23(){vfunc_called(this, "_ZN9S19552C133v23Ev");}
void  S19552C13 ::v24(){vfunc_called(this, "_ZN9S19552C133v24Ev");}
void  S19552C13 ::v25(){vfunc_called(this, "_ZN9S19552C133v25Ev");}
void  S19552C13 ::v26(){vfunc_called(this, "_ZN9S19552C133v26Ev");}
void  S19552C13 ::v27(){vfunc_called(this, "_ZN9S19552C133v27Ev");}
S19552C13 ::S19552C13(){ note_ctor("S19552C13", this);} // tgen

static void Test_S19552C13()
{
  extern Class_Descriptor cd_S19552C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,7)];
    init_test(&cd_S19552C13, buf);
    S19552C13 *dp, &lv = *(dp=new (buf) S19552C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19552C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19552C13)");
    check_field_offset(lv, s19552c13f0, ABISELECT(8,4), "S19552C13.s19552c13f0");
    check_field_offset(lv, s19552c13f1, ABISELECT(16,12), "S19552C13.s19552c13f1");
    test_class_info(&lv, &cd_S19552C13);
    dp->~S19552C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19552C13(Test_S19552C13, "S19552C13", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S19552C13C1Ev();
extern void _ZN9S19552C13D1Ev();
Name_Map name_map_S19552C13[] = {
  NSPAIR(_ZN9S19552C13C1Ev),
  NSPAIR(_ZN9S19552C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19552C13[];
extern void _ZN9S19552C13D1Ev();
extern void _ZN9S19552C13D0Ev();
extern void _ZN9S19552C133v22Ev();
extern void _ZN9S19552C133v23Ev();
extern void _ZN9S19552C133v24Ev();
extern void _ZN9S19552C133v25Ev();
extern void _ZN9S19552C133v26Ev();
extern void _ZN9S19552C133v27Ev();
static  VTBL_ENTRY vtc_S19552C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19552C13[0]),
  (VTBL_ENTRY)&_ZN9S19552C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19552C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v22Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v23Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v24Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v25Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v26Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v27Ev,
};
extern VTBL_ENTRY _ZTI9S19552C13[];
extern  VTBL_ENTRY _ZTV9S19552C13[];
Class_Descriptor cd_S19552C13 = {  "S19552C13", // class name
  0,0,//no base classes
  &(vtc_S19552C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S19552C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19552C13),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19552C2  : S19552C3 , virtual S19552C13 {
  int s19552c2f0:32;
  __tsi64 s19552c2f1[10];
  virtual  ~S19552C2(); // _ZN8S19552C2D2Ev
  virtual void  v28(); // _ZN8S19552C23v28Ev
  virtual void  v29(); // _ZN8S19552C23v29Ev
  virtual void  v30(); // _ZN8S19552C23v30Ev
  virtual void  v31(); // _ZN8S19552C23v31Ev
  S19552C2(); // tgen
};
//SIG(-1 S19552C2) C1{ BC2{ VBC3{ vd v5 v6 v7 v8 Fl[6] FC4{ VBC5{ v59 v60 v61 v62 v63 Fp[4]} v55 v56 v57 v58 FC6{ m FC7{ v32 v33 v34 v35 v36 v37 v38 FD Fp[5]}}}} BC8{ vd v9 v10 v11 v12 v13 Fp Fi FC9{} FC10{ VBC11{ BC6 VBC7 v39 v40 v41 v42 v43 v44 v45 FL Fp} VBC12{ VBC13{ v46 v47 v48 v49 v50 Fp[4]} v51 v52 v53 v54 FC6} v25 v26 v27 v28 v29 v30 v31 Fi[2] FD[8]}} vd v14 v15 v16 v17 v18 FD Fi[2]} VBC14{ vd v19 v20 v21 v22 v23 v24 FL FD} vd v1 v2 v3 v4 Fi:32 FL[10]}


 S19552C2 ::~S19552C2(){ note_dtor("S19552C2", this);}
void  S19552C2 ::v28(){vfunc_called(this, "_ZN8S19552C23v28Ev");}
void  S19552C2 ::v29(){vfunc_called(this, "_ZN8S19552C23v29Ev");}
void  S19552C2 ::v30(){vfunc_called(this, "_ZN8S19552C23v30Ev");}
void  S19552C2 ::v31(){vfunc_called(this, "_ZN8S19552C23v31Ev");}
S19552C2 ::S19552C2(){ note_ctor("S19552C2", this);} // tgen

static void Test_S19552C2()
{
  extern Class_Descriptor cd_S19552C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(55,123)];
    init_test(&cd_S19552C2, buf);
    S19552C2 *dp, &lv = *(dp=new (buf) S19552C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(864,488), "sizeof(S19552C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19552C2)");
    check_base_class_offset(lv, (S19552C4*)(S19552C3*), ABISELECT(624,376), "S19552C2");
    check_base_class_offset(lv, (S19552C9*)(S19552C3*), 0, "S19552C2");
    check_base_class_offset(lv, (S19552C3*), 0, "S19552C2");
    check_base_class_offset(lv, (S19552C13*), ABISELECT(832,464), "S19552C2");
    set_bf_and_test(lv, s19552c2f0, ABISELECT(536,292), 0, 32, 1, "S19552C2");
    set_bf_and_test(lv, s19552c2f0, ABISELECT(536,292), 0, 32, hide_sll(1LL<<31), "S19552C2");
    check_field_offset(lv, s19552c2f1, ABISELECT(544,296), "S19552C2.s19552c2f1");
    test_class_info(&lv, &cd_S19552C2);
    dp->~S19552C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19552C2(Test_S19552C2, "S19552C2", ABISELECT(864,488));

#else // __cplusplus

extern void _ZN8S19552C2C1Ev();
extern void _ZN8S19552C2D2Ev();
Name_Map name_map_S19552C2[] = {
  NSPAIR(_ZN8S19552C2C1Ev),
  NSPAIR(_ZN8S19552C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19552C4;
extern VTBL_ENTRY _ZTI8S19552C4[];
extern  VTBL_ENTRY _ZTV8S19552C4[];
extern Class_Descriptor cd_S19552C9;
extern VTBL_ENTRY _ZTI8S19552C9[];
extern  VTBL_ENTRY _ZTV8S19552C9[];
extern Class_Descriptor cd_S19552C3;
extern VTBL_ENTRY _ZTI8S19552C3[];
extern  VTBL_ENTRY _ZTV8S19552C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19552C3[];
extern Class_Descriptor cd_S19552C13;
extern VTBL_ENTRY _ZTI9S19552C13[];
extern  VTBL_ENTRY _ZTV9S19552C13[];
static Base_Class bases_S19552C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19552C4,    ABISELECT(624,376), //bcp->offset
    20, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19552C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19552C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19552C13,    ABISELECT(832,464), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19552C2[];
extern void _ZN8S19552C2D1Ev();
extern void _ZN8S19552C2D0Ev();
extern void _ZN8S19552C93v12Ev();
extern void _ZN8S19552C93v13Ev();
extern void _ZN8S19552C93v14Ev();
extern void _ZN8S19552C93v15Ev();
extern void _ZN8S19552C93v16Ev();
extern void _ZN8S19552C33v17Ev();
extern void _ZN8S19552C33v18Ev();
extern void _ZN8S19552C33v19Ev();
extern void _ZN8S19552C33v20Ev();
extern void _ZN8S19552C33v21Ev();
extern void _ZN8S19552C23v28Ev();
extern void _ZN8S19552C23v29Ev();
extern void _ZN8S19552C23v30Ev();
extern void _ZN8S19552C23v31Ev();
extern void ABISELECT(_ZTv0_n24_N8S19552C2D1Ev,_ZTv0_n12_N8S19552C2D1Ev)();
extern void ABISELECT(_ZThn624_N8S19552C2D1Ev,_ZThn376_N8S19552C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19552C2D0Ev,_ZTv0_n12_N8S19552C2D0Ev)();
extern void ABISELECT(_ZThn624_N8S19552C2D0Ev,_ZThn376_N8S19552C2D0Ev)() __attribute__((weak));
extern void _ZN8S19552C42v8Ev();
extern void _ZN8S19552C42v9Ev();
extern void _ZN8S19552C43v10Ev();
extern void _ZN8S19552C43v11Ev();
extern void ABISELECT(_ZTv0_n24_N8S19552C2D1Ev,_ZTv0_n12_N8S19552C2D1Ev)();
extern void ABISELECT(_ZThn832_N8S19552C2D1Ev,_ZThn464_N8S19552C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19552C2D0Ev,_ZTv0_n12_N8S19552C2D0Ev)();
extern void ABISELECT(_ZThn832_N8S19552C2D0Ev,_ZThn464_N8S19552C2D0Ev)() __attribute__((weak));
extern void _ZN9S19552C133v22Ev();
extern void _ZN9S19552C133v23Ev();
extern void _ZN9S19552C133v24Ev();
extern void _ZN9S19552C133v25Ev();
extern void _ZN9S19552C133v26Ev();
extern void _ZN9S19552C133v27Ev();
static  VTBL_ENTRY vtc_S19552C2[] = {
  ABISELECT(832,464),
  ABISELECT(624,376),
  0,
  (VTBL_ENTRY)&(_ZTI8S19552C2[0]),
  (VTBL_ENTRY)&_ZN8S19552C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19552C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v28Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v29Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v30Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v31Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-624,-376),
  ABISELECT(-624,-376),
  (VTBL_ENTRY)&(_ZTI8S19552C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C2D1Ev,_ZTv0_n12_N8S19552C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C2D0Ev,_ZTv0_n12_N8S19552C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19552C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19552C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-464),
  ABISELECT(-832,-464),
  (VTBL_ENTRY)&(_ZTI8S19552C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C2D1Ev,_ZTv0_n12_N8S19552C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C2D0Ev,_ZTv0_n12_N8S19552C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19552C133v22Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v23Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v24Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v25Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v26Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v27Ev,
};
extern VTBL_ENTRY _ZTV8S19552C2[];
extern void _ZN8S19552C3D1Ev();
extern void _ZN8S19552C3D0Ev();
extern void _ZN8S19552C93v12Ev();
extern void _ZN8S19552C93v13Ev();
extern void _ZN8S19552C93v14Ev();
extern void _ZN8S19552C93v15Ev();
extern void _ZN8S19552C93v16Ev();
extern void _ZN8S19552C33v17Ev();
extern void _ZN8S19552C33v18Ev();
extern void _ZN8S19552C33v19Ev();
extern void _ZN8S19552C33v20Ev();
extern void _ZN8S19552C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S19552C3__8S19552C2[] = {
  ABISELECT(624,376),
  0,
  (VTBL_ENTRY)&(_ZTI8S19552C3[0]),
  (VTBL_ENTRY)&_ZN8S19552C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19552C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19552C3D1Ev,_ZTv0_n12_N8S19552C3D1Ev)();
extern void ABISELECT(_ZThn624_N8S19552C3D1Ev,_ZThn376_N8S19552C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19552C3D0Ev,_ZTv0_n12_N8S19552C3D0Ev)();
extern void ABISELECT(_ZThn624_N8S19552C3D0Ev,_ZThn376_N8S19552C3D0Ev)() __attribute__((weak));
extern void _ZN8S19552C42v8Ev();
extern void _ZN8S19552C42v9Ev();
extern void _ZN8S19552C43v10Ev();
extern void _ZN8S19552C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19552C4__8S19552C3__8S19552C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-624,-376),
  ABISELECT(-624,-376),
  (VTBL_ENTRY)&(_ZTI8S19552C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C3D1Ev,_ZTv0_n12_N8S19552C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C3D0Ev,_ZTv0_n12_N8S19552C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19552C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19552C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v11Ev,
};
static  VTT_ENTRY vtt_S19552C2[] = {
  {&(_ZTV8S19552C2[4]),  4,50},
  {&(_tg__ZTV8S19552C3__8S19552C2[3]),  3,15},
  {&(_tg__ZTV8S19552C4__8S19552C3__8S19552C2[7]),  7,13},
  {&(_ZTV8S19552C2[27]),  27,50},
  {&(_ZTV8S19552C2[42]),  42,50},
};
extern VTBL_ENTRY _ZTI8S19552C2[];
extern  VTBL_ENTRY _ZTV8S19552C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19552C2[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C3D0Ev,_ZTv0_n12_N8S19552C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19552C3D0Ev,_ZThn376_N8S19552C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C3D1Ev,_ZTv0_n12_N8S19552C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19552C3D1Ev,_ZThn376_N8S19552C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C2D0Ev,_ZTv0_n12_N8S19552C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19552C2D0Ev,_ZThn464_N8S19552C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19552C2D0Ev,_ZThn376_N8S19552C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C2D1Ev,_ZTv0_n12_N8S19552C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19552C2D1Ev,_ZThn464_N8S19552C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19552C2D1Ev,_ZThn376_N8S19552C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19552C2 = {  "S19552C2", // class name
  bases_S19552C2, 4,
  &(vtc_S19552C2[0]), // expected_vtbl_contents
  &(vtt_S19552C2[0]), // expected_vtt_contents
  ABISELECT(864,488), // object size
  NSPAIRA(_ZTI8S19552C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19552C2),50, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19552C2),5, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19552C14  {
  int s19552c14f0[5];
  virtual void  v32(); // _ZN9S19552C143v32Ev
  virtual void  v33(); // _ZN9S19552C143v33Ev
  virtual void  v34(); // _ZN9S19552C143v34Ev
  virtual void  v35(); // _ZN9S19552C143v35Ev
  ~S19552C14(); // tgen
  S19552C14(); // tgen
};
//SIG(-1 S19552C14) C1{ v1 v2 v3 v4 Fi[5]}


void  S19552C14 ::v32(){vfunc_called(this, "_ZN9S19552C143v32Ev");}
void  S19552C14 ::v33(){vfunc_called(this, "_ZN9S19552C143v33Ev");}
void  S19552C14 ::v34(){vfunc_called(this, "_ZN9S19552C143v34Ev");}
void  S19552C14 ::v35(){vfunc_called(this, "_ZN9S19552C143v35Ev");}
S19552C14 ::~S19552C14(){ note_dtor("S19552C14", this);} // tgen
S19552C14 ::S19552C14(){ note_ctor("S19552C14", this);} // tgen

static void Test_S19552C14()
{
  extern Class_Descriptor cd_S19552C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19552C14, buf);
    S19552C14 *dp, &lv = *(dp=new (buf) S19552C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19552C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19552C14)");
    check_field_offset(lv, s19552c14f0, ABISELECT(8,4), "S19552C14.s19552c14f0");
    test_class_info(&lv, &cd_S19552C14);
    dp->~S19552C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19552C14(Test_S19552C14, "S19552C14", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S19552C14C1Ev();
extern void _ZN9S19552C14D1Ev();
Name_Map name_map_S19552C14[] = {
  NSPAIR(_ZN9S19552C14C1Ev),
  NSPAIR(_ZN9S19552C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19552C14[];
extern void _ZN9S19552C143v32Ev();
extern void _ZN9S19552C143v33Ev();
extern void _ZN9S19552C143v34Ev();
extern void _ZN9S19552C143v35Ev();
static  VTBL_ENTRY vtc_S19552C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19552C14[0]),
  (VTBL_ENTRY)&_ZN9S19552C143v32Ev,
  (VTBL_ENTRY)&_ZN9S19552C143v33Ev,
  (VTBL_ENTRY)&_ZN9S19552C143v34Ev,
  (VTBL_ENTRY)&_ZN9S19552C143v35Ev,
};
extern VTBL_ENTRY _ZTI9S19552C14[];
extern  VTBL_ENTRY _ZTV9S19552C14[];
Class_Descriptor cd_S19552C14 = {  "S19552C14", // class name
  0,0,//no base classes
  &(vtc_S19552C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S19552C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19552C14),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  S19552C1  : virtual S19552C2 , virtual S19552C14 {
  ::S19553C15_nt s19552c1f0;
  virtual void  v1(); // _ZN8S19552C12v1Ev
  virtual void  v2(); // _ZN8S19552C12v2Ev
  virtual void  v3(); // _ZN8S19552C12v3Ev
  virtual void  v4(); // _ZN8S19552C12v4Ev
  virtual void  v5(); // _ZN8S19552C12v5Ev
  virtual void  v6(); // _ZN8S19552C12v6Ev
  virtual void  v7(); // _ZN8S19552C12v7Ev
  ~S19552C1(); // tgen
  S19552C1(); // tgen
};
//SIG(1 S19552C1) C1{ VBC2{ BC3{ VBC4{ vd v8 v9 v10 v11 Fl[6] FC5{ VBC6{ v79 v80 v81 v82 v83 Fp[4]} v75 v76 v77 v78 FC7{ m FC8{ v52 v53 v54 v55 v56 v57 v58 FD Fp[5]}}}} BC9{ vd v12 v13 v14 v15 v16 Fp Fi FC10{} FC11{ VBC12{ BC7 VBC8 v59 v60 v61 v62 v63 v64 v65 FL Fp} VBC13{ VBC14{ v66 v67 v68 v69 v70 Fp[4]} v71 v72 v73 v74 FC7} v45 v46 v47 v48 v49 v50 v51 Fi[2] FD[8]}} vd v17 v18 v19 v20 v21 FD Fi[2]} VBC15{ vd v22 v23 v24 v25 v26 v27 FL FD} vd v28 v29 v30 v31 Fi:32 FL[10]} VBC16{ v32 v33 v34 v35 Fi[5]} v1 v2 v3 v4 v5 v6 v7 FC17{ v36 v37 v38 v39 v40 v41 v42 v43 v44}}


void  S19552C1 ::v1(){vfunc_called(this, "_ZN8S19552C12v1Ev");}
void  S19552C1 ::v2(){vfunc_called(this, "_ZN8S19552C12v2Ev");}
void  S19552C1 ::v3(){vfunc_called(this, "_ZN8S19552C12v3Ev");}
void  S19552C1 ::v4(){vfunc_called(this, "_ZN8S19552C12v4Ev");}
void  S19552C1 ::v5(){vfunc_called(this, "_ZN8S19552C12v5Ev");}
void  S19552C1 ::v6(){vfunc_called(this, "_ZN8S19552C12v6Ev");}
void  S19552C1 ::v7(){vfunc_called(this, "_ZN8S19552C12v7Ev");}
S19552C1 ::~S19552C1(){ note_dtor("S19552C1", this);} // tgen
S19552C1 ::S19552C1(){ note_ctor("S19552C1", this);} // tgen

static void Test_S19552C1()
{
  extern Class_Descriptor cd_S19552C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,131)];
    init_test(&cd_S19552C1, buf);
    S19552C1 *dp, &lv = *(dp=new (buf) S19552C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,520), "sizeof(S19552C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19552C1)");
    check_base_class_offset(lv, (S19552C4*)(S19552C3*)(S19552C2*), ABISELECT(640,384), "S19552C1");
    check_base_class_offset(lv, (S19552C9*)(S19552C3*)(S19552C2*), ABISELECT(16,8), "S19552C1");
    check_base_class_offset(lv, (S19552C3*)(S19552C2*), ABISELECT(16,8), "S19552C1");
    check_base_class_offset(lv, (S19552C13*)(S19552C2*), ABISELECT(848,472), "S19552C1");
    check_base_class_offset(lv, (S19552C2*), ABISELECT(16,8), "S19552C1");
    check_base_class_offset(lv, (S19552C14*), ABISELECT(880,496), "S19552C1");
    check_field_offset(lv, s19552c1f0, ABISELECT(8,4), "S19552C1.s19552c1f0");
    test_class_info(&lv, &cd_S19552C1);
    dp->~S19552C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19552C1(Test_S19552C1, "S19552C1", ABISELECT(912,520));

#else // __cplusplus

extern void _ZN8S19552C1C1Ev();
extern void _ZN8S19552C1D1Ev();
Name_Map name_map_S19552C1[] = {
  NSPAIR(_ZN8S19552C1C1Ev),
  NSPAIR(_ZN8S19552C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19552C4;
extern VTBL_ENTRY _ZTI8S19552C4[];
extern  VTBL_ENTRY _ZTV8S19552C4[];
extern Class_Descriptor cd_S19552C9;
extern VTBL_ENTRY _ZTI8S19552C9[];
extern  VTBL_ENTRY _ZTV8S19552C9[];
extern Class_Descriptor cd_S19552C3;
extern VTBL_ENTRY _ZTI8S19552C3[];
extern  VTBL_ENTRY _ZTV8S19552C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19552C3[];
extern Class_Descriptor cd_S19552C13;
extern VTBL_ENTRY _ZTI9S19552C13[];
extern  VTBL_ENTRY _ZTV9S19552C13[];
extern Class_Descriptor cd_S19552C2;
extern VTBL_ENTRY _ZTI8S19552C2[];
extern  VTBL_ENTRY _ZTV8S19552C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19552C2[];
extern Class_Descriptor cd_S19552C14;
extern VTBL_ENTRY _ZTI9S19552C14[];
extern  VTBL_ENTRY _ZTV9S19552C14[];
static Base_Class bases_S19552C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19552C4,    ABISELECT(640,384), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19552C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19552C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19552C13,    ABISELECT(848,472), //bcp->offset
    63, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19552C2,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19552C14,    ABISELECT(880,496), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19552C1[];
extern void _ZN8S19552C12v1Ev();
extern void _ZN8S19552C12v2Ev();
extern void _ZN8S19552C12v3Ev();
extern void _ZN8S19552C12v4Ev();
extern void _ZN8S19552C12v5Ev();
extern void _ZN8S19552C12v6Ev();
extern void _ZN8S19552C12v7Ev();
extern void _ZN8S19552C1D1Ev();
extern void _ZN8S19552C1D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S19552C1D1Ev,_ZTv0_n20_N8S19552C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19552C1D1Ev,_ZThn8_N8S19552C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19552C1D0Ev,_ZTv0_n20_N8S19552C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19552C1D0Ev,_ZThn8_N8S19552C1D0Ev)() __attribute__((weak));
extern void _ZN8S19552C93v12Ev();
extern void _ZN8S19552C93v13Ev();
extern void _ZN8S19552C93v14Ev();
extern void _ZN8S19552C93v15Ev();
extern void _ZN8S19552C93v16Ev();
extern void _ZN8S19552C33v17Ev();
extern void _ZN8S19552C33v18Ev();
extern void _ZN8S19552C33v19Ev();
extern void _ZN8S19552C33v20Ev();
extern void _ZN8S19552C33v21Ev();
extern void _ZN8S19552C23v28Ev();
extern void _ZN8S19552C23v29Ev();
extern void _ZN8S19552C23v30Ev();
extern void _ZN8S19552C23v31Ev();
extern void ABISELECT(_ZTv0_n24_N8S19552C1D1Ev,_ZTv0_n12_N8S19552C1D1Ev)();
extern void ABISELECT(_ZThn640_N8S19552C1D1Ev,_ZThn384_N8S19552C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19552C1D0Ev,_ZTv0_n12_N8S19552C1D0Ev)();
extern void ABISELECT(_ZThn640_N8S19552C1D0Ev,_ZThn384_N8S19552C1D0Ev)() __attribute__((weak));
extern void _ZN8S19552C42v8Ev();
extern void _ZN8S19552C42v9Ev();
extern void _ZN8S19552C43v10Ev();
extern void _ZN8S19552C43v11Ev();
extern void ABISELECT(_ZTv0_n24_N8S19552C1D1Ev,_ZTv0_n12_N8S19552C1D1Ev)();
extern void ABISELECT(_ZThn848_N8S19552C1D1Ev,_ZThn472_N8S19552C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19552C1D0Ev,_ZTv0_n12_N8S19552C1D0Ev)();
extern void ABISELECT(_ZThn848_N8S19552C1D0Ev,_ZThn472_N8S19552C1D0Ev)() __attribute__((weak));
extern void _ZN9S19552C133v22Ev();
extern void _ZN9S19552C133v23Ev();
extern void _ZN9S19552C133v24Ev();
extern void _ZN9S19552C133v25Ev();
extern void _ZN9S19552C133v26Ev();
extern void _ZN9S19552C133v27Ev();
extern void _ZN9S19552C143v32Ev();
extern void _ZN9S19552C143v33Ev();
extern void _ZN9S19552C143v34Ev();
extern void _ZN9S19552C143v35Ev();
static  VTBL_ENTRY vtc_S19552C1[] = {
  ABISELECT(880,496),
  ABISELECT(848,472),
  ABISELECT(640,384),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19552C1[0]),
  (VTBL_ENTRY)&_ZN8S19552C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19552C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19552C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19552C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19552C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19552C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19552C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19552C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19552C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(832,464),
  ABISELECT(624,376),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19552C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19552C1D1Ev,_ZTv0_n20_N8S19552C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19552C1D0Ev,_ZTv0_n20_N8S19552C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19552C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v28Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v29Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v30Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v31Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-384),
  ABISELECT(-640,-384),
  (VTBL_ENTRY)&(_ZTI8S19552C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C1D1Ev,_ZTv0_n12_N8S19552C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C1D0Ev,_ZTv0_n12_N8S19552C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19552C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19552C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-848,-472),
  ABISELECT(-848,-472),
  (VTBL_ENTRY)&(_ZTI8S19552C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C1D1Ev,_ZTv0_n12_N8S19552C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C1D0Ev,_ZTv0_n12_N8S19552C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19552C133v22Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v23Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v24Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v25Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v26Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v27Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-880,-496),
  (VTBL_ENTRY)&(_ZTI8S19552C1[0]),
  (VTBL_ENTRY)&_ZN9S19552C143v32Ev,
  (VTBL_ENTRY)&_ZN9S19552C143v33Ev,
  (VTBL_ENTRY)&_ZN9S19552C143v34Ev,
  (VTBL_ENTRY)&_ZN9S19552C143v35Ev,
};
extern VTBL_ENTRY _ZTV8S19552C1[];
extern void _ZN8S19552C2D1Ev();
extern void _ZN8S19552C2D0Ev();
extern void _ZN8S19552C93v12Ev();
extern void _ZN8S19552C93v13Ev();
extern void _ZN8S19552C93v14Ev();
extern void _ZN8S19552C93v15Ev();
extern void _ZN8S19552C93v16Ev();
extern void _ZN8S19552C33v17Ev();
extern void _ZN8S19552C33v18Ev();
extern void _ZN8S19552C33v19Ev();
extern void _ZN8S19552C33v20Ev();
extern void _ZN8S19552C33v21Ev();
extern void _ZN8S19552C23v28Ev();
extern void _ZN8S19552C23v29Ev();
extern void _ZN8S19552C23v30Ev();
extern void _ZN8S19552C23v31Ev();
static  VTBL_ENTRY _tg__ZTV8S19552C2__8S19552C1[] = {
  ABISELECT(832,464),
  ABISELECT(624,376),
  0,
  (VTBL_ENTRY)&(_ZTI8S19552C2[0]),
  (VTBL_ENTRY)&_ZN8S19552C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19552C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v28Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v29Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v30Ev,
  (VTBL_ENTRY)&_ZN8S19552C23v31Ev,
};
extern void _ZN8S19552C3D1Ev();
extern void _ZN8S19552C3D0Ev();
extern void _ZN8S19552C93v12Ev();
extern void _ZN8S19552C93v13Ev();
extern void _ZN8S19552C93v14Ev();
extern void _ZN8S19552C93v15Ev();
extern void _ZN8S19552C93v16Ev();
extern void _ZN8S19552C33v17Ev();
extern void _ZN8S19552C33v18Ev();
extern void _ZN8S19552C33v19Ev();
extern void _ZN8S19552C33v20Ev();
extern void _ZN8S19552C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S19552C38S19552C2__8S19552C1[] = {
  ABISELECT(624,376),
  0,
  (VTBL_ENTRY)&(_ZTI8S19552C3[0]),
  (VTBL_ENTRY)&_ZN8S19552C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19552C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v12Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v15Ev,
  (VTBL_ENTRY)&_ZN8S19552C93v16Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v17Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19552C33v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19552C3D1Ev,_ZTv0_n12_N8S19552C3D1Ev)();
extern void ABISELECT(_ZThn624_N8S19552C3D1Ev,_ZThn376_N8S19552C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19552C3D0Ev,_ZTv0_n12_N8S19552C3D0Ev)();
extern void ABISELECT(_ZThn624_N8S19552C3D0Ev,_ZThn376_N8S19552C3D0Ev)() __attribute__((weak));
extern void _ZN8S19552C42v8Ev();
extern void _ZN8S19552C42v9Ev();
extern void _ZN8S19552C43v10Ev();
extern void _ZN8S19552C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19552C4__8S19552C38S19552C2__8S19552C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-624,-376),
  ABISELECT(-624,-376),
  (VTBL_ENTRY)&(_ZTI8S19552C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C3D1Ev,_ZTv0_n12_N8S19552C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C3D0Ev,_ZTv0_n12_N8S19552C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19552C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19552C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v11Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19552C2D1Ev,_ZTv0_n12_N8S19552C2D1Ev)();
extern void ABISELECT(_ZThn624_N8S19552C2D1Ev,_ZThn376_N8S19552C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19552C2D0Ev,_ZTv0_n12_N8S19552C2D0Ev)();
extern void ABISELECT(_ZThn624_N8S19552C2D0Ev,_ZThn376_N8S19552C2D0Ev)() __attribute__((weak));
extern void _ZN8S19552C42v8Ev();
extern void _ZN8S19552C42v9Ev();
extern void _ZN8S19552C43v10Ev();
extern void _ZN8S19552C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19552C4__8S19552C2__8S19552C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-624,-376),
  ABISELECT(-624,-376),
  (VTBL_ENTRY)&(_ZTI8S19552C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C2D1Ev,_ZTv0_n12_N8S19552C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C2D0Ev,_ZTv0_n12_N8S19552C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19552C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19552C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19552C43v11Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19552C2D1Ev,_ZTv0_n12_N8S19552C2D1Ev)();
extern void ABISELECT(_ZThn832_N8S19552C2D1Ev,_ZThn464_N8S19552C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19552C2D0Ev,_ZTv0_n12_N8S19552C2D0Ev)();
extern void ABISELECT(_ZThn832_N8S19552C2D0Ev,_ZThn464_N8S19552C2D0Ev)() __attribute__((weak));
extern void _ZN9S19552C133v22Ev();
extern void _ZN9S19552C133v23Ev();
extern void _ZN9S19552C133v24Ev();
extern void _ZN9S19552C133v25Ev();
extern void _ZN9S19552C133v26Ev();
extern void _ZN9S19552C133v27Ev();
static  VTBL_ENTRY _tg__ZTV9S19552C13__8S19552C2__8S19552C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-464),
  ABISELECT(-832,-464),
  (VTBL_ENTRY)&(_ZTI8S19552C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C2D1Ev,_ZTv0_n12_N8S19552C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19552C2D0Ev,_ZTv0_n12_N8S19552C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19552C133v22Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v23Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v24Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v25Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v26Ev,
  (VTBL_ENTRY)&_ZN9S19552C133v27Ev,
};
static  VTT_ENTRY vtt_S19552C1[] = {
  {&(_ZTV8S19552C1[6]),  6,90},
  {&(_ZTV8S19552C1[34]),  34,90},
  {&(_ZTV8S19552C1[57]),  57,90},
  {&(_ZTV8S19552C1[72]),  72,90},
  {&(_ZTV8S19552C1[86]),  86,90},
  {&(_tg__ZTV8S19552C2__8S19552C1[4]),  4,20},
  {&(_tg__ZTV8S19552C38S19552C2__8S19552C1[3]),  3,15},
  {&(_tg__ZTV8S19552C4__8S19552C38S19552C2__8S19552C1[7]),  7,13},
  {&(_tg__ZTV8S19552C4__8S19552C2__8S19552C1[7]),  7,13},
  {&(_tg__ZTV9S19552C13__8S19552C2__8S19552C1[9]),  9,17},
};
extern VTBL_ENTRY _ZTI8S19552C1[];
extern  VTBL_ENTRY _ZTV8S19552C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19552C1[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C2D0Ev,_ZTv0_n12_N8S19552C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19552C2D0Ev,_ZThn464_N8S19552C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19552C2D0Ev,_ZThn376_N8S19552C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C2D1Ev,_ZTv0_n12_N8S19552C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19552C2D1Ev,_ZThn464_N8S19552C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19552C2D1Ev,_ZThn376_N8S19552C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C3D0Ev,_ZTv0_n12_N8S19552C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19552C3D0Ev,_ZThn376_N8S19552C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C3D1Ev,_ZTv0_n12_N8S19552C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19552C3D1Ev,_ZThn376_N8S19552C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C1D0Ev,_ZTv0_n12_N8S19552C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19552C1D0Ev,_ZThn472_N8S19552C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19552C1D0Ev,_ZThn384_N8S19552C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19552C1D1Ev,_ZTv0_n12_N8S19552C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19552C1D1Ev,_ZThn472_N8S19552C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19552C1D1Ev,_ZThn384_N8S19552C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19552C1D0Ev,_ZTv0_n20_N8S19552C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19552C1D0Ev,_ZThn8_N8S19552C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19552C1D1Ev,_ZTv0_n20_N8S19552C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19552C1D1Ev,_ZThn8_N8S19552C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19552C1 = {  "S19552C1", // class name
  bases_S19552C1, 6,
  &(vtc_S19552C1[0]), // expected_vtbl_contents
  &(vtt_S19552C1[0]), // expected_vtt_contents
  ABISELECT(912,520), // object size
  NSPAIRA(_ZTI8S19552C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19552C1),90, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19552C1),10, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C4_nt  {
  ::S2213C20_nt s2342c4f0;
  int s2342c4f1[2];
  char s2342c4f2;
  virtual  ~S2342C4_nt(); // _ZN10S2342C4_ntD1Ev
  virtual void  v5(); // _ZN10S2342C4_nt2v5Ev
  virtual void  v6(); // _ZN10S2342C4_nt2v6Ev
  virtual void  v7(); // _ZN10S2342C4_nt2v7Ev
  S2342C4_nt(); // tgen
};
//SIG(-1 S2342C4_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2342C4_nt ::~S2342C4_nt(){ note_dtor("S2342C4_nt", this);}
void  S2342C4_nt ::v5(){vfunc_called(this, "_ZN10S2342C4_nt2v5Ev");}
void  S2342C4_nt ::v6(){vfunc_called(this, "_ZN10S2342C4_nt2v6Ev");}
void  S2342C4_nt ::v7(){vfunc_called(this, "_ZN10S2342C4_nt2v7Ev");}
S2342C4_nt ::S2342C4_nt(){ note_ctor("S2342C4_nt", this);} // tgen

//skip512 S2342C4_nt

#else // __cplusplus

extern void _ZN10S2342C4_ntC1Ev();
extern void _ZN10S2342C4_ntD1Ev();
Name_Map name_map_S2342C4_nt[] = {
  NSPAIR(_ZN10S2342C4_ntC1Ev),
  NSPAIR(_ZN10S2342C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2342C4_nt[];
extern void _ZN10S2342C4_ntD1Ev();
extern void _ZN10S2342C4_ntD0Ev();
extern void _ZN10S2342C4_nt2v5Ev();
extern void _ZN10S2342C4_nt2v6Ev();
extern void _ZN10S2342C4_nt2v7Ev();
static  VTBL_ENTRY vtc_S2342C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2342C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2342C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S2342C4_nt[];
VTBL_ENTRY *P__ZTI10S2342C4_nt = _ZTI10S2342C4_nt; 
extern  VTBL_ENTRY _ZTV10S2342C4_nt[];
Class_Descriptor cd_S2342C4_nt = {  "S2342C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2342C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S2342C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2342C4_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  S2342C7_nt  {
  virtual  ~S2342C7_nt(); // _ZN10S2342C7_ntD1Ev
  virtual void  v8(); // _ZN10S2342C7_nt2v8Ev
  virtual void  v9(); // _ZN10S2342C7_nt2v9Ev
  virtual void  v10(); // _ZN10S2342C7_nt3v10Ev
  S2342C7_nt(); // tgen
};
//SIG(-1 S2342C7_nt) C1{ vd v1 v2 v3}


 S2342C7_nt ::~S2342C7_nt(){ note_dtor("S2342C7_nt", this);}
void  S2342C7_nt ::v8(){vfunc_called(this, "_ZN10S2342C7_nt2v8Ev");}
void  S2342C7_nt ::v9(){vfunc_called(this, "_ZN10S2342C7_nt2v9Ev");}
void  S2342C7_nt ::v10(){vfunc_called(this, "_ZN10S2342C7_nt3v10Ev");}
S2342C7_nt ::S2342C7_nt(){ note_ctor("S2342C7_nt", this);} // tgen

//skip512 S2342C7_nt

#else // __cplusplus

extern void _ZN10S2342C7_ntC1Ev();
extern void _ZN10S2342C7_ntD1Ev();
Name_Map name_map_S2342C7_nt[] = {
  NSPAIR(_ZN10S2342C7_ntC1Ev),
  NSPAIR(_ZN10S2342C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2342C7_nt[];
extern void _ZN10S2342C7_ntD1Ev();
extern void _ZN10S2342C7_ntD0Ev();
extern void _ZN10S2342C7_nt2v8Ev();
extern void _ZN10S2342C7_nt2v9Ev();
extern void _ZN10S2342C7_nt3v10Ev();
static  VTBL_ENTRY vtc_S2342C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2342C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S2342C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2342C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2342C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2342C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2342C7_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S2342C7_nt[];
VTBL_ENTRY *P__ZTI10S2342C7_nt = _ZTI10S2342C7_nt; 
extern  VTBL_ENTRY _ZTV10S2342C7_nt[];
Class_Descriptor cd_S2342C7_nt = {  "S2342C7_nt", // class name
  0,0,//no base classes
  &(vtc_S2342C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S2342C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2342C7_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  S2342C3_nt  : S2342C4_nt , S2342C7_nt {
  void *s2342c3f0;
  char s2342c3f1;
  int s2342c3f2;
  virtual  ~S2342C3_nt(); // _ZN10S2342C3_ntD1Ev
  virtual void  v11(); // _ZN10S2342C3_nt3v11Ev
  virtual void  v12(); // _ZN10S2342C3_nt3v12Ev
  virtual void  v13(); // _ZN10S2342C3_nt3v13Ev
  virtual void  v14(); // _ZN10S2342C3_nt3v14Ev
  virtual void  v15(); // _ZN10S2342C3_nt3v15Ev
  virtual void  v16(); // _ZN10S2342C3_nt3v16Ev
  virtual void  v17(); // _ZN10S2342C3_nt3v17Ev
  virtual void  v18(); // _ZN10S2342C3_nt3v18Ev
  virtual void  v19(); // _ZN10S2342C3_nt3v19Ev
  virtual void  v20(); // _ZN10S2342C3_nt3v20Ev
  S2342C3_nt(); // tgen
};
//SIG(-1 S2342C3_nt) C1{ BC2{ vd v11 v12 v13 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ vd v14 v15 v16} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fc Fi}


 S2342C3_nt ::~S2342C3_nt(){ note_dtor("S2342C3_nt", this);}
void  S2342C3_nt ::v11(){vfunc_called(this, "_ZN10S2342C3_nt3v11Ev");}
void  S2342C3_nt ::v12(){vfunc_called(this, "_ZN10S2342C3_nt3v12Ev");}
void  S2342C3_nt ::v13(){vfunc_called(this, "_ZN10S2342C3_nt3v13Ev");}
void  S2342C3_nt ::v14(){vfunc_called(this, "_ZN10S2342C3_nt3v14Ev");}
void  S2342C3_nt ::v15(){vfunc_called(this, "_ZN10S2342C3_nt3v15Ev");}
void  S2342C3_nt ::v16(){vfunc_called(this, "_ZN10S2342C3_nt3v16Ev");}
void  S2342C3_nt ::v17(){vfunc_called(this, "_ZN10S2342C3_nt3v17Ev");}
void  S2342C3_nt ::v18(){vfunc_called(this, "_ZN10S2342C3_nt3v18Ev");}
void  S2342C3_nt ::v19(){vfunc_called(this, "_ZN10S2342C3_nt3v19Ev");}
void  S2342C3_nt ::v20(){vfunc_called(this, "_ZN10S2342C3_nt3v20Ev");}
S2342C3_nt ::S2342C3_nt(){ note_ctor("S2342C3_nt", this);} // tgen

//skip512 S2342C3_nt

#else // __cplusplus

extern void _ZN10S2342C3_ntC1Ev();
extern void _ZN10S2342C3_ntD1Ev();
Name_Map name_map_S2342C3_nt[] = {
  NSPAIR(_ZN10S2342C3_ntC1Ev),
  NSPAIR(_ZN10S2342C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2342C4_nt;
extern VTBL_ENTRY _ZTI10S2342C4_nt[];
extern  VTBL_ENTRY _ZTV10S2342C4_nt[];
extern Class_Descriptor cd_S2342C7_nt;
extern VTBL_ENTRY _ZTI10S2342C7_nt[];
extern  VTBL_ENTRY _ZTV10S2342C7_nt[];
static Base_Class bases_S2342C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2342C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2342C7_nt,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2342C3_nt[];
extern void _ZN10S2342C3_ntD1Ev();
extern void _ZN10S2342C3_ntD0Ev();
extern void _ZN10S2342C4_nt2v5Ev();
extern void _ZN10S2342C4_nt2v6Ev();
extern void _ZN10S2342C4_nt2v7Ev();
extern void _ZN10S2342C3_nt3v11Ev();
extern void _ZN10S2342C3_nt3v12Ev();
extern void _ZN10S2342C3_nt3v13Ev();
extern void _ZN10S2342C3_nt3v14Ev();
extern void _ZN10S2342C3_nt3v15Ev();
extern void _ZN10S2342C3_nt3v16Ev();
extern void _ZN10S2342C3_nt3v17Ev();
extern void _ZN10S2342C3_nt3v18Ev();
extern void _ZN10S2342C3_nt3v19Ev();
extern void _ZN10S2342C3_nt3v20Ev();
extern void ABISELECT(_ZThn40_N10S2342C3_ntD1Ev,_ZThn28_N10S2342C3_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2342C3_ntD0Ev,_ZThn28_N10S2342C3_ntD0Ev)();
extern void _ZN10S2342C7_nt2v8Ev();
extern void _ZN10S2342C7_nt2v9Ev();
extern void _ZN10S2342C7_nt3v10Ev();
static  VTBL_ENTRY vtc_S2342C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2342C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S2342C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v20Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI10S2342C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2342C3_ntD1Ev,_ZThn28_N10S2342C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2342C3_ntD0Ev,_ZThn28_N10S2342C3_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2342C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2342C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2342C7_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S2342C3_nt[];
VTBL_ENTRY *P__ZTI10S2342C3_nt = _ZTI10S2342C3_nt; 
extern  VTBL_ENTRY _ZTV10S2342C3_nt[];
Class_Descriptor cd_S2342C3_nt = {  "S2342C3_nt", // class name
  bases_S2342C3_nt, 2,
  &(vtc_S2342C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI10S2342C3_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S2342C3_nt),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C10  {
  virtual  ~S2342C10(); // _ZN8S2342C10D1Ev
  virtual void  v21(); // _ZN8S2342C103v21Ev
  virtual void  v22(); // _ZN8S2342C103v22Ev
  virtual void  v23(); // _ZN8S2342C103v23Ev
  S2342C10(); // tgen
};
//SIG(-1 S2342C10) C1{ vd v1 v2 v3}


 S2342C10 ::~S2342C10(){ note_dtor("S2342C10", this);}
void  S2342C10 ::v21(){vfunc_called(this, "_ZN8S2342C103v21Ev");}
void  S2342C10 ::v22(){vfunc_called(this, "_ZN8S2342C103v22Ev");}
void  S2342C10 ::v23(){vfunc_called(this, "_ZN8S2342C103v23Ev");}
S2342C10 ::S2342C10(){ note_ctor("S2342C10", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S2342C10C1Ev();
extern void _ZN8S2342C10D1Ev();
Name_Map name_map_S2342C10[] = {
  NSPAIR(_ZN8S2342C10C1Ev),
  NSPAIR(_ZN8S2342C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S2342C10[];
extern void _ZN8S2342C10D1Ev();
extern void _ZN8S2342C10D0Ev();
extern void _ZN8S2342C103v21Ev();
extern void _ZN8S2342C103v22Ev();
extern void _ZN8S2342C103v23Ev();
static  VTBL_ENTRY vtc_S2342C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S2342C10[0]),
  (VTBL_ENTRY)&_ZN8S2342C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2342C10D0Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v23Ev,
};
extern VTBL_ENTRY _ZTI8S2342C10[];
extern  VTBL_ENTRY _ZTV8S2342C10[];
Class_Descriptor cd_S2342C10 = {  "S2342C10", // class name
  0,0,//no base classes
  &(vtc_S2342C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S2342C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S2342C10),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  S2342C14_nt  {
  long s2342c14f0[4];
};
//SIG(-1 S2342C14_nt) C1{ Fl[4]}



//skip512 S2342C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C13_nt  {
  ::S2342C14_nt s2342c13f0;
  void  mf2342c13(); // _ZN11S2342C13_nt9mf2342c13Ev
};
//SIG(-1 S2342C13_nt) C1{ m FC2{ Fl[4]}}


void  S2342C13_nt ::mf2342c13(){}

//skip512 S2342C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C9_nt  : S2342C10 {
  ::S2213C37 s2342c9f0;
  ::S2342C13_nt s2342c9f1;
  char s2342c9f2;
  virtual  ~S2342C9_nt(); // _ZN10S2342C9_ntD1Ev
  virtual void  v24(); // _ZN10S2342C9_nt3v24Ev
  virtual void  v25(); // _ZN10S2342C9_nt3v25Ev
  virtual void  v26(); // _ZN10S2342C9_nt3v26Ev
  S2342C9_nt(); // tgen
};
//SIG(-1 S2342C9_nt) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FC6{ Fl[4]}} Fc}


 S2342C9_nt ::~S2342C9_nt(){ note_dtor("S2342C9_nt", this);}
void  S2342C9_nt ::v24(){vfunc_called(this, "_ZN10S2342C9_nt3v24Ev");}
void  S2342C9_nt ::v25(){vfunc_called(this, "_ZN10S2342C9_nt3v25Ev");}
void  S2342C9_nt ::v26(){vfunc_called(this, "_ZN10S2342C9_nt3v26Ev");}
S2342C9_nt ::S2342C9_nt(){ note_ctor("S2342C9_nt", this);} // tgen

//skip512 S2342C9_nt

#else // __cplusplus

extern void _ZN10S2342C9_ntC1Ev();
extern void _ZN10S2342C9_ntD1Ev();
Name_Map name_map_S2342C9_nt[] = {
  NSPAIR(_ZN10S2342C9_ntC1Ev),
  NSPAIR(_ZN10S2342C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2342C10;
extern VTBL_ENTRY _ZTI8S2342C10[];
extern  VTBL_ENTRY _ZTV8S2342C10[];
static Base_Class bases_S2342C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2342C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2342C9_nt[];
extern void _ZN10S2342C9_ntD1Ev();
extern void _ZN10S2342C9_ntD0Ev();
extern void _ZN8S2342C103v21Ev();
extern void _ZN8S2342C103v22Ev();
extern void _ZN8S2342C103v23Ev();
extern void _ZN10S2342C9_nt3v24Ev();
extern void _ZN10S2342C9_nt3v25Ev();
extern void _ZN10S2342C9_nt3v26Ev();
static  VTBL_ENTRY vtc_S2342C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2342C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2342C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI10S2342C9_nt[];
VTBL_ENTRY *P__ZTI10S2342C9_nt = _ZTI10S2342C9_nt; 
extern  VTBL_ENTRY _ZTV10S2342C9_nt[];
Class_Descriptor cd_S2342C9_nt = {  "S2342C9_nt", // class name
  bases_S2342C9_nt, 1,
  &(vtc_S2342C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI10S2342C9_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2342C9_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C8_nt  : S2342C9_nt {
  virtual  ~S2342C8_nt(); // _ZN10S2342C8_ntD1Ev
  virtual void  v27(); // _ZN10S2342C8_nt3v27Ev
  virtual void  v28(); // _ZN10S2342C8_nt3v28Ev
  virtual void  v29(); // _ZN10S2342C8_nt3v29Ev
  virtual void  v30(); // _ZN10S2342C8_nt3v30Ev
  S2342C8_nt(); // tgen
};
//SIG(-1 S2342C8_nt) C1{ BC2{ BC3{ vd v5 v6 v7} vd v8 v9 v10 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ Fl[4]}} Fc} vd v1 v2 v3 v4}


 S2342C8_nt ::~S2342C8_nt(){ note_dtor("S2342C8_nt", this);}
void  S2342C8_nt ::v27(){vfunc_called(this, "_ZN10S2342C8_nt3v27Ev");}
void  S2342C8_nt ::v28(){vfunc_called(this, "_ZN10S2342C8_nt3v28Ev");}
void  S2342C8_nt ::v29(){vfunc_called(this, "_ZN10S2342C8_nt3v29Ev");}
void  S2342C8_nt ::v30(){vfunc_called(this, "_ZN10S2342C8_nt3v30Ev");}
S2342C8_nt ::S2342C8_nt(){ note_ctor("S2342C8_nt", this);} // tgen

//skip512 S2342C8_nt

#else // __cplusplus

extern void _ZN10S2342C8_ntC1Ev();
extern void _ZN10S2342C8_ntD1Ev();
Name_Map name_map_S2342C8_nt[] = {
  NSPAIR(_ZN10S2342C8_ntC1Ev),
  NSPAIR(_ZN10S2342C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2342C10;
extern VTBL_ENTRY _ZTI8S2342C10[];
extern  VTBL_ENTRY _ZTV8S2342C10[];
extern Class_Descriptor cd_S2342C9_nt;
extern VTBL_ENTRY _ZTI10S2342C9_nt[];
extern  VTBL_ENTRY _ZTV10S2342C9_nt[];
static Base_Class bases_S2342C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2342C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2342C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S2342C8_nt[];
extern void _ZN10S2342C8_ntD1Ev();
extern void _ZN10S2342C8_ntD0Ev();
extern void _ZN8S2342C103v21Ev();
extern void _ZN8S2342C103v22Ev();
extern void _ZN8S2342C103v23Ev();
extern void _ZN10S2342C9_nt3v24Ev();
extern void _ZN10S2342C9_nt3v25Ev();
extern void _ZN10S2342C9_nt3v26Ev();
extern void _ZN10S2342C8_nt3v27Ev();
extern void _ZN10S2342C8_nt3v28Ev();
extern void _ZN10S2342C8_nt3v29Ev();
extern void _ZN10S2342C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2342C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2342C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2342C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S2342C8_nt[];
VTBL_ENTRY *P__ZTI10S2342C8_nt = _ZTI10S2342C8_nt; 
extern  VTBL_ENTRY _ZTV10S2342C8_nt[];
Class_Descriptor cd_S2342C8_nt = {  "S2342C8_nt", // class name
  bases_S2342C8_nt, 2,
  &(vtc_S2342C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI10S2342C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2342C8_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C2_nt  : S2342C3_nt , S2342C8_nt {
  int s2342c2f0[3];
  char s2342c2f1;
  ::S2213C25 s2342c2f2;
  virtual  ~S2342C2_nt(); // _ZN10S2342C2_ntD1Ev
  virtual void  v31(); // _ZN10S2342C2_nt3v31Ev
  virtual void  v32(); // _ZN10S2342C2_nt3v32Ev
  virtual void  v33(); // _ZN10S2342C2_nt3v33Ev
  virtual void  v34(); // _ZN10S2342C2_nt3v34Ev
  virtual void  v35(); // _ZN10S2342C2_nt3v35Ev
  virtual void  v36(); // _ZN10S2342C2_nt3v36Ev
  S2342C2_nt(); // tgen
};
//SIG(-1 S2342C2_nt) C1{ BC2{ BC3{ vd v7 v8 v9 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} BC6{ vd v10 v11 v12} vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp Fc Fi} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 FC10{ m Fp Fi[2] FC11{ m}} FC12{ m FC13{ Fl[4]}} Fc} vd v29 v30 v31 v32} vd v1 v2 v3 v4 v5 v6 Fi[3] Fc FC14{ BC15{ m Fp Fi FC16{ m} FC16}}}


 S2342C2_nt ::~S2342C2_nt(){ note_dtor("S2342C2_nt", this);}
void  S2342C2_nt ::v31(){vfunc_called(this, "_ZN10S2342C2_nt3v31Ev");}
void  S2342C2_nt ::v32(){vfunc_called(this, "_ZN10S2342C2_nt3v32Ev");}
void  S2342C2_nt ::v33(){vfunc_called(this, "_ZN10S2342C2_nt3v33Ev");}
void  S2342C2_nt ::v34(){vfunc_called(this, "_ZN10S2342C2_nt3v34Ev");}
void  S2342C2_nt ::v35(){vfunc_called(this, "_ZN10S2342C2_nt3v35Ev");}
void  S2342C2_nt ::v36(){vfunc_called(this, "_ZN10S2342C2_nt3v36Ev");}
S2342C2_nt ::S2342C2_nt(){ note_ctor("S2342C2_nt", this);} // tgen

//skip512 S2342C2_nt

#else // __cplusplus

extern void _ZN10S2342C2_ntC1Ev();
extern void _ZN10S2342C2_ntD1Ev();
Name_Map name_map_S2342C2_nt[] = {
  NSPAIR(_ZN10S2342C2_ntC1Ev),
  NSPAIR(_ZN10S2342C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2342C4_nt;
extern VTBL_ENTRY _ZTI10S2342C4_nt[];
extern  VTBL_ENTRY _ZTV10S2342C4_nt[];
extern Class_Descriptor cd_S2342C7_nt;
extern VTBL_ENTRY _ZTI10S2342C7_nt[];
extern  VTBL_ENTRY _ZTV10S2342C7_nt[];
extern Class_Descriptor cd_S2342C3_nt;
extern VTBL_ENTRY _ZTI10S2342C3_nt[];
extern  VTBL_ENTRY _ZTV10S2342C3_nt[];
extern Class_Descriptor cd_S2342C10;
extern VTBL_ENTRY _ZTI8S2342C10[];
extern  VTBL_ENTRY _ZTV8S2342C10[];
extern Class_Descriptor cd_S2342C9_nt;
extern VTBL_ENTRY _ZTI10S2342C9_nt[];
extern  VTBL_ENTRY _ZTV10S2342C9_nt[];
extern Class_Descriptor cd_S2342C8_nt;
extern VTBL_ENTRY _ZTI10S2342C8_nt[];
extern  VTBL_ENTRY _ZTV10S2342C8_nt[];
static Base_Class bases_S2342C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2342C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2342C7_nt,    ABISELECT(40,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2342C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2342C10,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2342C9_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2342C8_nt,    ABISELECT(64,44), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2342C2_nt[];
extern void _ZN10S2342C2_ntD1Ev();
extern void _ZN10S2342C2_ntD0Ev();
extern void _ZN10S2342C4_nt2v5Ev();
extern void _ZN10S2342C4_nt2v6Ev();
extern void _ZN10S2342C4_nt2v7Ev();
extern void _ZN10S2342C3_nt3v11Ev();
extern void _ZN10S2342C3_nt3v12Ev();
extern void _ZN10S2342C3_nt3v13Ev();
extern void _ZN10S2342C3_nt3v14Ev();
extern void _ZN10S2342C3_nt3v15Ev();
extern void _ZN10S2342C3_nt3v16Ev();
extern void _ZN10S2342C3_nt3v17Ev();
extern void _ZN10S2342C3_nt3v18Ev();
extern void _ZN10S2342C3_nt3v19Ev();
extern void _ZN10S2342C3_nt3v20Ev();
extern void _ZN10S2342C2_nt3v31Ev();
extern void _ZN10S2342C2_nt3v32Ev();
extern void _ZN10S2342C2_nt3v33Ev();
extern void _ZN10S2342C2_nt3v34Ev();
extern void _ZN10S2342C2_nt3v35Ev();
extern void _ZN10S2342C2_nt3v36Ev();
extern void ABISELECT(_ZThn40_N10S2342C2_ntD1Ev,_ZThn28_N10S2342C2_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2342C2_ntD0Ev,_ZThn28_N10S2342C2_ntD0Ev)();
extern void _ZN10S2342C7_nt2v8Ev();
extern void _ZN10S2342C7_nt2v9Ev();
extern void _ZN10S2342C7_nt3v10Ev();
extern void ABISELECT(_ZThn64_N10S2342C2_ntD1Ev,_ZThn44_N10S2342C2_ntD1Ev)();
extern void ABISELECT(_ZThn64_N10S2342C2_ntD0Ev,_ZThn44_N10S2342C2_ntD0Ev)();
extern void _ZN8S2342C103v21Ev();
extern void _ZN8S2342C103v22Ev();
extern void _ZN8S2342C103v23Ev();
extern void _ZN10S2342C9_nt3v24Ev();
extern void _ZN10S2342C9_nt3v25Ev();
extern void _ZN10S2342C9_nt3v26Ev();
extern void _ZN10S2342C8_nt3v27Ev();
extern void _ZN10S2342C8_nt3v28Ev();
extern void _ZN10S2342C8_nt3v29Ev();
extern void _ZN10S2342C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2342C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2342C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S2342C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v36Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI10S2342C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2342C2_ntD1Ev,_ZThn28_N10S2342C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2342C2_ntD0Ev,_ZThn28_N10S2342C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2342C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2342C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2342C7_nt3v10Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI10S2342C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N10S2342C2_ntD1Ev,_ZThn44_N10S2342C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N10S2342C2_ntD0Ev,_ZThn44_N10S2342C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN8S2342C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S2342C2_nt[];
VTBL_ENTRY *P__ZTI10S2342C2_nt = _ZTI10S2342C2_nt; 
extern  VTBL_ENTRY _ZTV10S2342C2_nt[];
Class_Descriptor cd_S2342C2_nt = {  "S2342C2_nt", // class name
  bases_S2342C2_nt, 6,
  &(vtc_S2342C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,112), // object size
  NSPAIRA(_ZTI10S2342C2_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S2342C2_nt),44, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C19_nt  {
  void *s2342c19f0;
  virtual  ~S2342C19_nt(); // _ZN11S2342C19_ntD1Ev
  virtual void  v37(); // _ZN11S2342C19_nt3v37Ev
  virtual void  v38(); // _ZN11S2342C19_nt3v38Ev
  virtual void  v39(); // _ZN11S2342C19_nt3v39Ev
  virtual void  v40(); // _ZN11S2342C19_nt3v40Ev
  virtual void  v41(); // _ZN11S2342C19_nt3v41Ev
  virtual void  v42(); // _ZN11S2342C19_nt3v42Ev
  S2342C19_nt(); // tgen
};
//SIG(-1 S2342C19_nt) C1{ vd v1 v2 v3 v4 v5 v6 Fp}


 S2342C19_nt ::~S2342C19_nt(){ note_dtor("S2342C19_nt", this);}
void  S2342C19_nt ::v37(){vfunc_called(this, "_ZN11S2342C19_nt3v37Ev");}
void  S2342C19_nt ::v38(){vfunc_called(this, "_ZN11S2342C19_nt3v38Ev");}
void  S2342C19_nt ::v39(){vfunc_called(this, "_ZN11S2342C19_nt3v39Ev");}
void  S2342C19_nt ::v40(){vfunc_called(this, "_ZN11S2342C19_nt3v40Ev");}
void  S2342C19_nt ::v41(){vfunc_called(this, "_ZN11S2342C19_nt3v41Ev");}
void  S2342C19_nt ::v42(){vfunc_called(this, "_ZN11S2342C19_nt3v42Ev");}
S2342C19_nt ::S2342C19_nt(){ note_ctor("S2342C19_nt", this);} // tgen

//skip512 S2342C19_nt

#else // __cplusplus

extern void _ZN11S2342C19_ntC1Ev();
extern void _ZN11S2342C19_ntD1Ev();
Name_Map name_map_S2342C19_nt[] = {
  NSPAIR(_ZN11S2342C19_ntC1Ev),
  NSPAIR(_ZN11S2342C19_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S2342C19_nt[];
extern void _ZN11S2342C19_ntD1Ev();
extern void _ZN11S2342C19_ntD0Ev();
extern void _ZN11S2342C19_nt3v37Ev();
extern void _ZN11S2342C19_nt3v38Ev();
extern void _ZN11S2342C19_nt3v39Ev();
extern void _ZN11S2342C19_nt3v40Ev();
extern void _ZN11S2342C19_nt3v41Ev();
extern void _ZN11S2342C19_nt3v42Ev();
static  VTBL_ENTRY vtc_S2342C19_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2342C19_nt[0]),
  (VTBL_ENTRY)&_ZN11S2342C19_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2342C19_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2342C19_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S2342C19_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S2342C19_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S2342C19_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S2342C19_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S2342C19_nt3v42Ev,
};
extern VTBL_ENTRY _ZTI11S2342C19_nt[];
VTBL_ENTRY *P__ZTI11S2342C19_nt = _ZTI11S2342C19_nt; 
extern  VTBL_ENTRY _ZTV11S2342C19_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C22_nt  {
  ::S2213C26 s2342c22f0;
  void  mf2342c22(); // _ZN11S2342C22_nt9mf2342c22Ev
};
//SIG(-1 S2342C22_nt) C1{ m FC2{ m Fp Fi FC3{ m} FC3}}


void  S2342C22_nt ::mf2342c22(){}

//skip512 S2342C22_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C21_nt  {
  ::S2342C22_nt s2342c21f0;
  void *s2342c21f1[3];
  char s2342c21f2;
  virtual  ~S2342C21_nt(); // _ZN11S2342C21_ntD1Ev
  virtual void  v44(); // _ZN11S2342C21_nt3v44Ev
  S2342C21_nt(); // tgen
};
//SIG(-1 S2342C21_nt) C1{ vd v1 FC2{ m FC3{ m Fp Fi FC4{ m} FC4}} Fp[3] Fc}


 S2342C21_nt ::~S2342C21_nt(){ note_dtor("S2342C21_nt", this);}
void  S2342C21_nt ::v44(){vfunc_called(this, "_ZN11S2342C21_nt3v44Ev");}
S2342C21_nt ::S2342C21_nt(){ note_ctor("S2342C21_nt", this);} // tgen

//skip512 S2342C21_nt

#else // __cplusplus

extern void _ZN11S2342C21_ntC1Ev();
extern void _ZN11S2342C21_ntD1Ev();
Name_Map name_map_S2342C21_nt[] = {
  NSPAIR(_ZN11S2342C21_ntC1Ev),
  NSPAIR(_ZN11S2342C21_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S2342C21_nt[];
extern void _ZN11S2342C21_ntD1Ev();
extern void _ZN11S2342C21_ntD0Ev();
extern void _ZN11S2342C21_nt3v44Ev();
static  VTBL_ENTRY vtc_S2342C21_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2342C21_nt[0]),
  (VTBL_ENTRY)&_ZN11S2342C21_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2342C21_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2342C21_nt3v44Ev,
};
extern VTBL_ENTRY _ZTI11S2342C21_nt[];
VTBL_ENTRY *P__ZTI11S2342C21_nt = _ZTI11S2342C21_nt; 
extern  VTBL_ENTRY _ZTV11S2342C21_nt[];
Class_Descriptor cd_S2342C21_nt = {  "S2342C21_nt", // class name
  0,0,//no base classes
  &(vtc_S2342C21_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI11S2342C21_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S2342C21_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C20_nt  : S2342C21_nt {
  void *s2342c20f0;
  virtual void  v43(); // _ZN11S2342C20_nt3v43Ev
  ~S2342C20_nt(); // tgen
  S2342C20_nt(); // tgen
};
//SIG(-1 S2342C20_nt) C1{ BC2{ vd v2 FC3{ m FC4{ m Fp Fi FC5{ m} FC5}} Fp[3] Fc} v1 Fp}


void  S2342C20_nt ::v43(){vfunc_called(this, "_ZN11S2342C20_nt3v43Ev");}
S2342C20_nt ::~S2342C20_nt(){ note_dtor("S2342C20_nt", this);} // tgen
S2342C20_nt ::S2342C20_nt(){ note_ctor("S2342C20_nt", this);} // tgen

//skip512 S2342C20_nt

#else // __cplusplus

extern void _ZN11S2342C20_ntC1Ev();
extern void _ZN11S2342C20_ntD1Ev();
Name_Map name_map_S2342C20_nt[] = {
  NSPAIR(_ZN11S2342C20_ntC1Ev),
  NSPAIR(_ZN11S2342C20_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2342C21_nt;
extern VTBL_ENTRY _ZTI11S2342C21_nt[];
extern  VTBL_ENTRY _ZTV11S2342C21_nt[];
static Base_Class bases_S2342C20_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2342C21_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S2342C20_nt[];
extern void _ZN11S2342C20_ntD1Ev();
extern void _ZN11S2342C20_ntD0Ev();
extern void _ZN11S2342C21_nt3v44Ev();
extern void _ZN11S2342C20_nt3v43Ev();
static  VTBL_ENTRY vtc_S2342C20_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2342C20_nt[0]),
  (VTBL_ENTRY)&_ZN11S2342C20_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2342C20_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2342C21_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S2342C20_nt3v43Ev,
};
extern VTBL_ENTRY _ZTI11S2342C20_nt[];
VTBL_ENTRY *P__ZTI11S2342C20_nt = _ZTI11S2342C20_nt; 
extern  VTBL_ENTRY _ZTV11S2342C20_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2342C1  : S2342C2_nt {
  ::S2342C19_nt s2342c1f0;
  ::S2342C20_nt s2342c1f1;
  int s2342c1f2;
  ::S2213C20_nt s2342c1f3;
  int s2342c1f4[2];
  char s2342c1f5;
  void *s2342c1f6[5];
  int s2342c1f7;
  virtual  ~S2342C1(); // _ZN7S2342C1D1Ev
  virtual void  v1(); // _ZN7S2342C12v1Ev
  virtual void  v2(); // _ZN7S2342C12v2Ev
  virtual void  v3(); // _ZN7S2342C12v3Ev
  virtual void  v4(); // _ZN7S2342C12v4Ev
  S2342C1(); // tgen
};
//SIG(1 S2342C1) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} BC7{ vd v8 v9 v10} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fp Fc Fi} BC8{ BC9{ BC10{ vd v21 v22 v23} vd v24 v25 v26 FC11{ m Fp Fi[2] FC12{ m}} FC13{ m FC14{ Fl[4]}} Fc} vd v27 v28 v29 v30} vd v31 v32 v33 v34 v35 v36 Fi[3] Fc FC15{ BC16{ m Fp Fi FC17{ m} FC17}}} vd v1 v2 v3 v4 FC18{ vd v37 v38 v39 v40 v41 v42 Fp} FC19{ BC20{ vd v44 FC21{ m FC16} Fp[3] Fc} v43 Fp} Fi FC5 Fi[2] Fc Fp[5] Fi}


 S2342C1 ::~S2342C1(){ note_dtor("S2342C1", this);}
void  S2342C1 ::v1(){vfunc_called(this, "_ZN7S2342C12v1Ev");}
void  S2342C1 ::v2(){vfunc_called(this, "_ZN7S2342C12v2Ev");}
void  S2342C1 ::v3(){vfunc_called(this, "_ZN7S2342C12v3Ev");}
void  S2342C1 ::v4(){vfunc_called(this, "_ZN7S2342C12v4Ev");}
S2342C1 ::S2342C1(){ note_ctor("S2342C1", this);} // tgen

static void Test_S2342C1()
{
  extern Class_Descriptor cd_S2342C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,53)];
    init_test(&cd_S2342C1, buf);
    S2342C1 *dp, &lv = *(dp=new (buf) S2342C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,208), "sizeof(S2342C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2342C1)");
    check_base_class_offset(lv, (S2342C4_nt*)(S2342C3_nt*)(S2342C2_nt*), 0, "S2342C1");
    check_base_class_offset(lv, (S2342C7_nt*)(S2342C3_nt*)(S2342C2_nt*), ABISELECT(40,28), "S2342C1");
    check_base_class_offset(lv, (S2342C3_nt*)(S2342C2_nt*), 0, "S2342C1");
    check_base_class_offset(lv, (S2342C10*)(S2342C9_nt*)(S2342C8_nt*)(S2342C2_nt*), ABISELECT(64,44), "S2342C1");
    check_base_class_offset(lv, (S2342C9_nt*)(S2342C8_nt*)(S2342C2_nt*), ABISELECT(64,44), "S2342C1");
    check_base_class_offset(lv, (S2342C8_nt*)(S2342C2_nt*), ABISELECT(64,44), "S2342C1");
    check_base_class_offset(lv, (S2342C2_nt*), 0, "S2342C1");
    check_field_offset(lv, s2342c1f0, ABISELECT(168,112), "S2342C1.s2342c1f0");
    check_field_offset(lv, s2342c1f1, ABISELECT(184,120), "S2342C1.s2342c1f1");
    check_field_offset(lv, s2342c1f2, ABISELECT(248,156), "S2342C1.s2342c1f2");
    check_field_offset(lv, s2342c1f3, ABISELECT(256,160), "S2342C1.s2342c1f3");
    check_field_offset(lv, s2342c1f4, ABISELECT(272,172), "S2342C1.s2342c1f4");
    check_field_offset(lv, s2342c1f5, ABISELECT(280,180), "S2342C1.s2342c1f5");
    check_field_offset(lv, s2342c1f6, ABISELECT(288,184), "S2342C1.s2342c1f6");
    check_field_offset(lv, s2342c1f7, ABISELECT(328,204), "S2342C1.s2342c1f7");
    test_class_info(&lv, &cd_S2342C1);
    dp->~S2342C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2342C1(Test_S2342C1, "S2342C1", ABISELECT(336,208));

#else // __cplusplus

extern void _ZN7S2342C1C1Ev();
extern void _ZN7S2342C1D1Ev();
Name_Map name_map_S2342C1[] = {
  NSPAIR(_ZN7S2342C1C1Ev),
  NSPAIR(_ZN7S2342C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2342C4_nt;
extern VTBL_ENTRY _ZTI10S2342C4_nt[];
extern  VTBL_ENTRY _ZTV10S2342C4_nt[];
extern Class_Descriptor cd_S2342C7_nt;
extern VTBL_ENTRY _ZTI10S2342C7_nt[];
extern  VTBL_ENTRY _ZTV10S2342C7_nt[];
extern Class_Descriptor cd_S2342C3_nt;
extern VTBL_ENTRY _ZTI10S2342C3_nt[];
extern  VTBL_ENTRY _ZTV10S2342C3_nt[];
extern Class_Descriptor cd_S2342C10;
extern VTBL_ENTRY _ZTI8S2342C10[];
extern  VTBL_ENTRY _ZTV8S2342C10[];
extern Class_Descriptor cd_S2342C9_nt;
extern VTBL_ENTRY _ZTI10S2342C9_nt[];
extern  VTBL_ENTRY _ZTV10S2342C9_nt[];
extern Class_Descriptor cd_S2342C8_nt;
extern VTBL_ENTRY _ZTI10S2342C8_nt[];
extern  VTBL_ENTRY _ZTV10S2342C8_nt[];
extern Class_Descriptor cd_S2342C2_nt;
extern VTBL_ENTRY _ZTI10S2342C2_nt[];
extern  VTBL_ENTRY _ZTV10S2342C2_nt[];
static Base_Class bases_S2342C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2342C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2342C7_nt,    ABISELECT(40,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2342C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2342C10,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2342C9_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2342C8_nt,    ABISELECT(64,44), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2342C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2342C1[];
extern void _ZN7S2342C1D1Ev();
extern void _ZN7S2342C1D0Ev();
extern void _ZN10S2342C4_nt2v5Ev();
extern void _ZN10S2342C4_nt2v6Ev();
extern void _ZN10S2342C4_nt2v7Ev();
extern void _ZN10S2342C3_nt3v11Ev();
extern void _ZN10S2342C3_nt3v12Ev();
extern void _ZN10S2342C3_nt3v13Ev();
extern void _ZN10S2342C3_nt3v14Ev();
extern void _ZN10S2342C3_nt3v15Ev();
extern void _ZN10S2342C3_nt3v16Ev();
extern void _ZN10S2342C3_nt3v17Ev();
extern void _ZN10S2342C3_nt3v18Ev();
extern void _ZN10S2342C3_nt3v19Ev();
extern void _ZN10S2342C3_nt3v20Ev();
extern void _ZN10S2342C2_nt3v31Ev();
extern void _ZN10S2342C2_nt3v32Ev();
extern void _ZN10S2342C2_nt3v33Ev();
extern void _ZN10S2342C2_nt3v34Ev();
extern void _ZN10S2342C2_nt3v35Ev();
extern void _ZN10S2342C2_nt3v36Ev();
extern void _ZN7S2342C12v1Ev();
extern void _ZN7S2342C12v2Ev();
extern void _ZN7S2342C12v3Ev();
extern void _ZN7S2342C12v4Ev();
extern void ABISELECT(_ZThn40_N7S2342C1D1Ev,_ZThn28_N7S2342C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S2342C1D0Ev,_ZThn28_N7S2342C1D0Ev)();
extern void _ZN10S2342C7_nt2v8Ev();
extern void _ZN10S2342C7_nt2v9Ev();
extern void _ZN10S2342C7_nt3v10Ev();
extern void ABISELECT(_ZThn64_N7S2342C1D1Ev,_ZThn44_N7S2342C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S2342C1D0Ev,_ZThn44_N7S2342C1D0Ev)();
extern void _ZN8S2342C103v21Ev();
extern void _ZN8S2342C103v22Ev();
extern void _ZN8S2342C103v23Ev();
extern void _ZN10S2342C9_nt3v24Ev();
extern void _ZN10S2342C9_nt3v25Ev();
extern void _ZN10S2342C9_nt3v26Ev();
extern void _ZN10S2342C8_nt3v27Ev();
extern void _ZN10S2342C8_nt3v28Ev();
extern void _ZN10S2342C8_nt3v29Ev();
extern void _ZN10S2342C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2342C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2342C1[0]),
  (VTBL_ENTRY)&_ZN7S2342C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2342C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2342C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2342C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2342C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN7S2342C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2342C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2342C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2342C12v4Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S2342C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2342C1D1Ev,_ZThn28_N7S2342C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2342C1D0Ev,_ZThn28_N7S2342C1D0Ev),
  (VTBL_ENTRY)&_ZN10S2342C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2342C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2342C7_nt3v10Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S2342C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S2342C1D1Ev,_ZThn44_N7S2342C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S2342C1D0Ev,_ZThn44_N7S2342C1D0Ev),
  (VTBL_ENTRY)&_ZN8S2342C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2342C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2342C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2342C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI7S2342C1[];
extern  VTBL_ENTRY _ZTV7S2342C1[];
Class_Descriptor cd_S2342C1 = {  "S2342C1", // class name
  bases_S2342C1, 7,
  &(vtc_S2342C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(336,208), // object size
  NSPAIRA(_ZTI7S2342C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2342C1),48, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  7, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7656C3  {
  short s7656c3f0[5];
  virtual void  v7(); // _ZN7S7656C32v7Ev
  virtual void  v8(); // _ZN7S7656C32v8Ev
  virtual void  v9(); // _ZN7S7656C32v9Ev
  virtual void  v10(); // _ZN7S7656C33v10Ev
  virtual void  v11(); // _ZN7S7656C33v11Ev
  ~S7656C3(); // tgen
  S7656C3(); // tgen
};
//SIG(-1 S7656C3) C1{ v1 v2 v3 v4 v5 Fs[5]}


void  S7656C3 ::v7(){vfunc_called(this, "_ZN7S7656C32v7Ev");}
void  S7656C3 ::v8(){vfunc_called(this, "_ZN7S7656C32v8Ev");}
void  S7656C3 ::v9(){vfunc_called(this, "_ZN7S7656C32v9Ev");}
void  S7656C3 ::v10(){vfunc_called(this, "_ZN7S7656C33v10Ev");}
void  S7656C3 ::v11(){vfunc_called(this, "_ZN7S7656C33v11Ev");}
S7656C3 ::~S7656C3(){ note_dtor("S7656C3", this);} // tgen
S7656C3 ::S7656C3(){ note_ctor("S7656C3", this);} // tgen

static void Test_S7656C3()
{
  extern Class_Descriptor cd_S7656C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7656C3, buf);
    S7656C3 *dp, &lv = *(dp=new (buf) S7656C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7656C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C3)");
    check_field_offset(lv, s7656c3f0, ABISELECT(8,4), "S7656C3.s7656c3f0");
    test_class_info(&lv, &cd_S7656C3);
    dp->~S7656C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C3(Test_S7656C3, "S7656C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7656C3C1Ev();
extern void _ZN7S7656C3D1Ev();
Name_Map name_map_S7656C3[] = {
  NSPAIR(_ZN7S7656C3C1Ev),
  NSPAIR(_ZN7S7656C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7656C3[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY vtc_S7656C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C3[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
Class_Descriptor cd_S7656C3 = {  "S7656C3", // class name
  0,0,//no base classes
  &(vtc_S7656C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7656C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7656C3),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  S7656C2  : virtual S7656C3 {
  virtual void  v12(); // _ZN7S7656C23v12Ev
  virtual void  v13(); // _ZN7S7656C23v13Ev
  ~S7656C2(); // tgen
  S7656C2(); // tgen
};
//SIG(-1 S7656C2) C1{ VBC2{ v3 v4 v5 v6 v7 Fs[5]} v1 v2}


void  S7656C2 ::v12(){vfunc_called(this, "_ZN7S7656C23v12Ev");}
void  S7656C2 ::v13(){vfunc_called(this, "_ZN7S7656C23v13Ev");}
S7656C2 ::~S7656C2(){ note_dtor("S7656C2", this);} // tgen
S7656C2 ::S7656C2(){ note_ctor("S7656C2", this);} // tgen

static void Test_S7656C2()
{
  extern Class_Descriptor cd_S7656C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7656C2, buf);
    S7656C2 *dp, &lv = *(dp=new (buf) S7656C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7656C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C2)");
    check_base_class_offset(lv, (S7656C3*), ABISELECT(8,4), "S7656C2");
    test_class_info(&lv, &cd_S7656C2);
    dp->~S7656C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C2(Test_S7656C2, "S7656C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7656C2C1Ev();
extern void _ZN7S7656C2D1Ev();
Name_Map name_map_S7656C2[] = {
  NSPAIR(_ZN7S7656C2C1Ev),
  NSPAIR(_ZN7S7656C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
static Base_Class bases_S7656C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7656C2[];
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY vtc_S7656C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern VTBL_ENTRY _ZTV7S7656C2[];
static  VTT_ENTRY vtt_S7656C2[] = {
  {&(_ZTV7S7656C2[3]),  3,17},
  {&(_ZTV7S7656C2[12]),  12,17},
};
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
Class_Descriptor cd_S7656C2 = {  "S7656C2", // class name
  bases_S7656C2, 1,
  &(vtc_S7656C2[0]), // expected_vtbl_contents
  &(vtt_S7656C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7656C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7656C2),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7656C2),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  S7656C8  : S7656C3 , virtual S7656C2 {
  int s7656c8f0[2];
  virtual void  v14(); // _ZN7S7656C83v14Ev
  ~S7656C8(); // tgen
  S7656C8(); // tgen
};
//SIG(-1 S7656C8) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} v1 Fi[2]}


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

static void Test_S7656C8()
{
  extern Class_Descriptor cd_S7656C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S7656C8, buf);
    S7656C8 *dp, &lv = *(dp=new (buf) S7656C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S7656C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C8)");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*), 0, "S7656C8");
    check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(40,28), "S7656C8");
    check_base_class_offset(lv, (S7656C2*), ABISELECT(32,24), "S7656C8");
    check_field_offset(lv, s7656c8f0, ABISELECT(20,16), "S7656C8.s7656c8f0");
    test_class_info(&lv, &cd_S7656C8);
    dp->~S7656C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C8(Test_S7656C8, "S7656C8", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S7656C8C1Ev();
extern void _ZN7S7656C8D1Ev();
Name_Map name_map_S7656C8[] = {
  NSPAIR(_ZN7S7656C8C1Ev),
  NSPAIR(_ZN7S7656C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
static Base_Class bases_S7656C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7656C3,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7656C2,    ABISELECT(32,24), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7656C8[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY vtc_S7656C8[] = {
  ABISELECT(40,28),
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern VTBL_ENTRY _ZTV7S7656C8[];
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__7S7656C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
static  VTT_ENTRY vtt_S7656C8[] = {
  {&(_ZTV7S7656C8[4]),  4,29},
  {&(_ZTV7S7656C8[15]),  15,29},
  {&(_ZTV7S7656C8[24]),  24,29},
  {&(_tg__ZTV7S7656C2__7S7656C8[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__7S7656C8[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
Class_Descriptor cd_S7656C8 = {  "S7656C8", // class name
  bases_S7656C8, 3,
  &(vtc_S7656C8[0]), // expected_vtbl_contents
  &(vtt_S7656C8[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S7656C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7656C8),29, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7656C8),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  S7656C7  : S7656C3 , virtual S7656C2 , S7656C8 {
  int s7656c7f0;
  virtual void  v15(); // _ZN7S7656C73v15Ev
  ~S7656C7(); // tgen
  S7656C7(); // tgen
};
//SIG(-1 S7656C7) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} BC4{ BC2 VBC3 v9 Fi[2]} v1 Fi}


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

static void Test_S7656C7()
{
  extern Class_Descriptor cd_S7656C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S7656C7, buf);
    S7656C7 *dp, &lv = *(dp=new (buf) S7656C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S7656C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C7)");
    /*is_ambiguous_... S7656C7::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*), 0, "S7656C7");
    check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(64,48), "S7656C7");
    check_base_class_offset(lv, (S7656C2*), ABISELECT(56,44), "S7656C7");
    check_base_class_offset(lv, (S7656C2*)(S7656C8*), ABISELECT(56,44), "S7656C7");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*), ABISELECT(24,16), "S7656C7");
    check_base_class_offset(lv, (S7656C8*), ABISELECT(24,16), "S7656C7");
    check_field_offset(lv, s7656c7f0, ABISELECT(52,40), "S7656C7.s7656c7f0");
    test_class_info(&lv, &cd_S7656C7);
    dp->~S7656C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C7(Test_S7656C7, "S7656C7", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S7656C7C1Ev();
extern void _ZN7S7656C7D1Ev();
Name_Map name_map_S7656C7[] = {
  NSPAIR(_ZN7S7656C7C1Ev),
  NSPAIR(_ZN7S7656C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
static Base_Class bases_S7656C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7656C3,    ABISELECT(64,48), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7656C2,    ABISELECT(56,44), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7656C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7656C7[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY vtc_S7656C7[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern VTBL_ENTRY _ZTV7S7656C7[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C7[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C8__7S7656C7[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C8__7S7656C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__7S7656C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
static  VTT_ENTRY vtt_S7656C7[] = {
  {&(_ZTV7S7656C7[4]),  4,39},
  {&(_tg__ZTV7S7656C8__7S7656C7[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C8__7S7656C7[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C8__7S7656C7[7]),  7,12},
  {&(_ZTV7S7656C7[25]),  25,39},
  {&(_ZTV7S7656C7[34]),  34,39},
  {&(_ZTV7S7656C7[14]),  14,39},
  {&(_tg__ZTV7S7656C2__7S7656C7[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__7S7656C7[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
Class_Descriptor cd_S7656C7 = {  "S7656C7", // class name
  bases_S7656C7, 5,
  &(vtc_S7656C7[0]), // expected_vtbl_contents
  &(vtt_S7656C7[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S7656C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7656C7),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7656C7),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7656C9  : virtual S7656C2 , S7656C8 {
  int s7656c9f0[3];
  void *s7656c9f1;
  virtual void  v16(); // _ZN7S7656C93v16Ev
  virtual void  v17(); // _ZN7S7656C93v17Ev
  virtual void  v18(); // _ZN7S7656C93v18Ev
  virtual void  v19(); // _ZN7S7656C93v19Ev
  ~S7656C9(); // tgen
  S7656C9(); // tgen
};
//SIG(-1 S7656C9) C1{ VBC2{ VBC3{ v5 v6 v7 v8 v9 Fs[5]} v10 v11} BC4{ BC3 VBC2 v12 Fi[2]} v1 v2 v3 v4 Fi[3] Fp}


void  S7656C9 ::v16(){vfunc_called(this, "_ZN7S7656C93v16Ev");}
void  S7656C9 ::v17(){vfunc_called(this, "_ZN7S7656C93v17Ev");}
void  S7656C9 ::v18(){vfunc_called(this, "_ZN7S7656C93v18Ev");}
void  S7656C9 ::v19(){vfunc_called(this, "_ZN7S7656C93v19Ev");}
S7656C9 ::~S7656C9(){ note_dtor("S7656C9", this);} // tgen
S7656C9 ::S7656C9(){ note_ctor("S7656C9", this);} // tgen

static void Test_S7656C9()
{
  extern Class_Descriptor cd_S7656C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S7656C9, buf);
    S7656C9 *dp, &lv = *(dp=new (buf) S7656C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S7656C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C9)");
    check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(56,44), "S7656C9");
    check_base_class_offset(lv, (S7656C2*), ABISELECT(48,40), "S7656C9");
    check_base_class_offset(lv, (S7656C2*)(S7656C8*), ABISELECT(48,40), "S7656C9");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*), 0, "S7656C9");
    check_base_class_offset(lv, (S7656C8*), 0, "S7656C9");
    check_field_offset(lv, s7656c9f0, ABISELECT(28,24), "S7656C9.s7656c9f0");
    check_field_offset(lv, s7656c9f1, ABISELECT(40,36), "S7656C9.s7656c9f1");
    test_class_info(&lv, &cd_S7656C9);
    dp->~S7656C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C9(Test_S7656C9, "S7656C9", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN7S7656C9C1Ev();
extern void _ZN7S7656C9D1Ev();
Name_Map name_map_S7656C9[] = {
  NSPAIR(_ZN7S7656C9C1Ev),
  NSPAIR(_ZN7S7656C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
static Base_Class bases_S7656C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    ABISELECT(56,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7656C2,    ABISELECT(48,40), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7656C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7656C8,    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 _ZTI7S7656C9[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY vtc_S7656C9[] = {
  ABISELECT(56,44),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern VTBL_ENTRY _ZTV7S7656C9[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C9[] = {
  ABISELECT(56,44),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C8__7S7656C9[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C8__7S7656C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__7S7656C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
static  VTT_ENTRY vtt_S7656C9[] = {
  {&(_ZTV7S7656C9[4]),  4,33},
  {&(_tg__ZTV7S7656C8__7S7656C9[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C8__7S7656C9[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C8__7S7656C9[7]),  7,12},
  {&(_ZTV7S7656C9[19]),  19,33},
  {&(_ZTV7S7656C9[28]),  28,33},
  {&(_tg__ZTV7S7656C2__7S7656C9[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__7S7656C9[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7656C9[];
extern  VTBL_ENTRY _ZTV7S7656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C9[];
Class_Descriptor cd_S7656C9 = {  "S7656C9", // class name
  bases_S7656C9, 4,
  &(vtc_S7656C9[0]), // expected_vtbl_contents
  &(vtt_S7656C9[0]), // expected_vtt_contents
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI7S7656C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7656C9),33, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7656C9),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7656C11  : virtual S7656C7 , S7656C3 , S7656C2 {
  char s7656c11f0;
  void *s7656c11f1;
  virtual void  v43(); // _ZN8S7656C113v43Ev
  virtual void  v44(); // _ZN8S7656C113v44Ev
  virtual void  v45(); // _ZN8S7656C113v45Ev
  virtual void  v46(); // _ZN8S7656C113v46Ev
  virtual void  v47(); // _ZN8S7656C113v47Ev
  ~S7656C11(); // tgen
  S7656C11(); // tgen
};
//SIG(-1 S7656C11) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 Fs[5]} VBC4{ VBC3 v11 v12} BC5{ BC3 VBC4 v13 Fi[2]} v14 Fi} BC3 BC4 v1 v2 v3 v4 v5 Fc Fp}


void  S7656C11 ::v43(){vfunc_called(this, "_ZN8S7656C113v43Ev");}
void  S7656C11 ::v44(){vfunc_called(this, "_ZN8S7656C113v44Ev");}
void  S7656C11 ::v45(){vfunc_called(this, "_ZN8S7656C113v45Ev");}
void  S7656C11 ::v46(){vfunc_called(this, "_ZN8S7656C113v46Ev");}
void  S7656C11 ::v47(){vfunc_called(this, "_ZN8S7656C113v47Ev");}
S7656C11 ::~S7656C11(){ note_dtor("S7656C11", this);} // tgen
S7656C11 ::S7656C11(){ note_ctor("S7656C11", this);} // tgen

static void Test_S7656C11()
{
  extern Class_Descriptor cd_S7656C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S7656C11, buf);
    S7656C11 *dp, &lv = *(dp=new (buf) S7656C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S7656C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C11)");
    /*is_ambiguous_... S7656C7::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C7*), ABISELECT(48,28), "S7656C11");
    /*is_ambiguous_... S7656C11::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(112,76), "S7656C11");
    /*is_ambiguous_... S7656C11::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(112,76), "S7656C11");
    check_base_class_offset(lv, (S7656C2*)(S7656C7*), ABISELECT(104,72), "S7656C11");
    check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C7*), ABISELECT(104,72), "S7656C11");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C7*), ABISELECT(72,44), "S7656C11");
    check_base_class_offset(lv, (S7656C8*)(S7656C7*), ABISELECT(72,44), "S7656C11");
    check_base_class_offset(lv, (S7656C7*), ABISELECT(48,28), "S7656C11");
    /*is_ambiguous_... S7656C11::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*), 0, "S7656C11");
    /*is_ambiguous_... S7656C11::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C2*), ABISELECT(24,16), "S7656C11");
    check_field_offset(lv, s7656c11f0, ABISELECT(32,20), "S7656C11.s7656c11f0");
    check_field_offset(lv, s7656c11f1, ABISELECT(40,24), "S7656C11.s7656c11f1");
    test_class_info(&lv, &cd_S7656C11);
    dp->~S7656C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C11(Test_S7656C11, "S7656C11", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S7656C11C1Ev();
extern void _ZN8S7656C11D1Ev();
Name_Map name_map_S7656C11[] = {
  NSPAIR(_ZN8S7656C11C1Ev),
  NSPAIR(_ZN8S7656C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C7;
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
static Base_Class bases_S7656C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(112,76), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7656C2,    ABISELECT(104,72), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7656C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(72,44), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7656C7,    ABISELECT(48,28), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7656C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7656C2,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7656C11[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN8S7656C113v43Ev();
extern void _ZN8S7656C113v44Ev();
extern void _ZN8S7656C113v45Ev();
extern void _ZN8S7656C113v46Ev();
extern void _ZN8S7656C113v47Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY vtc_S7656C11[] = {
  ABISELECT(112,76),
  ABISELECT(104,72),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v47Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,48),
  ABISELECT(56,44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S7656C11[];
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__A__8S7656C11[] = {
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__A__8S7656C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C7__8S7656C11[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__8S7656C11[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C7__8S7656C11[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C7__8S7656C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C7__8S7656C11[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C7__8S7656C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C7__8S7656C11[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__8S7656C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__8S7656C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
static  VTT_ENTRY vtt_S7656C11[] = {
  {&(_ZTV8S7656C11[5]),  5,66},
  {&(_tg__ZTV7S7656C2__A__8S7656C11[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__A__8S7656C11[7]),  7,12},
  {&(_ZTV8S7656C11[31]),  31,66},
  {&(_ZTV8S7656C11[52]),  52,66},
  {&(_ZTV8S7656C11[61]),  61,66},
  {&(_ZTV8S7656C11[41]),  41,66},
  {&(_ZTV8S7656C11[18]),  18,66},
  {&(_tg__ZTV7S7656C7__8S7656C11[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C7__8S7656C11[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C7__8S7656C11[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C7__8S7656C11[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C7__8S7656C11[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C7__8S7656C11[7]),  7,12},
  {&(_tg__ZTV7S7656C8__7S7656C7__8S7656C11[4]),  4,10},
  {&(_tg__ZTV7S7656C2__8S7656C11[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__8S7656C11[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S7656C11[];
extern  VTBL_ENTRY _ZTV8S7656C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7656C11[];
Class_Descriptor cd_S7656C11 = {  "S7656C11", // class name
  bases_S7656C11, 8,
  &(vtc_S7656C11[0]), // expected_vtbl_contents
  &(vtt_S7656C11[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S7656C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7656C11),66, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7656C11),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7656C10  : S7656C8 , virtual S7656C7 , virtual S7656C11 {
  void *s7656c10f0;
  virtual void  v51(); // _ZN8S7656C103v51Ev
  virtual void  v52(); // _ZN8S7656C103v52Ev
  ~S7656C10(); // tgen
  S7656C10(); // tgen
};
//SIG(-1 S7656C10) C1{ BC2{ BC3{ v3 v4 v5 v6 v7 Fs[5]} VBC4{ VBC3 v8 v9} v10 Fi[2]} VBC5{ BC3 VBC4 BC2 v11 Fi} VBC6{ VBC5 BC3 BC4 v12 v13 v14 v15 v16 Fc Fp} v1 v2 Fp}


void  S7656C10 ::v51(){vfunc_called(this, "_ZN8S7656C103v51Ev");}
void  S7656C10 ::v52(){vfunc_called(this, "_ZN8S7656C103v52Ev");}
S7656C10 ::~S7656C10(){ note_dtor("S7656C10", this);} // tgen
S7656C10 ::S7656C10(){ note_ctor("S7656C10", this);} // tgen

static void Test_S7656C10()
{
  extern Class_Descriptor cd_S7656C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,31)];
    init_test(&cd_S7656C10, buf);
    S7656C10 *dp, &lv = *(dp=new (buf) S7656C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,120), "sizeof(S7656C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C10)");
    /*is_ambiguous_... S7656C10::S7656C8 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*), 0, "S7656C10");
    /*is_ambiguous_... S7656C10::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(48,32), "S7656C10");
    /*is_ambiguous_... S7656C11::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C2*)(S7656C11*), ABISELECT(48,32), "S7656C10");
    /*is_ambiguous_... S7656C10::S7656C8 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*), ABISELECT(40,28), "S7656C10");
    check_base_class_offset(lv, (S7656C2*)(S7656C7*), ABISELECT(40,28), "S7656C10");
    check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C7*), ABISELECT(40,28), "S7656C10");
    /*is_ambiguous_... S7656C10::S7656C8 */ AMB_check_base_class_offset(lv, (S7656C8*), 0, "S7656C10");
    /*is_ambiguous_... S7656C7::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C7*), ABISELECT(72,48), "S7656C10");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C7*), ABISELECT(96,64), "S7656C10");
    check_base_class_offset(lv, (S7656C8*)(S7656C7*), ABISELECT(96,64), "S7656C10");
    check_base_class_offset(lv, (S7656C7*), ABISELECT(72,48), "S7656C10");
    check_base_class_offset(lv, (S7656C7*)(S7656C11*), ABISELECT(72,48), "S7656C10");
    /*is_ambiguous_... S7656C11::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C11*), ABISELECT(128,92), "S7656C10");
    /*is_ambiguous_... S7656C11::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C11*), ABISELECT(152,108), "S7656C10");
    check_base_class_offset(lv, (S7656C11*), ABISELECT(128,92), "S7656C10");
    check_field_offset(lv, s7656c10f0, ABISELECT(32,24), "S7656C10.s7656c10f0");
    test_class_info(&lv, &cd_S7656C10);
    dp->~S7656C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C10(Test_S7656C10, "S7656C10", ABISELECT(176,120));

#else // __cplusplus

extern void _ZN8S7656C10C1Ev();
extern void _ZN8S7656C10D1Ev();
Name_Map name_map_S7656C10[] = {
  NSPAIR(_ZN8S7656C10C1Ev),
  NSPAIR(_ZN8S7656C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C7;
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C11;
extern VTBL_ENTRY _ZTI8S7656C11[];
extern  VTBL_ENTRY _ZTV8S7656C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7656C11[];
static Base_Class bases_S7656C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7656C3,    ABISELECT(48,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7656C2,    ABISELECT(40,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7656C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7656C3,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(96,64), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7656C7,    ABISELECT(72,48), //bcp->offset
    33, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7656C3,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7656C2,    ABISELECT(152,108), //bcp->offset
    87, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7656C11,    ABISELECT(128,92), //bcp->offset
    60, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7656C10[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN8S7656C103v51Ev();
extern void _ZN8S7656C103v52Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN8S7656C113v43Ev();
extern void _ZN8S7656C113v44Ev();
extern void _ZN8S7656C113v45Ev();
extern void _ZN8S7656C113v46Ev();
extern void _ZN8S7656C113v47Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY vtc_S7656C10[] = {
  ABISELECT(128,92),
  ABISELECT(72,48),
  ABISELECT(48,32),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C10[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN8S7656C103v51Ev,
  (VTBL_ENTRY)&_ZN8S7656C103v52Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S7656C10[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7656C10[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-32,-20),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S7656C10[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  ABISELECT(-48,-32),
  ABISELECT(-56,-36),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S7656C10[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-88,-64),
  ABISELECT(-56,-44),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S7656C10[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v47Ev,
  ABISELECT(-104,-76),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S7656C10[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern VTBL_ENTRY _ZTV8S7656C10[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__8S7656C10[] = {
  ABISELECT(48,32),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C8__8S7656C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C8__8S7656C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__8S7656C10[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__8S7656C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C7__8S7656C10[] = {
  ABISELECT(-24,-16),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__A1__8S7656C10[] = {
  ABISELECT(-48,-32),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C7__A1__8S7656C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C7__A1__8S7656C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C7__8S7656C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C7__8S7656C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C7__8S7656C10[] = {
  ABISELECT(-48,-32),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN8S7656C113v43Ev();
extern void _ZN8S7656C113v44Ev();
extern void _ZN8S7656C113v45Ev();
extern void _ZN8S7656C113v46Ev();
extern void _ZN8S7656C113v47Ev();
static  VTBL_ENTRY _tg__ZTV8S7656C11__8S7656C10[] = {
  ABISELECT(-80,-60),
  ABISELECT(-88,-64),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v47Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C28S7656C11__A1__8S7656C10[] = {
  ABISELECT(-104,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C28S7656C11__A1__8S7656C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,76),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C7__8S7656C11__8S7656C10[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-32,-20),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__8S7656C11__8S7656C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(88,64),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__8S7656C11__8S7656C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__8S7656C11__8S7656C10[] = {
  ABISELECT(-48,-32),
  ABISELECT(-56,-36),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__A__8S7656C11__8S7656C10[] = {
  ABISELECT(-104,-76),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
static  VTT_ENTRY vtt_S7656C10[] = {
  {&(_ZTV8S7656C10[6]),  6,92},
  {&(_tg__ZTV7S7656C8__8S7656C10[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C8__8S7656C10[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C8__8S7656C10[7]),  7,12},
  {&(_ZTV8S7656C10[19]),  19,92},
  {&(_ZTV8S7656C10[28]),  28,92},
  {&(_ZTV8S7656C10[44]),  44,92},
  {&(_ZTV8S7656C10[54]),  54,92},
  {&(_ZTV8S7656C10[77]),  77,92},
  {&(_ZTV8S7656C10[90]),  90,92},
  {&(_tg__ZTV7S7656C2__8S7656C10[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__8S7656C10[7]),  7,12},
  {&(_tg__ZTV7S7656C7__8S7656C10[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C7__A1__8S7656C10[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C7__A1__8S7656C10[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C7__A1__8S7656C10[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C7__8S7656C10[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C7__8S7656C10[7]),  7,12},
  {&(_tg__ZTV7S7656C8__7S7656C7__8S7656C10[4]),  4,10},
  {&(_tg__ZTV8S7656C11__8S7656C10[5]),  5,15},
  {&(_tg__ZTV7S7656C28S7656C11__A1__8S7656C10[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C28S7656C11__A1__8S7656C10[7]),  7,12},
  {&(_tg__ZTV7S7656C7__8S7656C11__8S7656C10[11]),  11,17},
  {&(_tg__ZTV7S7656C2__8S7656C11__8S7656C10[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__8S7656C11__8S7656C10[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C7__8S7656C11__8S7656C10[4]),  4,10},
  {&(_tg__ZTV7S7656C2__A__8S7656C11__8S7656C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7656C10[];
extern  VTBL_ENTRY _ZTV8S7656C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7656C10[];
Class_Descriptor cd_S7656C10 = {  "S7656C10", // class name
  bases_S7656C10, 11,
  &(vtc_S7656C10[0]), // expected_vtbl_contents
  &(vtt_S7656C10[0]), // expected_vtt_contents
  ABISELECT(176,120), // object size
  NSPAIRA(_ZTI8S7656C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7656C10),92, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7656C10),27, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7656C6  : S7656C7 , S7656C9 , S7656C8 {
  char s7656c6f0[4];
  __tsi64 s7656c6f1;
  ::S7656C10 s7656c6f2;
  void *s7656c6f3;
  virtual void  v20(); // _ZN7S7656C63v20Ev
  virtual void  v21(); // _ZN7S7656C63v21Ev
  virtual void  v22(); // _ZN7S7656C63v22Ev
  ~S7656C6(); // tgen
  S7656C6(); // tgen
};
//SIG(-1 S7656C6) C1{ BC2{ BC3{ v4 v5 v6 v7 v8 Fs[5]} VBC4{ VBC3 v9 v10} BC5{ BC3 VBC4 v11 Fi[2]} v12 Fi} BC6{ VBC4 BC5 v13 v14 v15 v16 Fi[3] Fp} BC5 v1 v2 v3 Fc[4] FL FC7{ BC5 VBC2 VBC8{ VBC2 BC3 BC4 v19 v20 v21 v22 v23 Fc Fp} v17 v18 Fp} Fp}


void  S7656C6 ::v20(){vfunc_called(this, "_ZN7S7656C63v20Ev");}
void  S7656C6 ::v21(){vfunc_called(this, "_ZN7S7656C63v21Ev");}
void  S7656C6 ::v22(){vfunc_called(this, "_ZN7S7656C63v22Ev");}
S7656C6 ::~S7656C6(){ note_dtor("S7656C6", this);} // tgen
S7656C6 ::S7656C6(){ note_ctor("S7656C6", this);} // tgen

static void Test_S7656C6()
{
  extern Class_Descriptor cd_S7656C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(46,67)];
    init_test(&cd_S7656C6, buf);
    S7656C6 *dp, &lv = *(dp=new (buf) S7656C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(360,264), "sizeof(S7656C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C6)");
    /*is_ambiguous_... S7656C7::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C7*), 0, "S7656C6");
    check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(336,248), "S7656C6");
    check_base_class_offset(lv, (S7656C2*)(S7656C7*), ABISELECT(328,244), "S7656C6");
    check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C7*), ABISELECT(328,244), "S7656C6");
    check_base_class_offset(lv, (S7656C2*)(S7656C9*), ABISELECT(328,244), "S7656C6");
    check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C9*), ABISELECT(328,244), "S7656C6");
    /*is_ambiguous_... S7656C6::S7656C8 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*), ABISELECT(328,244), "S7656C6");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C7*), ABISELECT(24,16), "S7656C6");
    check_base_class_offset(lv, (S7656C8*)(S7656C7*), ABISELECT(24,16), "S7656C6");
    check_base_class_offset(lv, (S7656C7*), 0, "S7656C6");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C9*), ABISELECT(56,44), "S7656C6");
    check_base_class_offset(lv, (S7656C8*)(S7656C9*), ABISELECT(56,44), "S7656C6");
    check_base_class_offset(lv, (S7656C9*), ABISELECT(56,44), "S7656C6");
    /*is_ambiguous_... S7656C6::S7656C8 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*), ABISELECT(104,84), "S7656C6");
    /*is_ambiguous_... S7656C6::S7656C8 */ AMB_check_base_class_offset(lv, (S7656C8*), ABISELECT(104,84), "S7656C6");
    check_field_offset(lv, s7656c6f0, ABISELECT(132,108), "S7656C6.s7656c6f0");
    check_field_offset(lv, s7656c6f1, ABISELECT(136,112), "S7656C6.s7656c6f1");
    check_field_offset(lv, s7656c6f2, ABISELECT(144,120), "S7656C6.s7656c6f2");
    check_field_offset(lv, s7656c6f3, ABISELECT(320,240), "S7656C6.s7656c6f3");
    test_class_info(&lv, &cd_S7656C6);
    dp->~S7656C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C6(Test_S7656C6, "S7656C6", ABISELECT(360,264));

#else // __cplusplus

extern void _ZN7S7656C6C1Ev();
extern void _ZN7S7656C6D1Ev();
Name_Map name_map_S7656C6[] = {
  NSPAIR(_ZN7S7656C6C1Ev),
  NSPAIR(_ZN7S7656C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C7;
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C9;
extern VTBL_ENTRY _ZTI7S7656C9[];
extern  VTBL_ENTRY _ZTV7S7656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C9[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
static Base_Class bases_S7656C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7656C3,    ABISELECT(336,248), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7656C2,    ABISELECT(328,244), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7656C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7656C7,    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_S7656C3,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7656C9,    ABISELECT(56,44), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7656C3,    ABISELECT(104,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
    10, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(104,84), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7656C6[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY vtc_S7656C6[] = {
  ABISELECT(336,248),
  ABISELECT(328,244),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
  ABISELECT(312,232),
  ABISELECT(304,228),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  ABISELECT(280,204),
  ABISELECT(272,200),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
  ABISELECT(232,164),
  ABISELECT(224,160),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern VTBL_ENTRY _ZTV7S7656C6[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C7__7S7656C6[] = {
  ABISELECT(336,248),
  ABISELECT(328,244),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__7S7656C6[] = {
  ABISELECT(312,232),
  ABISELECT(304,228),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C7__7S7656C6[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-304,-228),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C7__7S7656C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-232),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C7__7S7656C6[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C7__7S7656C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C7__7S7656C6[] = {
  ABISELECT(312,232),
  ABISELECT(304,228),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__7S7656C6[] = {
  ABISELECT(280,204),
  ABISELECT(272,200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C9__A1__7S7656C6[] = {
  ABISELECT(280,204),
  ABISELECT(272,200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C9__A1__7S7656C6[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C9__A1__7S7656C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-204),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C9__7S7656C6[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C9__7S7656C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-204),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__A2__7S7656C6[] = {
  ABISELECT(232,164),
  ABISELECT(224,160),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C8__A2__7S7656C6[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C8__A2__7S7656C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__7S7656C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
static  VTT_ENTRY vtt_S7656C6[] = {
  {&(_ZTV7S7656C6[4]),  4,66},
  {&(_tg__ZTV7S7656C7__7S7656C6[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C7__7S7656C6[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C7__7S7656C6[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C7__7S7656C6[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C7__7S7656C6[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C7__7S7656C6[7]),  7,12},
  {&(_tg__ZTV7S7656C8__7S7656C7__7S7656C6[4]),  4,10},
  {&(_tg__ZTV7S7656C9__7S7656C6[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C9__A1__7S7656C6[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C9__A1__7S7656C6[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C9__A1__7S7656C6[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C9__7S7656C6[5]),  5,7},
  {&(_tg__ZTV7S7656C3__7S7656C9__7S7656C6[7]),  7,12},
  {&(_tg__ZTV7S7656C8__A2__7S7656C6[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C8__A2__7S7656C6[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C8__A2__7S7656C6[7]),  7,12},
  {&(_ZTV7S7656C6[52]),  52,66},
  {&(_ZTV7S7656C6[61]),  61,66},
  {&(_ZTV7S7656C6[17]),  17,66},
  {&(_ZTV7S7656C6[27]),  27,66},
  {&(_ZTV7S7656C6[41]),  41,66},
  {&(_tg__ZTV7S7656C2__7S7656C6[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__7S7656C6[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7656C6[];
extern  VTBL_ENTRY _ZTV7S7656C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C6[];
Class_Descriptor cd_S7656C6 = {  "S7656C6", // class name
  bases_S7656C6, 11,
  &(vtc_S7656C6[0]), // expected_vtbl_contents
  &(vtt_S7656C6[0]), // expected_vtt_contents
  ABISELECT(360,264), // object size
  NSPAIRA(_ZTI7S7656C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7656C6),66, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7656C6),24, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7656C5  : virtual S7656C6 {
  long double s7656c5f0;
  virtual void  v23(); // _ZN7S7656C53v23Ev
  virtual void  v24(); // _ZN7S7656C53v24Ev
  virtual void  v25(); // _ZN7S7656C53v25Ev
  virtual void  v26(); // _ZN7S7656C53v26Ev
  virtual void  v27(); // _ZN7S7656C53v27Ev
  ~S7656C5(); // tgen
  S7656C5(); // tgen
};
//SIG(-1 S7656C5) C1{ VBC2{ BC3{ BC4{ v6 v7 v8 v9 v10 Fs[5]} VBC5{ VBC4 v11 v12} BC6{ BC4 VBC5 v13 Fi[2]} v14 Fi} BC7{ VBC5 BC6 v15 v16 v17 v18 Fi[3] Fp} BC6 v19 v20 v21 Fc[4] FL FC8{ BC6 VBC3 VBC9{ VBC3 BC4 BC5 v24 v25 v26 v27 v28 Fc Fp} v22 v23 Fp} Fp} v1 v2 v3 v4 v5 FD}


void  S7656C5 ::v23(){vfunc_called(this, "_ZN7S7656C53v23Ev");}
void  S7656C5 ::v24(){vfunc_called(this, "_ZN7S7656C53v24Ev");}
void  S7656C5 ::v25(){vfunc_called(this, "_ZN7S7656C53v25Ev");}
void  S7656C5 ::v26(){vfunc_called(this, "_ZN7S7656C53v26Ev");}
void  S7656C5 ::v27(){vfunc_called(this, "_ZN7S7656C53v27Ev");}
S7656C5 ::~S7656C5(){ note_dtor("S7656C5", this);} // tgen
S7656C5 ::S7656C5(){ note_ctor("S7656C5", this);} // tgen

static void Test_S7656C5()
{
  extern Class_Descriptor cd_S7656C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,70)];
    init_test(&cd_S7656C5, buf);
    S7656C5 *dp, &lv = *(dp=new (buf) S7656C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,276), "sizeof(S7656C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7656C5)");
    /*is_ambiguous_... S7656C7::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C7*)(S7656C6*), ABISELECT(32,16), "S7656C5");
    check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(360,260), "S7656C5");
    check_base_class_offset(lv, (S7656C2*)(S7656C7*)(S7656C6*), 0, "S7656C5");
    check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C7*)(S7656C6*), 0, "S7656C5");
    check_base_class_offset(lv, (S7656C2*)(S7656C9*)(S7656C6*), 0, "S7656C5");
    check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C9*)(S7656C6*), 0, "S7656C5");
    /*is_ambiguous_... S7656C6::S7656C8 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C6*), 0, "S7656C5");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(56,32), "S7656C5");
    check_base_class_offset(lv, (S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(56,32), "S7656C5");
    check_base_class_offset(lv, (S7656C7*)(S7656C6*), ABISELECT(32,16), "S7656C5");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(88,60), "S7656C5");
    check_base_class_offset(lv, (S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(88,60), "S7656C5");
    check_base_class_offset(lv, (S7656C9*)(S7656C6*), ABISELECT(88,60), "S7656C5");
    /*is_ambiguous_... S7656C6::S7656C8 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C6*), ABISELECT(136,100), "S7656C5");
    /*is_ambiguous_... S7656C6::S7656C8 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C6*), ABISELECT(136,100), "S7656C5");
    check_base_class_offset(lv, (S7656C6*), ABISELECT(32,16), "S7656C5");
    check_field_offset(lv, s7656c5f0, ABISELECT(16,4), "S7656C5.s7656c5f0");
    test_class_info(&lv, &cd_S7656C5);
    dp->~S7656C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C5(Test_S7656C5, "S7656C5", ABISELECT(384,276));

#else // __cplusplus

extern void _ZN7S7656C5C1Ev();
extern void _ZN7S7656C5D1Ev();
Name_Map name_map_S7656C5[] = {
  NSPAIR(_ZN7S7656C5C1Ev),
  NSPAIR(_ZN7S7656C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C7;
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C9;
extern VTBL_ENTRY _ZTI7S7656C9[];
extern  VTBL_ENTRY _ZTV7S7656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C9[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C6;
extern VTBL_ENTRY _ZTI7S7656C6[];
extern  VTBL_ENTRY _ZTV7S7656C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C6[];
static Base_Class bases_S7656C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(360,260), //bcp->offset
    75, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7656C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7656C3,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(56,32), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7656C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7656C3,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(88,60), //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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7656C9,    ABISELECT(88,60), //bcp->offset
    51, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7656C3,    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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(136,100), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7656C6,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7656C5[];
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C53v23Ev();
extern void _ZN7S7656C53v24Ev();
extern void _ZN7S7656C53v25Ev();
extern void _ZN7S7656C53v26Ev();
extern void _ZN7S7656C53v27Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY vtc_S7656C5[] = {
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(360,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v27Ev,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern VTBL_ENTRY _ZTV7S7656C5[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C6__7S7656C5[] = {
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C77S7656C6__7S7656C5[] = {
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C77S7656C6__7S7656C5[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C77S7656C6__7S7656C5[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C77S7656C6__7S7656C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-228),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C77S7656C6__7S7656C5[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C77S7656C6__7S7656C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C77S7656C6__7S7656C5[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C97S7656C6__7S7656C5[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C97S7656C6__A1__7S7656C5[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C97S7656C6__A1__7S7656C5[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C97S7656C6__A1__7S7656C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C97S7656C6__7S7656C5[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C97S7656C6__7S7656C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C6__A2__7S7656C5[] = {
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C6__A2__7S7656C5[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(136,100),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C6__A2__7S7656C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C6__7S7656C5[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C6__7S7656C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__7S7656C6__7S7656C5[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__7S7656C6__7S7656C5[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__A2__7S7656C6__7S7656C5[] = {
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C5[] = {
  ABISELECT(360,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__7S7656C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
static  VTT_ENTRY vtt_S7656C5[] = {
  {&(_ZTV7S7656C5[7]),  7,87},
  {&(_ZTV7S7656C5[32]),  32,87},
  {&(_ZTV7S7656C5[7]),  7,87},
  {&(_ZTV7S7656C5[82]),  82,87},
  {&(_ZTV7S7656C5[45]),  45,87},
  {&(_ZTV7S7656C5[55]),  55,87},
  {&(_ZTV7S7656C5[69]),  69,87},
  {&(_tg__ZTV7S7656C6__7S7656C5[4]),  4,13},
  {&(_tg__ZTV7S7656C77S7656C6__7S7656C5[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C77S7656C6__7S7656C5[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C77S7656C6__7S7656C5[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C77S7656C6__7S7656C5[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C77S7656C6__7S7656C5[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C77S7656C6__7S7656C5[7]),  7,12},
  {&(_tg__ZTV7S7656C8__7S7656C77S7656C6__7S7656C5[4]),  4,10},
  {&(_tg__ZTV7S7656C97S7656C6__7S7656C5[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C97S7656C6__A1__7S7656C5[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C97S7656C6__A1__7S7656C5[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C97S7656C6__A1__7S7656C5[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C97S7656C6__7S7656C5[5]),  5,7},
  {&(_tg__ZTV7S7656C3__7S7656C97S7656C6__7S7656C5[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C6__A2__7S7656C5[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C6__A2__7S7656C5[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C6__A2__7S7656C5[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C6__7S7656C5[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C6__7S7656C5[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C7__7S7656C6__7S7656C5[4]),  4,10},
  {&(_tg__ZTV7S7656C9__7S7656C6__7S7656C5[4]),  4,14},
  {&(_tg__ZTV7S7656C8__A2__7S7656C6__7S7656C5[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C5[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__7S7656C5[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7656C5[];
extern  VTBL_ENTRY _ZTV7S7656C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C5[];
Class_Descriptor cd_S7656C5 = {  "S7656C5", // class name
  bases_S7656C5, 12,
  &(vtc_S7656C5[0]), // expected_vtbl_contents
  &(vtt_S7656C5[0]), // expected_vtt_contents
  ABISELECT(384,276), // object size
  NSPAIRA(_ZTI7S7656C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7656C5),87, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7656C5),31, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S7656C13_nt  {
  void  mf7656c13(); // _ZN11S7656C13_nt9mf7656c13Ev
};
//SIG(1 S7656C13_nt) U1{ m}

#endif // __cplusplus
#ifdef __cplusplus

struct  S7656C12  {
  ::S7656C13_nt s7656c12f0;
  virtual void  v28(); // _ZN8S7656C123v28Ev
  virtual void  v29(); // _ZN8S7656C123v29Ev
  virtual void  v30(); // _ZN8S7656C123v30Ev
  virtual void  v31(); // _ZN8S7656C123v31Ev
  virtual void  v32(); // _ZN8S7656C123v32Ev
  virtual void  v33(); // _ZN8S7656C123v33Ev
  ~S7656C12(); // tgen
  S7656C12(); // tgen
};
//SIG(-1 S7656C12) C1{ v1 v2 v3 v4 v5 v6 FU2{ m}}


void  S7656C12 ::v28(){vfunc_called(this, "_ZN8S7656C123v28Ev");}
void  S7656C12 ::v29(){vfunc_called(this, "_ZN8S7656C123v29Ev");}
void  S7656C12 ::v30(){vfunc_called(this, "_ZN8S7656C123v30Ev");}
void  S7656C12 ::v31(){vfunc_called(this, "_ZN8S7656C123v31Ev");}
void  S7656C12 ::v32(){vfunc_called(this, "_ZN8S7656C123v32Ev");}
void  S7656C12 ::v33(){vfunc_called(this, "_ZN8S7656C123v33Ev");}
S7656C12 ::~S7656C12(){ note_dtor("S7656C12", this);} // tgen
S7656C12 ::S7656C12(){ note_ctor("S7656C12", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S7656C12C1Ev();
extern void _ZN8S7656C12D1Ev();
Name_Map name_map_S7656C12[] = {
  NSPAIR(_ZN8S7656C12C1Ev),
  NSPAIR(_ZN8S7656C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7656C12[];
extern void _ZN8S7656C123v28Ev();
extern void _ZN8S7656C123v29Ev();
extern void _ZN8S7656C123v30Ev();
extern void _ZN8S7656C123v31Ev();
extern void _ZN8S7656C123v32Ev();
extern void _ZN8S7656C123v33Ev();
static  VTBL_ENTRY vtc_S7656C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C12[0]),
  (VTBL_ENTRY)&_ZN8S7656C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v30Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v31Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v32Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v33Ev,
};
extern VTBL_ENTRY _ZTI8S7656C12[];
extern  VTBL_ENTRY _ZTV8S7656C12[];
Class_Descriptor cd_S7656C12 = {  "S7656C12", // class name
  0,0,//no base classes
  &(vtc_S7656C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7656C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7656C12),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  S7656C14  : virtual S7656C9 {
  __tsi64 s7656c14f0;
  ~S7656C14(); // tgen
  S7656C14(); // tgen
};
//SIG(-1 S7656C14) C1{ VBC2{ VBC3{ VBC4{ v1 v2 v3 v4 v5 Fs[5]} v6 v7} BC5{ BC4 VBC3 v8 Fi[2]} v9 v10 v11 v12 Fi[3] Fp} FL}


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

static void Test_S7656C14()
{
  extern Class_Descriptor cd_S7656C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S7656C14, buf);
    S7656C14 *dp, &lv = *(dp=new (buf) S7656C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S7656C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C14)");
    check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(64,52), "S7656C14");
    check_base_class_offset(lv, (S7656C2*)(S7656C9*), 0, "S7656C14");
    check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C9*), 0, "S7656C14");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C9*), ABISELECT(16,12), "S7656C14");
    check_base_class_offset(lv, (S7656C8*)(S7656C9*), ABISELECT(16,12), "S7656C14");
    check_base_class_offset(lv, (S7656C9*), ABISELECT(16,12), "S7656C14");
    check_field_offset(lv, s7656c14f0, ABISELECT(8,4), "S7656C14.s7656c14f0");
    test_class_info(&lv, &cd_S7656C14);
    dp->~S7656C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C14(Test_S7656C14, "S7656C14", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN8S7656C14C1Ev();
extern void _ZN8S7656C14D1Ev();
Name_Map name_map_S7656C14[] = {
  NSPAIR(_ZN8S7656C14C1Ev),
  NSPAIR(_ZN8S7656C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C9;
extern VTBL_ENTRY _ZTI7S7656C9[];
extern  VTBL_ENTRY _ZTV7S7656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C9[];
static Base_Class bases_S7656C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    ABISELECT(64,52), //bcp->offset
    33, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7656C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7656C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7656C9,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7656C14[];
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY vtc_S7656C14[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(64,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,40),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S7656C14[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__8S7656C14[] = {
  ABISELECT(48,40),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C9__8S7656C14[] = {
  ABISELECT(48,40),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C9__8S7656C14[] = {
  0,
  0,
  ABISELECT(64,52),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C9__8S7656C14[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C9__8S7656C14[] = {
  0,
  0,
  ABISELECT(64,52),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C9__8S7656C14[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__8S7656C14[] = {
  ABISELECT(64,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__8S7656C14[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
static  VTT_ENTRY vtt_S7656C14[] = {
  {&(_ZTV8S7656C14[7]),  7,45},
  {&(_ZTV8S7656C14[23]),  23,45},
  {&(_ZTV8S7656C14[7]),  7,45},
  {&(_ZTV8S7656C14[40]),  40,45},
  {&(_tg__ZTV7S7656C9__8S7656C14[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C9__8S7656C14[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C9__8S7656C14[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C9__8S7656C14[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C9__8S7656C14[5]),  5,7},
  {&(_tg__ZTV7S7656C3__7S7656C9__8S7656C14[7]),  7,12},
  {&(_tg__ZTV7S7656C2__8S7656C14[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__8S7656C14[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S7656C14[];
extern  VTBL_ENTRY _ZTV8S7656C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7656C14[];
Class_Descriptor cd_S7656C14 = {  "S7656C14", // class name
  bases_S7656C14, 5,
  &(vtc_S7656C14[0]), // expected_vtbl_contents
  &(vtt_S7656C14[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI8S7656C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7656C14),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7656C14),12, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7656C15  {
  void *s7656c15f0[7];
  int s7656c15f1;
  void *s7656c15f2;
  virtual void  v34(); // _ZN8S7656C153v34Ev
  virtual void  v35(); // _ZN8S7656C153v35Ev
  virtual void  v36(); // _ZN8S7656C153v36Ev
  virtual void  v37(); // _ZN8S7656C153v37Ev
  virtual void  v38(); // _ZN8S7656C153v38Ev
  virtual void  v39(); // _ZN8S7656C153v39Ev
  ~S7656C15(); // tgen
  S7656C15(); // tgen
};
//SIG(-1 S7656C15) C1{ v1 v2 v3 v4 v5 v6 Fp[7] Fi Fp}


void  S7656C15 ::v34(){vfunc_called(this, "_ZN8S7656C153v34Ev");}
void  S7656C15 ::v35(){vfunc_called(this, "_ZN8S7656C153v35Ev");}
void  S7656C15 ::v36(){vfunc_called(this, "_ZN8S7656C153v36Ev");}
void  S7656C15 ::v37(){vfunc_called(this, "_ZN8S7656C153v37Ev");}
void  S7656C15 ::v38(){vfunc_called(this, "_ZN8S7656C153v38Ev");}
void  S7656C15 ::v39(){vfunc_called(this, "_ZN8S7656C153v39Ev");}
S7656C15 ::~S7656C15(){ note_dtor("S7656C15", this);} // tgen
S7656C15 ::S7656C15(){ note_ctor("S7656C15", this);} // tgen

static void Test_S7656C15()
{
  extern Class_Descriptor cd_S7656C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S7656C15, buf);
    S7656C15 *dp, &lv = *(dp=new (buf) S7656C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S7656C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C15)");
    check_field_offset(lv, s7656c15f0, ABISELECT(8,4), "S7656C15.s7656c15f0");
    check_field_offset(lv, s7656c15f1, ABISELECT(64,32), "S7656C15.s7656c15f1");
    check_field_offset(lv, s7656c15f2, ABISELECT(72,36), "S7656C15.s7656c15f2");
    test_class_info(&lv, &cd_S7656C15);
    dp->~S7656C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C15(Test_S7656C15, "S7656C15", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S7656C15C1Ev();
extern void _ZN8S7656C15D1Ev();
Name_Map name_map_S7656C15[] = {
  NSPAIR(_ZN8S7656C15C1Ev),
  NSPAIR(_ZN8S7656C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7656C15[];
extern void _ZN8S7656C153v34Ev();
extern void _ZN8S7656C153v35Ev();
extern void _ZN8S7656C153v36Ev();
extern void _ZN8S7656C153v37Ev();
extern void _ZN8S7656C153v38Ev();
extern void _ZN8S7656C153v39Ev();
static  VTBL_ENTRY vtc_S7656C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C15[0]),
  (VTBL_ENTRY)&_ZN8S7656C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v39Ev,
};
extern VTBL_ENTRY _ZTI8S7656C15[];
extern  VTBL_ENTRY _ZTV8S7656C15[];
Class_Descriptor cd_S7656C15 = {  "S7656C15", // class name
  0,0,//no base classes
  &(vtc_S7656C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S7656C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7656C15),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  S7656C4  : virtual S7656C5 , S7656C6 , virtual S7656C12 , S7656C14 , virtual S7656C15 {
  int s7656c4f0[2];
  virtual void  v40(); // _ZN7S7656C43v40Ev
  virtual void  v41(); // _ZN7S7656C43v41Ev
  virtual void  v42(); // _ZN7S7656C43v42Ev
  ~S7656C4(); // tgen
  S7656C4(); // tgen
};
//SIG(-1 S7656C4) C1{ VBC2{ VBC3{ BC4{ BC5{ v4 v5 v6 v7 v8 Fs[5]} VBC6{ VBC5 v9 v10} BC7{ BC5 VBC6 v11 Fi[2]} v12 Fi} BC8{ VBC6 BC7 v13 v14 v15 v16 Fi[3] Fp} BC7 v17 v18 v19 Fc[4] FL FC9{ BC7 VBC4 VBC10{ VBC4 BC5 BC6 v39 v40 v41 v42 v43 Fc Fp} v37 v38 Fp} Fp} v20 v21 v22 v23 v24 FD} BC3 VBC11{ v25 v26 v27 v28 v29 v30 FU12{ m}} BC13{ VBC8 FL} VBC14{ v31 v32 v33 v34 v35 v36 Fp[7] Fi Fp} v1 v2 v3 Fi[2]}


void  S7656C4 ::v40(){vfunc_called(this, "_ZN7S7656C43v40Ev");}
void  S7656C4 ::v41(){vfunc_called(this, "_ZN7S7656C43v41Ev");}
void  S7656C4 ::v42(){vfunc_called(this, "_ZN7S7656C43v42Ev");}
S7656C4 ::~S7656C4(){ note_dtor("S7656C4", this);} // tgen
S7656C4 ::S7656C4(){ note_ctor("S7656C4", this);} // tgen

static void Test_S7656C4()
{
  extern Class_Descriptor cd_S7656C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(56,158)];
    init_test(&cd_S7656C4, buf);
    S7656C4 *dp, &lv = *(dp=new (buf) S7656C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(880,628), "sizeof(S7656C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7656C4)");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C7*)(S7656C6*), ABISELECT(384,280), "S7656C4");
    check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(712,524), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C7*)(S7656C6*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C9*)(S7656C6*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C6*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C7*)(S7656C6*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C9*)(S7656C6*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C6*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C9 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C9*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C9 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C9*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(408,296), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(408,296), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C7*)(S7656C6*), ABISELECT(384,280), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(440,324), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(440,324), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C9*)(S7656C6*), ABISELECT(440,324), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C6*), ABISELECT(488,364), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C6*), ABISELECT(488,364), "S7656C4");
    check_base_class_offset(lv, (S7656C6*)(S7656C5*), ABISELECT(384,280), "S7656C4");
    check_base_class_offset(lv, (S7656C5*), ABISELECT(352,264), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C7*)(S7656C6*), 0, "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(24,16), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(24,16), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C7*)(S7656C6*), 0, "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(56,44), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(56,44), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C9*)(S7656C6*), ABISELECT(56,44), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C6*), ABISELECT(104,84), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C6*), ABISELECT(104,84), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C6*), 0, "S7656C4");
    check_base_class_offset(lv, (S7656C12*), ABISELECT(736,540), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C9 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C9*), ABISELECT(752,548), "S7656C4");
    /*is_ambiguous_... S7656C4::S7656C9 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C9*), ABISELECT(752,548), "S7656C4");
    check_base_class_offset(lv, (S7656C9*)(S7656C14*), ABISELECT(752,548), "S7656C4");
    check_base_class_offset(lv, (S7656C14*), ABISELECT(328,244), "S7656C4");
    check_base_class_offset(lv, (S7656C15*), ABISELECT(800,588), "S7656C4");
    check_field_offset(lv, s7656c4f0, ABISELECT(344,256), "S7656C4.s7656c4f0");
    test_class_info(&lv, &cd_S7656C4);
    dp->~S7656C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C4(Test_S7656C4, "S7656C4", ABISELECT(880,628));

#else // __cplusplus

extern void _ZN7S7656C4C1Ev();
extern void _ZN7S7656C4D1Ev();
Name_Map name_map_S7656C4[] = {
  NSPAIR(_ZN7S7656C4C1Ev),
  NSPAIR(_ZN7S7656C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C7;
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C9;
extern VTBL_ENTRY _ZTI7S7656C9[];
extern  VTBL_ENTRY _ZTV7S7656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C9[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C6;
extern VTBL_ENTRY _ZTI7S7656C6[];
extern  VTBL_ENTRY _ZTV7S7656C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C6[];
extern Class_Descriptor cd_S7656C5;
extern VTBL_ENTRY _ZTI7S7656C5[];
extern  VTBL_ENTRY _ZTV7S7656C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C5[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C7;
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C9;
extern VTBL_ENTRY _ZTI7S7656C9[];
extern  VTBL_ENTRY _ZTV7S7656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C9[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C6;
extern VTBL_ENTRY _ZTI7S7656C6[];
extern  VTBL_ENTRY _ZTV7S7656C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C6[];
extern Class_Descriptor cd_S7656C12;
extern VTBL_ENTRY _ZTI8S7656C12[];
extern  VTBL_ENTRY _ZTV8S7656C12[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C9;
extern VTBL_ENTRY _ZTI7S7656C9[];
extern  VTBL_ENTRY _ZTV7S7656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C9[];
extern Class_Descriptor cd_S7656C14;
extern VTBL_ENTRY _ZTI8S7656C14[];
extern  VTBL_ENTRY _ZTV8S7656C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7656C14[];
extern Class_Descriptor cd_S7656C15;
extern VTBL_ENTRY _ZTI8S7656C15[];
extern  VTBL_ENTRY _ZTV8S7656C15[];
static Base_Class bases_S7656C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    ABISELECT(384,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(712,524), //bcp->offset
    144, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7656C2,    ABISELECT(352,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7656C3,    ABISELECT(408,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(408,296), //bcp->offset
    110, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7656C7,    ABISELECT(384,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(440,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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(440,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7656C9,    ABISELECT(440,324), //bcp->offset
    120, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(488,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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(488,364), //bcp->offset
    134, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7656C6,    ABISELECT(384,280), //bcp->offset
    83, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7656C5,    ABISELECT(352,264), //bcp->offset
    64, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7656C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S7656C3,    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
    20, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(24,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7656C7,    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
    22, //immediately_derived
  0, 0},
  {&cd_S7656C3,    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
    23, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7656C9,    ABISELECT(56,44), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(104,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
    26, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(104,84), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7656C6,    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
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7656C12,    ABISELECT(736,540), //bcp->offset
    156, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7656C3,    ABISELECT(752,548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(752,548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7656C9,    ABISELECT(752,548), //bcp->offset
    170, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7656C14,    ABISELECT(328,244), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7656C15,    ABISELECT(800,588), //bcp->offset
    194, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7656C4[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
extern void _ZN7S7656C43v40Ev();
extern void _ZN7S7656C43v41Ev();
extern void _ZN7S7656C43v42Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C53v23Ev();
extern void _ZN7S7656C53v24Ev();
extern void _ZN7S7656C53v25Ev();
extern void _ZN7S7656C53v26Ev();
extern void _ZN7S7656C53v27Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN8S7656C123v28Ev();
extern void _ZN8S7656C123v29Ev();
extern void _ZN8S7656C123v30Ev();
extern void _ZN8S7656C123v31Ev();
extern void _ZN8S7656C123v32Ev();
extern void _ZN8S7656C123v33Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
extern void _ZN8S7656C153v34Ev();
extern void _ZN8S7656C153v35Ev();
extern void _ZN8S7656C153v36Ev();
extern void _ZN8S7656C153v37Ev();
extern void _ZN8S7656C153v38Ev();
extern void _ZN8S7656C153v39Ev();
static  VTBL_ENTRY vtc_S7656C4[] = {
  ABISELECT(800,588),
  ABISELECT(752,548),
  ABISELECT(736,540),
  ABISELECT(384,280),
  ABISELECT(352,264),
  ABISELECT(712,524),
  ABISELECT(352,264),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7656C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7656C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7656C43v42Ev,
  ABISELECT(688,508),
  ABISELECT(328,248),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  ABISELECT(656,480),
  ABISELECT(296,220),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
  ABISELECT(608,440),
  ABISELECT(248,180),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  ABISELECT(24,20),
  ABISELECT(424,304),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(384,280),
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(-352,-264),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v27Ev,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  ABISELECT(-384,-280),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-408,-296),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  ABISELECT(-440,-324),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  ABISELECT(-488,-364),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-712,-524),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-540),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN8S7656C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v30Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v31Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v32Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v33Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-400,-284),
  ABISELECT(-752,-548),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-800,-588),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN8S7656C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v39Ev,
};
extern VTBL_ENTRY _ZTV7S7656C4[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C6__A__7S7656C4[] = {
  ABISELECT(712,524),
  ABISELECT(352,264),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C77S7656C6__A1__7S7656C4[] = {
  ABISELECT(712,524),
  ABISELECT(352,264),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C77S7656C6__A3__7S7656C4[] = {
  ABISELECT(688,508),
  ABISELECT(328,248),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C77S7656C6__A3__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(-328,-248),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C77S7656C6__A3__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-688,-508),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C77S7656C6__A1__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(-352,-264),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C77S7656C6__A1__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-712,-524),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C77S7656C6__A1__7S7656C4[] = {
  ABISELECT(688,508),
  ABISELECT(328,248),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C97S7656C6__A1__7S7656C4[] = {
  ABISELECT(656,480),
  ABISELECT(296,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C97S7656C6__A4__7S7656C4[] = {
  ABISELECT(656,480),
  ABISELECT(296,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C97S7656C6__A4__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(-296,-220),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C97S7656C6__A4__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-480),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C97S7656C6__A1__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(-296,-220),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C97S7656C6__A1__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-480),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C6__A5__7S7656C4[] = {
  ABISELECT(608,440),
  ABISELECT(248,180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C6__A5__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(-248,-180),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C6__A5__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-608,-440),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C6__A__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(-352,-264),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C6__A__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-712,-524),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__7S7656C6__A__7S7656C4[] = {
  ABISELECT(688,508),
  ABISELECT(328,248),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__7S7656C6__A__7S7656C4[] = {
  ABISELECT(656,480),
  ABISELECT(296,220),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__A2__7S7656C6__A__7S7656C4[] = {
  ABISELECT(608,440),
  ABISELECT(248,180),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV8S7656C14__7S7656C4[] = {
  ABISELECT(24,20),
  ABISELECT(424,304),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(384,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__8S7656C14__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-400,-284),
  ABISELECT(-424,-304),
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__8S7656C14__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__8S7656C14__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-280),
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C53v23Ev();
extern void _ZN7S7656C53v24Ev();
extern void _ZN7S7656C53v25Ev();
extern void _ZN7S7656C53v26Ev();
extern void _ZN7S7656C53v27Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C5__7S7656C4[] = {
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(360,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v27Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C6__7S7656C5__7S7656C4[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C5__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C77S7656C6__7S7656C5__7S7656C4[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C97S7656C6__7S7656C5__7S7656C4[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C6__A2__7S7656C5__7S7656C4[] = {
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C6__7S7656C4[] = {
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C77S7656C6__7S7656C4[] = {
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C77S7656C6__7S7656C4[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C77S7656C6__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C77S7656C6__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-228),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C77S7656C6__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C77S7656C6__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C77S7656C6__7S7656C4[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C97S7656C6__7S7656C4[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C97S7656C6__A1__7S7656C4[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C97S7656C6__A1__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C97S7656C6__A1__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C97S7656C6__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C97S7656C6__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C6__A2__7S7656C4[] = {
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C6__A2__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(136,100),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C6__A2__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C6__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C6__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__7S7656C6__7S7656C4[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__7S7656C6__7S7656C4[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__A2__7S7656C6__7S7656C4[] = {
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C4[] = {
  ABISELECT(360,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__A2__7S7656C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(-400,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C9__A6__7S7656C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(-400,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C9__A6__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(400,284),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C9__A6__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C9__A2__7S7656C4[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(400,284),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C9__A2__7S7656C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
static  VTT_ENTRY vtt_S7656C4[] = {
  {&(_ZTV7S7656C4[9]),  9,208},
  {&(_tg__ZTV7S7656C6__A__7S7656C4[4]),  4,13},
  {&(_tg__ZTV7S7656C77S7656C6__A1__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C77S7656C6__A3__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C77S7656C6__A3__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C77S7656C6__A3__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C77S7656C6__A1__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C77S7656C6__A1__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C8__7S7656C77S7656C6__A1__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C97S7656C6__A1__7S7656C4[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C97S7656C6__A4__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C97S7656C6__A4__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C97S7656C6__A4__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C97S7656C6__A1__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__7S7656C97S7656C6__A1__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C6__A5__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C6__A5__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C6__A5__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C6__A__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C6__A__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C7__7S7656C6__A__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C9__7S7656C6__A__7S7656C4[4]),  4,14},
  {&(_tg__ZTV7S7656C8__A2__7S7656C6__A__7S7656C4[4]),  4,10},
  {&(_tg__ZTV8S7656C14__7S7656C4[7]),  7,9},
  {&(_tg__ZTV7S7656C9__8S7656C14__7S7656C4[14]),  14,24},
  {&(_tg__ZTV7S7656C2__8S7656C14__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__8S7656C14__7S7656C4[7]),  7,12},
  {&(_ZTV7S7656C4[76]),  76,208},
  {&(_ZTV7S7656C4[101]),  101,208},
  {&(_ZTV7S7656C4[76]),  76,208},
  {&(_ZTV7S7656C4[151]),  151,208},
  {&(_ZTV7S7656C4[114]),  114,208},
  {&(_ZTV7S7656C4[124]),  124,208},
  {&(_ZTV7S7656C4[138]),  138,208},
  {&(_ZTV7S7656C4[25]),  25,208},
  {&(_ZTV7S7656C4[35]),  35,208},
  {&(_ZTV7S7656C4[49]),  49,208},
  {&(_ZTV7S7656C4[164]),  164,208},
  {&(_ZTV7S7656C4[62]),  62,208},
  {&(_ZTV7S7656C4[184]),  184,208},
  {&(_ZTV7S7656C4[202]),  202,208},
  {&(_tg__ZTV7S7656C5__7S7656C4[7]),  7,14},
  {&(_tg__ZTV7S7656C6__7S7656C5__7S7656C4[18]),  18,27},
  {&(_tg__ZTV7S7656C5__7S7656C4[7]),  7,14},
  {&(_tg__ZTV7S7656C3__A1__7S7656C5__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C77S7656C6__7S7656C5__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C97S7656C6__7S7656C5__7S7656C4[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C6__A2__7S7656C5__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C6__7S7656C4[4]),  4,13},
  {&(_tg__ZTV7S7656C77S7656C6__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C77S7656C6__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C77S7656C6__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C77S7656C6__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C77S7656C6__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C77S7656C6__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C8__7S7656C77S7656C6__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C97S7656C6__7S7656C4[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C97S7656C6__A1__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C97S7656C6__A1__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C97S7656C6__A1__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C97S7656C6__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__7S7656C97S7656C6__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C6__A2__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C6__A2__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C6__A2__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C6__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C6__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C7__7S7656C6__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C9__7S7656C6__7S7656C4[4]),  4,14},
  {&(_tg__ZTV7S7656C8__A2__7S7656C6__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C4[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C9__A2__7S7656C4[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C9__A6__7S7656C4[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C9__A6__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C9__A6__7S7656C4[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C9__A2__7S7656C4[5]),  5,7},
  {&(_tg__ZTV7S7656C3__7S7656C9__A2__7S7656C4[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7656C4[];
extern  VTBL_ENTRY _ZTV7S7656C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C4[];
Class_Descriptor cd_S7656C4 = {  "S7656C4", // class name
  bases_S7656C4, 29,
  &(vtc_S7656C4[0]), // expected_vtbl_contents
  &(vtt_S7656C4[0]), // expected_vtt_contents
  ABISELECT(880,628), // object size
  NSPAIRA(_ZTI7S7656C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7656C4),208, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7656C4),78, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7656C16  : virtual S7656C3 , S7656C11 {
  virtual void  v48(); // _ZN8S7656C163v48Ev
  virtual void  v49(); // _ZN8S7656C163v49Ev
  virtual void  v50(); // _ZN8S7656C163v50Ev
  ~S7656C16(); // tgen
  S7656C16(); // tgen
};
//SIG(-1 S7656C16) C1{ VBC2{ v4 v5 v6 v7 v8 Fs[5]} BC3{ VBC4{ BC2 VBC5{ VBC2 v9 v10} BC6{ BC2 VBC5 v11 Fi[2]} v12 Fi} BC2 BC5 v13 v14 v15 v16 v17 Fc Fp} v1 v2 v3}


void  S7656C16 ::v48(){vfunc_called(this, "_ZN8S7656C163v48Ev");}
void  S7656C16 ::v49(){vfunc_called(this, "_ZN8S7656C163v49Ev");}
void  S7656C16 ::v50(){vfunc_called(this, "_ZN8S7656C163v50Ev");}
S7656C16 ::~S7656C16(){ note_dtor("S7656C16", this);} // tgen
S7656C16 ::S7656C16(){ note_ctor("S7656C16", this);} // tgen

static void Test_S7656C16()
{
  extern Class_Descriptor cd_S7656C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S7656C16, buf);
    S7656C16 *dp, &lv = *(dp=new (buf) S7656C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S7656C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7656C16)");
    /*is_ambiguous_... S7656C16::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*), ABISELECT(48,28), "S7656C16");
    /*is_ambiguous_... S7656C16::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(48,28), "S7656C16");
    /*is_ambiguous_... S7656C11::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C2*)(S7656C11*), ABISELECT(48,28), "S7656C16");
    /*is_ambiguous_... S7656C7::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C7*), ABISELECT(72,44), "S7656C16");
    check_base_class_offset(lv, (S7656C2*)(S7656C7*), ABISELECT(128,88), "S7656C16");
    check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C7*), ABISELECT(128,88), "S7656C16");
    /*is_ambiguous_... S7656C8::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C7*), ABISELECT(96,60), "S7656C16");
    check_base_class_offset(lv, (S7656C8*)(S7656C7*), ABISELECT(96,60), "S7656C16");
    check_base_class_offset(lv, (S7656C7*)(S7656C11*), ABISELECT(72,44), "S7656C16");
    /*is_ambiguous_... S7656C11::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C11*), 0, "S7656C16");
    /*is_ambiguous_... S7656C11::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C11*), ABISELECT(24,16), "S7656C16");
    check_base_class_offset(lv, (S7656C11*), 0, "S7656C16");
    test_class_info(&lv, &cd_S7656C16);
    dp->~S7656C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C16(Test_S7656C16, "S7656C16", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S7656C16C1Ev();
extern void _ZN8S7656C16D1Ev();
Name_Map name_map_S7656C16[] = {
  NSPAIR(_ZN8S7656C16C1Ev),
  NSPAIR(_ZN8S7656C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C7;
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C11;
extern VTBL_ENTRY _ZTI8S7656C11[];
extern  VTBL_ENTRY _ZTV8S7656C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7656C11[];
static Base_Class bases_S7656C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    ABISELECT(48,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7656C3,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7656C2,    ABISELECT(128,88), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7656C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(96,60), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7656C7,    ABISELECT(72,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7656C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7656C2,    ABISELECT(24,16), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7656C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7656C16[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN8S7656C113v43Ev();
extern void _ZN8S7656C113v44Ev();
extern void _ZN8S7656C113v45Ev();
extern void _ZN8S7656C113v46Ev();
extern void _ZN8S7656C113v47Ev();
extern void _ZN8S7656C163v48Ev();
extern void _ZN8S7656C163v49Ev();
extern void _ZN8S7656C163v50Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY vtc_S7656C16[] = {
  ABISELECT(48,28),
  ABISELECT(128,88),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7656C163v48Ev,
  (VTBL_ENTRY)&_ZN8S7656C163v49Ev,
  (VTBL_ENTRY)&_ZN8S7656C163v50Ev,
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern VTBL_ENTRY _ZTV8S7656C16[];
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN8S7656C113v43Ev();
extern void _ZN8S7656C113v44Ev();
extern void _ZN8S7656C113v45Ev();
extern void _ZN8S7656C113v46Ev();
extern void _ZN8S7656C113v47Ev();
static  VTBL_ENTRY _tg__ZTV8S7656C11__8S7656C16[] = {
  ABISELECT(48,28),
  ABISELECT(128,88),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v47Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C28S7656C11__A1__8S7656C16[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C28S7656C11__A1__8S7656C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C7__8S7656C11__8S7656C16[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__8S7656C11__8S7656C16[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__8S7656C11__8S7656C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__8S7656C11__8S7656C16[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__A__8S7656C11__8S7656C16[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C7__8S7656C16[] = {
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__8S7656C16[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C7__8S7656C16[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C7__8S7656C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C7__8S7656C16[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C7__8S7656C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C7__8S7656C16[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__8S7656C16[] = {
  ABISELECT(-80,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__8S7656C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
static  VTT_ENTRY vtt_S7656C16[] = {
  {&(_ZTV8S7656C16[5]),  5,69},
  {&(_tg__ZTV8S7656C11__8S7656C16[5]),  5,15},
  {&(_tg__ZTV7S7656C28S7656C11__A1__8S7656C16[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C28S7656C11__A1__8S7656C16[7]),  7,12},
  {&(_tg__ZTV7S7656C7__8S7656C11__8S7656C16[11]),  11,17},
  {&(_tg__ZTV7S7656C2__8S7656C11__8S7656C16[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__8S7656C11__8S7656C16[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C7__8S7656C11__8S7656C16[4]),  4,10},
  {&(_tg__ZTV7S7656C2__A__8S7656C11__8S7656C16[3]),  3,5},
  {&(_ZTV8S7656C16[30]),  30,69},
  {&(_ZTV8S7656C16[46]),  46,69},
  {&(_ZTV8S7656C16[67]),  67,69},
  {&(_ZTV8S7656C16[56]),  56,69},
  {&(_ZTV8S7656C16[21]),  21,69},
  {&(_tg__ZTV7S7656C7__8S7656C16[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C7__8S7656C16[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C7__8S7656C16[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C7__8S7656C16[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C7__8S7656C16[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C7__8S7656C16[7]),  7,12},
  {&(_tg__ZTV7S7656C8__7S7656C7__8S7656C16[4]),  4,10},
  {&(_tg__ZTV7S7656C2__8S7656C16[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__8S7656C16[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S7656C16[];
extern  VTBL_ENTRY _ZTV8S7656C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7656C16[];
Class_Descriptor cd_S7656C16 = {  "S7656C16", // class name
  bases_S7656C16, 9,
  &(vtc_S7656C16[0]), // expected_vtbl_contents
  &(vtt_S7656C16[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S7656C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7656C16),69, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7656C16),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7656C1  : S7656C2 , virtual S7656C4 , virtual S7656C16 {
  char s7656c1f0[10];
  int s7656c1f1;
  virtual void  v1(); // _ZN7S7656C12v1Ev
  virtual void  v2(); // _ZN7S7656C12v2Ev
  virtual void  v3(); // _ZN7S7656C12v3Ev
  virtual void  v4(); // _ZN7S7656C12v4Ev
  virtual void  v5(); // _ZN7S7656C12v5Ev
  virtual void  v6(); // _ZN7S7656C12v6Ev
  ~S7656C1(); // tgen
  S7656C1(); // tgen
};
//SIG(1 S7656C1) C1{ BC2{ VBC3{ v7 v8 v9 v10 v11 Fs[5]} v12 v13} VBC4{ VBC5{ VBC6{ BC7{ BC3 VBC2 BC8{ BC3 VBC2 v14 Fi[2]} v15 Fi} BC9{ VBC2 BC8 v16 v17 v18 v19 Fi[3] Fp} BC8 v20 v21 v22 Fc[4] FL FC10{ BC8 VBC7 VBC11{ VBC7 BC3 BC2 v43 v44 v45 v46 v47 Fc Fp} v51 v52 Fp} Fp} v23 v24 v25 v26 v27 FD} BC6 VBC12{ v28 v29 v30 v31 v32 v33 FU13{ m}} BC14{ VBC9 FL} VBC15{ v34 v35 v36 v37 v38 v39 Fp[7] Fi Fp} v40 v41 v42 Fi[2]} VBC16{ VBC3 BC11 v48 v49 v50} v1 v2 v3 v4 v5 v6 Fc[10] Fi}


void  S7656C1 ::v1(){vfunc_called(this, "_ZN7S7656C12v1Ev");}
void  S7656C1 ::v2(){vfunc_called(this, "_ZN7S7656C12v2Ev");}
void  S7656C1 ::v3(){vfunc_called(this, "_ZN7S7656C12v3Ev");}
void  S7656C1 ::v4(){vfunc_called(this, "_ZN7S7656C12v4Ev");}
void  S7656C1 ::v5(){vfunc_called(this, "_ZN7S7656C12v5Ev");}
void  S7656C1 ::v6(){vfunc_called(this, "_ZN7S7656C12v6Ev");}
S7656C1 ::~S7656C1(){ note_dtor("S7656C1", this);} // tgen
S7656C1 ::S7656C1(){ note_ctor("S7656C1", this);} // tgen

static void Test_S7656C1()
{
  extern Class_Descriptor cd_S7656C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(64,181)];
    init_test(&cd_S7656C1, buf);
    S7656C1 *dp, &lv = *(dp=new (buf) S7656C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,720), "sizeof(S7656C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7656C1)");
    /*is_ambiguous_... S7656C1::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(24,20), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C2*), ABISELECT(24,20), "S7656C1");
    /*is_ambiguous_... S7656C16::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C16*), ABISELECT(24,20), "S7656C1");
    /*is_ambiguous_... S7656C11::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C2*)(S7656C11*)(S7656C16*), ABISELECT(24,20), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C2*), 0, "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C7*)(S7656C6*), ABISELECT(432,316), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C7*)(S7656C6*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C9*)(S7656C6*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C6*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C7*)(S7656C6*)(S7656C4*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C7*)(S7656C6*)(S7656C4*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C9*)(S7656C6*)(S7656C4*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C9*)(S7656C6*)(S7656C4*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C6*)(S7656C4*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C9 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C9*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C9 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C9*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C7 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C7*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C7 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C8*)(S7656C7*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(456,332), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C7*)(S7656C6*), ABISELECT(456,332), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C7*)(S7656C6*), ABISELECT(432,316), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(488,360), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C9*)(S7656C6*), ABISELECT(488,360), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C9*)(S7656C6*), ABISELECT(488,360), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C6*), ABISELECT(536,400), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C6*), ABISELECT(536,400), "S7656C1");
    check_base_class_offset(lv, (S7656C6*)(S7656C5*), ABISELECT(432,316), "S7656C1");
    check_base_class_offset(lv, (S7656C5*)(S7656C4*), ABISELECT(400,300), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C7*)(S7656C6*)(S7656C4*), ABISELECT(48,36), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C7*)(S7656C6*)(S7656C4*), ABISELECT(72,52), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C7*)(S7656C6*)(S7656C4*), ABISELECT(72,52), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C7*)(S7656C6*)(S7656C4*), ABISELECT(48,36), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C9*)(S7656C6*)(S7656C4*), ABISELECT(104,80), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C9*)(S7656C6*)(S7656C4*), ABISELECT(104,80), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C9*)(S7656C6*)(S7656C4*), ABISELECT(104,80), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C6*)(S7656C4*), ABISELECT(152,120), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C6*)(S7656C4*), ABISELECT(152,120), "S7656C1");
    /*is_ambiguous_... S7656C4::S7656C6 */ AMB_check_base_class_offset(lv, (S7656C6*)(S7656C4*), ABISELECT(48,36), "S7656C1");
    check_base_class_offset(lv, (S7656C12*)(S7656C4*), ABISELECT(760,560), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C9 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C9*), ABISELECT(776,568), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C9 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C9*), ABISELECT(776,568), "S7656C1");
    check_base_class_offset(lv, (S7656C9*)(S7656C14*)(S7656C4*), ABISELECT(776,568), "S7656C1");
    check_base_class_offset(lv, (S7656C14*)(S7656C4*), ABISELECT(376,280), "S7656C1");
    check_base_class_offset(lv, (S7656C15*)(S7656C4*), ABISELECT(824,608), "S7656C1");
    check_base_class_offset(lv, (S7656C4*), ABISELECT(48,36), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C7 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C7*), ABISELECT(952,676), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C7 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C8*)(S7656C7*), ABISELECT(976,692), "S7656C1");
    /*is_ambiguous_... S7656C1::S7656C7 */ AMB_check_base_class_offset(lv, (S7656C8*)(S7656C7*), ABISELECT(976,692), "S7656C1");
    check_base_class_offset(lv, (S7656C7*)(S7656C11*)(S7656C16*), ABISELECT(952,676), "S7656C1");
    /*is_ambiguous_... S7656C11::S7656C3 */ AMB_check_base_class_offset(lv, (S7656C3*)(S7656C11*)(S7656C16*), ABISELECT(904,648), "S7656C1");
    /*is_ambiguous_... S7656C11::S7656C2 */ AMB_check_base_class_offset(lv, (S7656C2*)(S7656C11*)(S7656C16*), ABISELECT(928,664), "S7656C1");
    check_base_class_offset(lv, (S7656C11*)(S7656C16*), ABISELECT(904,648), "S7656C1");
    check_base_class_offset(lv, (S7656C16*), ABISELECT(904,648), "S7656C1");
    check_field_offset(lv, s7656c1f0, ABISELECT(8,4), "S7656C1.s7656c1f0");
    check_field_offset(lv, s7656c1f1, ABISELECT(20,16), "S7656C1.s7656c1f1");
    test_class_info(&lv, &cd_S7656C1);
    dp->~S7656C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7656C1(Test_S7656C1, "S7656C1", ABISELECT(1008,720));

#else // __cplusplus

extern void _ZN7S7656C1C1Ev();
extern void _ZN7S7656C1D1Ev();
Name_Map name_map_S7656C1[] = {
  NSPAIR(_ZN7S7656C1C1Ev),
  NSPAIR(_ZN7S7656C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C7;
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C9;
extern VTBL_ENTRY _ZTI7S7656C9[];
extern  VTBL_ENTRY _ZTV7S7656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C9[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C6;
extern VTBL_ENTRY _ZTI7S7656C6[];
extern  VTBL_ENTRY _ZTV7S7656C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C6[];
extern Class_Descriptor cd_S7656C5;
extern VTBL_ENTRY _ZTI7S7656C5[];
extern  VTBL_ENTRY _ZTV7S7656C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C5[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C7;
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C9;
extern VTBL_ENTRY _ZTI7S7656C9[];
extern  VTBL_ENTRY _ZTV7S7656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C9[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C6;
extern VTBL_ENTRY _ZTI7S7656C6[];
extern  VTBL_ENTRY _ZTV7S7656C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C6[];
extern Class_Descriptor cd_S7656C12;
extern VTBL_ENTRY _ZTI8S7656C12[];
extern  VTBL_ENTRY _ZTV8S7656C12[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C9;
extern VTBL_ENTRY _ZTI7S7656C9[];
extern  VTBL_ENTRY _ZTV7S7656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C9[];
extern Class_Descriptor cd_S7656C14;
extern VTBL_ENTRY _ZTI8S7656C14[];
extern  VTBL_ENTRY _ZTV8S7656C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7656C14[];
extern Class_Descriptor cd_S7656C15;
extern VTBL_ENTRY _ZTI8S7656C15[];
extern  VTBL_ENTRY _ZTV8S7656C15[];
extern Class_Descriptor cd_S7656C4;
extern VTBL_ENTRY _ZTI7S7656C4[];
extern  VTBL_ENTRY _ZTV7S7656C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C4[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C8;
extern VTBL_ENTRY _ZTI7S7656C8[];
extern  VTBL_ENTRY _ZTV7S7656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C8[];
extern Class_Descriptor cd_S7656C7;
extern VTBL_ENTRY _ZTI7S7656C7[];
extern  VTBL_ENTRY _ZTV7S7656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C7[];
extern Class_Descriptor cd_S7656C3;
extern VTBL_ENTRY _ZTI7S7656C3[];
extern  VTBL_ENTRY _ZTV7S7656C3[];
extern Class_Descriptor cd_S7656C2;
extern VTBL_ENTRY _ZTI7S7656C2[];
extern  VTBL_ENTRY _ZTV7S7656C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C2[];
extern Class_Descriptor cd_S7656C11;
extern VTBL_ENTRY _ZTI8S7656C11[];
extern  VTBL_ENTRY _ZTV8S7656C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7656C11[];
extern Class_Descriptor cd_S7656C16;
extern VTBL_ENTRY _ZTI8S7656C16[];
extern  VTBL_ENTRY _ZTV8S7656C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7656C16[];
static Base_Class bases_S7656C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7656C3,    ABISELECT(24,20), //bcp->offset
    20, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7656C2,    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
    39, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7656C3,    ABISELECT(432,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7656C2,    ABISELECT(400,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7656C3,    ABISELECT(456,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(456,332), //bcp->offset
    159, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7656C7,    ABISELECT(432,316), //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
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(488,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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(488,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7656C9,    ABISELECT(488,360), //bcp->offset
    169, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(536,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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(536,400), //bcp->offset
    183, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7656C6,    ABISELECT(432,316), //bcp->offset
    132, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7656C5,    ABISELECT(400,300), //bcp->offset
    113, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7656C3,    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
    19, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7656C3,    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
    20, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(72,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7656C7,    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
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(104,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
    23, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(104,80), //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
    24, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7656C9,    ABISELECT(104,80), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(152,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(152,120), //bcp->offset
    94, //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
    27, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7656C6,    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
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7656C12,    ABISELECT(760,560), //bcp->offset
    193, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7656C3,    ABISELECT(776,568), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(776,568), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7656C9,    ABISELECT(776,568), //bcp->offset
    207, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7656C14,    ABISELECT(376,280), //bcp->offset
    104, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7656C15,    ABISELECT(824,608), //bcp->offset
    231, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7656C4,    ABISELECT(48,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7656C3,    ABISELECT(952,676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7656C3,    ABISELECT(976,692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7656C8,    ABISELECT(976,692), //bcp->offset
    300, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7656C7,    ABISELECT(952,676), //bcp->offset
    283, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7656C3,    ABISELECT(904,648), //bcp->offset
    -1, //bcp->virtual_function_table_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
    37, //immediately_derived
  0, 0},
  {&cd_S7656C2,    ABISELECT(928,664), //bcp->offset
    278, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7656C11,    ABISELECT(904,648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7656C16,    ABISELECT(904,648), //bcp->offset
    245, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7656C1[];
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C12v1Ev();
extern void _ZN7S7656C12v2Ev();
extern void _ZN7S7656C12v3Ev();
extern void _ZN7S7656C12v4Ev();
extern void _ZN7S7656C12v5Ev();
extern void _ZN7S7656C12v6Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
extern void _ZN7S7656C43v40Ev();
extern void _ZN7S7656C43v41Ev();
extern void _ZN7S7656C43v42Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C53v23Ev();
extern void _ZN7S7656C53v24Ev();
extern void _ZN7S7656C53v25Ev();
extern void _ZN7S7656C53v26Ev();
extern void _ZN7S7656C53v27Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN8S7656C123v28Ev();
extern void _ZN8S7656C123v29Ev();
extern void _ZN8S7656C123v30Ev();
extern void _ZN8S7656C123v31Ev();
extern void _ZN8S7656C123v32Ev();
extern void _ZN8S7656C123v33Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
extern void _ZN8S7656C153v34Ev();
extern void _ZN8S7656C153v35Ev();
extern void _ZN8S7656C153v36Ev();
extern void _ZN8S7656C153v37Ev();
extern void _ZN8S7656C153v38Ev();
extern void _ZN8S7656C153v39Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN8S7656C113v43Ev();
extern void _ZN8S7656C113v44Ev();
extern void _ZN8S7656C113v45Ev();
extern void _ZN8S7656C113v46Ev();
extern void _ZN8S7656C113v47Ev();
extern void _ZN8S7656C163v48Ev();
extern void _ZN8S7656C163v49Ev();
extern void _ZN8S7656C163v50Ev();
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY vtc_S7656C1[] = {
  ABISELECT(952,676),
  ABISELECT(904,648),
  ABISELECT(824,608),
  ABISELECT(776,568),
  ABISELECT(760,560),
  ABISELECT(400,300),
  ABISELECT(432,316),
  ABISELECT(400,300),
  ABISELECT(48,36),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7656C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7656C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7656C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7656C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7656C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7656C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  0,
  0,
  0,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(776,572),
  ABISELECT(728,532),
  ABISELECT(712,524),
  ABISELECT(384,280),
  ABISELECT(352,264),
  ABISELECT(-24,-16),
  ABISELECT(352,264),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7656C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7656C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7656C43v42Ev,
  ABISELECT(-48,-32),
  ABISELECT(328,248),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  ABISELECT(-80,-60),
  ABISELECT(296,220),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
  ABISELECT(-128,-100),
  ABISELECT(248,180),
  ABISELECT(-152,-120),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  ABISELECT(24,20),
  ABISELECT(400,288),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-352,-260),
  ABISELECT(-376,-280),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(-400,-300),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v27Ev,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-408,-296),
  ABISELECT(-32,-16),
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
  ABISELECT(-432,-312),
  ABISELECT(-56,-32),
  ABISELECT(-456,-332),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  ABISELECT(-464,-340),
  ABISELECT(-88,-60),
  ABISELECT(-488,-360),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
  ABISELECT(-512,-380),
  ABISELECT(-136,-100),
  ABISELECT(-536,-400),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-760,-560),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN8S7656C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v30Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v31Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v32Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v33Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-752,-548),
  ABISELECT(-376,-268),
  ABISELECT(-776,-568),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-824,-608),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN8S7656C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v39Ev,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-880,-628),
  ABISELECT(-504,-348),
  ABISELECT(48,28),
  ABISELECT(-904,-648),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7656C163v48Ev,
  (VTBL_ENTRY)&_ZN8S7656C163v49Ev,
  (VTBL_ENTRY)&_ZN8S7656C163v50Ev,
  ABISELECT(-904,-644),
  ABISELECT(-928,-664),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-928,-656),
  ABISELECT(-552,-376),
  ABISELECT(-952,-676),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  ABISELECT(-952,-672),
  ABISELECT(-576,-392),
  ABISELECT(-976,-692),
  (VTBL_ENTRY)&(_ZTI7S7656C1[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern VTBL_ENTRY _ZTV7S7656C1[];
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__A__7S7656C1[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__A__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
extern void _ZN7S7656C43v40Ev();
extern void _ZN7S7656C43v41Ev();
extern void _ZN7S7656C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C4__7S7656C1[] = {
  ABISELECT(776,572),
  ABISELECT(728,532),
  ABISELECT(712,524),
  ABISELECT(384,280),
  ABISELECT(352,264),
  ABISELECT(-24,-16),
  ABISELECT(352,264),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7656C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7656C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7656C43v42Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C67S7656C4__A1__7S7656C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(352,264),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C77S7656C67S7656C4__A1__7S7656C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(352,264),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C77S7656C67S7656C4__A3__7S7656C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(328,248),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C77S7656C67S7656C4__A3__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(-328,-248),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C77S7656C67S7656C4__A3__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C77S7656C67S7656C4__A1__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(-352,-264),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C77S7656C67S7656C4__A1__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C77S7656C67S7656C4__A1__7S7656C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(328,248),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C97S7656C67S7656C4__A1__7S7656C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(296,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C97S7656C67S7656C4__A4__7S7656C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(296,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C97S7656C67S7656C4__A4__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(-296,-220),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C97S7656C67S7656C4__A4__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C97S7656C67S7656C4__A1__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(-296,-220),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C97S7656C67S7656C4__A1__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C67S7656C4__A5__7S7656C1[] = {
  ABISELECT(-128,-100),
  ABISELECT(248,180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C67S7656C4__A5__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(-248,-180),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C67S7656C4__A5__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C67S7656C4__A1__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(-352,-264),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C67S7656C4__A1__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__7S7656C67S7656C4__A1__7S7656C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(328,248),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__7S7656C67S7656C4__A1__7S7656C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(296,220),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__A2__7S7656C67S7656C4__A1__7S7656C1[] = {
  ABISELECT(-128,-100),
  ABISELECT(248,180),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV8S7656C147S7656C4__7S7656C1[] = {
  ABISELECT(24,20),
  ABISELECT(400,288),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-352,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__8S7656C147S7656C4__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-752,-548),
  ABISELECT(-376,-268),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__8S7656C147S7656C4__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__8S7656C147S7656C4__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(352,260),
  (VTBL_ENTRY)&(_ZTI8S7656C14[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C53v23Ev();
extern void _ZN7S7656C53v24Ev();
extern void _ZN7S7656C53v25Ev();
extern void _ZN7S7656C53v26Ev();
extern void _ZN7S7656C53v27Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C5__7S7656C4__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(-352,-264),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v27Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C6__7S7656C4__7S7656C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-408,-296),
  ABISELECT(-32,-16),
  ABISELECT(-384,-280),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C4__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C77S7656C6__7S7656C4__7S7656C1[] = {
  ABISELECT(-432,-312),
  ABISELECT(-56,-32),
  ABISELECT(-408,-296),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C97S7656C6__7S7656C4__7S7656C1[] = {
  ABISELECT(-464,-340),
  ABISELECT(-88,-60),
  ABISELECT(-440,-324),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C6__A2__7S7656C4__7S7656C1[] = {
  ABISELECT(-512,-380),
  ABISELECT(-136,-100),
  ABISELECT(-488,-364),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C77S7656C6__A3__7S7656C4__7S7656C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(328,248),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C97S7656C6__A1__7S7656C4__7S7656C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(296,220),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C6__A5__7S7656C4__7S7656C1[] = {
  ABISELECT(-128,-100),
  ABISELECT(248,180),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN8S7656C123v28Ev();
extern void _ZN8S7656C123v29Ev();
extern void _ZN8S7656C123v30Ev();
extern void _ZN8S7656C123v31Ev();
extern void _ZN8S7656C123v32Ev();
extern void _ZN8S7656C123v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7656C12__7S7656C4__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-712,-524),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN8S7656C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v30Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v31Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v32Ev,
  (VTBL_ENTRY)&_ZN8S7656C123v33Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV8S7656C14__7S7656C4__7S7656C1[] = {
  ABISELECT(24,20),
  ABISELECT(400,288),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-352,-260),
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__A2__7S7656C4__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-752,-548),
  ABISELECT(-376,-268),
  ABISELECT(-728,-532),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN8S7656C153v34Ev();
extern void _ZN8S7656C153v35Ev();
extern void _ZN8S7656C153v36Ev();
extern void _ZN8S7656C153v37Ev();
extern void _ZN8S7656C153v38Ev();
extern void _ZN8S7656C153v39Ev();
static  VTBL_ENTRY _tg__ZTV8S7656C15__7S7656C4__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-776,-572),
  (VTBL_ENTRY)&(_ZTI7S7656C4[0]),
  (VTBL_ENTRY)&_ZN8S7656C153v34Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v35Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v36Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v37Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v38Ev,
  (VTBL_ENTRY)&_ZN8S7656C153v39Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
extern void _ZN7S7656C53v23Ev();
extern void _ZN7S7656C53v24Ev();
extern void _ZN7S7656C53v25Ev();
extern void _ZN7S7656C53v26Ev();
extern void _ZN7S7656C53v27Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C5__7S7656C1[] = {
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-376,-280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7656C53v27Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C6__7S7656C5__7S7656C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-408,-296),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C5__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(376,280),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C77S7656C6__7S7656C5__7S7656C1[] = {
  ABISELECT(-432,-312),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C97S7656C6__7S7656C5__7S7656C1[] = {
  ABISELECT(-464,-340),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C6__A2__7S7656C5__7S7656C1[] = {
  ABISELECT(-512,-380),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S7656C5[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
extern void _ZN7S7656C63v20Ev();
extern void _ZN7S7656C63v21Ev();
extern void _ZN7S7656C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C6__7S7656C1[] = {
  ABISELECT(-408,-296),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7656C63v22Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C77S7656C6__7S7656C1[] = {
  ABISELECT(-408,-296),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C77S7656C6__7S7656C1[] = {
  ABISELECT(-432,-312),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C77S7656C6__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C77S7656C6__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(432,312),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C77S7656C6__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C77S7656C6__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(408,296),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C77S7656C6__7S7656C1[] = {
  ABISELECT(-432,-312),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C97S7656C6__7S7656C1[] = {
  ABISELECT(-464,-340),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C97S7656C6__A1__7S7656C1[] = {
  ABISELECT(-464,-340),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C97S7656C6__A1__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C97S7656C6__A1__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(464,340),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C97S7656C6__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C97S7656C6__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(464,340),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C6__A2__7S7656C1[] = {
  ABISELECT(-512,-380),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C6__A2__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(136,100),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C6__A2__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(512,380),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C6__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C6__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(408,296),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__7S7656C6__7S7656C1[] = {
  ABISELECT(-432,-312),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__7S7656C6__7S7656C1[] = {
  ABISELECT(-464,-340),
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__A2__7S7656C6__7S7656C1[] = {
  ABISELECT(-512,-380),
  ABISELECT(-136,-100),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7656C6[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__A1__7S7656C1[] = {
  ABISELECT(-376,-280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C2__A1__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(376,280),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
extern void _ZN7S7656C93v16Ev();
extern void _ZN7S7656C93v17Ev();
extern void _ZN7S7656C93v18Ev();
extern void _ZN7S7656C93v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C9__A2__7S7656C1[] = {
  ABISELECT(-752,-548),
  ABISELECT(-376,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7656C93v19Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C9__A6__7S7656C1[] = {
  ABISELECT(-752,-548),
  ABISELECT(-376,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C9__A6__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(376,268),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C9__A6__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(752,548),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C9__A2__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(376,268),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C9__A2__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(752,548),
  (VTBL_ENTRY)&(_ZTI7S7656C9[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN8S7656C113v43Ev();
extern void _ZN8S7656C113v44Ev();
extern void _ZN8S7656C113v45Ev();
extern void _ZN8S7656C113v46Ev();
extern void _ZN8S7656C113v47Ev();
extern void _ZN8S7656C163v48Ev();
extern void _ZN8S7656C163v49Ev();
extern void _ZN8S7656C163v50Ev();
static  VTBL_ENTRY _tg__ZTV8S7656C16__7S7656C1[] = {
  ABISELECT(-880,-628),
  ABISELECT(-504,-348),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7656C163v48Ev,
  (VTBL_ENTRY)&_ZN8S7656C163v49Ev,
  (VTBL_ENTRY)&_ZN8S7656C163v50Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN8S7656C113v43Ev();
extern void _ZN8S7656C113v44Ev();
extern void _ZN8S7656C113v45Ev();
extern void _ZN8S7656C113v46Ev();
extern void _ZN8S7656C113v47Ev();
static  VTBL_ENTRY _tg__ZTV8S7656C118S7656C16__7S7656C1[] = {
  ABISELECT(-880,-628),
  ABISELECT(-504,-348),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7656C113v47Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C28S7656C118S7656C16__A2__7S7656C1[] = {
  ABISELECT(-904,-644),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__7S7656C28S7656C118S7656C16__A2__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(904,644),
  (VTBL_ENTRY)&(_ZTI7S7656C2[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C7__8S7656C118S7656C16__7S7656C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-928,-656),
  ABISELECT(-552,-376),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__8S7656C118S7656C16__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(504,348),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__8S7656C118S7656C16__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(880,628),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__8S7656C118S7656C16__7S7656C1[] = {
  ABISELECT(-952,-672),
  ABISELECT(-576,-392),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__A__8S7656C118S7656C16__7S7656C1[] = {
  ABISELECT(-904,-644),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7656C11[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__8S7656C16__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(880,628),
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C7__8S7656C16__7S7656C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-928,-656),
  ABISELECT(-552,-376),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__8S7656C16__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(504,348),
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__8S7656C16__7S7656C1[] = {
  ABISELECT(-952,-672),
  ABISELECT(-576,-392),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C28S7656C11__A1__8S7656C16__7S7656C1[] = {
  ABISELECT(-904,-644),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7656C16[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C7__A2__7S7656C1[] = {
  ABISELECT(-928,-656),
  ABISELECT(-552,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C73v15Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C87S7656C7__A7__7S7656C1[] = {
  ABISELECT(-952,-672),
  ABISELECT(-576,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C87S7656C7__A7__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(576,392),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C87S7656C7__A7__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(952,672),
  (VTBL_ENTRY)&(_ZTI7S7656C8[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C23v12Ev();
extern void _ZN7S7656C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C2__7S7656C7__A2__7S7656C1[] = {
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(552,376),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7656C23v13Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C3__A1__7S7656C7__A2__7S7656C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(928,656),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
};
extern void _ZN7S7656C32v7Ev();
extern void _ZN7S7656C32v8Ev();
extern void _ZN7S7656C32v9Ev();
extern void _ZN7S7656C33v10Ev();
extern void _ZN7S7656C33v11Ev();
extern void _ZN7S7656C83v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7656C8__7S7656C7__A2__7S7656C1[] = {
  ABISELECT(-952,-672),
  ABISELECT(-576,-392),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7656C7[0]),
  (VTBL_ENTRY)&_ZN7S7656C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7656C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7656C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7656C83v14Ev,
};
static  VTT_ENTRY vtt_S7656C1[] = {
  {&(_ZTV7S7656C1[12]),  12,310},
  {&(_tg__ZTV7S7656C2__A__7S7656C1[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__A__7S7656C1[7]),  7,12},
  {&(_ZTV7S7656C1[27]),  27,310},
  {&(_ZTV7S7656C1[58]),  58,310},
  {&(_ZTV7S7656C1[125]),  125,310},
  {&(_ZTV7S7656C1[150]),  150,310},
  {&(_ZTV7S7656C1[125]),  125,310},
  {&(_ZTV7S7656C1[163]),  163,310},
  {&(_ZTV7S7656C1[173]),  173,310},
  {&(_ZTV7S7656C1[187]),  187,310},
  {&(_ZTV7S7656C1[74]),  74,310},
  {&(_ZTV7S7656C1[84]),  84,310},
  {&(_ZTV7S7656C1[98]),  98,310},
  {&(_ZTV7S7656C1[201]),  201,310},
  {&(_ZTV7S7656C1[111]),  111,310},
  {&(_ZTV7S7656C1[221]),  221,310},
  {&(_ZTV7S7656C1[239]),  239,310},
  {&(_ZTV7S7656C1[265]),  265,310},
  {&(_ZTV7S7656C1[294]),  294,310},
  {&(_ZTV7S7656C1[304]),  304,310},
  {&(_ZTV7S7656C1[281]),  281,310},
  {&(_tg__ZTV7S7656C4__7S7656C1[9]),  9,21},
  {&(_tg__ZTV7S7656C67S7656C4__A1__7S7656C1[4]),  4,13},
  {&(_tg__ZTV7S7656C77S7656C67S7656C4__A1__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C77S7656C67S7656C4__A3__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C77S7656C67S7656C4__A3__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C77S7656C67S7656C4__A3__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C77S7656C67S7656C4__A1__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C77S7656C67S7656C4__A1__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C8__7S7656C77S7656C67S7656C4__A1__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C97S7656C67S7656C4__A1__7S7656C1[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C97S7656C67S7656C4__A4__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C97S7656C67S7656C4__A4__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C97S7656C67S7656C4__A4__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C97S7656C67S7656C4__A1__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__7S7656C97S7656C67S7656C4__A1__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C67S7656C4__A5__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C67S7656C4__A5__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C67S7656C4__A5__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C67S7656C4__A1__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C67S7656C4__A1__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C7__7S7656C67S7656C4__A1__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C9__7S7656C67S7656C4__A1__7S7656C1[4]),  4,14},
  {&(_tg__ZTV7S7656C8__A2__7S7656C67S7656C4__A1__7S7656C1[4]),  4,10},
  {&(_tg__ZTV8S7656C147S7656C4__7S7656C1[7]),  7,9},
  {&(_tg__ZTV7S7656C9__8S7656C147S7656C4__7S7656C1[14]),  14,24},
  {&(_tg__ZTV7S7656C2__8S7656C147S7656C4__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__8S7656C147S7656C4__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C5__7S7656C4__7S7656C1[12]),  12,19},
  {&(_tg__ZTV7S7656C6__7S7656C4__7S7656C1[18]),  18,27},
  {&(_tg__ZTV7S7656C5__7S7656C4__7S7656C1[12]),  12,19},
  {&(_tg__ZTV7S7656C3__A1__7S7656C4__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C77S7656C6__7S7656C4__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C97S7656C6__7S7656C4__7S7656C1[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C6__A2__7S7656C4__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C77S7656C6__A3__7S7656C4__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C97S7656C6__A1__7S7656C4__7S7656C1[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C6__A5__7S7656C4__7S7656C1[4]),  4,10},
  {&(_tg__ZTV8S7656C12__7S7656C4__7S7656C1[8]),  8,14},
  {&(_tg__ZTV8S7656C14__7S7656C4__7S7656C1[7]),  7,9},
  {&(_tg__ZTV7S7656C9__A2__7S7656C4__7S7656C1[14]),  14,24},
  {&(_tg__ZTV8S7656C15__7S7656C4__7S7656C1[8]),  8,14},
  {&(_tg__ZTV7S7656C5__7S7656C1[7]),  7,14},
  {&(_tg__ZTV7S7656C6__7S7656C5__7S7656C1[18]),  18,27},
  {&(_tg__ZTV7S7656C5__7S7656C1[7]),  7,14},
  {&(_tg__ZTV7S7656C3__A1__7S7656C5__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C77S7656C6__7S7656C5__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C97S7656C6__7S7656C5__7S7656C1[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C6__A2__7S7656C5__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C6__7S7656C1[4]),  4,13},
  {&(_tg__ZTV7S7656C77S7656C6__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C77S7656C6__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C77S7656C6__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C77S7656C6__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C77S7656C6__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C77S7656C6__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C8__7S7656C77S7656C6__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C97S7656C6__7S7656C1[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C97S7656C6__A1__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C97S7656C6__A1__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C97S7656C6__A1__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C97S7656C6__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__7S7656C97S7656C6__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C6__A2__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C6__A2__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C6__A2__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C6__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C6__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C7__7S7656C6__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C9__7S7656C6__7S7656C1[4]),  4,14},
  {&(_tg__ZTV7S7656C8__A2__7S7656C6__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C2__A1__7S7656C1[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C2__A1__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C9__A2__7S7656C1[4]),  4,14},
  {&(_tg__ZTV7S7656C87S7656C9__A6__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C9__A6__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C9__A6__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C9__A2__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__7S7656C9__A2__7S7656C1[7]),  7,12},
  {&(_tg__ZTV8S7656C16__7S7656C1[5]),  5,18},
  {&(_tg__ZTV8S7656C118S7656C16__7S7656C1[5]),  5,15},
  {&(_tg__ZTV7S7656C28S7656C118S7656C16__A2__7S7656C1[3]),  3,5},
  {&(_tg__ZTV7S7656C3__7S7656C28S7656C118S7656C16__A2__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C7__8S7656C118S7656C16__7S7656C1[11]),  11,17},
  {&(_tg__ZTV7S7656C2__8S7656C118S7656C16__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__8S7656C118S7656C16__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C87S7656C7__8S7656C118S7656C16__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C2__A__8S7656C118S7656C16__7S7656C1[3]),  3,5},
  {&(_tg__ZTV7S7656C3__8S7656C16__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C7__8S7656C16__7S7656C1[11]),  11,17},
  {&(_tg__ZTV7S7656C2__8S7656C16__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C87S7656C7__8S7656C16__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C28S7656C11__A1__8S7656C16__7S7656C1[3]),  3,5},
  {&(_tg__ZTV7S7656C7__A2__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C87S7656C7__A7__7S7656C1[4]),  4,10},
  {&(_tg__ZTV7S7656C2__7S7656C87S7656C7__A7__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C87S7656C7__A7__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C2__7S7656C7__A2__7S7656C1[5]),  5,7},
  {&(_tg__ZTV7S7656C3__A1__7S7656C7__A2__7S7656C1[7]),  7,12},
  {&(_tg__ZTV7S7656C8__7S7656C7__A2__7S7656C1[4]),  4,10},
};
extern VTBL_ENTRY _ZTI7S7656C1[];
extern  VTBL_ENTRY _ZTV7S7656C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7656C1[];
Class_Descriptor cd_S7656C1 = {  "S7656C1", // class name
  bases_S7656C1, 39,
  &(vtc_S7656C1[0]), // expected_vtbl_contents
  &(vtt_S7656C1[0]), // expected_vtt_contents
  ABISELECT(1008,720), // object size
  NSPAIRA(_ZTI7S7656C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7656C1),310, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7656C1),121, //virtual table table var
  39, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19549C4_nt  {
  virtual void  v7(); // _ZN11S19549C4_nt2v7Ev
  virtual void  v8(); // _ZN11S19549C4_nt2v8Ev
  virtual void  v9(); // _ZN11S19549C4_nt2v9Ev
  virtual void  v10(); // _ZN11S19549C4_nt3v10Ev
  virtual void  v11(); // _ZN11S19549C4_nt3v11Ev
  virtual void  v12(); // _ZN11S19549C4_nt3v12Ev
  virtual void  v13(); // _ZN11S19549C4_nt3v13Ev
  ~S19549C4_nt(); // tgen
  S19549C4_nt(); // tgen
};
//SIG(-1 S19549C4_nt) C1{ v1 v2 v3 v4 v5 v6 v7}


void  S19549C4_nt ::v7(){vfunc_called(this, "_ZN11S19549C4_nt2v7Ev");}
void  S19549C4_nt ::v8(){vfunc_called(this, "_ZN11S19549C4_nt2v8Ev");}
void  S19549C4_nt ::v9(){vfunc_called(this, "_ZN11S19549C4_nt2v9Ev");}
void  S19549C4_nt ::v10(){vfunc_called(this, "_ZN11S19549C4_nt3v10Ev");}
void  S19549C4_nt ::v11(){vfunc_called(this, "_ZN11S19549C4_nt3v11Ev");}
void  S19549C4_nt ::v12(){vfunc_called(this, "_ZN11S19549C4_nt3v12Ev");}
void  S19549C4_nt ::v13(){vfunc_called(this, "_ZN11S19549C4_nt3v13Ev");}
S19549C4_nt ::~S19549C4_nt(){ note_dtor("S19549C4_nt", this);} // tgen
S19549C4_nt ::S19549C4_nt(){ note_ctor("S19549C4_nt", this);} // tgen

//skip512 S19549C4_nt

#else // __cplusplus

extern void _ZN11S19549C4_ntC1Ev();
extern void _ZN11S19549C4_ntD1Ev();
Name_Map name_map_S19549C4_nt[] = {
  NSPAIR(_ZN11S19549C4_ntC1Ev),
  NSPAIR(_ZN11S19549C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19549C4_nt[];
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
static  VTBL_ENTRY vtc_S19549C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19549C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI11S19549C4_nt[];
VTBL_ENTRY *P__ZTI11S19549C4_nt = _ZTI11S19549C4_nt; 
extern  VTBL_ENTRY _ZTV11S19549C4_nt[];
Class_Descriptor cd_S19549C4_nt = {  "S19549C4_nt", // class name
  0,0,//no base classes
  &(vtc_S19549C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S19549C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19549C4_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  S19549C6  : virtual S19549C4_nt {
  virtual void  v14(); // _ZN8S19549C63v14Ev
  virtual void  v15(); // _ZN8S19549C63v15Ev
  virtual void  v16(); // _ZN8S19549C63v16Ev
  ~S19549C6(); // tgen
  S19549C6(); // tgen
};
//SIG(-1 S19549C6) C1{ VBC2{ v4 v5 v6 v7 v8 v9 v10} v1 v2 v3}


void  S19549C6 ::v14(){vfunc_called(this, "_ZN8S19549C63v14Ev");}
void  S19549C6 ::v15(){vfunc_called(this, "_ZN8S19549C63v15Ev");}
void  S19549C6 ::v16(){vfunc_called(this, "_ZN8S19549C63v16Ev");}
S19549C6 ::~S19549C6(){ note_dtor("S19549C6", this);} // tgen
S19549C6 ::S19549C6(){ note_ctor("S19549C6", this);} // tgen

static void Test_S19549C6()
{
  extern Class_Descriptor cd_S19549C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19549C6, buf);
    S19549C6 *dp, &lv = *(dp=new (buf) S19549C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19549C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19549C6)");
    check_base_class_offset(lv, (S19549C4_nt*), 0, "S19549C6");
    test_class_info(&lv, &cd_S19549C6);
    dp->~S19549C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C6(Test_S19549C6, "S19549C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19549C6C1Ev();
extern void _ZN8S19549C6D1Ev();
Name_Map name_map_S19549C6[] = {
  NSPAIR(_ZN8S19549C6C1Ev),
  NSPAIR(_ZN8S19549C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19549C4_nt;
extern VTBL_ENTRY _ZTI11S19549C4_nt[];
extern  VTBL_ENTRY _ZTV11S19549C4_nt[];
static Base_Class bases_S19549C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19549C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19549C6[];
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY vtc_S19549C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C6[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern VTBL_ENTRY _ZTV8S19549C6[];
static  VTT_ENTRY vtt_S19549C6[] = {
  {&(_ZTV8S19549C6[10]),  10,20},
  {&(_ZTV8S19549C6[10]),  10,20},
};
extern VTBL_ENTRY _ZTI8S19549C6[];
extern  VTBL_ENTRY _ZTV8S19549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C6[];
Class_Descriptor cd_S19549C6 = {  "S19549C6", // class name
  bases_S19549C6, 1,
  &(vtc_S19549C6[0]), // expected_vtbl_contents
  &(vtt_S19549C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19549C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19549C6),20, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19549C6),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  S19549C9  {
  char s19549c9f0;
  void *s19549c9f1;
  short s19549c9f2:11;
  virtual void  v17(); // _ZN8S19549C93v17Ev
  virtual void  v18(); // _ZN8S19549C93v18Ev
  virtual void  v19(); // _ZN8S19549C93v19Ev
  ~S19549C9(); // tgen
  S19549C9(); // tgen
};
//SIG(-1 S19549C9) C1{ v1 v2 v3 Fc Fp Fs:11}


void  S19549C9 ::v17(){vfunc_called(this, "_ZN8S19549C93v17Ev");}
void  S19549C9 ::v18(){vfunc_called(this, "_ZN8S19549C93v18Ev");}
void  S19549C9 ::v19(){vfunc_called(this, "_ZN8S19549C93v19Ev");}
S19549C9 ::~S19549C9(){ note_dtor("S19549C9", this);} // tgen
S19549C9 ::S19549C9(){ note_ctor("S19549C9", this);} // tgen

static void Test_S19549C9()
{
  extern Class_Descriptor cd_S19549C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19549C9, buf);
    S19549C9 *dp, &lv = *(dp=new (buf) S19549C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19549C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19549C9)");
    check_field_offset(lv, s19549c9f0, ABISELECT(8,4), "S19549C9.s19549c9f0");
    check_field_offset(lv, s19549c9f1, ABISELECT(16,8), "S19549C9.s19549c9f1");
    set_bf_and_test(lv, s19549c9f2, ABISELECT(24,12), 0, 11, 1, "S19549C9");
    set_bf_and_test(lv, s19549c9f2, ABISELECT(24,12), 0, 11, hide_sll(1LL<<10), "S19549C9");
    test_class_info(&lv, &cd_S19549C9);
    dp->~S19549C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C9(Test_S19549C9, "S19549C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19549C9C1Ev();
extern void _ZN8S19549C9D1Ev();
Name_Map name_map_S19549C9[] = {
  NSPAIR(_ZN8S19549C9C1Ev),
  NSPAIR(_ZN8S19549C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19549C9[];
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
static  VTBL_ENTRY vtc_S19549C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C9[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
};
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
Class_Descriptor cd_S19549C9 = {  "S19549C9", // class name
  0,0,//no base classes
  &(vtc_S19549C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19549C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19549C9),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  S19549C8  : S19549C9 {
  virtual void  v20(); // _ZN8S19549C83v20Ev
  virtual void  v21(); // _ZN8S19549C83v21Ev
  virtual void  v22(); // _ZN8S19549C83v22Ev
  ~S19549C8(); // tgen
  S19549C8(); // tgen
};
//SIG(-1 S19549C8) C1{ BC2{ v4 v5 v6 Fc Fp Fs:11} v1 v2 v3}


void  S19549C8 ::v20(){vfunc_called(this, "_ZN8S19549C83v20Ev");}
void  S19549C8 ::v21(){vfunc_called(this, "_ZN8S19549C83v21Ev");}
void  S19549C8 ::v22(){vfunc_called(this, "_ZN8S19549C83v22Ev");}
S19549C8 ::~S19549C8(){ note_dtor("S19549C8", this);} // tgen
S19549C8 ::S19549C8(){ note_ctor("S19549C8", this);} // tgen

static void Test_S19549C8()
{
  extern Class_Descriptor cd_S19549C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19549C8, buf);
    S19549C8 *dp, &lv = *(dp=new (buf) S19549C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19549C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19549C8)");
    check_base_class_offset(lv, (S19549C9*), 0, "S19549C8");
    test_class_info(&lv, &cd_S19549C8);
    dp->~S19549C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C8(Test_S19549C8, "S19549C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19549C8C1Ev();
extern void _ZN8S19549C8D1Ev();
Name_Map name_map_S19549C8[] = {
  NSPAIR(_ZN8S19549C8C1Ev),
  NSPAIR(_ZN8S19549C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
static Base_Class bases_S19549C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19549C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19549C8[];
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
static  VTBL_ENTRY vtc_S19549C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C8[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
};
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
Class_Descriptor cd_S19549C8 = {  "S19549C8", // class name
  bases_S19549C8, 1,
  &(vtc_S19549C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19549C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19549C8),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  S19549C7  : S19549C8 {
  void *s19549c7f0;
  virtual  ~S19549C7(); // _ZN8S19549C7D1Ev
  virtual void  v23(); // _ZN8S19549C73v23Ev
  virtual void  v24(); // _ZN8S19549C73v24Ev
  virtual void  v25(); // _ZN8S19549C73v25Ev
  virtual void  v26(); // _ZN8S19549C73v26Ev
  S19549C7(); // tgen
};
//SIG(-1 S19549C7) C1{ BC2{ BC3{ v5 v6 v7 Fc Fp Fs:11} v8 v9 v10} vd v1 v2 v3 v4 Fp}


 S19549C7 ::~S19549C7(){ note_dtor("S19549C7", this);}
void  S19549C7 ::v23(){vfunc_called(this, "_ZN8S19549C73v23Ev");}
void  S19549C7 ::v24(){vfunc_called(this, "_ZN8S19549C73v24Ev");}
void  S19549C7 ::v25(){vfunc_called(this, "_ZN8S19549C73v25Ev");}
void  S19549C7 ::v26(){vfunc_called(this, "_ZN8S19549C73v26Ev");}
S19549C7 ::S19549C7(){ note_ctor("S19549C7", this);} // tgen

static void Test_S19549C7()
{
  extern Class_Descriptor cd_S19549C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S19549C7, buf);
    S19549C7 *dp, &lv = *(dp=new (buf) S19549C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S19549C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19549C7)");
    check_base_class_offset(lv, (S19549C9*)(S19549C8*), 0, "S19549C7");
    check_base_class_offset(lv, (S19549C8*), 0, "S19549C7");
    check_field_offset(lv, s19549c7f0, ABISELECT(32,16), "S19549C7.s19549c7f0");
    test_class_info(&lv, &cd_S19549C7);
    dp->~S19549C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C7(Test_S19549C7, "S19549C7", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S19549C7C1Ev();
extern void _ZN8S19549C7D1Ev();
Name_Map name_map_S19549C7[] = {
  NSPAIR(_ZN8S19549C7C1Ev),
  NSPAIR(_ZN8S19549C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
static Base_Class bases_S19549C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19549C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19549C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19549C7[];
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C7D1Ev();
extern void _ZN8S19549C7D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
static  VTBL_ENTRY vtc_S19549C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C7[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
};
extern VTBL_ENTRY _ZTI8S19549C7[];
extern  VTBL_ENTRY _ZTV8S19549C7[];
Class_Descriptor cd_S19549C7 = {  "S19549C7", // class name
  bases_S19549C7, 2,
  &(vtc_S19549C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S19549C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19549C7),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  S19549C5  : virtual S19549C6 , S19549C7 {
  __tsi64 s19549c5f0;
  short  :0;
  ::S7656C13_nt s19549c5f2;
  virtual  ~S19549C5(); // _ZN8S19549C5D2Ev
  virtual void  v27(); // _ZN8S19549C53v27Ev
  virtual void  v28(); // _ZN8S19549C53v28Ev
  virtual void  v29(); // _ZN8S19549C53v29Ev
  virtual void  v30(); // _ZN8S19549C53v30Ev
  virtual void  v31(); // _ZN8S19549C53v31Ev
  virtual void  v32(); // _ZN8S19549C53v32Ev
  S19549C5(); // tgen
};
//SIG(-1 S19549C5) C1{ VBC2{ VBC3{ v7 v8 v9 v10 v11 v12 v13} v14 v15 v16} BC4{ BC5{ BC6{ v17 v18 v19 Fc Fp Fs:11} v20 v21 v22} vd v23 v24 v25 v26 Fp} vd v1 v2 v3 v4 v5 v6 FL Fs:0 FU7{ m}}


 S19549C5 ::~S19549C5(){ note_dtor("S19549C5", this);}
void  S19549C5 ::v27(){vfunc_called(this, "_ZN8S19549C53v27Ev");}
void  S19549C5 ::v28(){vfunc_called(this, "_ZN8S19549C53v28Ev");}
void  S19549C5 ::v29(){vfunc_called(this, "_ZN8S19549C53v29Ev");}
void  S19549C5 ::v30(){vfunc_called(this, "_ZN8S19549C53v30Ev");}
void  S19549C5 ::v31(){vfunc_called(this, "_ZN8S19549C53v31Ev");}
void  S19549C5 ::v32(){vfunc_called(this, "_ZN8S19549C53v32Ev");}
S19549C5 ::S19549C5(){ note_ctor("S19549C5", this);} // tgen

static void Test_S19549C5()
{
  extern Class_Descriptor cd_S19549C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19549C5, buf);
    S19549C5 *dp, &lv = *(dp=new (buf) S19549C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19549C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19549C5)");
    check_base_class_offset(lv, (S19549C4_nt*)(S19549C6*), ABISELECT(56,32), "S19549C5");
    check_base_class_offset(lv, (S19549C6*), ABISELECT(56,32), "S19549C5");
    check_base_class_offset(lv, (S19549C9*)(S19549C8*)(S19549C7*), 0, "S19549C5");
    check_base_class_offset(lv, (S19549C8*)(S19549C7*), 0, "S19549C5");
    check_base_class_offset(lv, (S19549C7*), 0, "S19549C5");
    check_field_offset(lv, s19549c5f0, ABISELECT(40,20), "S19549C5.s19549c5f0");
    check_field_offset(lv, s19549c5f2, ABISELECT(48,28), "S19549C5.s19549c5f2");
    test_class_info(&lv, &cd_S19549C5);
    dp->~S19549C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C5(Test_S19549C5, "S19549C5", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S19549C5C1Ev();
extern void _ZN8S19549C5D2Ev();
Name_Map name_map_S19549C5[] = {
  NSPAIR(_ZN8S19549C5C1Ev),
  NSPAIR(_ZN8S19549C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19549C4_nt;
extern VTBL_ENTRY _ZTI11S19549C4_nt[];
extern  VTBL_ENTRY _ZTV11S19549C4_nt[];
extern Class_Descriptor cd_S19549C6;
extern VTBL_ENTRY _ZTI8S19549C6[];
extern  VTBL_ENTRY _ZTV8S19549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C6[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C7;
extern VTBL_ENTRY _ZTI8S19549C7[];
extern  VTBL_ENTRY _ZTV8S19549C7[];
static Base_Class bases_S19549C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19549C4_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19549C6,    ABISELECT(56,32), //bcp->offset
    22, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19549C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19549C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19549C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19549C5[];
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C5D1Ev();
extern void _ZN8S19549C5D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY vtc_S19549C5[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C5[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19549C5[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern VTBL_ENTRY _ZTV8S19549C5[];
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C6[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
static  VTT_ENTRY vtt_S19549C5[] = {
  {&(_ZTV8S19549C5[4]),  4,45},
  {&(_ZTV8S19549C5[35]),  35,45},
  {&(_ZTV8S19549C5[35]),  35,45},
  {&(_tg__ZTV8S19549C6__8S19549C5[10]),  10,20},
  {&(_tg__ZTV8S19549C6__8S19549C5[10]),  10,20},
};
extern VTBL_ENTRY _ZTI8S19549C5[];
extern  VTBL_ENTRY _ZTV8S19549C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C5[];
Class_Descriptor cd_S19549C5 = {  "S19549C5", // class name
  bases_S19549C5, 5,
  &(vtc_S19549C5[0]), // expected_vtbl_contents
  &(vtt_S19549C5[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S19549C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19549C5),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19549C5),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19549C3  : virtual S19549C4_nt , S19549C5 , virtual S19549C7 , virtual S19549C9 {
  virtual  ~S19549C3(); // _ZN8S19549C3D2Ev
  virtual void  v33(); // _ZN8S19549C33v33Ev
  virtual void  v34(); // _ZN8S19549C33v34Ev
  S19549C3(); // tgen
};
//SIG(-1 S19549C3) C1{ VBC2{ v3 v4 v5 v6 v7 v8 v9} BC3{ VBC4{ VBC2 v10 v11 v12} BC5{ BC6{ BC7{ v13 v14 v15 Fc Fp Fs:11} v16 v17 v18} vd v19 v20 v21 v22 Fp} vd v23 v24 v25 v26 v27 v28 FL Fs:0 FU8{ m}} VBC5 VBC7 vd v1 v2}


 S19549C3 ::~S19549C3(){ note_dtor("S19549C3", this);}
void  S19549C3 ::v33(){vfunc_called(this, "_ZN8S19549C33v33Ev");}
void  S19549C3 ::v34(){vfunc_called(this, "_ZN8S19549C33v34Ev");}
S19549C3 ::S19549C3(){ note_ctor("S19549C3", this);} // tgen

static void Test_S19549C3()
{
  extern Class_Descriptor cd_S19549C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,19)];
    init_test(&cd_S19549C3, buf);
    S19549C3 *dp, &lv = *(dp=new (buf) S19549C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,72), "sizeof(S19549C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19549C3)");
    check_base_class_offset(lv, (S19549C4_nt*), ABISELECT(56,32), "S19549C3");
    check_base_class_offset(lv, (S19549C4_nt*)(S19549C6*), ABISELECT(56,32), "S19549C3");
    check_base_class_offset(lv, (S19549C6*)(S19549C5*), ABISELECT(56,32), "S19549C3");
    check_base_class_offset(lv, (S19549C9*)(S19549C8*)(S19549C7*)(S19549C5*), 0, "S19549C3");
    check_base_class_offset(lv, (S19549C8*)(S19549C7*)(S19549C5*), 0, "S19549C3");
    check_base_class_offset(lv, (S19549C7*)(S19549C5*), 0, "S19549C3");
    check_base_class_offset(lv, (S19549C5*), 0, "S19549C3");
    /*is_ambiguous_... S19549C3::S19549C7 */ AMB_check_base_class_offset(lv, (S19549C9*)(S19549C8*)(S19549C7*), ABISELECT(64,36), "S19549C3");
    /*is_ambiguous_... S19549C3::S19549C7 */ AMB_check_base_class_offset(lv, (S19549C8*)(S19549C7*), ABISELECT(64,36), "S19549C3");
    /*is_ambiguous_... S19549C3::S19549C7 */ AMB_check_base_class_offset(lv, (S19549C7*), ABISELECT(64,36), "S19549C3");
    /*is_ambiguous_... S19549C3::S19549C9 */ AMB_check_base_class_offset(lv, (S19549C9*), ABISELECT(104,56), "S19549C3");
    test_class_info(&lv, &cd_S19549C3);
    dp->~S19549C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C3(Test_S19549C3, "S19549C3", ABISELECT(136,72));

#else // __cplusplus

extern void _ZN8S19549C3C1Ev();
extern void _ZN8S19549C3D2Ev();
Name_Map name_map_S19549C3[] = {
  NSPAIR(_ZN8S19549C3C1Ev),
  NSPAIR(_ZN8S19549C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19549C4_nt;
extern VTBL_ENTRY _ZTI11S19549C4_nt[];
extern  VTBL_ENTRY _ZTV11S19549C4_nt[];
extern Class_Descriptor cd_S19549C6;
extern VTBL_ENTRY _ZTI8S19549C6[];
extern  VTBL_ENTRY _ZTV8S19549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C6[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C7;
extern VTBL_ENTRY _ZTI8S19549C7[];
extern  VTBL_ENTRY _ZTV8S19549C7[];
extern Class_Descriptor cd_S19549C5;
extern VTBL_ENTRY _ZTI8S19549C5[];
extern  VTBL_ENTRY _ZTV8S19549C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C5[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C7;
extern VTBL_ENTRY _ZTI8S19549C7[];
extern  VTBL_ENTRY _ZTV8S19549C7[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
static Base_Class bases_S19549C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19549C4_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19549C6,    ABISELECT(56,32), //bcp->offset
    26, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19549C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    3, //immediately_derived
  0, 0},
  {&cd_S19549C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19549C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19549C5,    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_S19549C9,    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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19549C8,    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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19549C7,    ABISELECT(64,36), //bcp->offset
    49, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19549C9,    ABISELECT(104,56), //bcp->offset
    74, //bcp->virtual_function_table_offset
    5, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19549C3[];
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C3D1Ev();
extern void _ZN8S19549C3D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
extern void _ZN8S19549C33v33Ev();
extern void _ZN8S19549C33v34Ev();
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void ABISELECT(_ZTv0_n72_N8S19549C3D1Ev,_ZTv0_n36_N8S19549C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19549C3D1Ev,_ZThn36_N8S19549C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19549C3D0Ev,_ZTv0_n36_N8S19549C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19549C3D0Ev,_ZThn36_N8S19549C3D0Ev)() __attribute__((weak));
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
static  VTBL_ENTRY vtc_S19549C3[] = {
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C3D1Ev,_ZTv0_n36_N8S19549C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C3D0Ev,_ZTv0_n36_N8S19549C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
};
extern VTBL_ENTRY _ZTV8S19549C3[];
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C5D1Ev();
extern void _ZN8S19549C5D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C5__8S19549C3[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C5[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C5__8S19549C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19549C5[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C6[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
static  VTT_ENTRY vtt_S19549C3[] = {
  {&(_ZTV8S19549C3[6]),  6,82},
  {&(_tg__ZTV8S19549C5__8S19549C3[4]),  4,22},
  {&(_tg__ZTV8S19549C6__8S19549C5__8S19549C3[13]),  13,23},
  {&(_tg__ZTV8S19549C6__8S19549C5__8S19549C3[13]),  13,23},
  {&(_ZTV8S19549C3[39]),  39,82},
  {&(_ZTV8S19549C3[39]),  39,82},
  {&(_ZTV8S19549C3[62]),  62,82},
  {&(_ZTV8S19549C3[79]),  79,82},
  {&(_tg__ZTV8S19549C6__8S19549C3[10]),  10,20},
  {&(_tg__ZTV8S19549C6__8S19549C3[10]),  10,20},
};
extern VTBL_ENTRY _ZTI8S19549C3[];
extern  VTBL_ENTRY _ZTV8S19549C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C3[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C3D0Ev,_ZTv0_n36_N8S19549C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19549C3D0Ev,_ZThn36_N8S19549C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C3D1Ev,_ZTv0_n36_N8S19549C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19549C3D1Ev,_ZThn36_N8S19549C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19549C3 = {  "S19549C3", // class name
  bases_S19549C3, 10,
  &(vtc_S19549C3[0]), // expected_vtbl_contents
  &(vtt_S19549C3[0]), // expected_vtt_contents
  ABISELECT(136,72), // object size
  NSPAIRA(_ZTI8S19549C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19549C3),82, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19549C3),10, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19549C2  : S19549C3 {
  virtual  ~S19549C2(); // _ZN8S19549C2D2Ev
  virtual void  v35(); // _ZN8S19549C23v35Ev
  virtual void  v36(); // _ZN8S19549C23v36Ev
  virtual void  v37(); // _ZN8S19549C23v37Ev
  virtual void  v38(); // _ZN8S19549C23v38Ev
  virtual void  v39(); // _ZN8S19549C23v39Ev
  S19549C2(); // tgen
};
//SIG(-1 S19549C2) C1{ BC2{ VBC3{ v6 v7 v8 v9 v10 v11 v12} BC4{ VBC5{ VBC3 v13 v14 v15} BC6{ BC7{ BC8{ v16 v17 v18 Fc Fp Fs:11} v19 v20 v21} vd v22 v23 v24 v25 Fp} vd v26 v27 v28 v29 v30 v31 FL Fs:0 FU9{ m}} VBC6 VBC8 vd v32 v33} vd v1 v2 v3 v4 v5}


 S19549C2 ::~S19549C2(){ note_dtor("S19549C2", this);}
void  S19549C2 ::v35(){vfunc_called(this, "_ZN8S19549C23v35Ev");}
void  S19549C2 ::v36(){vfunc_called(this, "_ZN8S19549C23v36Ev");}
void  S19549C2 ::v37(){vfunc_called(this, "_ZN8S19549C23v37Ev");}
void  S19549C2 ::v38(){vfunc_called(this, "_ZN8S19549C23v38Ev");}
void  S19549C2 ::v39(){vfunc_called(this, "_ZN8S19549C23v39Ev");}
S19549C2 ::S19549C2(){ note_ctor("S19549C2", this);} // tgen

static void Test_S19549C2()
{
  extern Class_Descriptor cd_S19549C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,19)];
    init_test(&cd_S19549C2, buf);
    S19549C2 *dp, &lv = *(dp=new (buf) S19549C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,72), "sizeof(S19549C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19549C2)");
    check_base_class_offset(lv, (S19549C4_nt*)(S19549C3*), ABISELECT(56,32), "S19549C2");
    check_base_class_offset(lv, (S19549C4_nt*)(S19549C6*), ABISELECT(56,32), "S19549C2");
    check_base_class_offset(lv, (S19549C6*)(S19549C5*)(S19549C3*), ABISELECT(56,32), "S19549C2");
    check_base_class_offset(lv, (S19549C9*)(S19549C8*)(S19549C7*)(S19549C5*)(S19549C3*), 0, "S19549C2");
    check_base_class_offset(lv, (S19549C8*)(S19549C7*)(S19549C5*)(S19549C3*), 0, "S19549C2");
    check_base_class_offset(lv, (S19549C7*)(S19549C5*)(S19549C3*), 0, "S19549C2");
    check_base_class_offset(lv, (S19549C5*)(S19549C3*), 0, "S19549C2");
    /*is_ambiguous_... S19549C2::S19549C7 */ AMB_check_base_class_offset(lv, (S19549C9*)(S19549C8*)(S19549C7*), ABISELECT(64,36), "S19549C2");
    /*is_ambiguous_... S19549C2::S19549C7 */ AMB_check_base_class_offset(lv, (S19549C8*)(S19549C7*), ABISELECT(64,36), "S19549C2");
    /*is_ambiguous_... S19549C3::S19549C7 */ AMB_check_base_class_offset(lv, (S19549C7*)(S19549C3*), ABISELECT(64,36), "S19549C2");
    /*is_ambiguous_... S19549C3::S19549C9 */ AMB_check_base_class_offset(lv, (S19549C9*)(S19549C3*), ABISELECT(104,56), "S19549C2");
    check_base_class_offset(lv, (S19549C3*), 0, "S19549C2");
    test_class_info(&lv, &cd_S19549C2);
    dp->~S19549C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C2(Test_S19549C2, "S19549C2", ABISELECT(136,72));

#else // __cplusplus

extern void _ZN8S19549C2C1Ev();
extern void _ZN8S19549C2D2Ev();
Name_Map name_map_S19549C2[] = {
  NSPAIR(_ZN8S19549C2C1Ev),
  NSPAIR(_ZN8S19549C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19549C4_nt;
extern VTBL_ENTRY _ZTI11S19549C4_nt[];
extern  VTBL_ENTRY _ZTV11S19549C4_nt[];
extern Class_Descriptor cd_S19549C6;
extern VTBL_ENTRY _ZTI8S19549C6[];
extern  VTBL_ENTRY _ZTV8S19549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C6[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C7;
extern VTBL_ENTRY _ZTI8S19549C7[];
extern  VTBL_ENTRY _ZTV8S19549C7[];
extern Class_Descriptor cd_S19549C5;
extern VTBL_ENTRY _ZTI8S19549C5[];
extern  VTBL_ENTRY _ZTV8S19549C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C5[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C7;
extern VTBL_ENTRY _ZTI8S19549C7[];
extern  VTBL_ENTRY _ZTV8S19549C7[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C3;
extern VTBL_ENTRY _ZTI8S19549C3[];
extern  VTBL_ENTRY _ZTV8S19549C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C3[];
static Base_Class bases_S19549C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19549C4_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19549C6,    ABISELECT(56,32), //bcp->offset
    31, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19549C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    3, //immediately_derived
  0, 0},
  {&cd_S19549C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19549C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19549C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19549C9,    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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19549C8,    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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19549C7,    ABISELECT(64,36), //bcp->offset
    54, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19549C9,    ABISELECT(104,56), //bcp->offset
    79, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19549C3,    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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19549C2[];
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C2D1Ev();
extern void _ZN8S19549C2D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
extern void _ZN8S19549C33v33Ev();
extern void _ZN8S19549C33v34Ev();
extern void _ZN8S19549C23v35Ev();
extern void _ZN8S19549C23v36Ev();
extern void _ZN8S19549C23v37Ev();
extern void _ZN8S19549C23v38Ev();
extern void _ZN8S19549C23v39Ev();
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void ABISELECT(_ZTv0_n72_N8S19549C2D1Ev,_ZTv0_n36_N8S19549C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19549C2D1Ev,_ZThn36_N8S19549C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19549C2D0Ev,_ZTv0_n36_N8S19549C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19549C2D0Ev,_ZThn36_N8S19549C2D0Ev)() __attribute__((weak));
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
static  VTBL_ENTRY vtc_S19549C2[] = {
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C2[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v35Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v36Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v37Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v38Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v39Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19549C2[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19549C2[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C2D1Ev,_ZTv0_n36_N8S19549C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C2D0Ev,_ZTv0_n36_N8S19549C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19549C2[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
};
extern VTBL_ENTRY _ZTV8S19549C2[];
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C3D1Ev();
extern void _ZN8S19549C3D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
extern void _ZN8S19549C33v33Ev();
extern void _ZN8S19549C33v34Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C3__8S19549C2[] = {
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v34Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C5D1Ev();
extern void _ZN8S19549C5D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C58S19549C3__8S19549C2[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C5[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C58S19549C3__8S19549C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19549C5[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C3__8S19549C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void ABISELECT(_ZTv0_n72_N8S19549C3D1Ev,_ZTv0_n36_N8S19549C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19549C3D1Ev,_ZThn36_N8S19549C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19549C3D0Ev,_ZTv0_n36_N8S19549C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19549C3D0Ev,_ZThn36_N8S19549C3D0Ev)() __attribute__((weak));
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C7__A1__8S19549C3__8S19549C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C3D1Ev,_ZTv0_n36_N8S19549C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C3D0Ev,_ZTv0_n36_N8S19549C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C9__A2__8S19549C3__8S19549C2[] = {
  0,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C6[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
static  VTT_ENTRY vtt_S19549C2[] = {
  {&(_ZTV8S19549C2[6]),  6,87},
  {&(_tg__ZTV8S19549C3__8S19549C2[6]),  6,26},
  {&(_tg__ZTV8S19549C58S19549C3__8S19549C2[4]),  4,22},
  {&(_tg__ZTV8S19549C6__8S19549C58S19549C3__8S19549C2[13]),  13,23},
  {&(_tg__ZTV8S19549C6__8S19549C58S19549C3__8S19549C2[13]),  13,23},
  {&(_tg__ZTV8S19549C6__8S19549C3__8S19549C2[13]),  13,23},
  {&(_tg__ZTV8S19549C6__8S19549C3__8S19549C2[13]),  13,23},
  {&(_tg__ZTV8S19549C7__A1__8S19549C3__8S19549C2[13]),  13,25},
  {&(_tg__ZTV8S19549C9__A2__8S19549C3__8S19549C2[5]),  5,8},
  {&(_ZTV8S19549C2[44]),  44,87},
  {&(_ZTV8S19549C2[44]),  44,87},
  {&(_ZTV8S19549C2[67]),  67,87},
  {&(_ZTV8S19549C2[84]),  84,87},
  {&(_tg__ZTV8S19549C6__8S19549C2[10]),  10,20},
  {&(_tg__ZTV8S19549C6__8S19549C2[10]),  10,20},
};
extern VTBL_ENTRY _ZTI8S19549C2[];
extern  VTBL_ENTRY _ZTV8S19549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C2[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C3D0Ev,_ZTv0_n36_N8S19549C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19549C3D0Ev,_ZThn36_N8S19549C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C3D1Ev,_ZTv0_n36_N8S19549C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19549C3D1Ev,_ZThn36_N8S19549C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C2D0Ev,_ZTv0_n36_N8S19549C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19549C2D0Ev,_ZThn36_N8S19549C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C2D1Ev,_ZTv0_n36_N8S19549C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19549C2D1Ev,_ZThn36_N8S19549C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19549C2 = {  "S19549C2", // class name
  bases_S19549C2, 11,
  &(vtc_S19549C2[0]), // expected_vtbl_contents
  &(vtt_S19549C2[0]), // expected_vtt_contents
  ABISELECT(136,72), // object size
  NSPAIRA(_ZTI8S19549C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19549C2),87, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19549C2),15, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19549C12  {
  long double s19549c12f0;
  char s19549c12f1;
  virtual void  v40(); // _ZN9S19549C123v40Ev
  virtual void  v41(); // _ZN9S19549C123v41Ev
  virtual void  v42(); // _ZN9S19549C123v42Ev
  virtual void  v43(); // _ZN9S19549C123v43Ev
  virtual void  v44(); // _ZN9S19549C123v44Ev
  virtual void  v45(); // _ZN9S19549C123v45Ev
  virtual void  v46(); // _ZN9S19549C123v46Ev
  virtual void  v47(); // _ZN9S19549C123v47Ev
  ~S19549C12(); // tgen
  S19549C12(); // tgen
};
//SIG(-1 S19549C12) C1{ v1 v2 v3 v4 v5 v6 v7 v8 FD Fc}


void  S19549C12 ::v40(){vfunc_called(this, "_ZN9S19549C123v40Ev");}
void  S19549C12 ::v41(){vfunc_called(this, "_ZN9S19549C123v41Ev");}
void  S19549C12 ::v42(){vfunc_called(this, "_ZN9S19549C123v42Ev");}
void  S19549C12 ::v43(){vfunc_called(this, "_ZN9S19549C123v43Ev");}
void  S19549C12 ::v44(){vfunc_called(this, "_ZN9S19549C123v44Ev");}
void  S19549C12 ::v45(){vfunc_called(this, "_ZN9S19549C123v45Ev");}
void  S19549C12 ::v46(){vfunc_called(this, "_ZN9S19549C123v46Ev");}
void  S19549C12 ::v47(){vfunc_called(this, "_ZN9S19549C123v47Ev");}
S19549C12 ::~S19549C12(){ note_dtor("S19549C12", this);} // tgen
S19549C12 ::S19549C12(){ note_ctor("S19549C12", this);} // tgen

static void Test_S19549C12()
{
  extern Class_Descriptor cd_S19549C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19549C12, buf);
    S19549C12 *dp, &lv = *(dp=new (buf) S19549C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19549C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19549C12)");
    check_field_offset(lv, s19549c12f0, ABISELECT(16,4), "S19549C12.s19549c12f0");
    check_field_offset(lv, s19549c12f1, ABISELECT(32,16), "S19549C12.s19549c12f1");
    test_class_info(&lv, &cd_S19549C12);
    dp->~S19549C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C12(Test_S19549C12, "S19549C12", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN9S19549C12C1Ev();
extern void _ZN9S19549C12D1Ev();
Name_Map name_map_S19549C12[] = {
  NSPAIR(_ZN9S19549C12C1Ev),
  NSPAIR(_ZN9S19549C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19549C12[];
extern void _ZN9S19549C123v40Ev();
extern void _ZN9S19549C123v41Ev();
extern void _ZN9S19549C123v42Ev();
extern void _ZN9S19549C123v43Ev();
extern void _ZN9S19549C123v44Ev();
extern void _ZN9S19549C123v45Ev();
extern void _ZN9S19549C123v46Ev();
extern void _ZN9S19549C123v47Ev();
static  VTBL_ENTRY vtc_S19549C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19549C12[0]),
  (VTBL_ENTRY)&_ZN9S19549C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v44Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v45Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v46Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v47Ev,
};
extern VTBL_ENTRY _ZTI9S19549C12[];
extern  VTBL_ENTRY _ZTV9S19549C12[];
Class_Descriptor cd_S19549C12 = {  "S19549C12", // class name
  0,0,//no base classes
  &(vtc_S19549C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI9S19549C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19549C12),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19549C14  : S19549C9 {
  virtual void  v48(); // _ZN9S19549C143v48Ev
  ~S19549C14(); // tgen
  S19549C14(); // tgen
};
//SIG(-1 S19549C14) C1{ BC2{ v2 v3 v4 Fc Fp Fs:11} v1}


void  S19549C14 ::v48(){vfunc_called(this, "_ZN9S19549C143v48Ev");}
S19549C14 ::~S19549C14(){ note_dtor("S19549C14", this);} // tgen
S19549C14 ::S19549C14(){ note_ctor("S19549C14", this);} // tgen

static void Test_S19549C14()
{
  extern Class_Descriptor cd_S19549C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19549C14, buf);
    S19549C14 *dp, &lv = *(dp=new (buf) S19549C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19549C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19549C14)");
    check_base_class_offset(lv, (S19549C9*), 0, "S19549C14");
    test_class_info(&lv, &cd_S19549C14);
    dp->~S19549C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C14(Test_S19549C14, "S19549C14", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19549C14C1Ev();
extern void _ZN9S19549C14D1Ev();
Name_Map name_map_S19549C14[] = {
  NSPAIR(_ZN9S19549C14C1Ev),
  NSPAIR(_ZN9S19549C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
static Base_Class bases_S19549C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19549C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19549C14[];
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN9S19549C143v48Ev();
static  VTBL_ENTRY vtc_S19549C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19549C14[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN9S19549C143v48Ev,
};
extern VTBL_ENTRY _ZTI9S19549C14[];
extern  VTBL_ENTRY _ZTV9S19549C14[];
Class_Descriptor cd_S19549C14 = {  "S19549C14", // class name
  bases_S19549C14, 1,
  &(vtc_S19549C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19549C14),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19549C14),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  S19549C13  : S19549C6 , virtual S19549C14 , S19549C8 {
  int s19549c13f0;
  char s19549c13f1[3];
  virtual void  v49(); // _ZN9S19549C133v49Ev
  virtual void  v50(); // _ZN9S19549C133v50Ev
  virtual void  v51(); // _ZN9S19549C133v51Ev
  virtual void  v52(); // _ZN9S19549C133v52Ev
  virtual void  v53(); // _ZN9S19549C133v53Ev
  ~S19549C13(); // tgen
  S19549C13(); // tgen
};
//SIG(-1 S19549C13) C1{ BC2{ VBC3{ v6 v7 v8 v9 v10 v11 v12} v13 v14 v15} VBC4{ BC5{ v16 v17 v18 Fc Fp Fs:11} v19} BC6{ BC5 v20 v21 v22} v1 v2 v3 v4 v5 Fi Fc[3]}


void  S19549C13 ::v49(){vfunc_called(this, "_ZN9S19549C133v49Ev");}
void  S19549C13 ::v50(){vfunc_called(this, "_ZN9S19549C133v50Ev");}
void  S19549C13 ::v51(){vfunc_called(this, "_ZN9S19549C133v51Ev");}
void  S19549C13 ::v52(){vfunc_called(this, "_ZN9S19549C133v52Ev");}
void  S19549C13 ::v53(){vfunc_called(this, "_ZN9S19549C133v53Ev");}
S19549C13 ::~S19549C13(){ note_dtor("S19549C13", this);} // tgen
S19549C13 ::S19549C13(){ note_ctor("S19549C13", this);} // tgen

static void Test_S19549C13()
{
  extern Class_Descriptor cd_S19549C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S19549C13, buf);
    S19549C13 *dp, &lv = *(dp=new (buf) S19549C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S19549C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19549C13)");
    check_base_class_offset(lv, (S19549C4_nt*)(S19549C6*), 0, "S19549C13");
    check_base_class_offset(lv, (S19549C6*), 0, "S19549C13");
    check_base_class_offset(lv, (S19549C9*)(S19549C14*), ABISELECT(48,28), "S19549C13");
    check_base_class_offset(lv, (S19549C14*), ABISELECT(48,28), "S19549C13");
    check_base_class_offset(lv, (S19549C9*)(S19549C8*), ABISELECT(8,4), "S19549C13");
    check_base_class_offset(lv, (S19549C8*), ABISELECT(8,4), "S19549C13");
    check_field_offset(lv, s19549c13f0, ABISELECT(36,20), "S19549C13.s19549c13f0");
    check_field_offset(lv, s19549c13f1, ABISELECT(40,24), "S19549C13.s19549c13f1");
    test_class_info(&lv, &cd_S19549C13);
    dp->~S19549C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C13(Test_S19549C13, "S19549C13", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN9S19549C13C1Ev();
extern void _ZN9S19549C13D1Ev();
Name_Map name_map_S19549C13[] = {
  NSPAIR(_ZN9S19549C13C1Ev),
  NSPAIR(_ZN9S19549C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19549C4_nt;
extern VTBL_ENTRY _ZTI11S19549C4_nt[];
extern  VTBL_ENTRY _ZTV11S19549C4_nt[];
extern Class_Descriptor cd_S19549C6;
extern VTBL_ENTRY _ZTI8S19549C6[];
extern  VTBL_ENTRY _ZTV8S19549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C6[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C14;
extern VTBL_ENTRY _ZTI9S19549C14[];
extern  VTBL_ENTRY _ZTV9S19549C14[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
static Base_Class bases_S19549C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19549C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19549C6,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19549C9,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19549C14,    ABISELECT(48,28), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19549C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19549C8,    ABISELECT(8,4), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19549C13[];
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
extern void _ZN9S19549C133v49Ev();
extern void _ZN9S19549C133v50Ev();
extern void _ZN9S19549C133v51Ev();
extern void _ZN9S19549C133v52Ev();
extern void _ZN9S19549C133v53Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN9S19549C143v48Ev();
static  VTBL_ENTRY vtc_S19549C13[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19549C13[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v49Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v50Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v51Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v52Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v53Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19549C13[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19549C13[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN9S19549C143v48Ev,
};
extern VTBL_ENTRY _ZTV9S19549C13[];
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__9S19549C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C6[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
static  VTT_ENTRY vtt_S19549C13[] = {
  {&(_ZTV9S19549C13[11]),  11,44},
  {&(_tg__ZTV8S19549C6__9S19549C13[10]),  10,20},
  {&(_tg__ZTV8S19549C6__9S19549C13[10]),  10,20},
  {&(_ZTV9S19549C13[11]),  11,44},
  {&(_ZTV9S19549C13[40]),  40,44},
};
extern VTBL_ENTRY _ZTI9S19549C13[];
extern  VTBL_ENTRY _ZTV9S19549C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19549C13[];
Class_Descriptor cd_S19549C13 = {  "S19549C13", // class name
  bases_S19549C13, 6,
  &(vtc_S19549C13[0]), // expected_vtbl_contents
  &(vtt_S19549C13[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI9S19549C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19549C13),44, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19549C13),5, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19549C11  : S19549C12 , virtual S19549C13 , virtual S19549C8 {
  virtual  ~S19549C11(); // _ZN9S19549C11D2Ev
  virtual void  v54(); // _ZN9S19549C113v54Ev
  virtual void  v55(); // _ZN9S19549C113v55Ev
  virtual void  v56(); // _ZN9S19549C113v56Ev
  virtual void  v57(); // _ZN9S19549C113v57Ev
  virtual void  v58(); // _ZN9S19549C113v58Ev
  virtual void  v59(); // _ZN9S19549C113v59Ev
  virtual void  v60(); // _ZN9S19549C113v60Ev
  virtual void  v61(); // _ZN9S19549C113v61Ev
  S19549C11(); // tgen
};
//SIG(-1 S19549C11) C1{ BC2{ v9 v10 v11 v12 v13 v14 v15 v16 FD Fc} VBC3{ BC4{ VBC5{ v17 v18 v19 v20 v21 v22 v23} v24 v25 v26} VBC6{ BC7{ v27 v28 v29 Fc Fp Fs:11} v30} BC8{ BC7 v31 v32 v33} v34 v35 v36 v37 v38 Fi Fc[3]} VBC8 vd v1 v2 v3 v4 v5 v6 v7 v8}


 S19549C11 ::~S19549C11(){ note_dtor("S19549C11", this);}
void  S19549C11 ::v54(){vfunc_called(this, "_ZN9S19549C113v54Ev");}
void  S19549C11 ::v55(){vfunc_called(this, "_ZN9S19549C113v55Ev");}
void  S19549C11 ::v56(){vfunc_called(this, "_ZN9S19549C113v56Ev");}
void  S19549C11 ::v57(){vfunc_called(this, "_ZN9S19549C113v57Ev");}
void  S19549C11 ::v58(){vfunc_called(this, "_ZN9S19549C113v58Ev");}
void  S19549C11 ::v59(){vfunc_called(this, "_ZN9S19549C113v59Ev");}
void  S19549C11 ::v60(){vfunc_called(this, "_ZN9S19549C113v60Ev");}
void  S19549C11 ::v61(){vfunc_called(this, "_ZN9S19549C113v61Ev");}
S19549C11 ::S19549C11(){ note_ctor("S19549C11", this);} // tgen

static void Test_S19549C11()
{
  extern Class_Descriptor cd_S19549C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,21)];
    init_test(&cd_S19549C11, buf);
    S19549C11 *dp, &lv = *(dp=new (buf) S19549C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S19549C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19549C11)");
    check_base_class_offset(lv, (S19549C12*), 0, "S19549C11");
    check_base_class_offset(lv, (S19549C4_nt*)(S19549C6*)(S19549C13*), ABISELECT(40,20), "S19549C11");
    check_base_class_offset(lv, (S19549C6*)(S19549C13*), ABISELECT(40,20), "S19549C11");
    check_base_class_offset(lv, (S19549C9*)(S19549C14*), ABISELECT(88,48), "S19549C11");
    check_base_class_offset(lv, (S19549C14*)(S19549C13*), ABISELECT(88,48), "S19549C11");
    check_base_class_offset(lv, (S19549C9*)(S19549C8*)(S19549C13*), ABISELECT(48,24), "S19549C11");
    check_base_class_offset(lv, (S19549C8*)(S19549C13*), ABISELECT(48,24), "S19549C11");
    check_base_class_offset(lv, (S19549C13*), ABISELECT(40,20), "S19549C11");
    /*is_ambiguous_... S19549C11::S19549C8 */ AMB_check_base_class_offset(lv, (S19549C9*)(S19549C8*), ABISELECT(120,64), "S19549C11");
    /*is_ambiguous_... S19549C11::S19549C8 */ AMB_check_base_class_offset(lv, (S19549C8*), ABISELECT(120,64), "S19549C11");
    test_class_info(&lv, &cd_S19549C11);
    dp->~S19549C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C11(Test_S19549C11, "S19549C11", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN9S19549C11C1Ev();
extern void _ZN9S19549C11D2Ev();
Name_Map name_map_S19549C11[] = {
  NSPAIR(_ZN9S19549C11C1Ev),
  NSPAIR(_ZN9S19549C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19549C12;
extern VTBL_ENTRY _ZTI9S19549C12[];
extern  VTBL_ENTRY _ZTV9S19549C12[];
extern Class_Descriptor cd_S19549C4_nt;
extern VTBL_ENTRY _ZTI11S19549C4_nt[];
extern  VTBL_ENTRY _ZTV11S19549C4_nt[];
extern Class_Descriptor cd_S19549C6;
extern VTBL_ENTRY _ZTI8S19549C6[];
extern  VTBL_ENTRY _ZTV8S19549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C6[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C14;
extern VTBL_ENTRY _ZTI9S19549C14[];
extern  VTBL_ENTRY _ZTV9S19549C14[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C13;
extern VTBL_ENTRY _ZTI9S19549C13[];
extern  VTBL_ENTRY _ZTV9S19549C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19549C13[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
static Base_Class bases_S19549C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19549C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19549C4_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19549C6,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19549C9,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19549C14,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19549C9,    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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19549C8,    ABISELECT(48,24), //bcp->offset
    64, //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19549C13,    ABISELECT(40,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19549C9,    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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19549C8,    ABISELECT(120,64), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19549C11[];
extern void _ZN9S19549C123v40Ev();
extern void _ZN9S19549C123v41Ev();
extern void _ZN9S19549C123v42Ev();
extern void _ZN9S19549C123v43Ev();
extern void _ZN9S19549C123v44Ev();
extern void _ZN9S19549C123v45Ev();
extern void _ZN9S19549C123v46Ev();
extern void _ZN9S19549C123v47Ev();
extern void _ZN9S19549C11D1Ev();
extern void _ZN9S19549C11D0Ev();
extern void _ZN9S19549C113v54Ev();
extern void _ZN9S19549C113v55Ev();
extern void _ZN9S19549C113v56Ev();
extern void _ZN9S19549C113v57Ev();
extern void _ZN9S19549C113v58Ev();
extern void _ZN9S19549C113v59Ev();
extern void _ZN9S19549C113v60Ev();
extern void _ZN9S19549C113v61Ev();
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
extern void _ZN9S19549C133v49Ev();
extern void _ZN9S19549C133v50Ev();
extern void _ZN9S19549C133v51Ev();
extern void _ZN9S19549C133v52Ev();
extern void _ZN9S19549C133v53Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN9S19549C143v48Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
static  VTBL_ENTRY vtc_S19549C11[] = {
  ABISELECT(120,64),
  ABISELECT(88,48),
  ABISELECT(40,20),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN9S19549C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v44Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v45Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v46Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v47Ev,
  (VTBL_ENTRY)&_ZN9S19549C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19549C11D0Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v54Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v55Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v56Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v57Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v58Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v59Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v60Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v61Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v49Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v50Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v51Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v52Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v53Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN9S19549C143v48Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
};
extern VTBL_ENTRY _ZTV9S19549C11[];
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
extern void _ZN9S19549C133v49Ev();
extern void _ZN9S19549C133v50Ev();
extern void _ZN9S19549C133v51Ev();
extern void _ZN9S19549C133v52Ev();
extern void _ZN9S19549C133v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19549C13__9S19549C11[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19549C13[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v49Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v50Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v51Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v52Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v53Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C69S19549C13__9S19549C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C6[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN9S19549C143v48Ev();
static  VTBL_ENTRY _tg__ZTV9S19549C14__9S19549C13__9S19549C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19549C13[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN9S19549C143v48Ev,
};
static  VTT_ENTRY vtt_S19549C11[] = {
  {&(_ZTV9S19549C11[6]),  6,96},
  {&(_ZTV9S19549C11[49]),  49,96},
  {&(_ZTV9S19549C11[49]),  49,96},
  {&(_ZTV9S19549C11[78]),  78,96},
  {&(_ZTV9S19549C11[66]),  66,96},
  {&(_ZTV9S19549C11[90]),  90,96},
  {&(_tg__ZTV9S19549C13__9S19549C11[11]),  11,26},
  {&(_tg__ZTV8S19549C69S19549C13__9S19549C11[10]),  10,20},
  {&(_tg__ZTV8S19549C69S19549C13__9S19549C11[10]),  10,20},
  {&(_tg__ZTV9S19549C13__9S19549C11[11]),  11,26},
  {&(_tg__ZTV9S19549C14__9S19549C13__9S19549C11[6]),  6,10},
};
extern VTBL_ENTRY _ZTI9S19549C11[];
extern  VTBL_ENTRY _ZTV9S19549C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19549C11[];
Class_Descriptor cd_S19549C11 = {  "S19549C11", // class name
  bases_S19549C11, 10,
  &(vtc_S19549C11[0]), // expected_vtbl_contents
  &(vtt_S19549C11[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI9S19549C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19549C11),96, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19549C11),11, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19549C15  {
  ::S19549C12 s19549c15f0[7];
  virtual  ~S19549C15(); // _ZN9S19549C15D1Ev
  virtual void  v62(); // _ZN9S19549C153v62Ev
  S19549C15(); // tgen
};
//SIG(-1 S19549C15) C1{ vd v1 FC2{ v2 v3 v4 v5 v6 v7 v8 v9 FD Fc}[7]}


 S19549C15 ::~S19549C15(){ note_dtor("S19549C15", this);}
void  S19549C15 ::v62(){vfunc_called(this, "_ZN9S19549C153v62Ev");}
S19549C15 ::S19549C15(){ note_ctor("S19549C15", this);} // tgen

static void Test_S19549C15()
{
  extern Class_Descriptor cd_S19549C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,37)];
    init_test(&cd_S19549C15, buf);
    S19549C15 *dp, &lv = *(dp=new (buf) S19549C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,144), "sizeof(S19549C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19549C15)");
    check_field_offset(lv, s19549c15f0, ABISELECT(16,4), "S19549C15.s19549c15f0");
    test_class_info(&lv, &cd_S19549C15);
    dp->~S19549C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C15(Test_S19549C15, "S19549C15", ABISELECT(352,144));

#else // __cplusplus

extern void _ZN9S19549C15C1Ev();
extern void _ZN9S19549C15D1Ev();
Name_Map name_map_S19549C15[] = {
  NSPAIR(_ZN9S19549C15C1Ev),
  NSPAIR(_ZN9S19549C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19549C15[];
extern void _ZN9S19549C15D1Ev();
extern void _ZN9S19549C15D0Ev();
extern void _ZN9S19549C153v62Ev();
static  VTBL_ENTRY vtc_S19549C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19549C15[0]),
  (VTBL_ENTRY)&_ZN9S19549C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19549C15D0Ev,
  (VTBL_ENTRY)&_ZN9S19549C153v62Ev,
};
extern VTBL_ENTRY _ZTI9S19549C15[];
extern  VTBL_ENTRY _ZTV9S19549C15[];
Class_Descriptor cd_S19549C15 = {  "S19549C15", // class name
  0,0,//no base classes
  &(vtc_S19549C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,144), // object size
  NSPAIRA(_ZTI9S19549C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19549C15),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19549C1  : virtual S19549C2 , virtual S19549C11 , S19549C15 , S19549C5 {
  long double s19549c1f0;
  char s19549c1f1[4];
  virtual  ~S19549C1(); // _ZN8S19549C1D2Ev
  virtual void  v1(); // _ZN8S19549C12v1Ev
  virtual void  v2(); // _ZN8S19549C12v2Ev
  virtual void  v3(); // _ZN8S19549C12v3Ev
  virtual void  v4(); // _ZN8S19549C12v4Ev
  virtual void  v5(); // _ZN8S19549C12v5Ev
  virtual void  v6(); // _ZN8S19549C12v6Ev
  S19549C1(); // tgen
};
//SIG(1 S19549C1) C1{ VBC2{ BC3{ VBC4{ v7 v8 v9 v10 v11 v12 v13} BC5{ VBC6{ VBC4 v14 v15 v16} BC7{ BC8{ BC9{ v17 v18 v19 Fc Fp Fs:11} v20 v21 v22} vd v23 v24 v25 v26 Fp} vd v27 v28 v29 v30 v31 v32 FL Fs:0 FU10{ m}} VBC7 VBC9 vd v33 v34} vd v35 v36 v37 v38 v39} VBC11{ BC12{ v40 v41 v42 v43 v44 v45 v46 v47 FD Fc} VBC13{ BC6 VBC14{ BC9 v48} BC8 v49 v50 v51 v52 v53 Fi Fc[3]} VBC8 vd v54 v55 v56 v57 v58 v59 v60 v61} BC15{ vd v62 FC12[7]} BC5 vd v1 v2 v3 v4 v5 v6 FD Fc[4]}


 S19549C1 ::~S19549C1(){ note_dtor("S19549C1", this);}
void  S19549C1 ::v1(){vfunc_called(this, "_ZN8S19549C12v1Ev");}
void  S19549C1 ::v2(){vfunc_called(this, "_ZN8S19549C12v2Ev");}
void  S19549C1 ::v3(){vfunc_called(this, "_ZN8S19549C12v3Ev");}
void  S19549C1 ::v4(){vfunc_called(this, "_ZN8S19549C12v4Ev");}
void  S19549C1 ::v5(){vfunc_called(this, "_ZN8S19549C12v5Ev");}
void  S19549C1 ::v6(){vfunc_called(this, "_ZN8S19549C12v6Ev");}
S19549C1 ::S19549C1(){ note_ctor("S19549C1", this);} // tgen

static void Test_S19549C1()
{
  extern Class_Descriptor cd_S19549C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(47,87)];
    init_test(&cd_S19549C1, buf);
    S19549C1 *dp, &lv = *(dp=new (buf) S19549C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(736,344), "sizeof(S19549C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19549C1)");
    check_base_class_offset(lv, (S19549C4_nt*)(S19549C3*)(S19549C2*), ABISELECT(496,224), "S19549C1");
    /*is_ambiguous_... S19549C1::S19549C6 */ AMB_check_base_class_offset(lv, (S19549C4_nt*)(S19549C6*), ABISELECT(496,224), "S19549C1");
    check_base_class_offset(lv, (S19549C4_nt*)(S19549C6*)(S19549C13*), ABISELECT(496,224), "S19549C1");
    check_base_class_offset(lv, (S19549C6*)(S19549C5*)(S19549C3*)(S19549C2*), ABISELECT(496,224), "S19549C1");
    /*is_ambiguous_... S19549C1::S19549C5 */ AMB_check_base_class_offset(lv, (S19549C6*)(S19549C5*), ABISELECT(496,224), "S19549C1");
    check_base_class_offset(lv, (S19549C9*)(S19549C8*)(S19549C7*)(S19549C5*)(S19549C3*)(S19549C2*), ABISELECT(440,192), "S19549C1");
    check_base_class_offset(lv, (S19549C8*)(S19549C7*)(S19549C5*)(S19549C3*)(S19549C2*), ABISELECT(440,192), "S19549C1");
    check_base_class_offset(lv, (S19549C7*)(S19549C5*)(S19549C3*)(S19549C2*), ABISELECT(440,192), "S19549C1");
    check_base_class_offset(lv, (S19549C5*)(S19549C3*)(S19549C2*), ABISELECT(440,192), "S19549C1");
    /*is_ambiguous_... S19549C1::S19549C7 */ AMB_check_base_class_offset(lv, (S19549C9*)(S19549C8*)(S19549C7*), ABISELECT(504,228), "S19549C1");
    /*is_ambiguous_... S19549C1::S19549C7 */ AMB_check_base_class_offset(lv, (S19549C8*)(S19549C7*), ABISELECT(504,228), "S19549C1");
    /*is_ambiguous_... S19549C3::S19549C7 */ AMB_check_base_class_offset(lv, (S19549C7*)(S19549C3*)(S19549C2*), ABISELECT(504,228), "S19549C1");
    /*is_ambiguous_... S19549C3::S19549C9 */ AMB_check_base_class_offset(lv, (S19549C9*)(S19549C3*)(S19549C2*), ABISELECT(544,248), "S19549C1");
    check_base_class_offset(lv, (S19549C3*)(S19549C2*), ABISELECT(440,192), "S19549C1");
    check_base_class_offset(lv, (S19549C2*), ABISELECT(440,192), "S19549C1");
    check_base_class_offset(lv, (S19549C12*)(S19549C11*), ABISELECT(576,264), "S19549C1");
    check_base_class_offset(lv, (S19549C6*)(S19549C13*), ABISELECT(616,284), "S19549C1");
    check_base_class_offset(lv, (S19549C9*)(S19549C14*), ABISELECT(664,312), "S19549C1");
    check_base_class_offset(lv, (S19549C14*)(S19549C13*), ABISELECT(664,312), "S19549C1");
    check_base_class_offset(lv, (S19549C9*)(S19549C8*)(S19549C13*), ABISELECT(624,288), "S19549C1");
    check_base_class_offset(lv, (S19549C8*)(S19549C13*), ABISELECT(624,288), "S19549C1");
    check_base_class_offset(lv, (S19549C13*)(S19549C11*), ABISELECT(616,284), "S19549C1");
    /*is_ambiguous_... S19549C1::S19549C8 */ AMB_check_base_class_offset(lv, (S19549C9*)(S19549C8*), ABISELECT(696,328), "S19549C1");
    /*is_ambiguous_... S19549C11::S19549C8 */ AMB_check_base_class_offset(lv, (S19549C8*)(S19549C11*), ABISELECT(696,328), "S19549C1");
    check_base_class_offset(lv, (S19549C11*), ABISELECT(576,264), "S19549C1");
    check_base_class_offset(lv, (S19549C15*), 0, "S19549C1");
    /*is_ambiguous_... S19549C1::S19549C5 */ AMB_check_base_class_offset(lv, (S19549C9*)(S19549C8*)(S19549C7*)(S19549C5*), ABISELECT(352,144), "S19549C1");
    /*is_ambiguous_... S19549C1::S19549C5 */ AMB_check_base_class_offset(lv, (S19549C8*)(S19549C7*)(S19549C5*), ABISELECT(352,144), "S19549C1");
    /*is_ambiguous_... S19549C1::S19549C5 */ AMB_check_base_class_offset(lv, (S19549C7*)(S19549C5*), ABISELECT(352,144), "S19549C1");
    /*is_ambiguous_... S19549C1::S19549C5 */ AMB_check_base_class_offset(lv, (S19549C5*), ABISELECT(352,144), "S19549C1");
    check_field_offset(lv, s19549c1f0, ABISELECT(416,176), "S19549C1.s19549c1f0");
    check_field_offset(lv, s19549c1f1, ABISELECT(432,188), "S19549C1.s19549c1f1");
    test_class_info(&lv, &cd_S19549C1);
    dp->~S19549C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19549C1(Test_S19549C1, "S19549C1", ABISELECT(736,344));

#else // __cplusplus

extern void _ZN8S19549C1C1Ev();
extern void _ZN8S19549C1D2Ev();
Name_Map name_map_S19549C1[] = {
  NSPAIR(_ZN8S19549C1C1Ev),
  NSPAIR(_ZN8S19549C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19549C4_nt;
extern VTBL_ENTRY _ZTI11S19549C4_nt[];
extern  VTBL_ENTRY _ZTV11S19549C4_nt[];
extern Class_Descriptor cd_S19549C6;
extern VTBL_ENTRY _ZTI8S19549C6[];
extern  VTBL_ENTRY _ZTV8S19549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C6[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C7;
extern VTBL_ENTRY _ZTI8S19549C7[];
extern  VTBL_ENTRY _ZTV8S19549C7[];
extern Class_Descriptor cd_S19549C5;
extern VTBL_ENTRY _ZTI8S19549C5[];
extern  VTBL_ENTRY _ZTV8S19549C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C5[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C7;
extern VTBL_ENTRY _ZTI8S19549C7[];
extern  VTBL_ENTRY _ZTV8S19549C7[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C3;
extern VTBL_ENTRY _ZTI8S19549C3[];
extern  VTBL_ENTRY _ZTV8S19549C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C3[];
extern Class_Descriptor cd_S19549C2;
extern VTBL_ENTRY _ZTI8S19549C2[];
extern  VTBL_ENTRY _ZTV8S19549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C2[];
extern Class_Descriptor cd_S19549C12;
extern VTBL_ENTRY _ZTI9S19549C12[];
extern  VTBL_ENTRY _ZTV9S19549C12[];
extern Class_Descriptor cd_S19549C6;
extern VTBL_ENTRY _ZTI8S19549C6[];
extern  VTBL_ENTRY _ZTV8S19549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C6[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C14;
extern VTBL_ENTRY _ZTI9S19549C14[];
extern  VTBL_ENTRY _ZTV9S19549C14[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C13;
extern VTBL_ENTRY _ZTI9S19549C13[];
extern  VTBL_ENTRY _ZTV9S19549C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19549C13[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C11;
extern VTBL_ENTRY _ZTI9S19549C11[];
extern  VTBL_ENTRY _ZTV9S19549C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19549C11[];
extern Class_Descriptor cd_S19549C15;
extern VTBL_ENTRY _ZTI9S19549C15[];
extern  VTBL_ENTRY _ZTV9S19549C15[];
extern Class_Descriptor cd_S19549C9;
extern VTBL_ENTRY _ZTI8S19549C9[];
extern  VTBL_ENTRY _ZTV8S19549C9[];
extern Class_Descriptor cd_S19549C8;
extern VTBL_ENTRY _ZTI8S19549C8[];
extern  VTBL_ENTRY _ZTV8S19549C8[];
extern Class_Descriptor cd_S19549C7;
extern VTBL_ENTRY _ZTI8S19549C7[];
extern  VTBL_ENTRY _ZTV8S19549C7[];
extern Class_Descriptor cd_S19549C5;
extern VTBL_ENTRY _ZTI8S19549C5[];
extern  VTBL_ENTRY _ZTV8S19549C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C5[];
static Base_Class bases_S19549C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19549C4_nt,    ABISELECT(496,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19549C6,    ABISELECT(496,224), //bcp->offset
    97, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19549C9,    ABISELECT(440,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19549C8,    ABISELECT(440,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
    8, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19549C7,    ABISELECT(440,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
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19549C5,    ABISELECT(440,192), //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19549C9,    ABISELECT(504,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19549C8,    ABISELECT(504,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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19549C7,    ABISELECT(504,228), //bcp->offset
    120, //bcp->virtual_function_table_offset
    13, //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
    10, //immediately_derived
  0, 1},
  {&cd_S19549C9,    ABISELECT(544,248), //bcp->offset
    145, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19549C3,    ABISELECT(440,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19549C2,    ABISELECT(440,192), //bcp->offset
    42, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19549C12,    ABISELECT(576,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
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19549C6,    ABISELECT(616,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19549C9,    ABISELECT(664,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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19549C14,    ABISELECT(664,312), //bcp->offset
    242, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19549C9,    ABISELECT(624,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
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19549C8,    ABISELECT(624,288), //bcp->offset
    234, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19549C13,    ABISELECT(616,284), //bcp->offset
    194, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19549C9,    ABISELECT(696,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
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19549C8,    ABISELECT(696,328), //bcp->offset
    252, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19549C11,    ABISELECT(576,264), //bcp->offset
    153, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19549C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19549C9,    ABISELECT(352,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
    24, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19549C8,    ABISELECT(352,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
    25, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19549C7,    ABISELECT(352,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
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19549C5,    ABISELECT(352,144), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19549C1[];
extern void _ZN8S19549C1D1Ev();
extern void _ZN8S19549C1D0Ev();
extern void _ZN9S19549C153v62Ev();
extern void _ZN8S19549C12v1Ev();
extern void _ZN8S19549C12v2Ev();
extern void _ZN8S19549C12v3Ev();
extern void _ZN8S19549C12v4Ev();
extern void _ZN8S19549C12v5Ev();
extern void _ZN8S19549C12v6Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void ABISELECT(_ZThn352_N8S19549C1D1Ev,_ZThn144_N8S19549C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S19549C1D0Ev,_ZThn144_N8S19549C1D0Ev)();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void ABISELECT(_ZTv0_n104_N8S19549C1D1Ev,_ZTv0_n52_N8S19549C1D1Ev)();
extern void ABISELECT(_ZThn440_N8S19549C1D1Ev,_ZThn192_N8S19549C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19549C1D0Ev,_ZTv0_n52_N8S19549C1D0Ev)();
extern void ABISELECT(_ZThn440_N8S19549C1D0Ev,_ZThn192_N8S19549C1D0Ev)() __attribute__((weak));
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
extern void _ZN8S19549C33v33Ev();
extern void _ZN8S19549C33v34Ev();
extern void _ZN8S19549C23v35Ev();
extern void _ZN8S19549C23v36Ev();
extern void _ZN8S19549C23v37Ev();
extern void _ZN8S19549C23v38Ev();
extern void _ZN8S19549C23v39Ev();
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void ABISELECT(_ZTv0_n72_N8S19549C1D1Ev,_ZTv0_n36_N8S19549C1D1Ev)();
extern void ABISELECT(_ZThn504_N8S19549C1D1Ev,_ZThn228_N8S19549C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19549C1D0Ev,_ZTv0_n36_N8S19549C1D0Ev)();
extern void ABISELECT(_ZThn504_N8S19549C1D0Ev,_ZThn228_N8S19549C1D0Ev)() __attribute__((weak));
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN9S19549C123v40Ev();
extern void _ZN9S19549C123v41Ev();
extern void _ZN9S19549C123v42Ev();
extern void _ZN9S19549C123v43Ev();
extern void _ZN9S19549C123v44Ev();
extern void _ZN9S19549C123v45Ev();
extern void _ZN9S19549C123v46Ev();
extern void _ZN9S19549C123v47Ev();
extern void ABISELECT(_ZTv0_n120_N8S19549C1D1Ev,_ZTv0_n60_N8S19549C1D1Ev)();
extern void ABISELECT(_ZThn576_N8S19549C1D1Ev,_ZThn264_N8S19549C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19549C1D0Ev,_ZTv0_n60_N8S19549C1D0Ev)();
extern void ABISELECT(_ZThn576_N8S19549C1D0Ev,_ZThn264_N8S19549C1D0Ev)() __attribute__((weak));
extern void _ZN9S19549C113v54Ev();
extern void _ZN9S19549C113v55Ev();
extern void _ZN9S19549C113v56Ev();
extern void _ZN9S19549C113v57Ev();
extern void _ZN9S19549C113v58Ev();
extern void _ZN9S19549C113v59Ev();
extern void _ZN9S19549C113v60Ev();
extern void _ZN9S19549C113v61Ev();
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
extern void _ZN9S19549C133v49Ev();
extern void _ZN9S19549C133v50Ev();
extern void _ZN9S19549C133v51Ev();
extern void _ZN9S19549C133v52Ev();
extern void _ZN9S19549C133v53Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN9S19549C143v48Ev();
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
static  VTBL_ENTRY vtc_S19549C1[] = {
  ABISELECT(696,328),
  ABISELECT(664,312),
  ABISELECT(616,284),
  ABISELECT(576,264),
  ABISELECT(544,248),
  ABISELECT(504,228),
  ABISELECT(496,224),
  ABISELECT(496,224),
  ABISELECT(440,192),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN8S19549C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C1D0Ev,
  (VTBL_ENTRY)&_ZN9S19549C153v62Ev,
  (VTBL_ENTRY)&_ZN8S19549C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19549C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19549C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19549C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19549C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19549C12v6Ev,
  ABISELECT(144,80),
  ABISELECT(144,80),
  ABISELECT(-352,-144),
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn352_N8S19549C1D1Ev,_ZThn144_N8S19549C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn352_N8S19549C1D0Ev,_ZThn144_N8S19549C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-440,-192),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(-440,-192),
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19549C1D1Ev,_ZTv0_n52_N8S19549C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19549C1D0Ev,_ZTv0_n52_N8S19549C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v35Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v36Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v37Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v38Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v39Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-224),
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-504,-228),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-504,-228),
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C1D1Ev,_ZTv0_n36_N8S19549C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C1D0Ev,_ZTv0_n36_N8S19549C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  0,
  0,
  0,
  ABISELECT(-544,-248),
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-264),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,64),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-576,-264),
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN9S19549C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v44Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v45Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v46Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v47Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19549C1D1Ev,_ZTv0_n60_N8S19549C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19549C1D0Ev,_ZTv0_n60_N8S19549C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19549C113v54Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v55Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v56Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v57Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v58Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v59Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v60Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v61Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-616,-284),
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v49Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v50Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v51Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v52Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v53Ev,
  ABISELECT(-624,-288),
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-664,-312),
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN9S19549C143v48Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-696,-328),
  (VTBL_ENTRY)&(_ZTI8S19549C1[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
};
extern VTBL_ENTRY _ZTV8S19549C1[];
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C5D1Ev();
extern void _ZN8S19549C5D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C5__A1__8S19549C1[] = {
  ABISELECT(144,80),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C5[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C5__A1__8S19549C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S19549C5[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C2D1Ev();
extern void _ZN8S19549C2D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
extern void _ZN8S19549C33v33Ev();
extern void _ZN8S19549C33v34Ev();
extern void _ZN8S19549C23v35Ev();
extern void _ZN8S19549C23v36Ev();
extern void _ZN8S19549C23v37Ev();
extern void _ZN8S19549C23v38Ev();
extern void _ZN8S19549C23v39Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C2__8S19549C1[] = {
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C2[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v35Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v36Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v37Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v38Ev,
  (VTBL_ENTRY)&_ZN8S19549C23v39Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C3D1Ev();
extern void _ZN8S19549C3D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
extern void _ZN8S19549C33v33Ev();
extern void _ZN8S19549C33v34Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C38S19549C2__8S19549C1[] = {
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19549C33v34Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void _ZN8S19549C5D1Ev();
extern void _ZN8S19549C5D0Ev();
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
extern void _ZN8S19549C53v27Ev();
extern void _ZN8S19549C53v28Ev();
extern void _ZN8S19549C53v29Ev();
extern void _ZN8S19549C53v30Ev();
extern void _ZN8S19549C53v31Ev();
extern void _ZN8S19549C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C58S19549C38S19549C2__8S19549C1[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C5[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19549C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19549C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v27Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v28Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19549C53v32Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C58S19549C38S19549C2__8S19549C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19549C5[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C38S19549C2__8S19549C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void ABISELECT(_ZTv0_n72_N8S19549C3D1Ev,_ZTv0_n36_N8S19549C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19549C3D1Ev,_ZThn36_N8S19549C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19549C3D0Ev,_ZTv0_n36_N8S19549C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19549C3D0Ev,_ZThn36_N8S19549C3D0Ev)() __attribute__((weak));
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C7__A1__8S19549C38S19549C2__8S19549C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C3D1Ev,_ZTv0_n36_N8S19549C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C3D0Ev,_ZTv0_n36_N8S19549C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C9__A2__8S19549C38S19549C2__8S19549C1[] = {
  0,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19549C3[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C2__8S19549C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19549C2[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
extern void ABISELECT(_ZTv0_n72_N8S19549C2D1Ev,_ZTv0_n36_N8S19549C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19549C2D1Ev,_ZThn36_N8S19549C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19549C2D0Ev,_ZTv0_n36_N8S19549C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19549C2D0Ev,_ZThn36_N8S19549C2D0Ev)() __attribute__((weak));
extern void _ZN8S19549C73v23Ev();
extern void _ZN8S19549C73v24Ev();
extern void _ZN8S19549C73v25Ev();
extern void _ZN8S19549C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C7__A1__8S19549C2__8S19549C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19549C2[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C2D1Ev,_ZTv0_n36_N8S19549C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19549C2D0Ev,_ZTv0_n36_N8S19549C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19549C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v25Ev,
  (VTBL_ENTRY)&_ZN8S19549C73v26Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C9__A2__8S19549C2__8S19549C1[] = {
  0,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19549C2[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C6__8S19549C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C6[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern void _ZN9S19549C123v40Ev();
extern void _ZN9S19549C123v41Ev();
extern void _ZN9S19549C123v42Ev();
extern void _ZN9S19549C123v43Ev();
extern void _ZN9S19549C123v44Ev();
extern void _ZN9S19549C123v45Ev();
extern void _ZN9S19549C123v46Ev();
extern void _ZN9S19549C123v47Ev();
extern void _ZN9S19549C11D1Ev();
extern void _ZN9S19549C11D0Ev();
extern void _ZN9S19549C113v54Ev();
extern void _ZN9S19549C113v55Ev();
extern void _ZN9S19549C113v56Ev();
extern void _ZN9S19549C113v57Ev();
extern void _ZN9S19549C113v58Ev();
extern void _ZN9S19549C113v59Ev();
extern void _ZN9S19549C113v60Ev();
extern void _ZN9S19549C113v61Ev();
static  VTBL_ENTRY _tg__ZTV9S19549C11__8S19549C1[] = {
  ABISELECT(120,64),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN9S19549C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v44Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v45Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v46Ev,
  (VTBL_ENTRY)&_ZN9S19549C123v47Ev,
  (VTBL_ENTRY)&_ZN9S19549C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19549C11D0Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v54Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v55Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v56Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v57Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v58Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v59Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v60Ev,
  (VTBL_ENTRY)&_ZN9S19549C113v61Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
extern void _ZN9S19549C133v49Ev();
extern void _ZN9S19549C133v50Ev();
extern void _ZN9S19549C133v51Ev();
extern void _ZN9S19549C133v52Ev();
extern void _ZN9S19549C133v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19549C13__9S19549C11__8S19549C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v49Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v50Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v51Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v52Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v53Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
static  VTBL_ENTRY _tg__ZTV11S19549C4_nt__9S19549C11__8S19549C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN9S19549C143v48Ev();
static  VTBL_ENTRY _tg__ZTV9S19549C14__9S19549C11__8S19549C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN9S19549C143v48Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C89S19549C13__9S19549C11__8S19549C1[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN8S19549C83v20Ev();
extern void _ZN8S19549C83v21Ev();
extern void _ZN8S19549C83v22Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C8__A1__9S19549C11__8S19549C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19549C11[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v20Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19549C83v22Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
extern void _ZN9S19549C133v49Ev();
extern void _ZN9S19549C133v50Ev();
extern void _ZN9S19549C133v51Ev();
extern void _ZN9S19549C133v52Ev();
extern void _ZN9S19549C133v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19549C13__8S19549C1[] = {
  ABISELECT(48,28),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19549C13[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v49Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v50Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v51Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v52Ev,
  (VTBL_ENTRY)&_ZN9S19549C133v53Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
extern void _ZN8S19549C63v14Ev();
extern void _ZN8S19549C63v15Ev();
extern void _ZN8S19549C63v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19549C69S19549C13__A1__8S19549C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19549C6[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19549C63v16Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
static  VTBL_ENTRY _tg__ZTV11S19549C4_nt__8S19549C69S19549C13__A1__8S19549C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S19549C6[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
};
extern void _ZN11S19549C4_nt2v7Ev();
extern void _ZN11S19549C4_nt2v8Ev();
extern void _ZN11S19549C4_nt2v9Ev();
extern void _ZN11S19549C4_nt3v10Ev();
extern void _ZN11S19549C4_nt3v11Ev();
extern void _ZN11S19549C4_nt3v12Ev();
extern void _ZN11S19549C4_nt3v13Ev();
static  VTBL_ENTRY _tg__ZTV11S19549C4_nt__9S19549C13__8S19549C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S19549C13[0]),
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19549C4_nt3v13Ev,
};
extern void _ZN8S19549C93v17Ev();
extern void _ZN8S19549C93v18Ev();
extern void _ZN8S19549C93v19Ev();
extern void _ZN9S19549C143v48Ev();
static  VTBL_ENTRY _tg__ZTV9S19549C14__9S19549C13__8S19549C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19549C13[0]),
  (VTBL_ENTRY)&_ZN8S19549C93v17Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v18Ev,
  (VTBL_ENTRY)&_ZN8S19549C93v19Ev,
  (VTBL_ENTRY)&_ZN9S19549C143v48Ev,
};
static  VTT_ENTRY vtt_S19549C1[] = {
  {&(_ZTV8S19549C1[11]),  11,266},
  {&(_tg__ZTV8S19549C5__A1__8S19549C1[4]),  4,22},
  {&(_tg__ZTV8S19549C6__8S19549C5__A1__8S19549C1[13]),  13,23},
  {&(_tg__ZTV8S19549C6__8S19549C5__A1__8S19549C1[13]),  13,23},
  {&(_ZTV8S19549C1[72]),  72,266},
  {&(_ZTV8S19549C1[110]),  110,266},
  {&(_ZTV8S19549C1[110]),  110,266},
  {&(_ZTV8S19549C1[133]),  133,266},
  {&(_ZTV8S19549C1[150]),  150,266},
  {&(_ZTV8S19549C1[176]),  176,266},
  {&(_ZTV8S19549C1[219]),  219,266},
  {&(_ZTV8S19549C1[248]),  248,266},
  {&(_ZTV8S19549C1[236]),  236,266},
  {&(_ZTV8S19549C1[260]),  260,266},
  {&(_ZTV8S19549C1[24]),  24,266},
  {&(_tg__ZTV8S19549C2__8S19549C1[6]),  6,31},
  {&(_tg__ZTV8S19549C38S19549C2__8S19549C1[6]),  6,26},
  {&(_tg__ZTV8S19549C58S19549C38S19549C2__8S19549C1[4]),  4,22},
  {&(_tg__ZTV8S19549C6__8S19549C58S19549C38S19549C2__8S19549C1[13]),  13,23},
  {&(_tg__ZTV8S19549C6__8S19549C58S19549C38S19549C2__8S19549C1[13]),  13,23},
  {&(_tg__ZTV8S19549C6__8S19549C38S19549C2__8S19549C1[13]),  13,23},
  {&(_tg__ZTV8S19549C6__8S19549C38S19549C2__8S19549C1[13]),  13,23},
  {&(_tg__ZTV8S19549C7__A1__8S19549C38S19549C2__8S19549C1[13]),  13,25},
  {&(_tg__ZTV8S19549C9__A2__8S19549C38S19549C2__8S19549C1[5]),  5,8},
  {&(_tg__ZTV8S19549C6__8S19549C2__8S19549C1[13]),  13,23},
  {&(_tg__ZTV8S19549C6__8S19549C2__8S19549C1[13]),  13,23},
  {&(_tg__ZTV8S19549C7__A1__8S19549C2__8S19549C1[13]),  13,25},
  {&(_tg__ZTV8S19549C9__A2__8S19549C2__8S19549C1[5]),  5,8},
  {&(_tg__ZTV8S19549C6__8S19549C1[10]),  10,20},
  {&(_tg__ZTV8S19549C6__8S19549C1[10]),  10,20},
  {&(_tg__ZTV9S19549C11__8S19549C1[6]),  6,24},
  {&(_tg__ZTV9S19549C13__9S19549C11__8S19549C1[25]),  25,40},
  {&(_tg__ZTV11S19549C4_nt__9S19549C11__8S19549C1[9]),  9,16},
  {&(_tg__ZTV9S19549C14__9S19549C11__8S19549C1[6]),  6,10},
  {&(_tg__ZTV8S19549C89S19549C13__9S19549C11__8S19549C1[2]),  2,8},
  {&(_tg__ZTV8S19549C8__A1__9S19549C11__8S19549C1[8]),  8,14},
  {&(_tg__ZTV9S19549C13__8S19549C1[11]),  11,26},
  {&(_tg__ZTV8S19549C69S19549C13__A1__8S19549C1[10]),  10,20},
  {&(_tg__ZTV11S19549C4_nt__8S19549C69S19549C13__A1__8S19549C1[9]),  9,16},
  {&(_tg__ZTV11S19549C4_nt__9S19549C13__8S19549C1[9]),  9,16},
  {&(_tg__ZTV9S19549C14__9S19549C13__8S19549C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19549C1[];
extern  VTBL_ENTRY _ZTV8S19549C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19549C1[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C2D0Ev,_ZTv0_n36_N8S19549C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19549C2D0Ev,_ZThn36_N8S19549C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C2D1Ev,_ZTv0_n36_N8S19549C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19549C2D1Ev,_ZThn36_N8S19549C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C3D0Ev,_ZTv0_n36_N8S19549C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19549C3D0Ev,_ZThn36_N8S19549C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C3D1Ev,_ZTv0_n36_N8S19549C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19549C3D1Ev,_ZThn36_N8S19549C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19549C1D0Ev,_ZTv0_n60_N8S19549C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S19549C1D0Ev,_ZThn264_N8S19549C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19549C1D1Ev,_ZTv0_n60_N8S19549C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S19549C1D1Ev,_ZThn264_N8S19549C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C1D0Ev,_ZTv0_n36_N8S19549C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19549C1D0Ev,_ZThn228_N8S19549C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19549C1D1Ev,_ZTv0_n36_N8S19549C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19549C1D1Ev,_ZThn228_N8S19549C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19549C1D0Ev,_ZTv0_n52_N8S19549C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19549C1D0Ev,_ZThn192_N8S19549C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19549C1D1Ev,_ZTv0_n52_N8S19549C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19549C1D1Ev,_ZThn192_N8S19549C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19549C1 = {  "S19549C1", // class name
  bases_S19549C1, 27,
  &(vtc_S19549C1[0]), // expected_vtbl_contents
  &(vtt_S19549C1[0]), // expected_vtt_contents
  ABISELECT(736,344), // object size
  NSPAIRA(_ZTI8S19549C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19549C1),266, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19549C1),41, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C2  {
  void *s20336c2f0[7];
  __tsi64 s20336c2f1;
  short s20336c2f2;
  virtual void  v7(); // _ZN8S20336C22v7Ev
  ~S20336C2(); // tgen
  S20336C2(); // tgen
};
//SIG(-1 S20336C2) C1{ v1 Fp[7] FL Fs}


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

static void Test_S20336C2()
{
  extern Class_Descriptor cd_S20336C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S20336C2, buf);
    S20336C2 *dp, &lv = *(dp=new (buf) S20336C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S20336C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20336C2)");
    check_field_offset(lv, s20336c2f0, ABISELECT(8,4), "S20336C2.s20336c2f0");
    check_field_offset(lv, s20336c2f1, ABISELECT(64,32), "S20336C2.s20336c2f1");
    check_field_offset(lv, s20336c2f2, ABISELECT(72,40), "S20336C2.s20336c2f2");
    test_class_info(&lv, &cd_S20336C2);
    dp->~S20336C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C2(Test_S20336C2, "S20336C2", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S20336C2C1Ev();
extern void _ZN8S20336C2D1Ev();
Name_Map name_map_S20336C2[] = {
  NSPAIR(_ZN8S20336C2C1Ev),
  NSPAIR(_ZN8S20336C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20336C2[];
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY vtc_S20336C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C2[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
Class_Descriptor cd_S20336C2 = {  "S20336C2", // class name
  0,0,//no base classes
  &(vtc_S20336C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S20336C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20336C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C5  : S20336C2 {
  virtual void  v8(); // _ZN8S20336C52v8Ev
  ~S20336C5(); // tgen
  S20336C5(); // tgen
};
//SIG(-1 S20336C5) C1{ BC2{ v2 Fp[7] FL Fs} v1}


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

static void Test_S20336C5()
{
  extern Class_Descriptor cd_S20336C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S20336C5, buf);
    S20336C5 *dp, &lv = *(dp=new (buf) S20336C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S20336C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20336C5)");
    check_base_class_offset(lv, (S20336C2*), 0, "S20336C5");
    test_class_info(&lv, &cd_S20336C5);
    dp->~S20336C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C5(Test_S20336C5, "S20336C5", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S20336C5C1Ev();
extern void _ZN8S20336C5D1Ev();
Name_Map name_map_S20336C5[] = {
  NSPAIR(_ZN8S20336C5C1Ev),
  NSPAIR(_ZN8S20336C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
static Base_Class bases_S20336C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20336C5[];
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
static  VTBL_ENTRY vtc_S20336C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C5[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
};
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
Class_Descriptor cd_S20336C5 = {  "S20336C5", // class name
  bases_S20336C5, 1,
  &(vtc_S20336C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S20336C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20336C5),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  S20336C4  : S20336C5 {
  int s20336c4f0;
  virtual void  v9(); // _ZN8S20336C42v9Ev
  virtual void  v10(); // _ZN8S20336C43v10Ev
  ~S20336C4(); // tgen
  S20336C4(); // tgen
};
//SIG(-1 S20336C4) C1{ BC2{ BC3{ v3 Fp[7] FL Fs} v4} v1 v2 Fi}


void  S20336C4 ::v9(){vfunc_called(this, "_ZN8S20336C42v9Ev");}
void  S20336C4 ::v10(){vfunc_called(this, "_ZN8S20336C43v10Ev");}
S20336C4 ::~S20336C4(){ note_dtor("S20336C4", this);} // tgen
S20336C4 ::S20336C4(){ note_ctor("S20336C4", this);} // tgen

static void Test_S20336C4()
{
  extern Class_Descriptor cd_S20336C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S20336C4, buf);
    S20336C4 *dp, &lv = *(dp=new (buf) S20336C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S20336C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20336C4)");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*), 0, "S20336C4");
    check_base_class_offset(lv, (S20336C5*), 0, "S20336C4");
    check_field_offset(lv, s20336c4f0, ABISELECT(76,44), "S20336C4.s20336c4f0");
    test_class_info(&lv, &cd_S20336C4);
    dp->~S20336C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C4(Test_S20336C4, "S20336C4", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S20336C4C1Ev();
extern void _ZN8S20336C4D1Ev();
Name_Map name_map_S20336C4[] = {
  NSPAIR(_ZN8S20336C4C1Ev),
  NSPAIR(_ZN8S20336C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
static Base_Class bases_S20336C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20336C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20336C4[];
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY vtc_S20336C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C4[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern VTBL_ENTRY _ZTI8S20336C4[];
extern  VTBL_ENTRY _ZTV8S20336C4[];
Class_Descriptor cd_S20336C4 = {  "S20336C4", // class name
  bases_S20336C4, 2,
  &(vtc_S20336C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S20336C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20336C4),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C7  : S20336C2 {
  ::S20336C2 s20336c7f0;
  virtual void  v11(); // _ZN8S20336C73v11Ev
  virtual void  v12(); // _ZN8S20336C73v12Ev
  ~S20336C7(); // tgen
  S20336C7(); // tgen
};
//SIG(-1 S20336C7) C1{ BC2{ v3 Fp[7] FL Fs} v1 v2 FC2}


void  S20336C7 ::v11(){vfunc_called(this, "_ZN8S20336C73v11Ev");}
void  S20336C7 ::v12(){vfunc_called(this, "_ZN8S20336C73v12Ev");}
S20336C7 ::~S20336C7(){ note_dtor("S20336C7", this);} // tgen
S20336C7 ::S20336C7(){ note_ctor("S20336C7", this);} // tgen

static void Test_S20336C7()
{
  extern Class_Descriptor cd_S20336C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,23)];
    init_test(&cd_S20336C7, buf);
    S20336C7 *dp, &lv = *(dp=new (buf) S20336C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S20336C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20336C7)");
    check_base_class_offset(lv, (S20336C2*), 0, "S20336C7");
    check_field_offset(lv, s20336c7f0, ABISELECT(80,44), "S20336C7.s20336c7f0");
    test_class_info(&lv, &cd_S20336C7);
    dp->~S20336C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C7(Test_S20336C7, "S20336C7", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN8S20336C7C1Ev();
extern void _ZN8S20336C7D1Ev();
Name_Map name_map_S20336C7[] = {
  NSPAIR(_ZN8S20336C7C1Ev),
  NSPAIR(_ZN8S20336C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
static Base_Class bases_S20336C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20336C7[];
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY vtc_S20336C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C7[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern VTBL_ENTRY _ZTI8S20336C7[];
extern  VTBL_ENTRY _ZTV8S20336C7[];
Class_Descriptor cd_S20336C7 = {  "S20336C7", // class name
  bases_S20336C7, 1,
  &(vtc_S20336C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI8S20336C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20336C7),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  S20336C6  : virtual S20336C7 , S3164C31_nt , virtual S20336C2 , S20336C5 {
  virtual void  v13(); // _ZN8S20336C63v13Ev
  virtual void  v14(); // _ZN8S20336C63v14Ev
  virtual void  v15(); // _ZN8S20336C63v15Ev
  ~S20336C6(); // tgen
  S20336C6(); // tgen
};
//SIG(-1 S20336C6) C1{ VBC2{ BC3{ v4 Fp[7] FL Fs} v5 v6 FC3} BC4{ m} VBC3 BC5{ BC3 v7} v1 v2 v3}


void  S20336C6 ::v13(){vfunc_called(this, "_ZN8S20336C63v13Ev");}
void  S20336C6 ::v14(){vfunc_called(this, "_ZN8S20336C63v14Ev");}
void  S20336C6 ::v15(){vfunc_called(this, "_ZN8S20336C63v15Ev");}
S20336C6 ::~S20336C6(){ note_dtor("S20336C6", this);} // tgen
S20336C6 ::S20336C6(){ note_ctor("S20336C6", this);} // tgen

static void Test_S20336C6()
{
  extern Class_Descriptor cd_S20336C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,45)];
    init_test(&cd_S20336C6, buf);
    S20336C6 *dp, &lv = *(dp=new (buf) S20336C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,176), "sizeof(S20336C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20336C6)");
    check_base_class_offset(lv, (S20336C2*)(S20336C7*), ABISELECT(80,44), "S20336C6");
    check_base_class_offset(lv, (S20336C7*), ABISELECT(80,44), "S20336C6");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S20336C6");
    /*is_ambiguous_... S20336C6::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*), ABISELECT(240,132), "S20336C6");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*), 0, "S20336C6");
    check_base_class_offset(lv, (S20336C5*), 0, "S20336C6");
    test_class_info(&lv, &cd_S20336C6);
    dp->~S20336C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C6(Test_S20336C6, "S20336C6", ABISELECT(320,176));

#else // __cplusplus

extern void _ZN8S20336C6C1Ev();
extern void _ZN8S20336C6D1Ev();
Name_Map name_map_S20336C6[] = {
  NSPAIR(_ZN8S20336C6C1Ev),
  NSPAIR(_ZN8S20336C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C7;
extern VTBL_ENTRY _ZTI8S20336C7[];
extern  VTBL_ENTRY _ZTV8S20336C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
static Base_Class bases_S20336C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20336C7,    ABISELECT(80,44), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20336C2,    ABISELECT(240,132), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20336C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20336C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S20336C6[];
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY vtc_S20336C6[] = {
  ABISELECT(240,132),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
  0,
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
  0,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern VTBL_ENTRY _ZTV8S20336C6[];
static  VTT_ENTRY vtt_S20336C6[] = {
  {&(_ZTV8S20336C6[4]),  4,21},
  {&(_ZTV8S20336C6[14]),  14,21},
  {&(_ZTV8S20336C6[20]),  20,21},
};
extern VTBL_ENTRY _ZTI8S20336C6[];
extern  VTBL_ENTRY _ZTV8S20336C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C6[];
Class_Descriptor cd_S20336C6 = {  "S20336C6", // class name
  bases_S20336C6, 6,
  &(vtc_S20336C6[0]), // expected_vtbl_contents
  &(vtt_S20336C6[0]), // expected_vtt_contents
  ABISELECT(320,176), // object size
  NSPAIRA(_ZTI8S20336C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20336C6),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20336C6),3, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C10  : S3164C31_nt , S20336C2 {
  int s20336c10f0;
  virtual void  v16(); // _ZN9S20336C103v16Ev
  ~S20336C10(); // tgen
  S20336C10(); // tgen
};
//SIG(-1 S20336C10) C1{ BC2{ m} BC3{ v2 Fp[7] FL Fs} v1 Fi}


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

static void Test_S20336C10()
{
  extern Class_Descriptor cd_S20336C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S20336C10, buf);
    S20336C10 *dp, &lv = *(dp=new (buf) S20336C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S20336C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20336C10)");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S20336C10");
    check_base_class_offset(lv, (S20336C2*), 0, "S20336C10");
    check_field_offset(lv, s20336c10f0, ABISELECT(76,44), "S20336C10.s20336c10f0");
    test_class_info(&lv, &cd_S20336C10);
    dp->~S20336C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C10(Test_S20336C10, "S20336C10", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN9S20336C10C1Ev();
extern void _ZN9S20336C10D1Ev();
Name_Map name_map_S20336C10[] = {
  NSPAIR(_ZN9S20336C10C1Ev),
  NSPAIR(_ZN9S20336C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
static Base_Class bases_S20336C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20336C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20336C10[];
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY vtc_S20336C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C10[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern VTBL_ENTRY _ZTI9S20336C10[];
extern  VTBL_ENTRY _ZTV9S20336C10[];
Class_Descriptor cd_S20336C10 = {  "S20336C10", // class name
  bases_S20336C10, 2,
  &(vtc_S20336C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI9S20336C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20336C10),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  S20336C9  : virtual S20336C10 , virtual S20336C7 , virtual S20336C6 , virtual S20336C4 , S3164C31_nt {
  long double s20336c9f0[2];
  virtual void  v17(); // _ZN8S20336C93v17Ev
  virtual void  v18(); // _ZN8S20336C93v18Ev
  ~S20336C9(); // tgen
  S20336C9(); // tgen
};
//SIG(-1 S20336C9) C1{ VBC2{ BC3{ m} BC4{ v3 Fp[7] FL Fs} v4 Fi} VBC5{ BC4 v5 v6 FC4} VBC6{ VBC5 BC3 VBC4 BC7{ BC4 v7} v8 v9 v10} VBC8{ BC7 v11 v12 Fi} BC3 v1 v2 FD[2]}


void  S20336C9 ::v17(){vfunc_called(this, "_ZN8S20336C93v17Ev");}
void  S20336C9 ::v18(){vfunc_called(this, "_ZN8S20336C93v18Ev");}
S20336C9 ::~S20336C9(){ note_dtor("S20336C9", this);} // tgen
S20336C9 ::S20336C9(){ note_ctor("S20336C9", this);} // tgen

static void Test_S20336C9()
{
  extern Class_Descriptor cd_S20336C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(34,76)];
    init_test(&cd_S20336C9, buf);
    S20336C9 *dp, &lv = *(dp=new (buf) S20336C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,300), "sizeof(S20336C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20336C9)");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C10*), ABISELECT(48,28), "S20336C9");
    check_base_class_offset(lv, (S20336C2*)(S20336C10*), ABISELECT(48,28), "S20336C9");
    check_base_class_offset(lv, (S20336C10*), ABISELECT(48,28), "S20336C9");
    check_base_class_offset(lv, (S20336C2*)(S20336C7*), ABISELECT(128,76), "S20336C9");
    check_base_class_offset(lv, (S20336C7*), ABISELECT(128,76), "S20336C9");
    check_base_class_offset(lv, (S20336C7*)(S20336C6*), ABISELECT(128,76), "S20336C9");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C6*), ABISELECT(288,164), "S20336C9");
    /*is_ambiguous_... S20336C6::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C6*), ABISELECT(368,208), "S20336C9");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C6*), ABISELECT(288,164), "S20336C9");
    check_base_class_offset(lv, (S20336C5*)(S20336C6*), ABISELECT(288,164), "S20336C9");
    check_base_class_offset(lv, (S20336C6*), ABISELECT(288,164), "S20336C9");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C4*), ABISELECT(448,252), "S20336C9");
    check_base_class_offset(lv, (S20336C5*)(S20336C4*), ABISELECT(448,252), "S20336C9");
    check_base_class_offset(lv, (S20336C4*), ABISELECT(448,252), "S20336C9");
    /*is_ambiguous_... S20336C9::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20336C9");
    check_field_offset(lv, s20336c9f0, ABISELECT(16,4), "S20336C9.s20336c9f0");
    test_class_info(&lv, &cd_S20336C9);
    dp->~S20336C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C9(Test_S20336C9, "S20336C9", ABISELECT(528,300));

#else // __cplusplus

extern void _ZN8S20336C9C1Ev();
extern void _ZN8S20336C9D1Ev();
Name_Map name_map_S20336C9[] = {
  NSPAIR(_ZN8S20336C9C1Ev),
  NSPAIR(_ZN8S20336C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C10;
extern VTBL_ENTRY _ZTI9S20336C10[];
extern  VTBL_ENTRY _ZTV9S20336C10[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C7;
extern VTBL_ENTRY _ZTI8S20336C7[];
extern  VTBL_ENTRY _ZTV8S20336C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C6;
extern VTBL_ENTRY _ZTI8S20336C6[];
extern  VTBL_ENTRY _ZTV8S20336C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C6[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C4;
extern VTBL_ENTRY _ZTI8S20336C4[];
extern  VTBL_ENTRY _ZTV8S20336C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S20336C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_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
    2, //immediately_derived
  0, 0},
  {&cd_S20336C2,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20336C10,    ABISELECT(48,28), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20336C2,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20336C7,    ABISELECT(128,76), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_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
    9, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(368,208), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20336C2,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(288,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20336C6,    ABISELECT(288,164), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20336C2,    ABISELECT(448,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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(448,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20336C4,    ABISELECT(448,252), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20336C9[];
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY vtc_S20336C9[] = {
  ABISELECT(448,252),
  ABISELECT(368,208),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-252),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern VTBL_ENTRY _ZTV8S20336C9[];
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C9[] = {
  ABISELECT(80,44),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C6__8S20336C9[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A1__8S20336C6__8S20336C9[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
static  VTT_ENTRY vtt_S20336C9[] = {
  {&(_ZTV8S20336C9[7]),  7,51},
  {&(_ZTV8S20336C9[13]),  13,51},
  {&(_ZTV8S20336C9[20]),  20,51},
  {&(_ZTV8S20336C9[32]),  32,51},
  {&(_ZTV8S20336C9[40]),  40,51},
  {&(_ZTV8S20336C9[47]),  47,51},
  {&(_tg__ZTV8S20336C6__8S20336C9[4]),  4,9},
  {&(_tg__ZTV8S20336C7__8S20336C6__8S20336C9[5]),  5,8},
  {&(_tg__ZTV8S20336C2__A1__8S20336C6__8S20336C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20336C9[];
extern  VTBL_ENTRY _ZTV8S20336C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C9[];
Class_Descriptor cd_S20336C9 = {  "S20336C9", // class name
  bases_S20336C9, 14,
  &(vtc_S20336C9[0]), // expected_vtbl_contents
  &(vtt_S20336C9[0]), // expected_vtt_contents
  ABISELECT(528,300), // object size
  NSPAIRA(_ZTI8S20336C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20336C9),51, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20336C9),9, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C14  : virtual S20336C2 {
  virtual void  v19(); // _ZN9S20336C143v19Ev
  virtual void  v20(); // _ZN9S20336C143v20Ev
  ~S20336C14(); // tgen
  S20336C14(); // tgen
};
//SIG(-1 S20336C14) C1{ VBC2{ v3 Fp[7] FL Fs} v1 v2}


void  S20336C14 ::v19(){vfunc_called(this, "_ZN9S20336C143v19Ev");}
void  S20336C14 ::v20(){vfunc_called(this, "_ZN9S20336C143v20Ev");}
S20336C14 ::~S20336C14(){ note_dtor("S20336C14", this);} // tgen
S20336C14 ::S20336C14(){ note_ctor("S20336C14", this);} // tgen

static void Test_S20336C14()
{
  extern Class_Descriptor cd_S20336C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S20336C14, buf);
    S20336C14 *dp, &lv = *(dp=new (buf) S20336C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S20336C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20336C14)");
    check_base_class_offset(lv, (S20336C2*), ABISELECT(8,4), "S20336C14");
    test_class_info(&lv, &cd_S20336C14);
    dp->~S20336C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C14(Test_S20336C14, "S20336C14", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN9S20336C14C1Ev();
extern void _ZN9S20336C14D1Ev();
Name_Map name_map_S20336C14[] = {
  NSPAIR(_ZN9S20336C14C1Ev),
  NSPAIR(_ZN9S20336C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
static Base_Class bases_S20336C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    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 _ZTI9S20336C14[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY vtc_S20336C14[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern VTBL_ENTRY _ZTV9S20336C14[];
static  VTT_ENTRY vtt_S20336C14[] = {
  {&(_ZTV9S20336C14[3]),  3,9},
  {&(_ZTV9S20336C14[8]),  8,9},
};
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
Class_Descriptor cd_S20336C14 = {  "S20336C14", // class name
  bases_S20336C14, 1,
  &(vtc_S20336C14[0]), // expected_vtbl_contents
  &(vtt_S20336C14[0]), // expected_vtt_contents
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI9S20336C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20336C14),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20336C14),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  S20336C13  : virtual S20336C2 , virtual S20336C14 , virtual S20336C9 , virtual S3164C31_nt {
  void *s20336c13f0;
  long double s20336c13f1;
  virtual void  v21(); // _ZN9S20336C133v21Ev
  ~S20336C13(); // tgen
  S20336C13(); // tgen
};
//SIG(-1 S20336C13) C1{ VBC2{ v2 Fp[7] FL Fs} VBC3{ VBC2 v3 v4} VBC4{ VBC5{ BC6{ m} BC2 v5 Fi} VBC7{ BC2 v6 v7 FC2} VBC8{ VBC7 BC6 VBC2 BC9{ BC2 v8} v9 v10 v11} VBC10{ BC9 v12 v13 Fi} BC6 v14 v15 FD[2]} VBC6 v1 Fp FD}


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

static void Test_S20336C13()
{
  extern Class_Descriptor cd_S20336C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,81)];
    init_test(&cd_S20336C13, buf);
    S20336C13 *dp, &lv = *(dp=new (buf) S20336C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,320), "sizeof(S20336C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20336C13)");
    /*is_ambiguous_... S20336C13::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*), ABISELECT(32,20), "S20336C13");
    check_base_class_offset(lv, (S20336C2*)(S20336C14*), ABISELECT(32,20), "S20336C13");
    /*is_ambiguous_... S20336C6::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C6*), ABISELECT(32,20), "S20336C13");
    check_base_class_offset(lv, (S20336C14*), 0, "S20336C13");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C10*), ABISELECT(160,92), "S20336C13");
    check_base_class_offset(lv, (S20336C2*)(S20336C10*), ABISELECT(160,92), "S20336C13");
    check_base_class_offset(lv, (S20336C10*)(S20336C9*), ABISELECT(160,92), "S20336C13");
    check_base_class_offset(lv, (S20336C2*)(S20336C7*), ABISELECT(240,140), "S20336C13");
    check_base_class_offset(lv, (S20336C7*)(S20336C9*), ABISELECT(240,140), "S20336C13");
    check_base_class_offset(lv, (S20336C7*)(S20336C6*), ABISELECT(240,140), "S20336C13");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C6*), ABISELECT(400,228), "S20336C13");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C6*), ABISELECT(400,228), "S20336C13");
    check_base_class_offset(lv, (S20336C5*)(S20336C6*), ABISELECT(400,228), "S20336C13");
    check_base_class_offset(lv, (S20336C6*)(S20336C9*), ABISELECT(400,228), "S20336C13");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C4*), ABISELECT(480,272), "S20336C13");
    check_base_class_offset(lv, (S20336C5*)(S20336C4*), ABISELECT(480,272), "S20336C13");
    check_base_class_offset(lv, (S20336C4*)(S20336C9*), ABISELECT(480,272), "S20336C13");
    /*is_ambiguous_... S20336C9::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C9*), ABISELECT(112,64), "S20336C13");
    check_base_class_offset(lv, (S20336C9*), ABISELECT(112,64), "S20336C13");
    /*is_ambiguous_... S20336C13::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20336C13");
    check_field_offset(lv, s20336c13f0, ABISELECT(8,4), "S20336C13.s20336c13f0");
    check_field_offset(lv, s20336c13f1, ABISELECT(16,8), "S20336C13.s20336c13f1");
    test_class_info(&lv, &cd_S20336C13);
    dp->~S20336C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C13(Test_S20336C13, "S20336C13", ABISELECT(560,320));

#else // __cplusplus

extern void _ZN9S20336C13C1Ev();
extern void _ZN9S20336C13D1Ev();
Name_Map name_map_S20336C13[] = {
  NSPAIR(_ZN9S20336C13C1Ev),
  NSPAIR(_ZN9S20336C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C10;
extern VTBL_ENTRY _ZTI9S20336C10[];
extern  VTBL_ENTRY _ZTV9S20336C10[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C7;
extern VTBL_ENTRY _ZTI8S20336C7[];
extern  VTBL_ENTRY _ZTV8S20336C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C6;
extern VTBL_ENTRY _ZTI8S20336C6[];
extern  VTBL_ENTRY _ZTV8S20336C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C6[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C4;
extern VTBL_ENTRY _ZTI8S20336C4[];
extern  VTBL_ENTRY _ZTV8S20336C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C9;
extern VTBL_ENTRY _ZTI8S20336C9[];
extern  VTBL_ENTRY _ZTV8S20336C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S20336C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    ABISELECT(32,20), //bcp->offset
    15, //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_S20336C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_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
    4, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20336C10,    ABISELECT(160,92), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20336C7,    ABISELECT(240,140), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20336C6,    ABISELECT(400,228), //bcp->offset
    44, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(480,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(480,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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20336C4,    ABISELECT(480,272), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_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
    15, //immediately_derived
  0, 0},
  {&cd_S20336C9,    ABISELECT(112,64), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20336C13[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY vtc_S20336C13[] = {
  0,
  ABISELECT(480,272),
  ABISELECT(400,228),
  ABISELECT(240,140),
  ABISELECT(160,92),
  ABISELECT(112,64),
  0,
  0,
  0,
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-80,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
  0,
  0,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
  0,
  0,
  0,
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  ABISELECT(-160,-88),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-272),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern VTBL_ENTRY _ZTV9S20336C13[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C13[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C14__9S20336C13[] = {
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C13[] = {
  ABISELECT(368,208),
  ABISELECT(-80,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__8S20336C9__9S20336C13[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C9__9S20336C13[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C9__9S20336C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__8S20336C9__9S20336C13[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__8S20336C9__9S20336C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C13[] = {
  ABISELECT(-368,-208),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C6__9S20336C13[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A1__8S20336C6__9S20336C13[] = {
  0,
  ABISELECT(368,208),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
static  VTT_ENTRY vtt_S20336C13[] = {
  {&(_ZTV9S20336C13[12]),  12,68},
  {&(_ZTV9S20336C13[18]),  18,68},
  {&(_ZTV9S20336C13[12]),  12,68},
  {&(_ZTV9S20336C13[28]),  28,68},
  {&(_ZTV9S20336C13[34]),  34,68},
  {&(_ZTV9S20336C13[41]),  41,68},
  {&(_ZTV9S20336C13[53]),  53,68},
  {&(_ZTV9S20336C13[64]),  64,68},
  {&(_tg__ZTV9S20336C14__9S20336C13[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C14__9S20336C13[3]),  3,4},
  {&(_tg__ZTV8S20336C9__9S20336C13[7]),  7,9},
  {&(_tg__ZTV9S20336C10__8S20336C9__9S20336C13[4]),  4,6},
  {&(_tg__ZTV8S20336C7__8S20336C9__9S20336C13[5]),  5,8},
  {&(_tg__ZTV8S20336C6__8S20336C9__9S20336C13[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__8S20336C9__9S20336C13[3]),  3,4},
  {&(_tg__ZTV8S20336C4__8S20336C9__9S20336C13[6]),  6,10},
  {&(_tg__ZTV8S20336C6__9S20336C13[4]),  4,9},
  {&(_tg__ZTV8S20336C7__8S20336C6__9S20336C13[5]),  5,8},
  {&(_tg__ZTV8S20336C2__A1__8S20336C6__9S20336C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20336C13[];
extern  VTBL_ENTRY _ZTV9S20336C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C13[];
Class_Descriptor cd_S20336C13 = {  "S20336C13", // class name
  bases_S20336C13, 17,
  &(vtc_S20336C13[0]), // expected_vtbl_contents
  &(vtt_S20336C13[0]), // expected_vtt_contents
  ABISELECT(560,320), // object size
  NSPAIRA(_ZTI9S20336C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20336C13),68, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20336C13),19, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C15  : virtual S20336C7 , virtual S20336C9 , virtual S3164C31_nt {
  long double s20336c15f0;
  virtual  ~S20336C15(); // _ZN9S20336C15D2Ev
  virtual void  v22(); // _ZN9S20336C153v22Ev
  S20336C15(); // tgen
};
//SIG(-1 S20336C15) C1{ VBC2{ BC3{ v2 Fp[7] FL Fs} v3 v4 FC3} VBC4{ VBC5{ BC6{ m} BC3 v5 Fi} VBC2 VBC7{ VBC2 BC6 VBC3 BC8{ BC3 v6} v7 v8 v9} VBC9{ BC8 v10 v11 Fi} BC6 v12 v13 FD[2]} VBC6 vd v1 FD}


 S20336C15 ::~S20336C15(){ note_dtor("S20336C15", this);}
void  S20336C15 ::v22(){vfunc_called(this, "_ZN9S20336C153v22Ev");}
S20336C15 ::S20336C15(){ note_ctor("S20336C15", this);} // tgen

static void Test_S20336C15()
{
  extern Class_Descriptor cd_S20336C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,80)];
    init_test(&cd_S20336C15, buf);
    S20336C15 *dp, &lv = *(dp=new (buf) S20336C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,316), "sizeof(S20336C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20336C15)");
    check_base_class_offset(lv, (S20336C2*)(S20336C7*), ABISELECT(32,16), "S20336C15");
    check_base_class_offset(lv, (S20336C7*), ABISELECT(32,16), "S20336C15");
    check_base_class_offset(lv, (S20336C7*)(S20336C9*), ABISELECT(32,16), "S20336C15");
    check_base_class_offset(lv, (S20336C7*)(S20336C6*), ABISELECT(32,16), "S20336C15");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C10*), ABISELECT(240,132), "S20336C15");
    check_base_class_offset(lv, (S20336C2*)(S20336C10*), ABISELECT(240,132), "S20336C15");
    check_base_class_offset(lv, (S20336C10*)(S20336C9*), ABISELECT(240,132), "S20336C15");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C6*), ABISELECT(320,180), "S20336C15");
    /*is_ambiguous_... S20336C6::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C6*), ABISELECT(400,224), "S20336C15");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C6*), ABISELECT(320,180), "S20336C15");
    check_base_class_offset(lv, (S20336C5*)(S20336C6*), ABISELECT(320,180), "S20336C15");
    check_base_class_offset(lv, (S20336C6*)(S20336C9*), ABISELECT(320,180), "S20336C15");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C4*), ABISELECT(480,268), "S20336C15");
    check_base_class_offset(lv, (S20336C5*)(S20336C4*), ABISELECT(480,268), "S20336C15");
    check_base_class_offset(lv, (S20336C4*)(S20336C9*), ABISELECT(480,268), "S20336C15");
    /*is_ambiguous_... S20336C9::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C9*), ABISELECT(192,104), "S20336C15");
    check_base_class_offset(lv, (S20336C9*), ABISELECT(192,104), "S20336C15");
    /*is_ambiguous_... S20336C15::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20336C15");
    check_field_offset(lv, s20336c15f0, ABISELECT(16,4), "S20336C15.s20336c15f0");
    test_class_info(&lv, &cd_S20336C15);
    dp->~S20336C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C15(Test_S20336C15, "S20336C15", ABISELECT(560,316));

#else // __cplusplus

extern void _ZN9S20336C15C1Ev();
extern void _ZN9S20336C15D2Ev();
Name_Map name_map_S20336C15[] = {
  NSPAIR(_ZN9S20336C15C1Ev),
  NSPAIR(_ZN9S20336C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C7;
extern VTBL_ENTRY _ZTI8S20336C7[];
extern  VTBL_ENTRY _ZTV8S20336C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C10;
extern VTBL_ENTRY _ZTI9S20336C10[];
extern  VTBL_ENTRY _ZTV9S20336C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C6;
extern VTBL_ENTRY _ZTI8S20336C6[];
extern  VTBL_ENTRY _ZTV8S20336C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C6[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C4;
extern VTBL_ENTRY _ZTI8S20336C4[];
extern  VTBL_ENTRY _ZTV8S20336C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C9;
extern VTBL_ENTRY _ZTI8S20336C9[];
extern  VTBL_ENTRY _ZTV8S20336C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S20336C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    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
  0, 0},
  {&cd_S20336C7,    ABISELECT(32,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_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
    4, //immediately_derived
  0, 0},
  {&cd_S20336C2,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20336C10,    ABISELECT(240,132), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(400,224), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20336C6,    ABISELECT(320,180), //bcp->offset
    37, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(480,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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(480,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20336C4,    ABISELECT(480,268), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20336C9,    ABISELECT(192,104), //bcp->offset
    20, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20336C15[];
extern void _ZN9S20336C15D1Ev();
extern void _ZN9S20336C15D0Ev();
extern void _ZN9S20336C153v22Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY vtc_S20336C15[] = {
  0,
  ABISELECT(480,268),
  ABISELECT(400,224),
  ABISELECT(320,180),
  ABISELECT(240,132),
  ABISELECT(192,104),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN9S20336C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
  0,
  0,
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
  0,
  0,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
  0,
  ABISELECT(-400,-224),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern VTBL_ENTRY _ZTV9S20336C15[];
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C15[] = {
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__8S20336C9__9S20336C15[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C9__9S20336C15[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C9__9S20336C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__8S20336C9__9S20336C15[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__8S20336C9__9S20336C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C15[] = {
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C6__9S20336C15[] = {
  0,
  0,
  0,
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A1__8S20336C6__9S20336C15[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
static  VTT_ENTRY vtt_S20336C15[] = {
  {&(_ZTV9S20336C15[9]),  9,65},
  {&(_ZTV9S20336C15[17]),  17,65},
  {&(_ZTV9S20336C15[29]),  29,65},
  {&(_ZTV9S20336C15[35]),  35,65},
  {&(_ZTV9S20336C15[46]),  46,65},
  {&(_ZTV9S20336C15[54]),  54,65},
  {&(_ZTV9S20336C15[61]),  61,65},
  {&(_tg__ZTV8S20336C9__9S20336C15[7]),  7,9},
  {&(_tg__ZTV9S20336C10__8S20336C9__9S20336C15[4]),  4,6},
  {&(_tg__ZTV8S20336C7__8S20336C9__9S20336C15[5]),  5,8},
  {&(_tg__ZTV8S20336C6__8S20336C9__9S20336C15[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__8S20336C9__9S20336C15[3]),  3,4},
  {&(_tg__ZTV8S20336C4__8S20336C9__9S20336C15[6]),  6,10},
  {&(_tg__ZTV8S20336C6__9S20336C15[4]),  4,9},
  {&(_tg__ZTV8S20336C7__8S20336C6__9S20336C15[5]),  5,8},
  {&(_tg__ZTV8S20336C2__A1__8S20336C6__9S20336C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20336C15[];
extern  VTBL_ENTRY _ZTV9S20336C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C15[];
Class_Descriptor cd_S20336C15 = {  "S20336C15", // class name
  bases_S20336C15, 16,
  &(vtc_S20336C15[0]), // expected_vtbl_contents
  &(vtt_S20336C15[0]), // expected_vtt_contents
  ABISELECT(560,316), // object size
  NSPAIRA(_ZTI9S20336C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20336C15),65, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20336C15),16, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C12  : virtual S20336C2 , S20336C13 , S20336C15 , S20336C14 {
  void *s20336c12f0[25];
  short s20336c12f1;
  ::S20336C7 s20336c12f2;
  virtual  ~S20336C12(); // _ZN9S20336C12D2Ev
  virtual void  v23(); // _ZN9S20336C123v23Ev
  virtual void  v24(); // _ZN9S20336C123v24Ev
  virtual void  v25(); // _ZN9S20336C123v25Ev
  virtual void  v26(); // _ZN9S20336C123v26Ev
  S20336C12(); // tgen
};
//SIG(-1 S20336C12) C1{ VBC2{ v5 Fp[7] FL Fs} BC3{ VBC2 VBC4{ VBC2 v6 v7} VBC5{ VBC6{ BC7{ m} BC2 v8 Fi} VBC8{ BC2 v9 v10 FC2} VBC9{ VBC8 BC7 VBC2 BC10{ BC2 v11} v12 v13 v14} VBC11{ BC10 v15 v16 Fi} BC7 v17 v18 FD[2]} VBC7 v19 Fp FD} BC12{ VBC8 VBC5 VBC7 vd v20 FD} BC4 vd v1 v2 v3 v4 Fp[25] Fs FC8}


 S20336C12 ::~S20336C12(){ note_dtor("S20336C12", this);}
void  S20336C12 ::v23(){vfunc_called(this, "_ZN9S20336C123v23Ev");}
void  S20336C12 ::v24(){vfunc_called(this, "_ZN9S20336C123v24Ev");}
void  S20336C12 ::v25(){vfunc_called(this, "_ZN9S20336C123v25Ev");}
void  S20336C12 ::v26(){vfunc_called(this, "_ZN9S20336C123v26Ev");}
S20336C12 ::S20336C12(){ note_ctor("S20336C12", this);} // tgen

static void Test_S20336C12()
{
  extern Class_Descriptor cd_S20336C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(62,134)];
    init_test(&cd_S20336C12, buf);
    S20336C12 *dp, &lv = *(dp=new (buf) S20336C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(976,532), "sizeof(S20336C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20336C12)");
    /*is_ambiguous_... S20336C12::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*), ABISELECT(440,232), "S20336C12");
    /*is_ambiguous_... S20336C13::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C13*), ABISELECT(440,232), "S20336C12");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*), ABISELECT(440,232), "S20336C12");
    /*is_ambiguous_... S20336C6::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C6*), ABISELECT(440,232), "S20336C12");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*), ABISELECT(440,232), "S20336C12");
    check_base_class_offset(lv, (S20336C14*)(S20336C13*), 0, "S20336C12");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C10*), ABISELECT(576,304), "S20336C12");
    check_base_class_offset(lv, (S20336C2*)(S20336C10*), ABISELECT(576,304), "S20336C12");
    check_base_class_offset(lv, (S20336C10*)(S20336C9*), ABISELECT(576,304), "S20336C12");
    check_base_class_offset(lv, (S20336C2*)(S20336C7*), ABISELECT(656,352), "S20336C12");
    check_base_class_offset(lv, (S20336C7*)(S20336C9*), ABISELECT(656,352), "S20336C12");
    check_base_class_offset(lv, (S20336C7*)(S20336C6*), ABISELECT(656,352), "S20336C12");
    check_base_class_offset(lv, (S20336C7*)(S20336C15*), ABISELECT(656,352), "S20336C12");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C6*), ABISELECT(816,440), "S20336C12");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C6*), ABISELECT(816,440), "S20336C12");
    check_base_class_offset(lv, (S20336C5*)(S20336C6*), ABISELECT(816,440), "S20336C12");
    check_base_class_offset(lv, (S20336C6*)(S20336C9*), ABISELECT(816,440), "S20336C12");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C4*), ABISELECT(896,484), "S20336C12");
    check_base_class_offset(lv, (S20336C5*)(S20336C4*), ABISELECT(896,484), "S20336C12");
    check_base_class_offset(lv, (S20336C4*)(S20336C9*), ABISELECT(896,484), "S20336C12");
    /*is_ambiguous_... S20336C9::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C9*), ABISELECT(528,276), "S20336C12");
    check_base_class_offset(lv, (S20336C9*)(S20336C13*), ABISELECT(528,276), "S20336C12");
    check_base_class_offset(lv, (S20336C9*)(S20336C15*), ABISELECT(528,276), "S20336C12");
    /*is_ambiguous_... S20336C13::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C13*), 0, "S20336C12");
    /*is_ambiguous_... S20336C15::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C15*), 0, "S20336C12");
    check_base_class_offset(lv, (S20336C13*), 0, "S20336C12");
    check_base_class_offset(lv, (S20336C15*), ABISELECT(32,20), "S20336C12");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C14*), ABISELECT(64,36), "S20336C12");
    check_field_offset(lv, s20336c12f0, ABISELECT(72,40), "S20336C12.s20336c12f0");
    check_field_offset(lv, s20336c12f1, ABISELECT(272,140), "S20336C12.s20336c12f1");
    check_field_offset(lv, s20336c12f2, ABISELECT(280,144), "S20336C12.s20336c12f2");
    test_class_info(&lv, &cd_S20336C12);
    dp->~S20336C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C12(Test_S20336C12, "S20336C12", ABISELECT(976,532));

#else // __cplusplus

extern void _ZN9S20336C12C1Ev();
extern void _ZN9S20336C12D2Ev();
Name_Map name_map_S20336C12[] = {
  NSPAIR(_ZN9S20336C12C1Ev),
  NSPAIR(_ZN9S20336C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C10;
extern VTBL_ENTRY _ZTI9S20336C10[];
extern  VTBL_ENTRY _ZTV9S20336C10[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C7;
extern VTBL_ENTRY _ZTI8S20336C7[];
extern  VTBL_ENTRY _ZTV8S20336C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C6;
extern VTBL_ENTRY _ZTI8S20336C6[];
extern  VTBL_ENTRY _ZTV8S20336C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C6[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C4;
extern VTBL_ENTRY _ZTI8S20336C4[];
extern  VTBL_ENTRY _ZTV8S20336C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C9;
extern VTBL_ENTRY _ZTI8S20336C9[];
extern  VTBL_ENTRY _ZTV8S20336C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C13;
extern VTBL_ENTRY _ZTI9S20336C13[];
extern  VTBL_ENTRY _ZTV9S20336C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C13[];
extern Class_Descriptor cd_S20336C15;
extern VTBL_ENTRY _ZTI9S20336C15[];
extern  VTBL_ENTRY _ZTV9S20336C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C15[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
static Base_Class bases_S20336C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    ABISELECT(440,232), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20336C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(576,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
    4, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20336C10,    ABISELECT(576,304), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20336C7,    ABISELECT(656,352), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(816,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
    10, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(816,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(816,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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20336C6,    ABISELECT(816,440), //bcp->offset
    67, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20336C4,    ABISELECT(896,484), //bcp->offset
    81, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(528,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
    15, //immediately_derived
  0, 0},
  {&cd_S20336C9,    ABISELECT(528,276), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20336C13,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20336C15,    ABISELECT(32,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20336C14,    ABISELECT(64,36), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20336C12[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C12D1Ev();
extern void _ZN9S20336C12D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev)();
extern void _ZN9S20336C153v22Ev();
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY vtc_S20336C12[] = {
  0,
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  ABISELECT(-32,-20),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
  ABISELECT(376,196),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern VTBL_ENTRY _ZTV9S20336C12[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C13__9S20336C12[] = {
  0,
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C13__9S20336C12[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C13__9S20336C12[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C13__9S20336C12[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C13__9S20336C12[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C13__9S20336C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C13__9S20336C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C15D1Ev();
extern void _ZN9S20336C15D0Ev();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C15__9S20336C12[] = {
  ABISELECT(-32,-20),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN9S20336C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C15__9S20336C12[] = {
  0,
  0,
  0,
  ABISELECT(-624,-332),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C15__9S20336C12[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-496,-256),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C15__9S20336C12[] = {
  0,
  0,
  ABISELECT(-544,-284),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C15__9S20336C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-784,-420),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__9S20336C15__9S20336C12[] = {
  0,
  ABISELECT(-408,-212),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C15__9S20336C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-864,-464),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__A__9S20336C12[] = {
  ABISELECT(376,196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C14__A__9S20336C12[] = {
  0,
  ABISELECT(-376,-196),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C12[] = {
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C14__9S20336C12[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C12[] = {
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__8S20336C9__9S20336C12[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C9__9S20336C12[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C9__9S20336C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__8S20336C9__9S20336C12[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__8S20336C9__9S20336C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C12[] = {
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C6__9S20336C12[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A1__8S20336C6__9S20336C12[] = {
  0,
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
static  VTT_ENTRY vtt_S20336C12[] = {
  {&(_ZTV9S20336C12[12]),  12,91},
  {&(_tg__ZTV9S20336C13__9S20336C12[12]),  12,15},
  {&(_tg__ZTV8S20336C2__9S20336C13__9S20336C12[3]),  3,4},
  {&(_tg__ZTV9S20336C13__9S20336C12[12]),  12,15},
  {&(_tg__ZTV8S20336C9__9S20336C13__9S20336C12[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C13__9S20336C12[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C13__9S20336C12[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C13__9S20336C12[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C13__9S20336C12[6]),  6,10},
  {&(_tg__ZTV9S20336C15__9S20336C12[9]),  9,12},
  {&(_tg__ZTV8S20336C7__9S20336C15__9S20336C12[5]),  5,8},
  {&(_tg__ZTV8S20336C9__9S20336C15__9S20336C12[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C15__9S20336C12[4]),  4,6},
  {&(_tg__ZTV8S20336C6__9S20336C15__9S20336C12[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__9S20336C15__9S20336C12[3]),  3,4},
  {&(_tg__ZTV8S20336C4__9S20336C15__9S20336C12[6]),  6,10},
  {&(_tg__ZTV9S20336C14__A__9S20336C12[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C14__A__9S20336C12[3]),  3,4},
  {&(_ZTV9S20336C12[41]),  41,91},
  {&(_ZTV9S20336C12[12]),  12,91},
  {&(_ZTV9S20336C12[51]),  51,91},
  {&(_ZTV9S20336C12[57]),  57,91},
  {&(_ZTV9S20336C12[64]),  64,91},
  {&(_ZTV9S20336C12[76]),  76,91},
  {&(_ZTV9S20336C12[87]),  87,91},
  {&(_ZTV9S20336C12[30]),  30,91},
  {&(_ZTV9S20336C12[36]),  36,91},
  {&(_tg__ZTV9S20336C14__9S20336C12[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C14__9S20336C12[3]),  3,4},
  {&(_tg__ZTV8S20336C9__9S20336C12[7]),  7,9},
  {&(_tg__ZTV9S20336C10__8S20336C9__9S20336C12[4]),  4,6},
  {&(_tg__ZTV8S20336C7__8S20336C9__9S20336C12[5]),  5,8},
  {&(_tg__ZTV8S20336C6__8S20336C9__9S20336C12[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__8S20336C9__9S20336C12[3]),  3,4},
  {&(_tg__ZTV8S20336C4__8S20336C9__9S20336C12[6]),  6,10},
  {&(_tg__ZTV8S20336C6__9S20336C12[4]),  4,9},
  {&(_tg__ZTV8S20336C7__8S20336C6__9S20336C12[5]),  5,8},
  {&(_tg__ZTV8S20336C2__A1__8S20336C6__9S20336C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20336C12[];
extern  VTBL_ENTRY _ZTV9S20336C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C12[];
Class_Descriptor cd_S20336C12 = {  "S20336C12", // class name
  bases_S20336C12, 20,
  &(vtc_S20336C12[0]), // expected_vtbl_contents
  &(vtt_S20336C12[0]), // expected_vtt_contents
  ABISELECT(976,532), // object size
  NSPAIRA(_ZTI9S20336C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20336C12),91, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20336C12),38, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C11  : S20336C12 {
  virtual void  v27(); // _ZN9S20336C113v27Ev
  virtual void  v28(); // _ZN9S20336C113v28Ev
  ~S20336C11(); // tgen
  S20336C11(); // tgen
};
//SIG(-1 S20336C11) C1{ BC2{ VBC3{ v3 Fp[7] FL Fs} BC4{ VBC3 VBC5{ VBC3 v4 v5} VBC6{ VBC7{ BC8{ m} BC3 v6 Fi} VBC9{ BC3 v7 v8 FC3} VBC10{ VBC9 BC8 VBC3 BC11{ BC3 v9} v10 v11 v12} VBC12{ BC11 v13 v14 Fi} BC8 v15 v16 FD[2]} VBC8 v17 Fp FD} BC13{ VBC9 VBC6 VBC8 vd v18 FD} BC5 vd v19 v20 v21 v22 Fp[25] Fs FC9} v1 v2}


void  S20336C11 ::v27(){vfunc_called(this, "_ZN9S20336C113v27Ev");}
void  S20336C11 ::v28(){vfunc_called(this, "_ZN9S20336C113v28Ev");}
S20336C11 ::~S20336C11(){ note_dtor("S20336C11", this);} // tgen
S20336C11 ::S20336C11(){ note_ctor("S20336C11", this);} // tgen

static void Test_S20336C11()
{
  extern Class_Descriptor cd_S20336C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(62,134)];
    init_test(&cd_S20336C11, buf);
    S20336C11 *dp, &lv = *(dp=new (buf) S20336C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(976,532), "sizeof(S20336C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20336C11)");
    /*is_ambiguous_... S20336C12::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C12*), ABISELECT(440,232), "S20336C11");
    /*is_ambiguous_... S20336C13::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C13*)(S20336C12*), ABISELECT(440,232), "S20336C11");
    /*is_ambiguous_... S20336C11::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*), ABISELECT(440,232), "S20336C11");
    /*is_ambiguous_... S20336C6::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C6*), ABISELECT(440,232), "S20336C11");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*)(S20336C12*), ABISELECT(440,232), "S20336C11");
    check_base_class_offset(lv, (S20336C14*)(S20336C13*)(S20336C12*), 0, "S20336C11");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C10*), ABISELECT(576,304), "S20336C11");
    check_base_class_offset(lv, (S20336C2*)(S20336C10*), ABISELECT(576,304), "S20336C11");
    check_base_class_offset(lv, (S20336C10*)(S20336C9*), ABISELECT(576,304), "S20336C11");
    check_base_class_offset(lv, (S20336C2*)(S20336C7*), ABISELECT(656,352), "S20336C11");
    check_base_class_offset(lv, (S20336C7*)(S20336C9*), ABISELECT(656,352), "S20336C11");
    check_base_class_offset(lv, (S20336C7*)(S20336C6*), ABISELECT(656,352), "S20336C11");
    check_base_class_offset(lv, (S20336C7*)(S20336C15*)(S20336C12*), ABISELECT(656,352), "S20336C11");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C6*), ABISELECT(816,440), "S20336C11");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C6*), ABISELECT(816,440), "S20336C11");
    check_base_class_offset(lv, (S20336C5*)(S20336C6*), ABISELECT(816,440), "S20336C11");
    check_base_class_offset(lv, (S20336C6*)(S20336C9*), ABISELECT(816,440), "S20336C11");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C4*), ABISELECT(896,484), "S20336C11");
    check_base_class_offset(lv, (S20336C5*)(S20336C4*), ABISELECT(896,484), "S20336C11");
    check_base_class_offset(lv, (S20336C4*)(S20336C9*), ABISELECT(896,484), "S20336C11");
    /*is_ambiguous_... S20336C9::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C9*), ABISELECT(528,276), "S20336C11");
    check_base_class_offset(lv, (S20336C9*)(S20336C13*)(S20336C12*), ABISELECT(528,276), "S20336C11");
    check_base_class_offset(lv, (S20336C9*)(S20336C15*)(S20336C12*), ABISELECT(528,276), "S20336C11");
    /*is_ambiguous_... S20336C13::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C13*)(S20336C12*), 0, "S20336C11");
    /*is_ambiguous_... S20336C15::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C15*)(S20336C12*), 0, "S20336C11");
    check_base_class_offset(lv, (S20336C13*)(S20336C12*), 0, "S20336C11");
    check_base_class_offset(lv, (S20336C15*)(S20336C12*), ABISELECT(32,20), "S20336C11");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C14*)(S20336C12*), ABISELECT(64,36), "S20336C11");
    check_base_class_offset(lv, (S20336C12*), 0, "S20336C11");
    test_class_info(&lv, &cd_S20336C11);
    dp->~S20336C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C11(Test_S20336C11, "S20336C11", ABISELECT(976,532));

#else // __cplusplus

extern void _ZN9S20336C11C1Ev();
extern void _ZN9S20336C11D1Ev();
Name_Map name_map_S20336C11[] = {
  NSPAIR(_ZN9S20336C11C1Ev),
  NSPAIR(_ZN9S20336C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C10;
extern VTBL_ENTRY _ZTI9S20336C10[];
extern  VTBL_ENTRY _ZTV9S20336C10[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C7;
extern VTBL_ENTRY _ZTI8S20336C7[];
extern  VTBL_ENTRY _ZTV8S20336C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C6;
extern VTBL_ENTRY _ZTI8S20336C6[];
extern  VTBL_ENTRY _ZTV8S20336C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C6[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C4;
extern VTBL_ENTRY _ZTI8S20336C4[];
extern  VTBL_ENTRY _ZTV8S20336C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C9;
extern VTBL_ENTRY _ZTI8S20336C9[];
extern  VTBL_ENTRY _ZTV8S20336C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C13;
extern VTBL_ENTRY _ZTI9S20336C13[];
extern  VTBL_ENTRY _ZTV9S20336C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C13[];
extern Class_Descriptor cd_S20336C15;
extern VTBL_ENTRY _ZTI9S20336C15[];
extern  VTBL_ENTRY _ZTV9S20336C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C15[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S20336C12;
extern VTBL_ENTRY _ZTI9S20336C12[];
extern  VTBL_ENTRY _ZTV9S20336C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C12[];
static Base_Class bases_S20336C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    ABISELECT(440,232), //bcp->offset
    40, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20336C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(576,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
    4, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20336C10,    ABISELECT(576,304), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20336C7,    ABISELECT(656,352), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(816,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
    10, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(816,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(816,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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20336C6,    ABISELECT(816,440), //bcp->offset
    69, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20336C4,    ABISELECT(896,484), //bcp->offset
    83, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(528,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
    15, //immediately_derived
  0, 0},
  {&cd_S20336C9,    ABISELECT(528,276), //bcp->offset
    44, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20336C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20336C15,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20336C14,    ABISELECT(64,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20336C12,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20336C11[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C11D1Ev();
extern void _ZN9S20336C11D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
extern void ABISELECT(_ZThn32_N9S20336C11D1Ev,_ZThn20_N9S20336C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C11D0Ev,_ZThn20_N9S20336C11D0Ev)();
extern void _ZN9S20336C153v22Ev();
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY vtc_S20336C11[] = {
  0,
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
  ABISELECT(-32,-20),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C11D1Ev,_ZThn20_N9S20336C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C11D0Ev,_ZThn20_N9S20336C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
  ABISELECT(376,196),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern VTBL_ENTRY _ZTV9S20336C11[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C12D1Ev();
extern void _ZN9S20336C12D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C12__9S20336C11[] = {
  0,
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C139S20336C12__9S20336C11[] = {
  0,
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C139S20336C12__9S20336C11[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C139S20336C12__9S20336C11[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C139S20336C12__9S20336C11[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C139S20336C12__9S20336C11[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C139S20336C12__9S20336C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C139S20336C12__9S20336C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C15D1Ev();
extern void _ZN9S20336C15D0Ev();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C12__9S20336C11[] = {
  ABISELECT(-32,-20),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN9S20336C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C159S20336C12__9S20336C11[] = {
  0,
  0,
  0,
  ABISELECT(-624,-332),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C159S20336C12__9S20336C11[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-496,-256),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C159S20336C12__9S20336C11[] = {
  0,
  0,
  ABISELECT(-544,-284),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C159S20336C12__9S20336C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-784,-420),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__9S20336C159S20336C12__9S20336C11[] = {
  0,
  ABISELECT(-408,-212),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C159S20336C12__9S20336C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-864,-464),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C12__A1__9S20336C11[] = {
  ABISELECT(376,196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C149S20336C12__A1__9S20336C11[] = {
  0,
  ABISELECT(-376,-196),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C12__9S20336C11[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C12__9S20336C11[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C12__9S20336C11[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C12__9S20336C11[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C12__9S20336C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C12__9S20336C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C15__9S20336C12__9S20336C11[] = {
  ABISELECT(-32,-20),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__A__9S20336C12__9S20336C11[] = {
  ABISELECT(376,196),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C11[] = {
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C14__9S20336C11[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C11[] = {
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__8S20336C9__9S20336C11[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C9__9S20336C11[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C9__9S20336C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__8S20336C9__9S20336C11[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__8S20336C9__9S20336C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C11[] = {
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C6__9S20336C11[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A1__8S20336C6__9S20336C11[] = {
  0,
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
static  VTT_ENTRY vtt_S20336C11[] = {
  {&(_ZTV9S20336C11[12]),  12,93},
  {&(_tg__ZTV9S20336C12__9S20336C11[12]),  12,21},
  {&(_tg__ZTV9S20336C139S20336C12__9S20336C11[12]),  12,15},
  {&(_tg__ZTV8S20336C2__9S20336C139S20336C12__9S20336C11[3]),  3,4},
  {&(_tg__ZTV9S20336C139S20336C12__9S20336C11[12]),  12,15},
  {&(_tg__ZTV8S20336C9__9S20336C139S20336C12__9S20336C11[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C139S20336C12__9S20336C11[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C139S20336C12__9S20336C11[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C139S20336C12__9S20336C11[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C139S20336C12__9S20336C11[6]),  6,10},
  {&(_tg__ZTV9S20336C159S20336C12__9S20336C11[9]),  9,12},
  {&(_tg__ZTV8S20336C7__9S20336C159S20336C12__9S20336C11[5]),  5,8},
  {&(_tg__ZTV8S20336C9__9S20336C159S20336C12__9S20336C11[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C159S20336C12__9S20336C11[4]),  4,6},
  {&(_tg__ZTV8S20336C6__9S20336C159S20336C12__9S20336C11[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__9S20336C159S20336C12__9S20336C11[3]),  3,4},
  {&(_tg__ZTV8S20336C4__9S20336C159S20336C12__9S20336C11[6]),  6,10},
  {&(_tg__ZTV9S20336C149S20336C12__A1__9S20336C11[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C149S20336C12__A1__9S20336C11[3]),  3,4},
  {&(_tg__ZTV8S20336C2__9S20336C12__9S20336C11[3]),  3,4},
  {&(_tg__ZTV9S20336C12__9S20336C11[12]),  12,21},
  {&(_tg__ZTV8S20336C9__9S20336C12__9S20336C11[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C12__9S20336C11[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C12__9S20336C11[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C12__9S20336C11[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C12__9S20336C11[6]),  6,10},
  {&(_tg__ZTV9S20336C15__9S20336C12__9S20336C11[9]),  9,12},
  {&(_tg__ZTV9S20336C14__A__9S20336C12__9S20336C11[3]),  3,5},
  {&(_ZTV9S20336C11[43]),  43,93},
  {&(_ZTV9S20336C11[12]),  12,93},
  {&(_ZTV9S20336C11[53]),  53,93},
  {&(_ZTV9S20336C11[59]),  59,93},
  {&(_ZTV9S20336C11[66]),  66,93},
  {&(_ZTV9S20336C11[78]),  78,93},
  {&(_ZTV9S20336C11[89]),  89,93},
  {&(_ZTV9S20336C11[32]),  32,93},
  {&(_ZTV9S20336C11[38]),  38,93},
  {&(_tg__ZTV9S20336C14__9S20336C11[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C14__9S20336C11[3]),  3,4},
  {&(_tg__ZTV8S20336C9__9S20336C11[7]),  7,9},
  {&(_tg__ZTV9S20336C10__8S20336C9__9S20336C11[4]),  4,6},
  {&(_tg__ZTV8S20336C7__8S20336C9__9S20336C11[5]),  5,8},
  {&(_tg__ZTV8S20336C6__8S20336C9__9S20336C11[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__8S20336C9__9S20336C11[3]),  3,4},
  {&(_tg__ZTV8S20336C4__8S20336C9__9S20336C11[6]),  6,10},
  {&(_tg__ZTV8S20336C6__9S20336C11[4]),  4,9},
  {&(_tg__ZTV8S20336C7__8S20336C6__9S20336C11[5]),  5,8},
  {&(_tg__ZTV8S20336C2__A1__8S20336C6__9S20336C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20336C11[];
extern  VTBL_ENTRY _ZTV9S20336C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C11[];
Class_Descriptor cd_S20336C11 = {  "S20336C11", // class name
  bases_S20336C11, 21,
  &(vtc_S20336C11[0]), // expected_vtbl_contents
  &(vtt_S20336C11[0]), // expected_vtt_contents
  ABISELECT(976,532), // object size
  NSPAIRA(_ZTI9S20336C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20336C11),93, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20336C11),48, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C3  : virtual S20336C4 , virtual S20336C6 , S20336C9 , S20336C11 {
  void *s20336c3f0[5];
  int s20336c3f1;
  virtual void  v29(); // _ZN8S20336C33v29Ev
  virtual void  v30(); // _ZN8S20336C33v30Ev
  virtual void  v31(); // _ZN8S20336C33v31Ev
  ~S20336C3(); // tgen
  S20336C3(); // tgen
};
//SIG(-1 S20336C3) C1{ VBC2{ BC3{ BC4{ v4 Fp[7] FL Fs} v5} v6 v7 Fi} VBC5{ VBC6{ BC4 v8 v9 FC4} BC7{ m} VBC4 BC3 v10 v11 v12} BC8{ VBC9{ BC7 BC4 v13 Fi} VBC6 VBC5 VBC2 BC7 v14 v15 FD[2]} BC10{ BC11{ VBC4 BC12{ VBC4 VBC13{ VBC4 v16 v17} VBC8 VBC7 v18 Fp FD} BC14{ VBC6 VBC8 VBC7 vd v19 FD} BC13 vd v20 v21 v22 v23 Fp[25] Fs FC6} v24 v25} v1 v2 v3 Fp[5] Fi}


void  S20336C3 ::v29(){vfunc_called(this, "_ZN8S20336C33v29Ev");}
void  S20336C3 ::v30(){vfunc_called(this, "_ZN8S20336C33v30Ev");}
void  S20336C3 ::v31(){vfunc_called(this, "_ZN8S20336C33v31Ev");}
S20336C3 ::~S20336C3(){ note_dtor("S20336C3", this);} // tgen
S20336C3 ::S20336C3(){ note_ctor("S20336C3", this);} // tgen

static void Test_S20336C3()
{
  extern Class_Descriptor cd_S20336C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(69,148)];
    init_test(&cd_S20336C3, buf);
    S20336C3 *dp, &lv = *(dp=new (buf) S20336C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1088,588), "sizeof(S20336C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20336C3)");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C4*), ABISELECT(536,284), "S20336C3");
    check_base_class_offset(lv, (S20336C5*)(S20336C4*), ABISELECT(536,284), "S20336C3");
    check_base_class_offset(lv, (S20336C4*), ABISELECT(536,284), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C4*)(S20336C9*), ABISELECT(536,284), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C4*)(S20336C9*), ABISELECT(536,284), "S20336C3");
    check_base_class_offset(lv, (S20336C2*)(S20336C7*), ABISELECT(696,376), "S20336C3");
    check_base_class_offset(lv, (S20336C7*)(S20336C6*), ABISELECT(696,376), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C7*)(S20336C9*), ABISELECT(696,376), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C7*)(S20336C9*), ABISELECT(696,376), "S20336C3");
    check_base_class_offset(lv, (S20336C7*)(S20336C15*)(S20336C12*)(S20336C11*), ABISELECT(696,376), "S20336C3");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C6*), ABISELECT(616,332), "S20336C3");
    /*is_ambiguous_... S20336C6::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C6*), ABISELECT(856,464), "S20336C3");
    /*is_ambiguous_... S20336C12::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C12*)(S20336C11*), ABISELECT(856,464), "S20336C3");
    /*is_ambiguous_... S20336C13::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(856,464), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*), ABISELECT(856,464), "S20336C3");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*)(S20336C12*)(S20336C11*), ABISELECT(856,464), "S20336C3");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C6*), ABISELECT(616,332), "S20336C3");
    check_base_class_offset(lv, (S20336C5*)(S20336C6*), ABISELECT(616,332), "S20336C3");
    check_base_class_offset(lv, (S20336C6*), ABISELECT(616,332), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C6*)(S20336C9*), ABISELECT(616,332), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C6*)(S20336C9*), ABISELECT(616,332), "S20336C3");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C10*), ABISELECT(936,508), "S20336C3");
    check_base_class_offset(lv, (S20336C2*)(S20336C10*), ABISELECT(936,508), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C10*)(S20336C9*), ABISELECT(936,508), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C10*)(S20336C9*), ABISELECT(936,508), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C9*), 0, "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C9*), 0, "S20336C3");
    check_base_class_offset(lv, (S20336C14*)(S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(48,28), "S20336C3");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C9*), ABISELECT(1024,556), "S20336C3");
    check_base_class_offset(lv, (S20336C9*)(S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(1024,556), "S20336C3");
    check_base_class_offset(lv, (S20336C9*)(S20336C15*)(S20336C12*)(S20336C11*), ABISELECT(1024,556), "S20336C3");
    /*is_ambiguous_... S20336C13::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(1072,584), "S20336C3");
    /*is_ambiguous_... S20336C15::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C15*)(S20336C12*)(S20336C11*), ABISELECT(1072,584), "S20336C3");
    check_base_class_offset(lv, (S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(48,28), "S20336C3");
    check_base_class_offset(lv, (S20336C15*)(S20336C12*)(S20336C11*), ABISELECT(80,48), "S20336C3");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C14*)(S20336C12*)(S20336C11*), ABISELECT(112,64), "S20336C3");
    check_base_class_offset(lv, (S20336C12*)(S20336C11*), ABISELECT(48,28), "S20336C3");
    check_base_class_offset(lv, (S20336C11*), ABISELECT(48,28), "S20336C3");
    check_field_offset(lv, s20336c3f0, ABISELECT(488,260), "S20336C3.s20336c3f0");
    check_field_offset(lv, s20336c3f1, ABISELECT(528,280), "S20336C3.s20336c3f1");
    test_class_info(&lv, &cd_S20336C3);
    dp->~S20336C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C3(Test_S20336C3, "S20336C3", ABISELECT(1088,588));

#else // __cplusplus

extern void _ZN8S20336C3C1Ev();
extern void _ZN8S20336C3D1Ev();
Name_Map name_map_S20336C3[] = {
  NSPAIR(_ZN8S20336C3C1Ev),
  NSPAIR(_ZN8S20336C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C4;
extern VTBL_ENTRY _ZTI8S20336C4[];
extern  VTBL_ENTRY _ZTV8S20336C4[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C7;
extern VTBL_ENTRY _ZTI8S20336C7[];
extern  VTBL_ENTRY _ZTV8S20336C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C6;
extern VTBL_ENTRY _ZTI8S20336C6[];
extern  VTBL_ENTRY _ZTV8S20336C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C6[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C10;
extern VTBL_ENTRY _ZTI9S20336C10[];
extern  VTBL_ENTRY _ZTV9S20336C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C9;
extern VTBL_ENTRY _ZTI8S20336C9[];
extern  VTBL_ENTRY _ZTV8S20336C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C9[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C9;
extern VTBL_ENTRY _ZTI8S20336C9[];
extern  VTBL_ENTRY _ZTV8S20336C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C13;
extern VTBL_ENTRY _ZTI9S20336C13[];
extern  VTBL_ENTRY _ZTV9S20336C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C13[];
extern Class_Descriptor cd_S20336C15;
extern VTBL_ENTRY _ZTI9S20336C15[];
extern  VTBL_ENTRY _ZTV9S20336C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C15[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S20336C12;
extern VTBL_ENTRY _ZTI9S20336C12[];
extern  VTBL_ENTRY _ZTV9S20336C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C12[];
extern Class_Descriptor cd_S20336C11;
extern VTBL_ENTRY _ZTI9S20336C11[];
extern  VTBL_ENTRY _ZTV9S20336C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C11[];
static Base_Class bases_S20336C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    ABISELECT(536,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(536,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20336C4,    ABISELECT(536,284), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20336C2,    ABISELECT(696,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20336C7,    ABISELECT(696,376), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(616,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
    9, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(856,464), //bcp->offset
    89, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(616,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(616,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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20336C6,    ABISELECT(616,332), //bcp->offset
    67, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    ABISELECT(936,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
    12, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(936,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20336C10,    ABISELECT(936,508), //bcp->offset
    93, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20336C9,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20336C14,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(1024,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20336C9,    ABISELECT(1024,556), //bcp->offset
    99, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(1072,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
    19, //immediately_derived
  0, 1},
  {&cd_S20336C13,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20336C15,    ABISELECT(80,48), //bcp->offset
    40, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20336C14,    ABISELECT(112,64), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20336C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20336C11,    ABISELECT(48,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20336C3[];
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
extern void _ZN8S20336C33v29Ev();
extern void _ZN8S20336C33v30Ev();
extern void _ZN8S20336C33v31Ev();
extern void _ZN8S20336C3D1Ev();
extern void _ZN8S20336C3D0Ev();
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void ABISELECT(_ZThn48_N8S20336C3D1Ev,_ZThn28_N8S20336C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S20336C3D0Ev,_ZThn28_N8S20336C3D0Ev)();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
extern void ABISELECT(_ZThn80_N8S20336C3D1Ev,_ZThn48_N8S20336C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20336C3D0Ev,_ZThn48_N8S20336C3D0Ev)();
extern void _ZN9S20336C153v22Ev();
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY vtc_S20336C3[] = {
  ABISELECT(1072,584),
  ABISELECT(1024,556),
  ABISELECT(48,28),
  ABISELECT(536,284),
  ABISELECT(856,464),
  ABISELECT(616,332),
  ABISELECT(696,376),
  ABISELECT(936,508),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20336C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20336C33v30Ev,
  (VTBL_ENTRY)&_ZN8S20336C33v31Ev,
  (VTBL_ENTRY)&_ZN8S20336C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20336C3D0Ev,
  ABISELECT(1024,556),
  ABISELECT(488,256),
  ABISELECT(568,304),
  ABISELECT(648,348),
  ABISELECT(888,480),
  ABISELECT(976,528),
  0,
  0,
  0,
  ABISELECT(808,436),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20336C3D1Ev,_ZThn28_N8S20336C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20336C3D0Ev,_ZThn28_N8S20336C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
  ABISELECT(992,536),
  ABISELECT(456,236),
  ABISELECT(776,416),
  ABISELECT(536,284),
  ABISELECT(856,460),
  ABISELECT(944,508),
  ABISELECT(616,328),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20336C3D1Ev,_ZThn48_N8S20336C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20336C3D0Ev,_ZThn48_N8S20336C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
  ABISELECT(744,400),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(240,132),
  ABISELECT(80,44),
  ABISELECT(-616,-332),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
  0,
  0,
  0,
  ABISELECT(-696,-376),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
  0,
  ABISELECT(-856,-464),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  0,
  0,
  ABISELECT(-936,-508),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
  0,
  0,
  ABISELECT(-488,-272),
  ABISELECT(-168,-92),
  ABISELECT(-408,-224),
  ABISELECT(-328,-180),
  ABISELECT(-88,-48),
  ABISELECT(-1024,-556),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern VTBL_ENTRY _ZTV8S20336C3[];
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__A__8S20336C3[] = {
  ABISELECT(536,284),
  ABISELECT(856,464),
  ABISELECT(616,332),
  ABISELECT(696,376),
  ABISELECT(936,508),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__8S20336C9__A__8S20336C3[] = {
  0,
  0,
  ABISELECT(-936,-508),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C9__A__8S20336C3[] = {
  0,
  0,
  0,
  ABISELECT(-696,-376),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C9__A__8S20336C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(240,132),
  ABISELECT(80,44),
  ABISELECT(-616,-332),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__8S20336C9__A__8S20336C3[] = {
  0,
  ABISELECT(-856,-464),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__8S20336C9__A__8S20336C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C11D1Ev();
extern void _ZN9S20336C11D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C11__8S20336C3[] = {
  ABISELECT(1024,556),
  ABISELECT(488,256),
  ABISELECT(568,304),
  ABISELECT(648,348),
  ABISELECT(888,480),
  ABISELECT(976,528),
  0,
  0,
  0,
  ABISELECT(808,436),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C12D1Ev();
extern void _ZN9S20336C12D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C129S20336C11__8S20336C3[] = {
  ABISELECT(1024,556),
  ABISELECT(488,256),
  ABISELECT(568,304),
  ABISELECT(648,348),
  ABISELECT(888,480),
  ABISELECT(976,528),
  0,
  0,
  0,
  ABISELECT(808,436),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C139S20336C129S20336C11__8S20336C3[] = {
  ABISELECT(1024,556),
  ABISELECT(488,256),
  ABISELECT(568,304),
  ABISELECT(648,348),
  ABISELECT(888,480),
  ABISELECT(976,528),
  0,
  0,
  0,
  ABISELECT(808,436),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C139S20336C129S20336C11__8S20336C3[] = {
  0,
  ABISELECT(-808,-436),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C139S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  ABISELECT(-488,-272),
  ABISELECT(-168,-92),
  ABISELECT(-408,-224),
  ABISELECT(-328,-180),
  ABISELECT(-88,-48),
  ABISELECT(-976,-528),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C139S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  ABISELECT(-888,-480),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C139S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  ABISELECT(-648,-348),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C139S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(240,132),
  ABISELECT(80,44),
  ABISELECT(-568,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C139S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-488,-256),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C15D1Ev();
extern void _ZN9S20336C15D0Ev();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C129S20336C11__8S20336C3[] = {
  ABISELECT(992,536),
  ABISELECT(456,236),
  ABISELECT(776,416),
  ABISELECT(536,284),
  ABISELECT(856,460),
  ABISELECT(944,508),
  ABISELECT(616,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN9S20336C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C159S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  ABISELECT(-616,-328),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C159S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  ABISELECT(-488,-272),
  ABISELECT(-168,-92),
  ABISELECT(-408,-224),
  ABISELECT(-328,-180),
  ABISELECT(-88,-48),
  ABISELECT(-944,-508),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C159S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  ABISELECT(-856,-460),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C159S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(240,132),
  ABISELECT(80,44),
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__9S20336C159S20336C129S20336C11__8S20336C3[] = {
  0,
  ABISELECT(-776,-416),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C159S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-456,-236),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C129S20336C11__A1__8S20336C3[] = {
  ABISELECT(744,400),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C149S20336C129S20336C11__A1__8S20336C3[] = {
  0,
  ABISELECT(-744,-400),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C129S20336C11__8S20336C3[] = {
  0,
  ABISELECT(-808,-436),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  ABISELECT(-488,-272),
  ABISELECT(-168,-92),
  ABISELECT(-408,-224),
  ABISELECT(-328,-180),
  ABISELECT(-88,-48),
  ABISELECT(-976,-528),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  ABISELECT(-888,-480),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  ABISELECT(-648,-348),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(240,132),
  ABISELECT(80,44),
  ABISELECT(-568,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C129S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-488,-256),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C15__9S20336C129S20336C11__8S20336C3[] = {
  ABISELECT(992,536),
  ABISELECT(456,236),
  ABISELECT(776,416),
  ABISELECT(536,284),
  ABISELECT(856,460),
  ABISELECT(944,508),
  ABISELECT(616,328),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__A__9S20336C129S20336C11__8S20336C3[] = {
  ABISELECT(744,400),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C11__8S20336C3[] = {
  0,
  ABISELECT(-808,-436),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C11__8S20336C3[] = {
  0,
  0,
  ABISELECT(-488,-272),
  ABISELECT(-168,-92),
  ABISELECT(-408,-224),
  ABISELECT(-328,-180),
  ABISELECT(-88,-48),
  ABISELECT(-976,-528),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C11__8S20336C3[] = {
  0,
  0,
  ABISELECT(-888,-480),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  ABISELECT(-648,-348),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(240,132),
  ABISELECT(80,44),
  ABISELECT(-568,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C11__8S20336C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-488,-256),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void ABISELECT(_ZThn32_N9S20336C11D1Ev,_ZThn20_N9S20336C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C11D0Ev,_ZThn20_N9S20336C11D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C12__9S20336C11__8S20336C3[] = {
  ABISELECT(992,536),
  ABISELECT(456,236),
  ABISELECT(776,416),
  ABISELECT(536,284),
  ABISELECT(856,460),
  ABISELECT(944,508),
  ABISELECT(616,328),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C11D1Ev,_ZThn20_N9S20336C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C11D0Ev,_ZThn20_N9S20336C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C12__A1__9S20336C11__8S20336C3[] = {
  ABISELECT(744,400),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C3[] = {
  ABISELECT(240,132),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C6__8S20336C3[] = {
  0,
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A1__8S20336C6__8S20336C3[] = {
  0,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__8S20336C3[] = {
  ABISELECT(808,436),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C14__8S20336C3[] = {
  0,
  ABISELECT(-808,-436),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__A1__8S20336C3[] = {
  ABISELECT(-488,-272),
  ABISELECT(-168,-92),
  ABISELECT(-408,-224),
  ABISELECT(-328,-180),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__8S20336C9__A1__8S20336C3[] = {
  0,
  0,
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C9__A1__8S20336C3[] = {
  0,
  0,
  0,
  ABISELECT(328,180),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C9__A1__8S20336C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(240,132),
  ABISELECT(80,44),
  ABISELECT(408,224),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__8S20336C9__A1__8S20336C3[] = {
  0,
  ABISELECT(168,92),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__8S20336C9__A1__8S20336C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(488,272),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
static  VTT_ENTRY vtt_S20336C3[] = {
  {&(_ZTV8S20336C3[10]),  10,110},
  {&(_tg__ZTV8S20336C9__A__8S20336C3[7]),  7,9},
  {&(_tg__ZTV9S20336C10__8S20336C9__A__8S20336C3[4]),  4,6},
  {&(_tg__ZTV8S20336C7__8S20336C9__A__8S20336C3[5]),  5,8},
  {&(_tg__ZTV8S20336C6__8S20336C9__A__8S20336C3[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__8S20336C9__A__8S20336C3[3]),  3,4},
  {&(_tg__ZTV8S20336C4__8S20336C9__A__8S20336C3[6]),  6,10},
  {&(_tg__ZTV9S20336C11__8S20336C3[12]),  12,23},
  {&(_tg__ZTV9S20336C129S20336C11__8S20336C3[12]),  12,21},
  {&(_tg__ZTV9S20336C139S20336C129S20336C11__8S20336C3[12]),  12,15},
  {&(_tg__ZTV8S20336C2__9S20336C139S20336C129S20336C11__8S20336C3[3]),  3,4},
  {&(_tg__ZTV9S20336C139S20336C129S20336C11__8S20336C3[12]),  12,15},
  {&(_tg__ZTV8S20336C9__9S20336C139S20336C129S20336C11__8S20336C3[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C139S20336C129S20336C11__8S20336C3[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C139S20336C129S20336C11__8S20336C3[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C139S20336C129S20336C11__8S20336C3[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C139S20336C129S20336C11__8S20336C3[6]),  6,10},
  {&(_tg__ZTV9S20336C159S20336C129S20336C11__8S20336C3[9]),  9,12},
  {&(_tg__ZTV8S20336C7__9S20336C159S20336C129S20336C11__8S20336C3[5]),  5,8},
  {&(_tg__ZTV8S20336C9__9S20336C159S20336C129S20336C11__8S20336C3[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C159S20336C129S20336C11__8S20336C3[4]),  4,6},
  {&(_tg__ZTV8S20336C6__9S20336C159S20336C129S20336C11__8S20336C3[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__9S20336C159S20336C129S20336C11__8S20336C3[3]),  3,4},
  {&(_tg__ZTV8S20336C4__9S20336C159S20336C129S20336C11__8S20336C3[6]),  6,10},
  {&(_tg__ZTV9S20336C149S20336C129S20336C11__A1__8S20336C3[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C149S20336C129S20336C11__A1__8S20336C3[3]),  3,4},
  {&(_tg__ZTV8S20336C2__9S20336C129S20336C11__8S20336C3[3]),  3,4},
  {&(_tg__ZTV9S20336C129S20336C11__8S20336C3[12]),  12,21},
  {&(_tg__ZTV8S20336C9__9S20336C129S20336C11__8S20336C3[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C129S20336C11__8S20336C3[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C129S20336C11__8S20336C3[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C129S20336C11__8S20336C3[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C129S20336C11__8S20336C3[6]),  6,10},
  {&(_tg__ZTV9S20336C15__9S20336C129S20336C11__8S20336C3[9]),  9,12},
  {&(_tg__ZTV9S20336C14__A__9S20336C129S20336C11__8S20336C3[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C11__8S20336C3[3]),  3,4},
  {&(_tg__ZTV9S20336C11__8S20336C3[12]),  12,23},
  {&(_tg__ZTV8S20336C9__9S20336C11__8S20336C3[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C11__8S20336C3[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C11__8S20336C3[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C11__8S20336C3[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C11__8S20336C3[6]),  6,10},
  {&(_tg__ZTV9S20336C159S20336C12__9S20336C11__8S20336C3[9]),  9,12},
  {&(_tg__ZTV9S20336C149S20336C12__A1__9S20336C11__8S20336C3[3]),  3,5},
  {&(_ZTV8S20336C3[63]),  63,110},
  {&(_ZTV8S20336C3[76]),  76,110},
  {&(_ZTV8S20336C3[86]),  86,110},
  {&(_ZTV8S20336C3[92]),  92,110},
  {&(_ZTV8S20336C3[97]),  97,110},
  {&(_ZTV8S20336C3[29]),  29,110},
  {&(_ZTV8S20336C3[29]),  29,110},
  {&(_ZTV8S20336C3[108]),  108,110},
  {&(_ZTV8S20336C3[49]),  49,110},
  {&(_ZTV8S20336C3[55]),  55,110},
  {&(_tg__ZTV8S20336C6__8S20336C3[4]),  4,9},
  {&(_tg__ZTV8S20336C7__8S20336C6__8S20336C3[5]),  5,8},
  {&(_tg__ZTV8S20336C2__A1__8S20336C6__8S20336C3[3]),  3,4},
  {&(_tg__ZTV9S20336C14__8S20336C3[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C14__8S20336C3[3]),  3,4},
  {&(_tg__ZTV8S20336C9__A1__8S20336C3[7]),  7,9},
  {&(_tg__ZTV9S20336C10__8S20336C9__A1__8S20336C3[4]),  4,6},
  {&(_tg__ZTV8S20336C7__8S20336C9__A1__8S20336C3[5]),  5,8},
  {&(_tg__ZTV8S20336C6__8S20336C9__A1__8S20336C3[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__8S20336C9__A1__8S20336C3[3]),  3,4},
  {&(_tg__ZTV8S20336C4__8S20336C9__A1__8S20336C3[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S20336C3[];
extern  VTBL_ENTRY _ZTV8S20336C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C3[];
Class_Descriptor cd_S20336C3 = {  "S20336C3", // class name
  bases_S20336C3, 24,
  &(vtc_S20336C3[0]), // expected_vtbl_contents
  &(vtt_S20336C3[0]), // expected_vtt_contents
  ABISELECT(1088,588), // object size
  NSPAIRA(_ZTI8S20336C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20336C3),110, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20336C3),65, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C16  : S20336C13 , virtual S20336C11 {
  void *s20336c16f0;
  virtual void  v32(); // _ZN9S20336C163v32Ev
  virtual void  v33(); // _ZN9S20336C163v33Ev
  ~S20336C16(); // tgen
  S20336C16(); // tgen
};
//SIG(-1 S20336C16) C1{ BC2{ VBC3{ v3 Fp[7] FL Fs} VBC4{ VBC3 v4 v5} VBC5{ VBC6{ BC7{ m} BC3 v6 Fi} VBC8{ BC3 v7 v8 FC3} VBC9{ VBC8 BC7 VBC3 BC10{ BC3 v9} v10 v11 v12} VBC11{ BC10 v13 v14 Fi} BC7 v15 v16 FD[2]} VBC7 v17 Fp FD} VBC12{ BC13{ VBC3 BC2 BC14{ VBC8 VBC5 VBC7 vd v18 FD} BC4 vd v19 v20 v21 v22 Fp[25] Fs FC8} v23 v24} v1 v2 Fp}


void  S20336C16 ::v32(){vfunc_called(this, "_ZN9S20336C163v32Ev");}
void  S20336C16 ::v33(){vfunc_called(this, "_ZN9S20336C163v33Ev");}
S20336C16 ::~S20336C16(){ note_dtor("S20336C16", this);} // tgen
S20336C16 ::S20336C16(){ note_ctor("S20336C16", this);} // tgen

static void Test_S20336C16()
{
  extern Class_Descriptor cd_S20336C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(65,140)];
    init_test(&cd_S20336C16, buf);
    S20336C16 *dp, &lv = *(dp=new (buf) S20336C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1024,556), "sizeof(S20336C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20336C16)");
    /*is_ambiguous_... S20336C16::S20336C13 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C13*), ABISELECT(40,24), "S20336C16");
    /*is_ambiguous_... S20336C16::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*), ABISELECT(40,24), "S20336C16");
    /*is_ambiguous_... S20336C6::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C6*), ABISELECT(40,24), "S20336C16");
    /*is_ambiguous_... S20336C12::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C12*)(S20336C11*), ABISELECT(40,24), "S20336C16");
    /*is_ambiguous_... S20336C13::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(40,24), "S20336C16");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*)(S20336C12*)(S20336C11*), ABISELECT(40,24), "S20336C16");
    /*is_ambiguous_... S20336C16::S20336C13 */ AMB_check_base_class_offset(lv, (S20336C14*)(S20336C13*), 0, "S20336C16");
    check_base_class_offset(lv, (S20336C14*)(S20336C13*)(S20336C12*)(S20336C11*), 0, "S20336C16");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C10*), ABISELECT(176,96), "S20336C16");
    check_base_class_offset(lv, (S20336C2*)(S20336C10*), ABISELECT(176,96), "S20336C16");
    check_base_class_offset(lv, (S20336C10*)(S20336C9*), ABISELECT(176,96), "S20336C16");
    check_base_class_offset(lv, (S20336C2*)(S20336C7*), ABISELECT(256,144), "S20336C16");
    check_base_class_offset(lv, (S20336C7*)(S20336C9*), ABISELECT(256,144), "S20336C16");
    check_base_class_offset(lv, (S20336C7*)(S20336C6*), ABISELECT(256,144), "S20336C16");
    check_base_class_offset(lv, (S20336C7*)(S20336C15*)(S20336C12*)(S20336C11*), ABISELECT(256,144), "S20336C16");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C6*), ABISELECT(416,232), "S20336C16");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C6*), ABISELECT(416,232), "S20336C16");
    check_base_class_offset(lv, (S20336C5*)(S20336C6*), ABISELECT(416,232), "S20336C16");
    check_base_class_offset(lv, (S20336C6*)(S20336C9*), ABISELECT(416,232), "S20336C16");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C4*), ABISELECT(496,276), "S20336C16");
    check_base_class_offset(lv, (S20336C5*)(S20336C4*), ABISELECT(496,276), "S20336C16");
    check_base_class_offset(lv, (S20336C4*)(S20336C9*), ABISELECT(496,276), "S20336C16");
    /*is_ambiguous_... S20336C9::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C9*), ABISELECT(128,68), "S20336C16");
    /*is_ambiguous_... S20336C16::S20336C13 */ AMB_check_base_class_offset(lv, (S20336C9*)(S20336C13*), ABISELECT(128,68), "S20336C16");
    check_base_class_offset(lv, (S20336C9*)(S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(128,68), "S20336C16");
    check_base_class_offset(lv, (S20336C9*)(S20336C15*)(S20336C12*)(S20336C11*), ABISELECT(128,68), "S20336C16");
    /*is_ambiguous_... S20336C16::S20336C13 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C13*), 0, "S20336C16");
    /*is_ambiguous_... S20336C13::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C13*)(S20336C12*)(S20336C11*), 0, "S20336C16");
    /*is_ambiguous_... S20336C15::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C15*)(S20336C12*)(S20336C11*), 0, "S20336C16");
    /*is_ambiguous_... S20336C16::S20336C13 */ AMB_check_base_class_offset(lv, (S20336C13*), 0, "S20336C16");
    check_base_class_offset(lv, (S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(576,324), "S20336C16");
    check_base_class_offset(lv, (S20336C15*)(S20336C12*)(S20336C11*), ABISELECT(608,344), "S20336C16");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C14*)(S20336C12*)(S20336C11*), ABISELECT(640,360), "S20336C16");
    check_base_class_offset(lv, (S20336C12*)(S20336C11*), ABISELECT(576,324), "S20336C16");
    check_base_class_offset(lv, (S20336C11*), ABISELECT(576,324), "S20336C16");
    check_field_offset(lv, s20336c16f0, ABISELECT(32,20), "S20336C16.s20336c16f0");
    test_class_info(&lv, &cd_S20336C16);
    dp->~S20336C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C16(Test_S20336C16, "S20336C16", ABISELECT(1024,556));

#else // __cplusplus

extern void _ZN9S20336C16C1Ev();
extern void _ZN9S20336C16D1Ev();
Name_Map name_map_S20336C16[] = {
  NSPAIR(_ZN9S20336C16C1Ev),
  NSPAIR(_ZN9S20336C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C10;
extern VTBL_ENTRY _ZTI9S20336C10[];
extern  VTBL_ENTRY _ZTV9S20336C10[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C7;
extern VTBL_ENTRY _ZTI8S20336C7[];
extern  VTBL_ENTRY _ZTV8S20336C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C6;
extern VTBL_ENTRY _ZTI8S20336C6[];
extern  VTBL_ENTRY _ZTV8S20336C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C6[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C4;
extern VTBL_ENTRY _ZTI8S20336C4[];
extern  VTBL_ENTRY _ZTV8S20336C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C9;
extern VTBL_ENTRY _ZTI8S20336C9[];
extern  VTBL_ENTRY _ZTV8S20336C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C13;
extern VTBL_ENTRY _ZTI9S20336C13[];
extern  VTBL_ENTRY _ZTV9S20336C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C13[];
extern Class_Descriptor cd_S20336C13;
extern VTBL_ENTRY _ZTI9S20336C13[];
extern  VTBL_ENTRY _ZTV9S20336C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C13[];
extern Class_Descriptor cd_S20336C15;
extern VTBL_ENTRY _ZTI9S20336C15[];
extern  VTBL_ENTRY _ZTV9S20336C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C15[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S20336C12;
extern VTBL_ENTRY _ZTI9S20336C12[];
extern  VTBL_ENTRY _ZTV9S20336C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C12[];
extern Class_Descriptor cd_S20336C11;
extern VTBL_ENTRY _ZTI9S20336C11[];
extern  VTBL_ENTRY _ZTV9S20336C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C11[];
static Base_Class bases_S20336C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    ABISELECT(40,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20336C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20336C10,    ABISELECT(176,96), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20336C2,    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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20336C7,    ABISELECT(256,144), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(416,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
    10, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(416,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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(416,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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20336C6,    ABISELECT(416,232), //bcp->offset
    49, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(496,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(496,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20336C4,    ABISELECT(496,276), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20336C9,    ABISELECT(128,68), //bcp->offset
    24, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20336C13,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20336C13,    ABISELECT(576,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20336C15,    ABISELECT(608,344), //bcp->offset
    105, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20336C14,    ABISELECT(640,360), //bcp->offset
    117, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20336C12,    ABISELECT(576,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20336C11,    ABISELECT(576,324), //bcp->offset
    73, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20336C16[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C163v32Ev();
extern void _ZN9S20336C163v33Ev();
extern void _ZN9S20336C16D1Ev();
extern void _ZN9S20336C16D0Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void ABISELECT(_ZTv0_n112_N9S20336C16D1Ev,_ZTv0_n56_N9S20336C16D1Ev)();
extern void ABISELECT(_ZThn576_N9S20336C16D1Ev,_ZThn324_N9S20336C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S20336C16D0Ev,_ZTv0_n56_N9S20336C16D0Ev)();
extern void ABISELECT(_ZThn576_N9S20336C16D0Ev,_ZThn324_N9S20336C16D0Ev)() __attribute__((weak));
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
extern void ABISELECT(_ZTvn32_n112_N9S20336C16D1Ev,_ZTvn20_n56_N9S20336C16D1Ev)();
extern void ABISELECT(_ZTvn32_n112_N9S20336C16D0Ev,_ZTvn20_n56_N9S20336C16D0Ev)();
extern void _ZN9S20336C153v22Ev();
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY vtc_S20336C16[] = {
  ABISELECT(576,324),
  0,
  ABISELECT(496,276),
  ABISELECT(416,232),
  ABISELECT(256,144),
  ABISELECT(176,96),
  ABISELECT(128,68),
  0,
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C163v32Ev,
  (VTBL_ENTRY)&_ZN9S20336C163v33Ev,
  (VTBL_ENTRY)&_ZN9S20336C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C16D0Ev,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
  0,
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
  0,
  0,
  0,
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-416,-232),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-276),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
  0,
  0,
  ABISELECT(32,20),
  0,
  0,
  0,
  0,
  ABISELECT(-576,-324),
  0,
  ABISELECT(-576,-324),
  ABISELECT(-80,-48),
  ABISELECT(-160,-92),
  ABISELECT(-320,-180),
  ABISELECT(-400,-228),
  ABISELECT(-448,-256),
  ABISELECT(-576,-324),
  ABISELECT(-576,-324),
  ABISELECT(-576,-324),
  ABISELECT(-536,-300),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20336C16D1Ev,_ZTv0_n56_N9S20336C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20336C16D0Ev,_ZTv0_n56_N9S20336C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
  ABISELECT(-608,-344),
  ABISELECT(-112,-68),
  ABISELECT(-568,-320),
  ABISELECT(-192,-112),
  ABISELECT(-432,-248),
  ABISELECT(-480,-276),
  ABISELECT(-352,-200),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N9S20336C16D1Ev,_ZTvn20_n56_N9S20336C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N9S20336C16D0Ev,_ZTvn20_n56_N9S20336C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
  ABISELECT(-600,-336),
  ABISELECT(-640,-360),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern VTBL_ENTRY _ZTV9S20336C16[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C13__9S20336C16[] = {
  0,
  ABISELECT(496,276),
  ABISELECT(416,232),
  ABISELECT(256,144),
  ABISELECT(176,96),
  ABISELECT(128,68),
  0,
  0,
  0,
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C13__9S20336C16[] = {
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C13__9S20336C16[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C13__9S20336C16[] = {
  0,
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C13__9S20336C16[] = {
  0,
  0,
  0,
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C13__9S20336C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-416,-232),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C13__9S20336C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-496,-276),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C16[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C14__9S20336C16[] = {
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C16[] = {
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__8S20336C9__9S20336C16[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C9__9S20336C16[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C9__9S20336C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__8S20336C9__9S20336C16[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__8S20336C9__9S20336C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C16[] = {
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C6__9S20336C16[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A1__8S20336C6__9S20336C16[] = {
  0,
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C11D1Ev();
extern void _ZN9S20336C11D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C11__9S20336C16[] = {
  ABISELECT(-576,-324),
  ABISELECT(-80,-48),
  ABISELECT(-160,-92),
  ABISELECT(-320,-180),
  ABISELECT(-400,-228),
  ABISELECT(-448,-256),
  ABISELECT(-576,-324),
  ABISELECT(-576,-324),
  ABISELECT(-576,-324),
  ABISELECT(-536,-300),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C12D1Ev();
extern void _ZN9S20336C12D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C129S20336C11__9S20336C16[] = {
  ABISELECT(-576,-324),
  ABISELECT(-80,-48),
  ABISELECT(-160,-92),
  ABISELECT(-320,-180),
  ABISELECT(-400,-228),
  ABISELECT(-448,-256),
  ABISELECT(-576,-324),
  ABISELECT(-576,-324),
  ABISELECT(-576,-324),
  ABISELECT(-536,-300),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C139S20336C129S20336C11__A1__9S20336C16[] = {
  ABISELECT(-576,-324),
  ABISELECT(-80,-48),
  ABISELECT(-160,-92),
  ABISELECT(-320,-180),
  ABISELECT(-400,-228),
  ABISELECT(-448,-256),
  ABISELECT(-576,-324),
  ABISELECT(-576,-324),
  ABISELECT(-576,-324),
  ABISELECT(-536,-300),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C139S20336C129S20336C11__A1__9S20336C16[] = {
  0,
  ABISELECT(536,300),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C139S20336C129S20336C11__A1__9S20336C16[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C139S20336C129S20336C11__A1__9S20336C16[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C139S20336C129S20336C11__A1__9S20336C16[] = {
  0,
  0,
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C139S20336C129S20336C11__A1__9S20336C16[] = {
  0,
  0,
  0,
  ABISELECT(320,180),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C139S20336C129S20336C11__A1__9S20336C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C139S20336C129S20336C11__A1__9S20336C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C15D1Ev();
extern void _ZN9S20336C15D0Ev();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C129S20336C11__9S20336C16[] = {
  ABISELECT(-608,-344),
  ABISELECT(-112,-68),
  ABISELECT(-568,-320),
  ABISELECT(-192,-112),
  ABISELECT(-432,-248),
  ABISELECT(-480,-276),
  ABISELECT(-352,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN9S20336C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C159S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  0,
  ABISELECT(352,200),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C159S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(480,276),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C159S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  ABISELECT(432,248),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C159S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__9S20336C159S20336C129S20336C11__9S20336C16[] = {
  0,
  ABISELECT(568,320),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C159S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C129S20336C11__A1__9S20336C16[] = {
  ABISELECT(-600,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C149S20336C129S20336C11__A1__9S20336C16[] = {
  0,
  ABISELECT(600,336),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C129S20336C11__9S20336C16[] = {
  0,
  ABISELECT(536,300),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  0,
  ABISELECT(320,180),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C129S20336C11__9S20336C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C15__9S20336C129S20336C11__9S20336C16[] = {
  ABISELECT(-608,-344),
  ABISELECT(-112,-68),
  ABISELECT(-568,-320),
  ABISELECT(-192,-112),
  ABISELECT(-432,-248),
  ABISELECT(-480,-276),
  ABISELECT(-352,-200),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__A__9S20336C129S20336C11__9S20336C16[] = {
  ABISELECT(-600,-336),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C11__9S20336C16[] = {
  0,
  ABISELECT(536,300),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C11__9S20336C16[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C11__9S20336C16[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C11__9S20336C16[] = {
  0,
  0,
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C11__9S20336C16[] = {
  0,
  0,
  0,
  ABISELECT(320,180),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C11__9S20336C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C11__9S20336C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void ABISELECT(_ZThn32_N9S20336C11D1Ev,_ZThn20_N9S20336C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C11D0Ev,_ZThn20_N9S20336C11D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C12__9S20336C11__9S20336C16[] = {
  ABISELECT(-608,-344),
  ABISELECT(-112,-68),
  ABISELECT(-568,-320),
  ABISELECT(-192,-112),
  ABISELECT(-432,-248),
  ABISELECT(-480,-276),
  ABISELECT(-352,-200),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C11D1Ev,_ZThn20_N9S20336C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C11D0Ev,_ZThn20_N9S20336C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C12__A1__9S20336C11__9S20336C16[] = {
  ABISELECT(-600,-336),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
static  VTT_ENTRY vtt_S20336C16[] = {
  {&(_ZTV9S20336C16[13]),  13,122},
  {&(_tg__ZTV9S20336C13__9S20336C16[12]),  12,15},
  {&(_tg__ZTV8S20336C2__9S20336C13__9S20336C16[3]),  3,4},
  {&(_tg__ZTV9S20336C13__9S20336C16[12]),  12,15},
  {&(_tg__ZTV8S20336C9__9S20336C13__9S20336C16[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C13__9S20336C16[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C13__9S20336C16[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C13__9S20336C16[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C13__9S20336C16[6]),  6,10},
  {&(_ZTV9S20336C16[23]),  23,122},
  {&(_ZTV9S20336C16[13]),  13,122},
  {&(_ZTV9S20336C16[33]),  33,122},
  {&(_ZTV9S20336C16[39]),  39,122},
  {&(_ZTV9S20336C16[46]),  46,122},
  {&(_ZTV9S20336C16[58]),  58,122},
  {&(_ZTV9S20336C16[69]),  69,122},
  {&(_ZTV9S20336C16[94]),  94,122},
  {&(_ZTV9S20336C16[114]),  114,122},
  {&(_ZTV9S20336C16[120]),  120,122},
  {&(_tg__ZTV9S20336C14__9S20336C16[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C14__9S20336C16[3]),  3,4},
  {&(_tg__ZTV8S20336C9__9S20336C16[7]),  7,9},
  {&(_tg__ZTV9S20336C10__8S20336C9__9S20336C16[4]),  4,6},
  {&(_tg__ZTV8S20336C7__8S20336C9__9S20336C16[5]),  5,8},
  {&(_tg__ZTV8S20336C6__8S20336C9__9S20336C16[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__8S20336C9__9S20336C16[3]),  3,4},
  {&(_tg__ZTV8S20336C4__8S20336C9__9S20336C16[6]),  6,10},
  {&(_tg__ZTV8S20336C6__9S20336C16[4]),  4,9},
  {&(_tg__ZTV8S20336C7__8S20336C6__9S20336C16[5]),  5,8},
  {&(_tg__ZTV8S20336C2__A1__8S20336C6__9S20336C16[3]),  3,4},
  {&(_tg__ZTV9S20336C11__9S20336C16[12]),  12,23},
  {&(_tg__ZTV9S20336C129S20336C11__9S20336C16[12]),  12,21},
  {&(_tg__ZTV9S20336C139S20336C129S20336C11__A1__9S20336C16[12]),  12,15},
  {&(_tg__ZTV8S20336C2__9S20336C139S20336C129S20336C11__A1__9S20336C16[3]),  3,4},
  {&(_tg__ZTV9S20336C14__9S20336C139S20336C129S20336C11__A1__9S20336C16[5]),  5,7},
  {&(_tg__ZTV8S20336C9__9S20336C139S20336C129S20336C11__A1__9S20336C16[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C139S20336C129S20336C11__A1__9S20336C16[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C139S20336C129S20336C11__A1__9S20336C16[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C139S20336C129S20336C11__A1__9S20336C16[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C139S20336C129S20336C11__A1__9S20336C16[6]),  6,10},
  {&(_tg__ZTV9S20336C159S20336C129S20336C11__9S20336C16[9]),  9,12},
  {&(_tg__ZTV8S20336C7__9S20336C159S20336C129S20336C11__9S20336C16[5]),  5,8},
  {&(_tg__ZTV8S20336C9__9S20336C159S20336C129S20336C11__9S20336C16[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C159S20336C129S20336C11__9S20336C16[4]),  4,6},
  {&(_tg__ZTV8S20336C6__9S20336C159S20336C129S20336C11__9S20336C16[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__9S20336C159S20336C129S20336C11__9S20336C16[3]),  3,4},
  {&(_tg__ZTV8S20336C4__9S20336C159S20336C129S20336C11__9S20336C16[6]),  6,10},
  {&(_tg__ZTV9S20336C149S20336C129S20336C11__A1__9S20336C16[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C149S20336C129S20336C11__A1__9S20336C16[3]),  3,4},
  {&(_tg__ZTV8S20336C2__9S20336C129S20336C11__9S20336C16[3]),  3,4},
  {&(_tg__ZTV9S20336C14__9S20336C129S20336C11__9S20336C16[5]),  5,7},
  {&(_tg__ZTV8S20336C9__9S20336C129S20336C11__9S20336C16[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C129S20336C11__9S20336C16[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C129S20336C11__9S20336C16[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C129S20336C11__9S20336C16[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C129S20336C11__9S20336C16[6]),  6,10},
  {&(_tg__ZTV9S20336C15__9S20336C129S20336C11__9S20336C16[9]),  9,12},
  {&(_tg__ZTV9S20336C14__A__9S20336C129S20336C11__9S20336C16[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C11__9S20336C16[3]),  3,4},
  {&(_tg__ZTV9S20336C14__9S20336C11__9S20336C16[5]),  5,7},
  {&(_tg__ZTV8S20336C9__9S20336C11__9S20336C16[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C11__9S20336C16[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C11__9S20336C16[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C11__9S20336C16[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C11__9S20336C16[6]),  6,10},
  {&(_tg__ZTV9S20336C159S20336C12__9S20336C11__9S20336C16[9]),  9,12},
  {&(_tg__ZTV9S20336C149S20336C12__A1__9S20336C11__9S20336C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20336C16[];
extern  VTBL_ENTRY _ZTV9S20336C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C16[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20336C16D0Ev,_ZTv0_n56_N9S20336C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S20336C16D0Ev,_ZThn324_N9S20336C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20336C16D1Ev,_ZTv0_n56_N9S20336C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S20336C16D1Ev,_ZThn324_N9S20336C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20336C16 = {  "S20336C16", // class name
  bases_S20336C16, 23,
  &(vtc_S20336C16[0]), // expected_vtbl_contents
  &(vtt_S20336C16[0]), // expected_vtt_contents
  ABISELECT(1024,556), // object size
  NSPAIRA(_ZTI9S20336C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20336C16),122, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20336C16),67, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20336C17  {
  int s20336c17f0;
  void *s20336c17f1;
  virtual  ~S20336C17(); // _ZN9S20336C17D1Ev
  virtual void  v34(); // _ZN9S20336C173v34Ev
  virtual void  v35(); // _ZN9S20336C173v35Ev
  virtual void  v36(); // _ZN9S20336C173v36Ev
  virtual void  v37(); // _ZN9S20336C173v37Ev
  virtual void  v38(); // _ZN9S20336C173v38Ev
  S20336C17(); // tgen
};
//SIG(-1 S20336C17) C1{ vd v1 v2 v3 v4 v5 Fi Fp}


 S20336C17 ::~S20336C17(){ note_dtor("S20336C17", this);}
void  S20336C17 ::v34(){vfunc_called(this, "_ZN9S20336C173v34Ev");}
void  S20336C17 ::v35(){vfunc_called(this, "_ZN9S20336C173v35Ev");}
void  S20336C17 ::v36(){vfunc_called(this, "_ZN9S20336C173v36Ev");}
void  S20336C17 ::v37(){vfunc_called(this, "_ZN9S20336C173v37Ev");}
void  S20336C17 ::v38(){vfunc_called(this, "_ZN9S20336C173v38Ev");}
S20336C17 ::S20336C17(){ note_ctor("S20336C17", this);} // tgen

static void Test_S20336C17()
{
  extern Class_Descriptor cd_S20336C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20336C17, buf);
    S20336C17 *dp, &lv = *(dp=new (buf) S20336C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20336C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20336C17)");
    check_field_offset(lv, s20336c17f0, ABISELECT(8,4), "S20336C17.s20336c17f0");
    check_field_offset(lv, s20336c17f1, ABISELECT(16,8), "S20336C17.s20336c17f1");
    test_class_info(&lv, &cd_S20336C17);
    dp->~S20336C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C17(Test_S20336C17, "S20336C17", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20336C17C1Ev();
extern void _ZN9S20336C17D1Ev();
Name_Map name_map_S20336C17[] = {
  NSPAIR(_ZN9S20336C17C1Ev),
  NSPAIR(_ZN9S20336C17D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20336C17[];
extern void _ZN9S20336C17D1Ev();
extern void _ZN9S20336C17D0Ev();
extern void _ZN9S20336C173v34Ev();
extern void _ZN9S20336C173v35Ev();
extern void _ZN9S20336C173v36Ev();
extern void _ZN9S20336C173v37Ev();
extern void _ZN9S20336C173v38Ev();
static  VTBL_ENTRY vtc_S20336C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C17[0]),
  (VTBL_ENTRY)&_ZN9S20336C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C17D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C173v34Ev,
  (VTBL_ENTRY)&_ZN9S20336C173v35Ev,
  (VTBL_ENTRY)&_ZN9S20336C173v36Ev,
  (VTBL_ENTRY)&_ZN9S20336C173v37Ev,
  (VTBL_ENTRY)&_ZN9S20336C173v38Ev,
};
extern VTBL_ENTRY _ZTI9S20336C17[];
extern  VTBL_ENTRY _ZTV9S20336C17[];
Class_Descriptor cd_S20336C17 = {  "S20336C17", // class name
  0,0,//no base classes
  &(vtc_S20336C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20336C17),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20336C17),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  S20336C1  : virtual S20336C2 , virtual S20336C3 , S20336C16 , S20336C4 , S20336C17 {
  void *s20336c1f0;
  virtual  ~S20336C1(); // _ZN8S20336C1D2Ev
  virtual void  v1(); // _ZN8S20336C12v1Ev
  virtual void  v2(); // _ZN8S20336C12v2Ev
  virtual void  v3(); // _ZN8S20336C12v3Ev
  virtual void  v4(); // _ZN8S20336C12v4Ev
  virtual void  v5(); // _ZN8S20336C12v5Ev
  virtual void  v6(); // _ZN8S20336C12v6Ev
  S20336C1(); // tgen
};
//SIG(1 S20336C1) C1{ VBC2{ v7 Fp[7] FL Fs} VBC3{ VBC4{ BC5{ BC2 v8} v9 v10 Fi} VBC6{ VBC7{ BC2 v11 v12 FC2} BC8{ m} VBC2 BC5 v13 v14 v15} BC9{ VBC10{ BC8 BC2 v16 Fi} VBC7 VBC6 VBC4 BC8 v17 v18 FD[2]} BC11{ BC12{ VBC2 BC13{ VBC2 VBC14{ VBC2 v19 v20} VBC9 VBC8 v21 Fp FD} BC15{ VBC7 VBC9 VBC8 vd v22 FD} BC14 vd v23 v24 v25 v26 Fp[25] Fs FC7} v27 v28} v29 v30 v31 Fp[5] Fi} BC16{ BC13 VBC11 v32 v33 Fp} BC4 BC17{ vd v34 v35 v36 v37 v38 Fi Fp} vd v1 v2 v3 v4 v5 v6 Fp}


 S20336C1 ::~S20336C1(){ note_dtor("S20336C1", this);}
void  S20336C1 ::v1(){vfunc_called(this, "_ZN8S20336C12v1Ev");}
void  S20336C1 ::v2(){vfunc_called(this, "_ZN8S20336C12v2Ev");}
void  S20336C1 ::v3(){vfunc_called(this, "_ZN8S20336C12v3Ev");}
void  S20336C1 ::v4(){vfunc_called(this, "_ZN8S20336C12v4Ev");}
void  S20336C1 ::v5(){vfunc_called(this, "_ZN8S20336C12v5Ev");}
void  S20336C1 ::v6(){vfunc_called(this, "_ZN8S20336C12v6Ev");}
S20336C1 ::S20336C1(){ note_ctor("S20336C1", this);} // tgen

static void Test_S20336C1()
{
  extern Class_Descriptor cd_S20336C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(106,227)];
    init_test(&cd_S20336C1, buf);
    S20336C1 *dp, &lv = *(dp=new (buf) S20336C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1680,904), "sizeof(S20336C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20336C1)");
    /*is_ambiguous_... S20336C1::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*), ABISELECT(152,88), "S20336C1");
    /*is_ambiguous_... S20336C6::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C6*), ABISELECT(152,88), "S20336C1");
    /*is_ambiguous_... S20336C12::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(152,88), "S20336C1");
    /*is_ambiguous_... S20336C13::S20336C2 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C13*)(S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(152,88), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*), ABISELECT(152,88), "S20336C1");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*)(S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(152,88), "S20336C1");
    /*is_ambiguous_... S20336C16::S20336C13 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C13*)(S20336C16*), ABISELECT(152,88), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C12*)(S20336C11*), ABISELECT(152,88), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(152,88), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C14*)(S20336C12*)(S20336C11*), ABISELECT(152,88), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C4 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C4*), ABISELECT(776,416), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C4 */ AMB_check_base_class_offset(lv, (S20336C5*)(S20336C4*), ABISELECT(776,416), "S20336C1");
    check_base_class_offset(lv, (S20336C4*)(S20336C3*), ABISELECT(776,416), "S20336C1");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C4*)(S20336C9*)(S20336C3*), ABISELECT(776,416), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C4*)(S20336C9*), ABISELECT(776,416), "S20336C1");
    check_base_class_offset(lv, (S20336C2*)(S20336C7*), ABISELECT(936,508), "S20336C1");
    check_base_class_offset(lv, (S20336C7*)(S20336C6*), ABISELECT(936,508), "S20336C1");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C7*)(S20336C9*)(S20336C3*), ABISELECT(936,508), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C7*)(S20336C9*), ABISELECT(936,508), "S20336C1");
    check_base_class_offset(lv, (S20336C7*)(S20336C15*)(S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(936,508), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C7*)(S20336C15*)(S20336C12*)(S20336C11*), ABISELECT(936,508), "S20336C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C6*), ABISELECT(856,464), "S20336C1");
    check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C6*), ABISELECT(856,464), "S20336C1");
    check_base_class_offset(lv, (S20336C5*)(S20336C6*), ABISELECT(856,464), "S20336C1");
    check_base_class_offset(lv, (S20336C6*)(S20336C3*), ABISELECT(856,464), "S20336C1");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C6*)(S20336C9*)(S20336C3*), ABISELECT(856,464), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C6*)(S20336C9*), ABISELECT(856,464), "S20336C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S20336C10*), ABISELECT(1096,596), "S20336C1");
    check_base_class_offset(lv, (S20336C2*)(S20336C10*), ABISELECT(1096,596), "S20336C1");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C10*)(S20336C9*)(S20336C3*), ABISELECT(1096,596), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C10*)(S20336C9*), ABISELECT(1096,596), "S20336C1");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C9*)(S20336C3*), ABISELECT(240,132), "S20336C1");
    /*is_ambiguous_... S20336C3::S20336C9 */ AMB_check_base_class_offset(lv, (S20336C9*)(S20336C3*), ABISELECT(240,132), "S20336C1");
    check_base_class_offset(lv, (S20336C14*)(S20336C13*)(S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(288,160), "S20336C1");
    /*is_ambiguous_... S20336C16::S20336C13 */ AMB_check_base_class_offset(lv, (S20336C14*)(S20336C13*)(S20336C16*), ABISELECT(288,160), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C14*)(S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(288,160), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C9 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C9*), ABISELECT(1184,644), "S20336C1");
    check_base_class_offset(lv, (S20336C9*)(S20336C13*)(S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(1184,644), "S20336C1");
    check_base_class_offset(lv, (S20336C9*)(S20336C15*)(S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(1184,644), "S20336C1");
    /*is_ambiguous_... S20336C16::S20336C13 */ AMB_check_base_class_offset(lv, (S20336C9*)(S20336C13*)(S20336C16*), ABISELECT(1184,644), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C9*)(S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(1184,644), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C9*)(S20336C15*)(S20336C12*)(S20336C11*), ABISELECT(1184,644), "S20336C1");
    /*is_ambiguous_... S20336C13::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C13*)(S20336C12*)(S20336C11*)(S20336C3*), 0, "S20336C1");
    /*is_ambiguous_... S20336C15::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C15*)(S20336C12*)(S20336C11*)(S20336C3*), 0, "S20336C1");
    /*is_ambiguous_... S20336C16::S20336C13 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C13*)(S20336C16*), 0, "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C13*)(S20336C12*)(S20336C11*), 0, "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20336C15*)(S20336C12*)(S20336C11*), 0, "S20336C1");
    check_base_class_offset(lv, (S20336C13*)(S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(288,160), "S20336C1");
    check_base_class_offset(lv, (S20336C15*)(S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(320,180), "S20336C1");
    /*is_ambiguous_... S20336C12::S20336C14 */ AMB_check_base_class_offset(lv, (S20336C14*)(S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(352,196), "S20336C1");
    check_base_class_offset(lv, (S20336C12*)(S20336C11*)(S20336C3*), ABISELECT(288,160), "S20336C1");
    check_base_class_offset(lv, (S20336C11*)(S20336C3*), ABISELECT(288,160), "S20336C1");
    check_base_class_offset(lv, (S20336C3*), ABISELECT(240,132), "S20336C1");
    /*is_ambiguous_... S20336C16::S20336C13 */ AMB_check_base_class_offset(lv, (S20336C13*)(S20336C16*), 0, "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C13*)(S20336C12*)(S20336C11*), ABISELECT(1232,672), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C15*)(S20336C12*)(S20336C11*), ABISELECT(1264,692), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C14*)(S20336C12*)(S20336C11*), ABISELECT(1296,708), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C11 */ AMB_check_base_class_offset(lv, (S20336C12*)(S20336C11*), ABISELECT(1232,672), "S20336C1");
    check_base_class_offset(lv, (S20336C11*)(S20336C16*), ABISELECT(1232,672), "S20336C1");
    check_base_class_offset(lv, (S20336C16*), 0, "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C4 */ AMB_check_base_class_offset(lv, (S20336C2*)(S20336C5*)(S20336C4*), ABISELECT(40,24), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C4 */ AMB_check_base_class_offset(lv, (S20336C5*)(S20336C4*), ABISELECT(40,24), "S20336C1");
    /*is_ambiguous_... S20336C1::S20336C4 */ AMB_check_base_class_offset(lv, (S20336C4*), ABISELECT(40,24), "S20336C1");
    check_base_class_offset(lv, (S20336C17*), ABISELECT(120,72), "S20336C1");
    check_field_offset(lv, s20336c1f0, ABISELECT(144,84), "S20336C1.s20336c1f0");
    test_class_info(&lv, &cd_S20336C1);
    dp->~S20336C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20336C1(Test_S20336C1, "S20336C1", ABISELECT(1680,904));

#else // __cplusplus

extern void _ZN8S20336C1C1Ev();
extern void _ZN8S20336C1D2Ev();
Name_Map name_map_S20336C1[] = {
  NSPAIR(_ZN8S20336C1C1Ev),
  NSPAIR(_ZN8S20336C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C4;
extern VTBL_ENTRY _ZTI8S20336C4[];
extern  VTBL_ENTRY _ZTV8S20336C4[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C7;
extern VTBL_ENTRY _ZTI8S20336C7[];
extern  VTBL_ENTRY _ZTV8S20336C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C6;
extern VTBL_ENTRY _ZTI8S20336C6[];
extern  VTBL_ENTRY _ZTV8S20336C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C6[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C10;
extern VTBL_ENTRY _ZTI9S20336C10[];
extern  VTBL_ENTRY _ZTV9S20336C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C9;
extern VTBL_ENTRY _ZTI8S20336C9[];
extern  VTBL_ENTRY _ZTV8S20336C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C9[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C9;
extern VTBL_ENTRY _ZTI8S20336C9[];
extern  VTBL_ENTRY _ZTV8S20336C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20336C13;
extern VTBL_ENTRY _ZTI9S20336C13[];
extern  VTBL_ENTRY _ZTV9S20336C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C13[];
extern Class_Descriptor cd_S20336C15;
extern VTBL_ENTRY _ZTI9S20336C15[];
extern  VTBL_ENTRY _ZTV9S20336C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C15[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S20336C12;
extern VTBL_ENTRY _ZTI9S20336C12[];
extern  VTBL_ENTRY _ZTV9S20336C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C12[];
extern Class_Descriptor cd_S20336C11;
extern VTBL_ENTRY _ZTI9S20336C11[];
extern  VTBL_ENTRY _ZTV9S20336C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C11[];
extern Class_Descriptor cd_S20336C3;
extern VTBL_ENTRY _ZTI8S20336C3[];
extern  VTBL_ENTRY _ZTV8S20336C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C3[];
extern Class_Descriptor cd_S20336C13;
extern VTBL_ENTRY _ZTI9S20336C13[];
extern  VTBL_ENTRY _ZTV9S20336C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C13[];
extern Class_Descriptor cd_S20336C13;
extern VTBL_ENTRY _ZTI9S20336C13[];
extern  VTBL_ENTRY _ZTV9S20336C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C13[];
extern Class_Descriptor cd_S20336C15;
extern VTBL_ENTRY _ZTI9S20336C15[];
extern  VTBL_ENTRY _ZTV9S20336C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C15[];
extern Class_Descriptor cd_S20336C14;
extern VTBL_ENTRY _ZTI9S20336C14[];
extern  VTBL_ENTRY _ZTV9S20336C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C14[];
extern Class_Descriptor cd_S20336C12;
extern VTBL_ENTRY _ZTI9S20336C12[];
extern  VTBL_ENTRY _ZTV9S20336C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C12[];
extern Class_Descriptor cd_S20336C11;
extern VTBL_ENTRY _ZTI9S20336C11[];
extern  VTBL_ENTRY _ZTV9S20336C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C11[];
extern Class_Descriptor cd_S20336C16;
extern VTBL_ENTRY _ZTI9S20336C16[];
extern  VTBL_ENTRY _ZTV9S20336C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20336C16[];
extern Class_Descriptor cd_S20336C2;
extern VTBL_ENTRY _ZTI8S20336C2[];
extern  VTBL_ENTRY _ZTV8S20336C2[];
extern Class_Descriptor cd_S20336C5;
extern VTBL_ENTRY _ZTI8S20336C5[];
extern  VTBL_ENTRY _ZTV8S20336C5[];
extern Class_Descriptor cd_S20336C4;
extern VTBL_ENTRY _ZTI8S20336C4[];
extern  VTBL_ENTRY _ZTV8S20336C4[];
extern Class_Descriptor cd_S20336C17;
extern VTBL_ENTRY _ZTI9S20336C17[];
extern  VTBL_ENTRY _ZTV9S20336C17[];
static Base_Class bases_S20336C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20336C2,    ABISELECT(152,88), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20336C2,    ABISELECT(776,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(776,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20336C4,    ABISELECT(776,416), //bcp->offset
    119, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20336C2,    ABISELECT(936,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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20336C7,    ABISELECT(936,508), //bcp->offset
    143, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(856,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
    9, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(856,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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20336C5,    ABISELECT(856,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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20336C6,    ABISELECT(856,464), //bcp->offset
    129, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(1096,596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20336C2,    ABISELECT(1096,596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20336C10,    ABISELECT(1096,596), //bcp->offset
    151, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3164C31_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
    14, //immediately_derived
  0, 0},
  {&cd_S20336C9,    ABISELECT(240,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20336C14,    ABISELECT(288,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(1184,644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20336C9,    ABISELECT(1184,644), //bcp->offset
    157, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20336C13,    ABISELECT(288,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20336C15,    ABISELECT(320,180), //bcp->offset
    102, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20336C14,    ABISELECT(352,196), //bcp->offset
    114, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20336C12,    ABISELECT(288,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20336C11,    ABISELECT(288,160), //bcp->offset
    79, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20336C3,    ABISELECT(240,132), //bcp->offset
    46, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20336C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //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
    31, //immediately_derived
  0, 0},
  {&cd_S20336C13,    ABISELECT(1232,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20336C15,    ABISELECT(1264,692), //bcp->offset
    200, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20336C14,    ABISELECT(1296,708), //bcp->offset
    212, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20336C12,    ABISELECT(1232,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20336C11,    ABISELECT(1232,672), //bcp->offset
    168, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20336C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20336C2,    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
    28, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20336C5,    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
    29, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20336C4,    ABISELECT(40,24), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20336C17,    ABISELECT(120,72), //bcp->offset
    33, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20336C1[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C163v32Ev();
extern void _ZN9S20336C163v33Ev();
extern void _ZN8S20336C1D1Ev();
extern void _ZN8S20336C1D0Ev();
extern void _ZN8S20336C12v1Ev();
extern void _ZN8S20336C12v2Ev();
extern void _ZN8S20336C12v3Ev();
extern void _ZN8S20336C12v4Ev();
extern void _ZN8S20336C12v5Ev();
extern void _ZN8S20336C12v6Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
extern void ABISELECT(_ZThn120_N8S20336C1D1Ev,_ZThn72_N8S20336C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S20336C1D0Ev,_ZThn72_N8S20336C1D0Ev)();
extern void _ZN9S20336C173v34Ev();
extern void _ZN9S20336C173v35Ev();
extern void _ZN9S20336C173v36Ev();
extern void _ZN9S20336C173v37Ev();
extern void _ZN9S20336C173v38Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
extern void _ZN8S20336C33v29Ev();
extern void _ZN8S20336C33v30Ev();
extern void _ZN8S20336C33v31Ev();
extern void ABISELECT(_ZTv0_n128_N8S20336C1D1Ev,_ZTv0_n64_N8S20336C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S20336C1D1Ev,_ZThn132_N8S20336C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20336C1D0Ev,_ZTv0_n64_N8S20336C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S20336C1D0Ev,_ZThn132_N8S20336C1D0Ev)() __attribute__((weak));
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void ABISELECT(_ZTvn48_n128_N8S20336C1D1Ev,_ZTvn28_n64_N8S20336C1D1Ev)();
extern void ABISELECT(_ZTvn48_n128_N8S20336C1D0Ev,_ZTvn28_n64_N8S20336C1D0Ev)();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
extern void ABISELECT(_ZTvn80_n128_N8S20336C1D1Ev,_ZTvn48_n64_N8S20336C1D1Ev)();
extern void ABISELECT(_ZTvn80_n128_N8S20336C1D0Ev,_ZTvn48_n64_N8S20336C1D0Ev)();
extern void _ZN9S20336C153v22Ev();
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void ABISELECT(_ZTv0_n112_N8S20336C1D1Ev,_ZTv0_n56_N8S20336C1D1Ev)();
extern void ABISELECT(_ZThn1232_N8S20336C1D1Ev,_ZThn672_N8S20336C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S20336C1D0Ev,_ZTv0_n56_N8S20336C1D0Ev)();
extern void ABISELECT(_ZThn1232_N8S20336C1D0Ev,_ZThn672_N8S20336C1D0Ev)() __attribute__((weak));
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
extern void ABISELECT(_ZTvn32_n112_N8S20336C1D1Ev,_ZTvn20_n56_N8S20336C1D1Ev)();
extern void ABISELECT(_ZTvn32_n112_N8S20336C1D0Ev,_ZTvn20_n56_N8S20336C1D0Ev)();
extern void _ZN9S20336C153v22Ev();
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY vtc_S20336C1[] = {
  ABISELECT(240,132),
  ABISELECT(1232,672),
  0,
  ABISELECT(776,416),
  ABISELECT(856,464),
  ABISELECT(936,508),
  ABISELECT(1096,596),
  ABISELECT(1184,644),
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C163v32Ev,
  (VTBL_ENTRY)&_ZN9S20336C163v33Ev,
  (VTBL_ENTRY)&_ZN8S20336C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20336C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20336C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20336C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20336C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20336C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20336C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20336C12v6Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S20336C1D1Ev,_ZThn72_N8S20336C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S20336C1D0Ev,_ZThn72_N8S20336C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C173v34Ev,
  (VTBL_ENTRY)&_ZN9S20336C173v35Ev,
  (VTBL_ENTRY)&_ZN9S20336C173v36Ev,
  (VTBL_ENTRY)&_ZN9S20336C173v37Ev,
  (VTBL_ENTRY)&_ZN9S20336C173v38Ev,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-240,-132),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(944,512),
  ABISELECT(48,28),
  ABISELECT(536,284),
  ABISELECT(-88,-44),
  ABISELECT(616,332),
  ABISELECT(696,376),
  ABISELECT(856,464),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20336C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20336C33v30Ev,
  (VTBL_ENTRY)&_ZN8S20336C33v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20336C1D1Ev,_ZTv0_n64_N8S20336C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20336C1D0Ev,_ZTv0_n64_N8S20336C1D0Ev),
  ABISELECT(-288,-160),
  ABISELECT(488,256),
  ABISELECT(568,304),
  ABISELECT(648,348),
  ABISELECT(808,436),
  ABISELECT(896,484),
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n128_N8S20336C1D1Ev,_ZTvn28_n64_N8S20336C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n128_N8S20336C1D0Ev,_ZTvn28_n64_N8S20336C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
  ABISELECT(-320,-180),
  ABISELECT(456,236),
  ABISELECT(-168,-92),
  ABISELECT(536,284),
  ABISELECT(776,416),
  ABISELECT(864,464),
  ABISELECT(616,328),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n128_N8S20336C1D1Ev,_ZTvn48_n64_N8S20336C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n128_N8S20336C1D0Ev,_ZTvn48_n64_N8S20336C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
  ABISELECT(-200,-108),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-776,-416),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(-856,-464),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
  0,
  0,
  0,
  ABISELECT(-936,-508),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
  0,
  0,
  ABISELECT(-1096,-596),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(-1184,-644),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
  0,
  0,
  ABISELECT(32,20),
  0,
  0,
  0,
  0,
  ABISELECT(-1232,-672),
  0,
  ABISELECT(-1232,-672),
  ABISELECT(-456,-256),
  ABISELECT(-376,-208),
  ABISELECT(-296,-164),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  ABISELECT(-944,-512),
  ABISELECT(-944,-512),
  ABISELECT(-944,-512),
  ABISELECT(-1080,-584),
  ABISELECT(-1232,-672),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20336C1D1Ev,_ZTv0_n56_N8S20336C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20336C1D0Ev,_ZTv0_n56_N8S20336C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
  ABISELECT(-1264,-692),
  ABISELECT(-488,-276),
  ABISELECT(-1112,-604),
  ABISELECT(-408,-228),
  ABISELECT(-168,-96),
  ABISELECT(-80,-48),
  ABISELECT(-328,-184),
  ABISELECT(-1264,-692),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N8S20336C1D1Ev,_ZTvn20_n56_N8S20336C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N8S20336C1D0Ev,_ZTvn20_n56_N8S20336C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
  ABISELECT(-1144,-620),
  ABISELECT(-1296,-708),
  (VTBL_ENTRY)&(_ZTI8S20336C1[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern VTBL_ENTRY _ZTV8S20336C1[];
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C163v32Ev();
extern void _ZN9S20336C163v33Ev();
extern void _ZN9S20336C16D1Ev();
extern void _ZN9S20336C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C16__8S20336C1[] = {
  ABISELECT(1232,672),
  0,
  ABISELECT(776,416),
  ABISELECT(856,464),
  ABISELECT(936,508),
  ABISELECT(1096,596),
  ABISELECT(1184,644),
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C163v32Ev,
  (VTBL_ENTRY)&_ZN9S20336C163v33Ev,
  (VTBL_ENTRY)&_ZN9S20336C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C16D0Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C139S20336C16__A1__8S20336C1[] = {
  0,
  ABISELECT(776,416),
  ABISELECT(856,464),
  ABISELECT(936,508),
  ABISELECT(1096,596),
  ABISELECT(1184,644),
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C139S20336C16__A1__8S20336C1[] = {
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C139S20336C16__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C139S20336C16__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(-1184,-644),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C139S20336C16__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(-1096,-596),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C139S20336C16__A1__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(-936,-508),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C139S20336C16__A1__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(-856,-464),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C139S20336C16__A1__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-776,-416),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C16__8S20336C1[] = {
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C16__8S20336C1[] = {
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C16__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(-1184,-644),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C16__8S20336C1[] = {
  0,
  0,
  ABISELECT(-1096,-596),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C16__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(-936,-508),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C16__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(-856,-464),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C16__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-776,-416),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void ABISELECT(_ZTv0_n112_N9S20336C16D1Ev,_ZTv0_n56_N9S20336C16D1Ev)();
extern void ABISELECT(_ZThn1232_N9S20336C16D1Ev,_ZThn672_N9S20336C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S20336C16D0Ev,_ZTv0_n56_N9S20336C16D0Ev)();
extern void ABISELECT(_ZThn1232_N9S20336C16D0Ev,_ZThn672_N9S20336C16D0Ev)() __attribute__((weak));
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C11__9S20336C16__8S20336C1[] = {
  0,
  0,
  ABISELECT(32,20),
  0,
  0,
  0,
  0,
  ABISELECT(-1232,-672),
  0,
  ABISELECT(-1232,-672),
  ABISELECT(-456,-256),
  ABISELECT(-376,-208),
  ABISELECT(-296,-164),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  ABISELECT(-944,-512),
  ABISELECT(-944,-512),
  ABISELECT(-944,-512),
  ABISELECT(-1080,-584),
  ABISELECT(-1232,-672),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20336C16D1Ev,_ZTv0_n56_N9S20336C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20336C16D0Ev,_ZTv0_n56_N9S20336C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
};
extern void ABISELECT(_ZTvn32_n112_N9S20336C16D1Ev,_ZTvn20_n56_N9S20336C16D1Ev)();
extern void ABISELECT(_ZTvn32_n112_N9S20336C16D0Ev,_ZTvn20_n56_N9S20336C16D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C129S20336C11__9S20336C16__8S20336C1[] = {
  ABISELECT(-1264,-692),
  ABISELECT(-488,-276),
  ABISELECT(-1112,-604),
  ABISELECT(-408,-228),
  ABISELECT(-168,-96),
  ABISELECT(-80,-48),
  ABISELECT(-328,-184),
  ABISELECT(-1264,-692),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N9S20336C16D1Ev,_ZTvn20_n56_N9S20336C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N9S20336C16D0Ev,_ZTvn20_n56_N9S20336C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C129S20336C11__A1__9S20336C16__8S20336C1[] = {
  ABISELECT(-1144,-620),
  ABISELECT(-1296,-708),
  (VTBL_ENTRY)&(_ZTI9S20336C16[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
extern void _ZN8S20336C33v29Ev();
extern void _ZN8S20336C33v30Ev();
extern void _ZN8S20336C33v31Ev();
extern void _ZN8S20336C3D1Ev();
extern void _ZN8S20336C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C3__8S20336C1[] = {
  ABISELECT(-240,-132),
  ABISELECT(944,512),
  ABISELECT(48,28),
  ABISELECT(536,284),
  ABISELECT(-88,-44),
  ABISELECT(616,332),
  ABISELECT(696,376),
  ABISELECT(856,464),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20336C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20336C33v30Ev,
  (VTBL_ENTRY)&_ZN8S20336C33v31Ev,
  (VTBL_ENTRY)&_ZN8S20336C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20336C3D0Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C98S20336C3__8S20336C1[] = {
  ABISELECT(536,284),
  ABISELECT(-88,-44),
  ABISELECT(616,332),
  ABISELECT(696,376),
  ABISELECT(856,464),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__8S20336C98S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-856,-464),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C98S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(-696,-376),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C98S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(-616,-332),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__8S20336C98S20336C3__8S20336C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__8S20336C98S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C11D1Ev();
extern void _ZN9S20336C11D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C118S20336C3__8S20336C1[] = {
  ABISELECT(-288,-160),
  ABISELECT(488,256),
  ABISELECT(568,304),
  ABISELECT(648,348),
  ABISELECT(808,436),
  ABISELECT(896,484),
  0,
  0,
  0,
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C12D1Ev();
extern void _ZN9S20336C12D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C129S20336C118S20336C3__8S20336C1[] = {
  ABISELECT(-288,-160),
  ABISELECT(488,256),
  ABISELECT(568,304),
  ABISELECT(648,348),
  ABISELECT(808,436),
  ABISELECT(896,484),
  0,
  0,
  0,
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C139S20336C129S20336C118S20336C3__8S20336C1[] = {
  ABISELECT(-288,-160),
  ABISELECT(488,256),
  ABISELECT(568,304),
  ABISELECT(648,348),
  ABISELECT(808,436),
  ABISELECT(896,484),
  0,
  0,
  0,
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-808,-436),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(-648,-348),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(-568,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-488,-256),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C15D1Ev();
extern void _ZN9S20336C15D0Ev();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C129S20336C118S20336C3__8S20336C1[] = {
  ABISELECT(-320,-180),
  ABISELECT(456,236),
  ABISELECT(-168,-92),
  ABISELECT(536,284),
  ABISELECT(776,416),
  ABISELECT(864,464),
  ABISELECT(616,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN9S20336C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(-616,-328),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(-864,-464),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-776,-416),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  ABISELECT(168,92),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-456,-236),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C129S20336C118S20336C3__A1__8S20336C1[] = {
  ABISELECT(-200,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C149S20336C129S20336C118S20336C3__A1__8S20336C1[] = {
  0,
  ABISELECT(200,108),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-808,-436),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(-648,-348),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(-568,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C129S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-488,-256),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C15__9S20336C129S20336C118S20336C3__8S20336C1[] = {
  ABISELECT(-320,-180),
  ABISELECT(456,236),
  ABISELECT(-168,-92),
  ABISELECT(536,284),
  ABISELECT(776,416),
  ABISELECT(864,464),
  ABISELECT(616,328),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__A__9S20336C129S20336C118S20336C3__8S20336C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C118S20336C3__8S20336C1[] = {
  0,
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-808,-436),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(-648,-348),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(-568,-304),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C118S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-488,-256),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void ABISELECT(_ZThn32_N9S20336C11D1Ev,_ZThn20_N9S20336C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C11D0Ev,_ZThn20_N9S20336C11D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C12__9S20336C118S20336C3__8S20336C1[] = {
  ABISELECT(-320,-180),
  ABISELECT(456,236),
  ABISELECT(-168,-92),
  ABISELECT(536,284),
  ABISELECT(776,416),
  ABISELECT(864,464),
  ABISELECT(616,328),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C11D1Ev,_ZThn20_N9S20336C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C11D0Ev,_ZThn20_N9S20336C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C12__A1__9S20336C118S20336C3__8S20336C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__8S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(-616,-332),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C3__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(-696,-376),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__8S20336C3__8S20336C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__8S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-856,-464),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void ABISELECT(_ZThn48_N8S20336C3D1Ev,_ZThn28_N8S20336C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S20336C3D0Ev,_ZThn28_N8S20336C3D0Ev)();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C11__8S20336C3__8S20336C1[] = {
  ABISELECT(-288,-160),
  ABISELECT(488,256),
  ABISELECT(568,304),
  ABISELECT(648,348),
  ABISELECT(808,436),
  ABISELECT(896,484),
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20336C3D1Ev,_ZThn28_N8S20336C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20336C3D0Ev,_ZThn28_N8S20336C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__A1__8S20336C3__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(-944,-512),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void ABISELECT(_ZThn80_N8S20336C3D1Ev,_ZThn48_N8S20336C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20336C3D0Ev,_ZThn48_N8S20336C3D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C129S20336C11__8S20336C3__8S20336C1[] = {
  ABISELECT(-320,-180),
  ABISELECT(456,236),
  ABISELECT(-168,-92),
  ABISELECT(536,284),
  ABISELECT(776,416),
  ABISELECT(864,464),
  ABISELECT(616,328),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20336C3D1Ev,_ZThn48_N8S20336C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20336C3D0Ev,_ZThn48_N8S20336C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C129S20336C11__A1__8S20336C3__8S20336C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S20336C3[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C1[] = {
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C6__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A1__8S20336C6__8S20336C1[] = {
  0,
  ABISELECT(704,376),
  (VTBL_ENTRY)&(_ZTI8S20336C6[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__8S20336C1[] = {
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C14__8S20336C1[] = {
  0,
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__A1__8S20336C1[] = {
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__8S20336C9__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__8S20336C9__A1__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(248,136),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__8S20336C9__A1__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(328,180),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__8S20336C9__A1__8S20336C1[] = {
  0,
  ABISELECT(1032,556),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__8S20336C9__A1__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(408,228),
  (VTBL_ENTRY)&(_ZTI8S20336C9[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C11D1Ev();
extern void _ZN9S20336C11D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
extern void _ZN9S20336C113v27Ev();
extern void _ZN9S20336C113v28Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C11__A1__8S20336C1[] = {
  ABISELECT(-1232,-672),
  ABISELECT(-456,-256),
  ABISELECT(-376,-208),
  ABISELECT(-296,-164),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  ABISELECT(-944,-512),
  ABISELECT(-944,-512),
  ABISELECT(-944,-512),
  ABISELECT(-1080,-584),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20336C113v28Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
extern void _ZN9S20336C12D1Ev();
extern void _ZN9S20336C12D0Ev();
extern void _ZN9S20336C123v23Ev();
extern void _ZN9S20336C123v24Ev();
extern void _ZN9S20336C123v25Ev();
extern void _ZN9S20336C123v26Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C129S20336C11__A1__8S20336C1[] = {
  ABISELECT(-1232,-672),
  ABISELECT(-456,-256),
  ABISELECT(-376,-208),
  ABISELECT(-296,-164),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  ABISELECT(-944,-512),
  ABISELECT(-944,-512),
  ABISELECT(-944,-512),
  ABISELECT(-1080,-584),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v23Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v24Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v25Ev,
  (VTBL_ENTRY)&_ZN9S20336C123v26Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
extern void _ZN9S20336C133v21Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C139S20336C129S20336C11__A2__8S20336C1[] = {
  ABISELECT(-1232,-672),
  ABISELECT(-456,-256),
  ABISELECT(-376,-208),
  ABISELECT(-296,-164),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  ABISELECT(-944,-512),
  ABISELECT(-944,-512),
  ABISELECT(-944,-512),
  ABISELECT(-1080,-584),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
  (VTBL_ENTRY)&_ZN9S20336C133v21Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C139S20336C129S20336C11__A2__8S20336C1[] = {
  0,
  ABISELECT(1080,584),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C139S20336C129S20336C11__A2__8S20336C1[] = {
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(944,512),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C139S20336C129S20336C11__A2__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C139S20336C129S20336C11__A2__8S20336C1[] = {
  0,
  0,
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C139S20336C129S20336C11__A2__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(296,164),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C139S20336C129S20336C11__A2__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C139S20336C129S20336C11__A2__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(456,256),
  (VTBL_ENTRY)&(_ZTI9S20336C13[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C15D1Ev();
extern void _ZN9S20336C15D0Ev();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C129S20336C11__A1__8S20336C1[] = {
  ABISELECT(-1264,-692),
  ABISELECT(-488,-276),
  ABISELECT(-1112,-604),
  ABISELECT(-408,-228),
  ABISELECT(-168,-96),
  ABISELECT(-80,-48),
  ABISELECT(-328,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN9S20336C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20336C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C159S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(328,184),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C159S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C159S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(168,96),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C159S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(408,228),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__A2__9S20336C159S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  ABISELECT(1112,604),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C159S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(488,276),
  (VTBL_ENTRY)&(_ZTI9S20336C15[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C129S20336C11__A2__8S20336C1[] = {
  ABISELECT(-1144,-620),
  0,
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C149S20336C129S20336C11__A2__8S20336C1[] = {
  0,
  ABISELECT(1144,620),
  (VTBL_ENTRY)&(_ZTI9S20336C14[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  ABISELECT(1080,584),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(944,512),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(296,164),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C129S20336C11__A1__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(456,256),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C15__9S20336C129S20336C11__A1__8S20336C1[] = {
  ABISELECT(-1264,-692),
  ABISELECT(-488,-276),
  ABISELECT(-1112,-604),
  ABISELECT(-408,-228),
  ABISELECT(-168,-96),
  ABISELECT(-80,-48),
  ABISELECT(-328,-184),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D1Ev,_ZThn20_N9S20336C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C12D0Ev,_ZThn20_N9S20336C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__A__9S20336C129S20336C11__A1__8S20336C1[] = {
  ABISELECT(-1144,-620),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C12[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C2__9S20336C11__A1__8S20336C1[] = {
  0,
  ABISELECT(1080,584),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C14__9S20336C11__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(944,512),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
extern void _ZN8S20336C93v17Ev();
extern void _ZN8S20336C93v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C9__9S20336C11__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(-408,-228),
  ABISELECT(-1032,-556),
  ABISELECT(-328,-180),
  ABISELECT(-248,-136),
  ABISELECT(-88,-48),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C93v17Ev,
  (VTBL_ENTRY)&_ZN8S20336C93v18Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN9S20336C103v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C10__9S20336C11__A1__8S20336C1[] = {
  0,
  0,
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN9S20336C103v16Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C73v11Ev();
extern void _ZN8S20336C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C7__9S20336C11__A1__8S20336C1[] = {
  0,
  0,
  0,
  ABISELECT(296,164),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v11Ev,
  (VTBL_ENTRY)&_ZN8S20336C73v12Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C63v13Ev();
extern void _ZN8S20336C63v14Ev();
extern void _ZN8S20336C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C6__9S20336C11__A1__8S20336C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-376),
  ABISELECT(80,44),
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20336C63v15Ev,
};
extern void _ZN8S20336C22v7Ev();
extern void _ZN8S20336C52v8Ev();
extern void _ZN8S20336C42v9Ev();
extern void _ZN8S20336C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20336C4__9S20336C11__A1__8S20336C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(456,256),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN8S20336C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20336C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20336C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20336C43v10Ev,
};
extern void ABISELECT(_ZThn32_N9S20336C11D1Ev,_ZThn20_N9S20336C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S20336C11D0Ev,_ZThn20_N9S20336C11D0Ev)();
extern void _ZN9S20336C153v22Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C159S20336C12__9S20336C11__A1__8S20336C1[] = {
  ABISELECT(-1264,-692),
  ABISELECT(-488,-276),
  ABISELECT(-1112,-604),
  ABISELECT(-408,-228),
  ABISELECT(-168,-96),
  ABISELECT(-80,-48),
  ABISELECT(-328,-184),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C11D1Ev,_ZThn20_N9S20336C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20336C11D0Ev,_ZThn20_N9S20336C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20336C153v22Ev,
};
extern void _ZN9S20336C143v19Ev();
extern void _ZN9S20336C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S20336C149S20336C12__A1__9S20336C11__A1__8S20336C1[] = {
  ABISELECT(-1144,-620),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20336C11[0]),
  (VTBL_ENTRY)&_ZN9S20336C143v19Ev,
  (VTBL_ENTRY)&_ZN9S20336C143v20Ev,
};
static  VTT_ENTRY vtt_S20336C1[] = {
  {&(_ZTV8S20336C1[14]),  14,217},
  {&(_tg__ZTV9S20336C16__8S20336C1[13]),  13,20},
  {&(_tg__ZTV9S20336C139S20336C16__A1__8S20336C1[12]),  12,15},
  {&(_tg__ZTV8S20336C2__9S20336C139S20336C16__A1__8S20336C1[3]),  3,4},
  {&(_tg__ZTV9S20336C14__9S20336C139S20336C16__A1__8S20336C1[5]),  5,7},
  {&(_tg__ZTV8S20336C9__9S20336C139S20336C16__A1__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C139S20336C16__A1__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C139S20336C16__A1__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C139S20336C16__A1__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C139S20336C16__A1__8S20336C1[6]),  6,10},
  {&(_tg__ZTV8S20336C2__9S20336C16__8S20336C1[3]),  3,4},
  {&(_tg__ZTV9S20336C14__9S20336C16__8S20336C1[5]),  5,7},
  {&(_tg__ZTV8S20336C9__9S20336C16__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C16__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C16__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C16__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C16__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C11__9S20336C16__8S20336C1[21]),  21,32},
  {&(_tg__ZTV9S20336C159S20336C129S20336C11__9S20336C16__8S20336C1[9]),  9,12},
  {&(_tg__ZTV9S20336C149S20336C129S20336C11__A1__9S20336C16__8S20336C1[3]),  3,5},
  {&(_ZTV8S20336C1[45]),  45,217},
  {&(_ZTV8S20336C1[72]),  72,217},
  {&(_ZTV8S20336C1[125]),  125,217},
  {&(_ZTV8S20336C1[138]),  138,217},
  {&(_ZTV8S20336C1[148]),  148,217},
  {&(_ZTV8S20336C1[155]),  155,217},
  {&(_ZTV8S20336C1[91]),  91,217},
  {&(_ZTV8S20336C1[91]),  91,217},
  {&(_ZTV8S20336C1[166]),  166,217},
  {&(_ZTV8S20336C1[111]),  111,217},
  {&(_ZTV8S20336C1[117]),  117,217},
  {&(_ZTV8S20336C1[189]),  189,217},
  {&(_ZTV8S20336C1[209]),  209,217},
  {&(_ZTV8S20336C1[215]),  215,217},
  {&(_tg__ZTV8S20336C3__8S20336C1[10]),  10,17},
  {&(_tg__ZTV8S20336C98S20336C3__8S20336C1[7]),  7,9},
  {&(_tg__ZTV9S20336C10__8S20336C98S20336C3__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C7__8S20336C98S20336C3__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C6__8S20336C98S20336C3__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__8S20336C98S20336C3__8S20336C1[3]),  3,4},
  {&(_tg__ZTV8S20336C4__8S20336C98S20336C3__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C118S20336C3__8S20336C1[12]),  12,23},
  {&(_tg__ZTV9S20336C129S20336C118S20336C3__8S20336C1[12]),  12,21},
  {&(_tg__ZTV9S20336C139S20336C129S20336C118S20336C3__8S20336C1[12]),  12,15},
  {&(_tg__ZTV8S20336C2__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[3]),  3,4},
  {&(_tg__ZTV9S20336C139S20336C129S20336C118S20336C3__8S20336C1[12]),  12,15},
  {&(_tg__ZTV8S20336C9__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C139S20336C129S20336C118S20336C3__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C159S20336C129S20336C118S20336C3__8S20336C1[9]),  9,12},
  {&(_tg__ZTV8S20336C7__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C9__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C6__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[3]),  3,4},
  {&(_tg__ZTV8S20336C4__9S20336C159S20336C129S20336C118S20336C3__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C149S20336C129S20336C118S20336C3__A1__8S20336C1[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C149S20336C129S20336C118S20336C3__A1__8S20336C1[3]),  3,4},
  {&(_tg__ZTV8S20336C2__9S20336C129S20336C118S20336C3__8S20336C1[3]),  3,4},
  {&(_tg__ZTV9S20336C129S20336C118S20336C3__8S20336C1[12]),  12,21},
  {&(_tg__ZTV8S20336C9__9S20336C129S20336C118S20336C3__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C129S20336C118S20336C3__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C129S20336C118S20336C3__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C129S20336C118S20336C3__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C129S20336C118S20336C3__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C15__9S20336C129S20336C118S20336C3__8S20336C1[9]),  9,12},
  {&(_tg__ZTV9S20336C14__A__9S20336C129S20336C118S20336C3__8S20336C1[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C118S20336C3__8S20336C1[3]),  3,4},
  {&(_tg__ZTV9S20336C118S20336C3__8S20336C1[12]),  12,23},
  {&(_tg__ZTV8S20336C9__9S20336C118S20336C3__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C118S20336C3__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C118S20336C3__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C118S20336C3__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C118S20336C3__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C159S20336C12__9S20336C118S20336C3__8S20336C1[9]),  9,12},
  {&(_tg__ZTV9S20336C149S20336C12__A1__9S20336C118S20336C3__8S20336C1[3]),  3,5},
  {&(_tg__ZTV8S20336C4__8S20336C3__8S20336C1[6]),  6,10},
  {&(_tg__ZTV8S20336C6__8S20336C3__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C7__8S20336C3__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C2__A2__8S20336C3__8S20336C1[3]),  3,4},
  {&(_tg__ZTV9S20336C10__8S20336C3__8S20336C1[4]),  4,6},
  {&(_tg__ZTV9S20336C11__8S20336C3__8S20336C1[12]),  12,23},
  {&(_tg__ZTV9S20336C11__8S20336C3__8S20336C1[12]),  12,23},
  {&(_tg__ZTV8S20336C9__A1__8S20336C3__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C159S20336C129S20336C11__8S20336C3__8S20336C1[9]),  9,12},
  {&(_tg__ZTV9S20336C149S20336C129S20336C11__A1__8S20336C3__8S20336C1[3]),  3,5},
  {&(_tg__ZTV8S20336C6__8S20336C1[4]),  4,9},
  {&(_tg__ZTV8S20336C7__8S20336C6__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C2__A1__8S20336C6__8S20336C1[3]),  3,4},
  {&(_tg__ZTV9S20336C14__8S20336C1[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C14__8S20336C1[3]),  3,4},
  {&(_tg__ZTV8S20336C9__A1__8S20336C1[7]),  7,9},
  {&(_tg__ZTV9S20336C10__8S20336C9__A1__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C7__8S20336C9__A1__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C6__8S20336C9__A1__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__8S20336C9__A1__8S20336C1[3]),  3,4},
  {&(_tg__ZTV8S20336C4__8S20336C9__A1__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C11__A1__8S20336C1[12]),  12,23},
  {&(_tg__ZTV9S20336C129S20336C11__A1__8S20336C1[12]),  12,21},
  {&(_tg__ZTV9S20336C139S20336C129S20336C11__A2__8S20336C1[12]),  12,15},
  {&(_tg__ZTV8S20336C2__9S20336C139S20336C129S20336C11__A2__8S20336C1[3]),  3,4},
  {&(_tg__ZTV9S20336C14__9S20336C139S20336C129S20336C11__A2__8S20336C1[5]),  5,7},
  {&(_tg__ZTV8S20336C9__9S20336C139S20336C129S20336C11__A2__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C139S20336C129S20336C11__A2__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C139S20336C129S20336C11__A2__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C139S20336C129S20336C11__A2__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C139S20336C129S20336C11__A2__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C159S20336C129S20336C11__A1__8S20336C1[9]),  9,12},
  {&(_tg__ZTV8S20336C7__9S20336C159S20336C129S20336C11__A1__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C9__9S20336C159S20336C129S20336C11__A1__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C159S20336C129S20336C11__A1__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C6__9S20336C159S20336C129S20336C11__A1__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C2__A2__9S20336C159S20336C129S20336C11__A1__8S20336C1[3]),  3,4},
  {&(_tg__ZTV8S20336C4__9S20336C159S20336C129S20336C11__A1__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C149S20336C129S20336C11__A2__8S20336C1[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C149S20336C129S20336C11__A2__8S20336C1[3]),  3,4},
  {&(_tg__ZTV8S20336C2__9S20336C129S20336C11__A1__8S20336C1[3]),  3,4},
  {&(_tg__ZTV9S20336C14__9S20336C129S20336C11__A1__8S20336C1[5]),  5,7},
  {&(_tg__ZTV8S20336C9__9S20336C129S20336C11__A1__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C129S20336C11__A1__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C129S20336C11__A1__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C129S20336C11__A1__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C129S20336C11__A1__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C15__9S20336C129S20336C11__A1__8S20336C1[9]),  9,12},
  {&(_tg__ZTV9S20336C14__A__9S20336C129S20336C11__A1__8S20336C1[3]),  3,5},
  {&(_tg__ZTV8S20336C2__9S20336C11__A1__8S20336C1[3]),  3,4},
  {&(_tg__ZTV9S20336C14__9S20336C11__A1__8S20336C1[5]),  5,7},
  {&(_tg__ZTV8S20336C9__9S20336C11__A1__8S20336C1[9]),  9,11},
  {&(_tg__ZTV9S20336C10__9S20336C11__A1__8S20336C1[4]),  4,6},
  {&(_tg__ZTV8S20336C7__9S20336C11__A1__8S20336C1[5]),  5,8},
  {&(_tg__ZTV8S20336C6__9S20336C11__A1__8S20336C1[9]),  9,14},
  {&(_tg__ZTV8S20336C4__9S20336C11__A1__8S20336C1[6]),  6,10},
  {&(_tg__ZTV9S20336C159S20336C12__9S20336C11__A1__8S20336C1[9]),  9,12},
  {&(_tg__ZTV9S20336C149S20336C12__A1__9S20336C11__A1__8S20336C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20336C1[];
extern  VTBL_ENTRY _ZTV8S20336C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20336C1[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20336C16D0Ev,_ZTv0_n56_N9S20336C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N9S20336C16D0Ev,_ZThn672_N9S20336C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20336C16D1Ev,_ZTv0_n56_N9S20336C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N9S20336C16D1Ev,_ZThn672_N9S20336C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20336C1D0Ev,_ZTv0_n56_N8S20336C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S20336C1D0Ev,_ZThn672_N8S20336C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20336C1D1Ev,_ZTv0_n56_N8S20336C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S20336C1D1Ev,_ZThn672_N8S20336C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20336C1D0Ev,_ZTv0_n64_N8S20336C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20336C1D0Ev,_ZThn132_N8S20336C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20336C1D1Ev,_ZTv0_n64_N8S20336C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20336C1D1Ev,_ZThn132_N8S20336C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20336C1 = {  "S20336C1", // class name
  bases_S20336C1, 36,
  &(vtc_S20336C1[0]), // expected_vtbl_contents
  &(vtt_S20336C1[0]), // expected_vtt_contents
  ABISELECT(1680,904), // object size
  NSPAIRA(_ZTI8S20336C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20336C1),217, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20336C1),136, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7025C2  {
  void *s7025c2f0[8];
  virtual  ~S7025C2(); // _ZN7S7025C2D1Ev
  virtual void  v6(); // _ZN7S7025C22v6Ev
  virtual void  v7(); // _ZN7S7025C22v7Ev
  virtual void  v8(); // _ZN7S7025C22v8Ev
  virtual void  v9(); // _ZN7S7025C22v9Ev
  virtual void  v10(); // _ZN7S7025C23v10Ev
  virtual void  v11(); // _ZN7S7025C23v11Ev
  virtual void  v12(); // _ZN7S7025C23v12Ev
  S7025C2(); // tgen
};
//SIG(-1 S7025C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 Fp[8]}


 S7025C2 ::~S7025C2(){ note_dtor("S7025C2", this);}
void  S7025C2 ::v6(){vfunc_called(this, "_ZN7S7025C22v6Ev");}
void  S7025C2 ::v7(){vfunc_called(this, "_ZN7S7025C22v7Ev");}
void  S7025C2 ::v8(){vfunc_called(this, "_ZN7S7025C22v8Ev");}
void  S7025C2 ::v9(){vfunc_called(this, "_ZN7S7025C22v9Ev");}
void  S7025C2 ::v10(){vfunc_called(this, "_ZN7S7025C23v10Ev");}
void  S7025C2 ::v11(){vfunc_called(this, "_ZN7S7025C23v11Ev");}
void  S7025C2 ::v12(){vfunc_called(this, "_ZN7S7025C23v12Ev");}
S7025C2 ::S7025C2(){ note_ctor("S7025C2", this);} // tgen

static void Test_S7025C2()
{
  extern Class_Descriptor cd_S7025C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S7025C2, buf);
    S7025C2 *dp, &lv = *(dp=new (buf) S7025C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S7025C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7025C2)");
    check_field_offset(lv, s7025c2f0, ABISELECT(8,4), "S7025C2.s7025c2f0");
    test_class_info(&lv, &cd_S7025C2);
    dp->~S7025C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C2(Test_S7025C2, "S7025C2", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S7025C2C1Ev();
extern void _ZN7S7025C2D1Ev();
Name_Map name_map_S7025C2[] = {
  NSPAIR(_ZN7S7025C2C1Ev),
  NSPAIR(_ZN7S7025C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7025C2[];
extern void _ZN7S7025C2D1Ev();
extern void _ZN7S7025C2D0Ev();
extern void _ZN7S7025C22v6Ev();
extern void _ZN7S7025C22v7Ev();
extern void _ZN7S7025C22v8Ev();
extern void _ZN7S7025C22v9Ev();
extern void _ZN7S7025C23v10Ev();
extern void _ZN7S7025C23v11Ev();
extern void _ZN7S7025C23v12Ev();
static  VTBL_ENTRY vtc_S7025C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C2[0]),
  (VTBL_ENTRY)&_ZN7S7025C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7025C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7025C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7025C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7025C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7025C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7025C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7025C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7025C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S7025C2[];
extern  VTBL_ENTRY _ZTV7S7025C2[];
Class_Descriptor cd_S7025C2 = {  "S7025C2", // class name
  0,0,//no base classes
  &(vtc_S7025C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S7025C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7025C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7025C4  {
  short s7025c4f0[5];
  virtual void  v13(); // _ZN7S7025C43v13Ev
  virtual void  v14(); // _ZN7S7025C43v14Ev
  virtual void  v15(); // _ZN7S7025C43v15Ev
  virtual void  v16(); // _ZN7S7025C43v16Ev
  virtual void  v17(); // _ZN7S7025C43v17Ev
  ~S7025C4(); // tgen
  S7025C4(); // tgen
};
//SIG(-1 S7025C4) C1{ v1 v2 v3 v4 v5 Fs[5]}


void  S7025C4 ::v13(){vfunc_called(this, "_ZN7S7025C43v13Ev");}
void  S7025C4 ::v14(){vfunc_called(this, "_ZN7S7025C43v14Ev");}
void  S7025C4 ::v15(){vfunc_called(this, "_ZN7S7025C43v15Ev");}
void  S7025C4 ::v16(){vfunc_called(this, "_ZN7S7025C43v16Ev");}
void  S7025C4 ::v17(){vfunc_called(this, "_ZN7S7025C43v17Ev");}
S7025C4 ::~S7025C4(){ note_dtor("S7025C4", this);} // tgen
S7025C4 ::S7025C4(){ note_ctor("S7025C4", this);} // tgen

static void Test_S7025C4()
{
  extern Class_Descriptor cd_S7025C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7025C4, buf);
    S7025C4 *dp, &lv = *(dp=new (buf) S7025C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7025C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7025C4)");
    check_field_offset(lv, s7025c4f0, ABISELECT(8,4), "S7025C4.s7025c4f0");
    test_class_info(&lv, &cd_S7025C4);
    dp->~S7025C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C4(Test_S7025C4, "S7025C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7025C4C1Ev();
extern void _ZN7S7025C4D1Ev();
Name_Map name_map_S7025C4[] = {
  NSPAIR(_ZN7S7025C4C1Ev),
  NSPAIR(_ZN7S7025C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7025C4[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY vtc_S7025C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C4[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
Class_Descriptor cd_S7025C4 = {  "S7025C4", // class name
  0,0,//no base classes
  &(vtc_S7025C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7025C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7025C4),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  S7025C5  : virtual S7025C4 {
  virtual void  v18(); // _ZN7S7025C53v18Ev
  virtual void  v19(); // _ZN7S7025C53v19Ev
  ~S7025C5(); // tgen
  S7025C5(); // tgen
};
//SIG(-1 S7025C5) C1{ VBC2{ v3 v4 v5 v6 v7 Fs[5]} v1 v2}


void  S7025C5 ::v18(){vfunc_called(this, "_ZN7S7025C53v18Ev");}
void  S7025C5 ::v19(){vfunc_called(this, "_ZN7S7025C53v19Ev");}
S7025C5 ::~S7025C5(){ note_dtor("S7025C5", this);} // tgen
S7025C5 ::S7025C5(){ note_ctor("S7025C5", this);} // tgen

static void Test_S7025C5()
{
  extern Class_Descriptor cd_S7025C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7025C5, buf);
    S7025C5 *dp, &lv = *(dp=new (buf) S7025C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7025C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7025C5)");
    check_base_class_offset(lv, (S7025C4*), ABISELECT(8,4), "S7025C5");
    test_class_info(&lv, &cd_S7025C5);
    dp->~S7025C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C5(Test_S7025C5, "S7025C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7025C5C1Ev();
extern void _ZN7S7025C5D1Ev();
Name_Map name_map_S7025C5[] = {
  NSPAIR(_ZN7S7025C5C1Ev),
  NSPAIR(_ZN7S7025C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
static Base_Class bases_S7025C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7025C4,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7025C5[];
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY vtc_S7025C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern VTBL_ENTRY _ZTV7S7025C5[];
static  VTT_ENTRY vtt_S7025C5[] = {
  {&(_ZTV7S7025C5[3]),  3,17},
  {&(_ZTV7S7025C5[12]),  12,17},
};
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
Class_Descriptor cd_S7025C5 = {  "S7025C5", // class name
  bases_S7025C5, 1,
  &(vtc_S7025C5[0]), // expected_vtbl_contents
  &(vtt_S7025C5[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7025C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7025C5),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7025C5),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  S7025C6  : S7025C4 , virtual S7025C5 {
  int s7025c6f0[2];
  virtual void  v20(); // _ZN7S7025C63v20Ev
  ~S7025C6(); // tgen
  S7025C6(); // tgen
};
//SIG(-1 S7025C6) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} v1 Fi[2]}


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

static void Test_S7025C6()
{
  extern Class_Descriptor cd_S7025C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S7025C6, buf);
    S7025C6 *dp, &lv = *(dp=new (buf) S7025C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S7025C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7025C6)");
    /*is_ambiguous_... S7025C6::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*), 0, "S7025C6");
    check_base_class_offset(lv, (S7025C4*)(S7025C5*), ABISELECT(40,28), "S7025C6");
    check_base_class_offset(lv, (S7025C5*), ABISELECT(32,24), "S7025C6");
    check_field_offset(lv, s7025c6f0, ABISELECT(20,16), "S7025C6.s7025c6f0");
    test_class_info(&lv, &cd_S7025C6);
    dp->~S7025C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C6(Test_S7025C6, "S7025C6", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S7025C6C1Ev();
extern void _ZN7S7025C6D1Ev();
Name_Map name_map_S7025C6[] = {
  NSPAIR(_ZN7S7025C6C1Ev),
  NSPAIR(_ZN7S7025C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
static Base_Class bases_S7025C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7025C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7025C4,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7025C5,    ABISELECT(32,24), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7025C6[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY vtc_S7025C6[] = {
  ABISELECT(40,28),
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern VTBL_ENTRY _ZTV7S7025C6[];
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C5__7S7025C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
static  VTT_ENTRY vtt_S7025C6[] = {
  {&(_ZTV7S7025C6[4]),  4,29},
  {&(_ZTV7S7025C6[15]),  15,29},
  {&(_ZTV7S7025C6[24]),  24,29},
  {&(_tg__ZTV7S7025C5__7S7025C6[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C5__7S7025C6[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
Class_Descriptor cd_S7025C6 = {  "S7025C6", // class name
  bases_S7025C6, 3,
  &(vtc_S7025C6[0]), // expected_vtbl_contents
  &(vtt_S7025C6[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S7025C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7025C6),29, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7025C6),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  S7025C3  : S7025C4 , virtual S7025C5 , S7025C6 {
  int s7025c3f0;
  virtual void  v21(); // _ZN7S7025C33v21Ev
  ~S7025C3(); // tgen
  S7025C3(); // tgen
};
//SIG(-1 S7025C3) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} BC4{ BC2 VBC3 v9 Fi[2]} v1 Fi}


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

static void Test_S7025C3()
{
  extern Class_Descriptor cd_S7025C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S7025C3, buf);
    S7025C3 *dp, &lv = *(dp=new (buf) S7025C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S7025C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7025C3)");
    /*is_ambiguous_... S7025C3::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*), 0, "S7025C3");
    check_base_class_offset(lv, (S7025C4*)(S7025C5*), ABISELECT(64,48), "S7025C3");
    check_base_class_offset(lv, (S7025C5*), ABISELECT(56,44), "S7025C3");
    check_base_class_offset(lv, (S7025C5*)(S7025C6*), ABISELECT(56,44), "S7025C3");
    /*is_ambiguous_... S7025C6::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*), ABISELECT(24,16), "S7025C3");
    check_base_class_offset(lv, (S7025C6*), ABISELECT(24,16), "S7025C3");
    check_field_offset(lv, s7025c3f0, ABISELECT(52,40), "S7025C3.s7025c3f0");
    test_class_info(&lv, &cd_S7025C3);
    dp->~S7025C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C3(Test_S7025C3, "S7025C3", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S7025C3C1Ev();
extern void _ZN7S7025C3D1Ev();
Name_Map name_map_S7025C3[] = {
  NSPAIR(_ZN7S7025C3C1Ev),
  NSPAIR(_ZN7S7025C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
static Base_Class bases_S7025C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7025C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7025C4,    ABISELECT(64,48), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7025C5,    ABISELECT(56,44), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7025C4,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7025C3[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY vtc_S7025C3[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern VTBL_ENTRY _ZTV7S7025C3[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C3[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C6__7S7025C3[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C6__7S7025C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C5__7S7025C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
static  VTT_ENTRY vtt_S7025C3[] = {
  {&(_ZTV7S7025C3[4]),  4,39},
  {&(_tg__ZTV7S7025C6__7S7025C3[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C6__7S7025C3[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C6__7S7025C3[7]),  7,12},
  {&(_ZTV7S7025C3[25]),  25,39},
  {&(_ZTV7S7025C3[34]),  34,39},
  {&(_ZTV7S7025C3[14]),  14,39},
  {&(_tg__ZTV7S7025C5__7S7025C3[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C5__7S7025C3[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
Class_Descriptor cd_S7025C3 = {  "S7025C3", // class name
  bases_S7025C3, 5,
  &(vtc_S7025C3[0]), // expected_vtbl_contents
  &(vtt_S7025C3[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S7025C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7025C3),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7025C3),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7025C8  : virtual S7025C3 , S7025C4 , S7025C5 {
  char s7025c8f0;
  void *s7025c8f1;
  virtual void  v22(); // _ZN7S7025C83v22Ev
  virtual void  v23(); // _ZN7S7025C83v23Ev
  virtual void  v24(); // _ZN7S7025C83v24Ev
  virtual void  v25(); // _ZN7S7025C83v25Ev
  virtual void  v26(); // _ZN7S7025C83v26Ev
  ~S7025C8(); // tgen
  S7025C8(); // tgen
};
//SIG(-1 S7025C8) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 Fs[5]} VBC4{ VBC3 v11 v12} BC5{ BC3 VBC4 v13 Fi[2]} v14 Fi} BC3 BC4 v1 v2 v3 v4 v5 Fc Fp}


void  S7025C8 ::v22(){vfunc_called(this, "_ZN7S7025C83v22Ev");}
void  S7025C8 ::v23(){vfunc_called(this, "_ZN7S7025C83v23Ev");}
void  S7025C8 ::v24(){vfunc_called(this, "_ZN7S7025C83v24Ev");}
void  S7025C8 ::v25(){vfunc_called(this, "_ZN7S7025C83v25Ev");}
void  S7025C8 ::v26(){vfunc_called(this, "_ZN7S7025C83v26Ev");}
S7025C8 ::~S7025C8(){ note_dtor("S7025C8", this);} // tgen
S7025C8 ::S7025C8(){ note_ctor("S7025C8", this);} // tgen

static void Test_S7025C8()
{
  extern Class_Descriptor cd_S7025C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S7025C8, buf);
    S7025C8 *dp, &lv = *(dp=new (buf) S7025C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S7025C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7025C8)");
    /*is_ambiguous_... S7025C3::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*), ABISELECT(48,28), "S7025C8");
    /*is_ambiguous_... S7025C8::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C5*), ABISELECT(112,76), "S7025C8");
    /*is_ambiguous_... S7025C8::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C5*), ABISELECT(112,76), "S7025C8");
    check_base_class_offset(lv, (S7025C5*)(S7025C3*), ABISELECT(104,72), "S7025C8");
    check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*), ABISELECT(104,72), "S7025C8");
    /*is_ambiguous_... S7025C6::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*), ABISELECT(72,44), "S7025C8");
    check_base_class_offset(lv, (S7025C6*)(S7025C3*), ABISELECT(72,44), "S7025C8");
    check_base_class_offset(lv, (S7025C3*), ABISELECT(48,28), "S7025C8");
    /*is_ambiguous_... S7025C8::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*), 0, "S7025C8");
    /*is_ambiguous_... S7025C8::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C5*), ABISELECT(24,16), "S7025C8");
    check_field_offset(lv, s7025c8f0, ABISELECT(32,20), "S7025C8.s7025c8f0");
    check_field_offset(lv, s7025c8f1, ABISELECT(40,24), "S7025C8.s7025c8f1");
    test_class_info(&lv, &cd_S7025C8);
    dp->~S7025C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C8(Test_S7025C8, "S7025C8", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN7S7025C8C1Ev();
extern void _ZN7S7025C8D1Ev();
Name_Map name_map_S7025C8[] = {
  NSPAIR(_ZN7S7025C8C1Ev),
  NSPAIR(_ZN7S7025C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
static Base_Class bases_S7025C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7025C4,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(112,76), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7025C5,    ABISELECT(104,72), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7025C4,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(72,44), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(48,28), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7025C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7025C5,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7025C8[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY vtc_S7025C8[] = {
  ABISELECT(112,76),
  ABISELECT(104,72),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,48),
  ABISELECT(56,44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern VTBL_ENTRY _ZTV7S7025C8[];
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__A__7S7025C8[] = {
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C5__A__7S7025C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C8[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C8[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C3__7S7025C8[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C3__7S7025C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C3__7S7025C8[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C3__7S7025C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C3__7S7025C8[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C5__7S7025C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
static  VTT_ENTRY vtt_S7025C8[] = {
  {&(_ZTV7S7025C8[5]),  5,66},
  {&(_tg__ZTV7S7025C5__A__7S7025C8[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C5__A__7S7025C8[7]),  7,12},
  {&(_ZTV7S7025C8[31]),  31,66},
  {&(_ZTV7S7025C8[52]),  52,66},
  {&(_ZTV7S7025C8[61]),  61,66},
  {&(_ZTV7S7025C8[41]),  41,66},
  {&(_ZTV7S7025C8[18]),  18,66},
  {&(_tg__ZTV7S7025C3__7S7025C8[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C8[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C3__7S7025C8[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C3__7S7025C8[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C3__7S7025C8[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C3__7S7025C8[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C3__7S7025C8[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C8[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C5__7S7025C8[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7025C8[];
extern  VTBL_ENTRY _ZTV7S7025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C8[];
Class_Descriptor cd_S7025C8 = {  "S7025C8", // class name
  bases_S7025C8, 8,
  &(vtc_S7025C8[0]), // expected_vtbl_contents
  &(vtt_S7025C8[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI7S7025C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7025C8),66, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7025C8),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7025C9  : virtual S7025C4 , S7025C8 {
  virtual void  v27(); // _ZN7S7025C93v27Ev
  virtual void  v28(); // _ZN7S7025C93v28Ev
  virtual void  v29(); // _ZN7S7025C93v29Ev
  ~S7025C9(); // tgen
  S7025C9(); // tgen
};
//SIG(-1 S7025C9) C1{ VBC2{ v4 v5 v6 v7 v8 Fs[5]} BC3{ VBC4{ BC2 VBC5{ VBC2 v9 v10} BC6{ BC2 VBC5 v11 Fi[2]} v12 Fi} BC2 BC5 v13 v14 v15 v16 v17 Fc Fp} v1 v2 v3}


void  S7025C9 ::v27(){vfunc_called(this, "_ZN7S7025C93v27Ev");}
void  S7025C9 ::v28(){vfunc_called(this, "_ZN7S7025C93v28Ev");}
void  S7025C9 ::v29(){vfunc_called(this, "_ZN7S7025C93v29Ev");}
S7025C9 ::~S7025C9(){ note_dtor("S7025C9", this);} // tgen
S7025C9 ::S7025C9(){ note_ctor("S7025C9", this);} // tgen

static void Test_S7025C9()
{
  extern Class_Descriptor cd_S7025C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S7025C9, buf);
    S7025C9 *dp, &lv = *(dp=new (buf) S7025C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S7025C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7025C9)");
    /*is_ambiguous_... S7025C9::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*), ABISELECT(48,28), "S7025C9");
    /*is_ambiguous_... S7025C9::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C5*), ABISELECT(48,28), "S7025C9");
    /*is_ambiguous_... S7025C8::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C5*)(S7025C8*), ABISELECT(48,28), "S7025C9");
    /*is_ambiguous_... S7025C3::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*), ABISELECT(72,44), "S7025C9");
    check_base_class_offset(lv, (S7025C5*)(S7025C3*), ABISELECT(128,88), "S7025C9");
    check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*), ABISELECT(128,88), "S7025C9");
    /*is_ambiguous_... S7025C6::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*), ABISELECT(96,60), "S7025C9");
    check_base_class_offset(lv, (S7025C6*)(S7025C3*), ABISELECT(96,60), "S7025C9");
    check_base_class_offset(lv, (S7025C3*)(S7025C8*), ABISELECT(72,44), "S7025C9");
    /*is_ambiguous_... S7025C8::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C8*), 0, "S7025C9");
    /*is_ambiguous_... S7025C8::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C8*), ABISELECT(24,16), "S7025C9");
    check_base_class_offset(lv, (S7025C8*), 0, "S7025C9");
    test_class_info(&lv, &cd_S7025C9);
    dp->~S7025C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C9(Test_S7025C9, "S7025C9", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN7S7025C9C1Ev();
extern void _ZN7S7025C9D1Ev();
Name_Map name_map_S7025C9[] = {
  NSPAIR(_ZN7S7025C9C1Ev),
  NSPAIR(_ZN7S7025C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C8;
extern VTBL_ENTRY _ZTI7S7025C8[];
extern  VTBL_ENTRY _ZTV7S7025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C8[];
static Base_Class bases_S7025C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7025C4,    ABISELECT(48,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7025C4,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7025C5,    ABISELECT(128,88), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7025C4,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(96,60), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(72,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7025C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7025C5,    ABISELECT(24,16), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7025C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7025C9[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
extern void _ZN7S7025C93v27Ev();
extern void _ZN7S7025C93v28Ev();
extern void _ZN7S7025C93v29Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY vtc_S7025C9[] = {
  ABISELECT(48,28),
  ABISELECT(128,88),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v29Ev,
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern VTBL_ENTRY _ZTV7S7025C9[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C8__7S7025C9[] = {
  ABISELECT(48,28),
  ABISELECT(128,88),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C57S7025C8__A1__7S7025C9[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C57S7025C8__A1__7S7025C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C8__7S7025C9[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C8__7S7025C9[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C8__7S7025C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C8__7S7025C9[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__A__7S7025C8__7S7025C9[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C9[] = {
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C9[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C3__7S7025C9[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C3__7S7025C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C3__7S7025C9[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C3__7S7025C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C3__7S7025C9[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C9[] = {
  ABISELECT(-80,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C5__7S7025C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
static  VTT_ENTRY vtt_S7025C9[] = {
  {&(_ZTV7S7025C9[5]),  5,69},
  {&(_tg__ZTV7S7025C8__7S7025C9[5]),  5,15},
  {&(_tg__ZTV7S7025C57S7025C8__A1__7S7025C9[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C57S7025C8__A1__7S7025C9[7]),  7,12},
  {&(_tg__ZTV7S7025C3__7S7025C8__7S7025C9[11]),  11,17},
  {&(_tg__ZTV7S7025C5__7S7025C8__7S7025C9[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C8__7S7025C9[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C8__7S7025C9[4]),  4,10},
  {&(_tg__ZTV7S7025C5__A__7S7025C8__7S7025C9[3]),  3,5},
  {&(_ZTV7S7025C9[30]),  30,69},
  {&(_ZTV7S7025C9[46]),  46,69},
  {&(_ZTV7S7025C9[67]),  67,69},
  {&(_ZTV7S7025C9[56]),  56,69},
  {&(_ZTV7S7025C9[21]),  21,69},
  {&(_tg__ZTV7S7025C3__7S7025C9[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C9[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C3__7S7025C9[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C3__7S7025C9[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C3__7S7025C9[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C3__7S7025C9[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C3__7S7025C9[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C9[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C5__7S7025C9[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7025C9[];
extern  VTBL_ENTRY _ZTV7S7025C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C9[];
Class_Descriptor cd_S7025C9 = {  "S7025C9", // class name
  bases_S7025C9, 9,
  &(vtc_S7025C9[0]), // expected_vtbl_contents
  &(vtt_S7025C9[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI7S7025C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7025C9),69, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7025C9),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7025C11  : virtual S7025C5 , S7025C6 {
  int s7025c11f0[3];
  void *s7025c11f1;
  virtual void  v30(); // _ZN8S7025C113v30Ev
  virtual void  v31(); // _ZN8S7025C113v31Ev
  virtual void  v32(); // _ZN8S7025C113v32Ev
  virtual void  v33(); // _ZN8S7025C113v33Ev
  ~S7025C11(); // tgen
  S7025C11(); // tgen
};
//SIG(-1 S7025C11) C1{ VBC2{ VBC3{ v5 v6 v7 v8 v9 Fs[5]} v10 v11} BC4{ BC3 VBC2 v12 Fi[2]} v1 v2 v3 v4 Fi[3] Fp}


void  S7025C11 ::v30(){vfunc_called(this, "_ZN8S7025C113v30Ev");}
void  S7025C11 ::v31(){vfunc_called(this, "_ZN8S7025C113v31Ev");}
void  S7025C11 ::v32(){vfunc_called(this, "_ZN8S7025C113v32Ev");}
void  S7025C11 ::v33(){vfunc_called(this, "_ZN8S7025C113v33Ev");}
S7025C11 ::~S7025C11(){ note_dtor("S7025C11", this);} // tgen
S7025C11 ::S7025C11(){ note_ctor("S7025C11", this);} // tgen

static void Test_S7025C11()
{
  extern Class_Descriptor cd_S7025C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S7025C11, buf);
    S7025C11 *dp, &lv = *(dp=new (buf) S7025C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S7025C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7025C11)");
    check_base_class_offset(lv, (S7025C4*)(S7025C5*), ABISELECT(56,44), "S7025C11");
    check_base_class_offset(lv, (S7025C5*), ABISELECT(48,40), "S7025C11");
    check_base_class_offset(lv, (S7025C5*)(S7025C6*), ABISELECT(48,40), "S7025C11");
    /*is_ambiguous_... S7025C6::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*), 0, "S7025C11");
    check_base_class_offset(lv, (S7025C6*), 0, "S7025C11");
    check_field_offset(lv, s7025c11f0, ABISELECT(28,24), "S7025C11.s7025c11f0");
    check_field_offset(lv, s7025c11f1, ABISELECT(40,36), "S7025C11.s7025c11f1");
    test_class_info(&lv, &cd_S7025C11);
    dp->~S7025C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C11(Test_S7025C11, "S7025C11", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN8S7025C11C1Ev();
extern void _ZN8S7025C11D1Ev();
Name_Map name_map_S7025C11[] = {
  NSPAIR(_ZN8S7025C11C1Ev),
  NSPAIR(_ZN8S7025C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
static Base_Class bases_S7025C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7025C4,    ABISELECT(56,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7025C5,    ABISELECT(48,40), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7025C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7025C6,    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 _ZTI8S7025C11[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY vtc_S7025C11[] = {
  ABISELECT(56,44),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern VTBL_ENTRY _ZTV8S7025C11[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__8S7025C11[] = {
  ABISELECT(56,44),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C6__8S7025C11[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C6__8S7025C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C5__8S7025C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
static  VTT_ENTRY vtt_S7025C11[] = {
  {&(_ZTV8S7025C11[4]),  4,33},
  {&(_tg__ZTV7S7025C6__8S7025C11[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C6__8S7025C11[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C6__8S7025C11[7]),  7,12},
  {&(_ZTV8S7025C11[19]),  19,33},
  {&(_ZTV8S7025C11[28]),  28,33},
  {&(_tg__ZTV7S7025C5__8S7025C11[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C5__8S7025C11[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S7025C11[];
extern  VTBL_ENTRY _ZTV8S7025C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C11[];
Class_Descriptor cd_S7025C11 = {  "S7025C11", // class name
  bases_S7025C11, 4,
  &(vtc_S7025C11[0]), // expected_vtbl_contents
  &(vtt_S7025C11[0]), // expected_vtt_contents
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI8S7025C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7025C11),33, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7025C11),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7025C10  : S7025C3 , S7025C11 , S7025C6 {
  char s7025c10f0[4];
  __tsi64 s7025c10f1;
  ::S7656C10 s7025c10f2;
  void *s7025c10f3;
  virtual void  v34(); // _ZN8S7025C103v34Ev
  virtual void  v35(); // _ZN8S7025C103v35Ev
  virtual void  v36(); // _ZN8S7025C103v36Ev
  ~S7025C10(); // tgen
  S7025C10(); // tgen
};
//SIG(-1 S7025C10) C1{ BC2{ BC3{ v4 v5 v6 v7 v8 Fs[5]} VBC4{ VBC3 v9 v10} BC5{ BC3 VBC4 v11 Fi[2]} v12 Fi} BC6{ VBC4 BC5 v13 v14 v15 v16 Fi[3] Fp} BC5 v1 v2 v3 Fc[4] FL FC7{ BC8{ BC9{ v19 v20 v21 v22 v23 Fs[5]} VBC10{ VBC9 v24 v25} v26 Fi[2]} VBC11{ BC9 VBC10 BC8 v27 Fi} VBC12{ VBC11 BC9 BC10 v28 v29 v30 v31 v32 Fc Fp} v17 v18 Fp} Fp}


void  S7025C10 ::v34(){vfunc_called(this, "_ZN8S7025C103v34Ev");}
void  S7025C10 ::v35(){vfunc_called(this, "_ZN8S7025C103v35Ev");}
void  S7025C10 ::v36(){vfunc_called(this, "_ZN8S7025C103v36Ev");}
S7025C10 ::~S7025C10(){ note_dtor("S7025C10", this);} // tgen
S7025C10 ::S7025C10(){ note_ctor("S7025C10", this);} // tgen

static void Test_S7025C10()
{
  extern Class_Descriptor cd_S7025C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(46,67)];
    init_test(&cd_S7025C10, buf);
    S7025C10 *dp, &lv = *(dp=new (buf) S7025C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(360,264), "sizeof(S7025C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7025C10)");
    /*is_ambiguous_... S7025C3::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*), 0, "S7025C10");
    check_base_class_offset(lv, (S7025C4*)(S7025C5*), ABISELECT(336,248), "S7025C10");
    check_base_class_offset(lv, (S7025C5*)(S7025C3*), ABISELECT(328,244), "S7025C10");
    check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*), ABISELECT(328,244), "S7025C10");
    check_base_class_offset(lv, (S7025C5*)(S7025C11*), ABISELECT(328,244), "S7025C10");
    check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C11*), ABISELECT(328,244), "S7025C10");
    /*is_ambiguous_... S7025C10::S7025C6 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*), ABISELECT(328,244), "S7025C10");
    /*is_ambiguous_... S7025C6::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*), ABISELECT(24,16), "S7025C10");
    check_base_class_offset(lv, (S7025C6*)(S7025C3*), ABISELECT(24,16), "S7025C10");
    check_base_class_offset(lv, (S7025C3*), 0, "S7025C10");
    /*is_ambiguous_... S7025C6::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C11*), ABISELECT(56,44), "S7025C10");
    check_base_class_offset(lv, (S7025C6*)(S7025C11*), ABISELECT(56,44), "S7025C10");
    check_base_class_offset(lv, (S7025C11*), ABISELECT(56,44), "S7025C10");
    /*is_ambiguous_... S7025C10::S7025C6 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*), ABISELECT(104,84), "S7025C10");
    /*is_ambiguous_... S7025C10::S7025C6 */ AMB_check_base_class_offset(lv, (S7025C6*), ABISELECT(104,84), "S7025C10");
    check_field_offset(lv, s7025c10f0, ABISELECT(132,108), "S7025C10.s7025c10f0");
    check_field_offset(lv, s7025c10f1, ABISELECT(136,112), "S7025C10.s7025c10f1");
    check_field_offset(lv, s7025c10f2, ABISELECT(144,120), "S7025C10.s7025c10f2");
    check_field_offset(lv, s7025c10f3, ABISELECT(320,240), "S7025C10.s7025c10f3");
    test_class_info(&lv, &cd_S7025C10);
    dp->~S7025C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C10(Test_S7025C10, "S7025C10", ABISELECT(360,264));

#else // __cplusplus

extern void _ZN8S7025C10C1Ev();
extern void _ZN8S7025C10D1Ev();
Name_Map name_map_S7025C10[] = {
  NSPAIR(_ZN8S7025C10C1Ev),
  NSPAIR(_ZN8S7025C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C11;
extern VTBL_ENTRY _ZTI8S7025C11[];
extern  VTBL_ENTRY _ZTV8S7025C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C11[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
static Base_Class bases_S7025C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7025C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7025C4,    ABISELECT(336,248), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7025C5,    ABISELECT(328,244), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7025C4,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7025C3,    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_S7025C4,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7025C11,    ABISELECT(56,44), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7025C4,    ABISELECT(104,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
    10, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(104,84), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7025C10[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY vtc_S7025C10[] = {
  ABISELECT(336,248),
  ABISELECT(328,244),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
  ABISELECT(312,232),
  ABISELECT(304,228),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(280,204),
  ABISELECT(272,200),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
  ABISELECT(232,164),
  ABISELECT(224,160),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern VTBL_ENTRY _ZTV8S7025C10[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__8S7025C10[] = {
  ABISELECT(336,248),
  ABISELECT(328,244),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__8S7025C10[] = {
  ABISELECT(312,232),
  ABISELECT(304,228),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C3__8S7025C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-304,-228),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C3__8S7025C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-232),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C3__8S7025C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C3__8S7025C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C3__8S7025C10[] = {
  ABISELECT(312,232),
  ABISELECT(304,228),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C11__8S7025C10[] = {
  ABISELECT(280,204),
  ABISELECT(272,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C11__A1__8S7025C10[] = {
  ABISELECT(280,204),
  ABISELECT(272,200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C11__A1__8S7025C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C11__A1__8S7025C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-204),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C11__8S7025C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__8S7025C11__8S7025C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-204),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__A2__8S7025C10[] = {
  ABISELECT(232,164),
  ABISELECT(224,160),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C6__A2__8S7025C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C6__A2__8S7025C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C10[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C5__8S7025C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
static  VTT_ENTRY vtt_S7025C10[] = {
  {&(_ZTV8S7025C10[4]),  4,66},
  {&(_tg__ZTV7S7025C3__8S7025C10[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C3__8S7025C10[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C3__8S7025C10[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C3__8S7025C10[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C3__8S7025C10[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C3__8S7025C10[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C3__8S7025C10[4]),  4,10},
  {&(_tg__ZTV8S7025C11__8S7025C10[4]),  4,14},
  {&(_tg__ZTV7S7025C68S7025C11__A1__8S7025C10[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C11__A1__8S7025C10[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C11__A1__8S7025C10[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C11__8S7025C10[5]),  5,7},
  {&(_tg__ZTV7S7025C4__8S7025C11__8S7025C10[7]),  7,12},
  {&(_tg__ZTV7S7025C6__A2__8S7025C10[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C6__A2__8S7025C10[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C6__A2__8S7025C10[7]),  7,12},
  {&(_ZTV8S7025C10[52]),  52,66},
  {&(_ZTV8S7025C10[61]),  61,66},
  {&(_ZTV8S7025C10[17]),  17,66},
  {&(_ZTV8S7025C10[27]),  27,66},
  {&(_ZTV8S7025C10[41]),  41,66},
  {&(_tg__ZTV7S7025C5__8S7025C10[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C5__8S7025C10[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S7025C10[];
extern  VTBL_ENTRY _ZTV8S7025C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C10[];
Class_Descriptor cd_S7025C10 = {  "S7025C10", // class name
  bases_S7025C10, 11,
  &(vtc_S7025C10[0]), // expected_vtbl_contents
  &(vtt_S7025C10[0]), // expected_vtt_contents
  ABISELECT(360,264), // object size
  NSPAIRA(_ZTI8S7025C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7025C10),66, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7025C10),24, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7025C13  : virtual S7025C10 {
  long double s7025c13f0;
  virtual void  v37(); // _ZN8S7025C133v37Ev
  virtual void  v38(); // _ZN8S7025C133v38Ev
  virtual void  v39(); // _ZN8S7025C133v39Ev
  virtual void  v40(); // _ZN8S7025C133v40Ev
  virtual void  v41(); // _ZN8S7025C133v41Ev
  ~S7025C13(); // tgen
  S7025C13(); // tgen
};
//SIG(-1 S7025C13) C1{ VBC2{ BC3{ BC4{ v6 v7 v8 v9 v10 Fs[5]} VBC5{ VBC4 v11 v12} BC6{ BC4 VBC5 v13 Fi[2]} v14 Fi} BC7{ VBC5 BC6 v15 v16 v17 v18 Fi[3] Fp} BC6 v19 v20 v21 Fc[4] FL FC8{ BC9{ BC10{ v24 v25 v26 v27 v28 Fs[5]} VBC11{ VBC10 v29 v30} v31 Fi[2]} VBC12{ BC10 VBC11 BC9 v32 Fi} VBC13{ VBC12 BC10 BC11 v33 v34 v35 v36 v37 Fc Fp} v22 v23 Fp} Fp} v1 v2 v3 v4 v5 FD}


void  S7025C13 ::v37(){vfunc_called(this, "_ZN8S7025C133v37Ev");}
void  S7025C13 ::v38(){vfunc_called(this, "_ZN8S7025C133v38Ev");}
void  S7025C13 ::v39(){vfunc_called(this, "_ZN8S7025C133v39Ev");}
void  S7025C13 ::v40(){vfunc_called(this, "_ZN8S7025C133v40Ev");}
void  S7025C13 ::v41(){vfunc_called(this, "_ZN8S7025C133v41Ev");}
S7025C13 ::~S7025C13(){ note_dtor("S7025C13", this);} // tgen
S7025C13 ::S7025C13(){ note_ctor("S7025C13", this);} // tgen

static void Test_S7025C13()
{
  extern Class_Descriptor cd_S7025C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,70)];
    init_test(&cd_S7025C13, buf);
    S7025C13 *dp, &lv = *(dp=new (buf) S7025C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,276), "sizeof(S7025C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7025C13)");
    /*is_ambiguous_... S7025C3::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*)(S7025C10*), ABISELECT(32,16), "S7025C13");
    check_base_class_offset(lv, (S7025C4*)(S7025C5*), ABISELECT(360,260), "S7025C13");
    check_base_class_offset(lv, (S7025C5*)(S7025C3*)(S7025C10*), 0, "S7025C13");
    check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*)(S7025C10*), 0, "S7025C13");
    check_base_class_offset(lv, (S7025C5*)(S7025C11*)(S7025C10*), 0, "S7025C13");
    check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C11*)(S7025C10*), 0, "S7025C13");
    /*is_ambiguous_... S7025C10::S7025C6 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C10*), 0, "S7025C13");
    /*is_ambiguous_... S7025C6::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(56,32), "S7025C13");
    check_base_class_offset(lv, (S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(56,32), "S7025C13");
    check_base_class_offset(lv, (S7025C3*)(S7025C10*), ABISELECT(32,16), "S7025C13");
    /*is_ambiguous_... S7025C6::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(88,60), "S7025C13");
    check_base_class_offset(lv, (S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(88,60), "S7025C13");
    check_base_class_offset(lv, (S7025C11*)(S7025C10*), ABISELECT(88,60), "S7025C13");
    /*is_ambiguous_... S7025C10::S7025C6 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C10*), ABISELECT(136,100), "S7025C13");
    /*is_ambiguous_... S7025C10::S7025C6 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C10*), ABISELECT(136,100), "S7025C13");
    check_base_class_offset(lv, (S7025C10*), ABISELECT(32,16), "S7025C13");
    check_field_offset(lv, s7025c13f0, ABISELECT(16,4), "S7025C13.s7025c13f0");
    test_class_info(&lv, &cd_S7025C13);
    dp->~S7025C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C13(Test_S7025C13, "S7025C13", ABISELECT(384,276));

#else // __cplusplus

extern void _ZN8S7025C13C1Ev();
extern void _ZN8S7025C13D1Ev();
Name_Map name_map_S7025C13[] = {
  NSPAIR(_ZN8S7025C13C1Ev),
  NSPAIR(_ZN8S7025C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C11;
extern VTBL_ENTRY _ZTI8S7025C11[];
extern  VTBL_ENTRY _ZTV8S7025C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C11[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C10;
extern VTBL_ENTRY _ZTI8S7025C10[];
extern  VTBL_ENTRY _ZTV8S7025C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C10[];
static Base_Class bases_S7025C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7025C4,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(360,260), //bcp->offset
    75, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7025C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7025C4,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(56,32), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7025C4,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(88,60), //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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7025C11,    ABISELECT(88,60), //bcp->offset
    51, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7025C4,    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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(136,100), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7025C10,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7025C13[];
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN8S7025C133v37Ev();
extern void _ZN8S7025C133v38Ev();
extern void _ZN8S7025C133v39Ev();
extern void _ZN8S7025C133v40Ev();
extern void _ZN8S7025C133v41Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY vtc_S7025C13[] = {
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(360,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v39Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v40Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v41Ev,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern VTBL_ENTRY _ZTV8S7025C13[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C10__8S7025C13[] = {
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C38S7025C10__8S7025C13[] = {
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C38S7025C10__8S7025C13[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C38S7025C10__8S7025C13[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C38S7025C10__8S7025C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-228),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C38S7025C10__8S7025C13[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C38S7025C10__8S7025C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C38S7025C10__8S7025C13[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C118S7025C10__8S7025C13[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C118S7025C10__A1__8S7025C13[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C118S7025C10__A1__8S7025C13[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C118S7025C10__A1__8S7025C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C118S7025C10__8S7025C13[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__8S7025C118S7025C10__8S7025C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C10__A2__8S7025C13[] = {
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C10__A2__8S7025C13[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(136,100),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C10__A2__8S7025C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C10__8S7025C13[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__8S7025C10__8S7025C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__8S7025C10__8S7025C13[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C11__8S7025C10__8S7025C13[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__A2__8S7025C10__8S7025C13[] = {
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C13[] = {
  ABISELECT(360,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C5__8S7025C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
static  VTT_ENTRY vtt_S7025C13[] = {
  {&(_ZTV8S7025C13[7]),  7,87},
  {&(_ZTV8S7025C13[32]),  32,87},
  {&(_ZTV8S7025C13[7]),  7,87},
  {&(_ZTV8S7025C13[82]),  82,87},
  {&(_ZTV8S7025C13[45]),  45,87},
  {&(_ZTV8S7025C13[55]),  55,87},
  {&(_ZTV8S7025C13[69]),  69,87},
  {&(_tg__ZTV8S7025C10__8S7025C13[4]),  4,13},
  {&(_tg__ZTV7S7025C38S7025C10__8S7025C13[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C38S7025C10__8S7025C13[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C38S7025C10__8S7025C13[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C38S7025C10__8S7025C13[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C38S7025C10__8S7025C13[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C38S7025C10__8S7025C13[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C38S7025C10__8S7025C13[4]),  4,10},
  {&(_tg__ZTV8S7025C118S7025C10__8S7025C13[4]),  4,14},
  {&(_tg__ZTV7S7025C68S7025C118S7025C10__A1__8S7025C13[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C118S7025C10__A1__8S7025C13[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C118S7025C10__A1__8S7025C13[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C118S7025C10__8S7025C13[5]),  5,7},
  {&(_tg__ZTV7S7025C4__8S7025C118S7025C10__8S7025C13[7]),  7,12},
  {&(_tg__ZTV7S7025C68S7025C10__A2__8S7025C13[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C10__A2__8S7025C13[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C10__A2__8S7025C13[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C10__8S7025C13[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__8S7025C10__8S7025C13[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__8S7025C10__8S7025C13[4]),  4,10},
  {&(_tg__ZTV8S7025C11__8S7025C10__8S7025C13[4]),  4,14},
  {&(_tg__ZTV7S7025C6__A2__8S7025C10__8S7025C13[4]),  4,10},
  {&(_tg__ZTV7S7025C5__8S7025C13[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C5__8S7025C13[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S7025C13[];
extern  VTBL_ENTRY _ZTV8S7025C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C13[];
Class_Descriptor cd_S7025C13 = {  "S7025C13", // class name
  bases_S7025C13, 12,
  &(vtc_S7025C13[0]), // expected_vtbl_contents
  &(vtt_S7025C13[0]), // expected_vtt_contents
  ABISELECT(384,276), // object size
  NSPAIRA(_ZTI8S7025C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7025C13),87, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7025C13),31, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7025C7  : S7025C8 , S7025C3 , S7025C9 , S7025C10 , virtual S7025C13 {
  virtual void  v42(); // _ZN7S7025C73v42Ev
  virtual void  v43(); // _ZN7S7025C73v43Ev
  virtual void  v44(); // _ZN7S7025C73v44Ev
  ~S7025C7(); // tgen
  S7025C7(); // tgen
};
//SIG(-1 S7025C7) C1{ BC2{ VBC3{ BC4{ v4 v5 v6 v7 v8 Fs[5]} VBC5{ VBC4 v9 v10} BC6{ BC4 VBC5 v11 Fi[2]} v12 Fi} BC4 BC5 v13 v14 v15 v16 v17 Fc Fp} BC3 BC7{ VBC4 BC2 v18 v19 v20} BC8{ BC3 BC9{ VBC5 BC6 v21 v22 v23 v24 Fi[3] Fp} BC6 v25 v26 v27 Fc[4] FL FC10{ BC11{ BC12{ v35 v36 v37 v38 v39 Fs[5]} VBC13{ VBC12 v40 v41} v42 Fi[2]} VBC14{ BC12 VBC13 BC11 v43 Fi} VBC15{ VBC14 BC12 BC13 v44 v45 v46 v47 v48 Fc Fp} v33 v34 Fp} Fp} VBC16{ VBC8 v28 v29 v30 v31 v32 FD} v1 v2 v3}


void  S7025C7 ::v42(){vfunc_called(this, "_ZN7S7025C73v42Ev");}
void  S7025C7 ::v43(){vfunc_called(this, "_ZN7S7025C73v43Ev");}
void  S7025C7 ::v44(){vfunc_called(this, "_ZN7S7025C73v44Ev");}
S7025C7 ::~S7025C7(){ note_dtor("S7025C7", this);} // tgen
S7025C7 ::S7025C7(){ note_ctor("S7025C7", this);} // tgen

static void Test_S7025C7()
{
  extern Class_Descriptor cd_S7025C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,167)];
    init_test(&cd_S7025C7, buf);
    S7025C7 *dp, &lv = *(dp=new (buf) S7025C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,664), "sizeof(S7025C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7025C7)");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*), ABISELECT(480,344), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C5*), ABISELECT(536,388), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C8 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C5*)(S7025C8*), ABISELECT(536,388), "S7025C7");
    /*is_ambiguous_... S7025C9::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C9*), ABISELECT(536,388), "S7025C7");
    /*is_ambiguous_... S7025C8::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C5*)(S7025C8*)(S7025C9*), ABISELECT(536,388), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C3*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C3*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C3*)(S7025C10*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C11*)(S7025C10*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C10*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C3*)(S7025C10*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C11*)(S7025C10*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C10*), ABISELECT(560,404), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*), ABISELECT(504,360), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C3*), ABISELECT(504,360), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C8 */ AMB_check_base_class_offset(lv, (S7025C3*)(S7025C8*), ABISELECT(480,344), "S7025C7");
    check_base_class_offset(lv, (S7025C3*)(S7025C8*)(S7025C9*), ABISELECT(480,344), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C8 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C8*), 0, "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C8 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C8*), ABISELECT(24,16), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C8 */ AMB_check_base_class_offset(lv, (S7025C8*), 0, "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*), ABISELECT(48,28), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*), ABISELECT(72,44), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C3*), ABISELECT(72,44), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C3*), ABISELECT(48,28), "S7025C7");
    /*is_ambiguous_... S7025C8::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C8*)(S7025C9*), ABISELECT(104,72), "S7025C7");
    /*is_ambiguous_... S7025C8::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C8*)(S7025C9*), ABISELECT(128,88), "S7025C7");
    check_base_class_offset(lv, (S7025C8*)(S7025C9*), ABISELECT(104,72), "S7025C7");
    check_base_class_offset(lv, (S7025C9*), ABISELECT(104,72), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*)(S7025C10*), ABISELECT(152,100), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(176,116), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(176,116), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C3*)(S7025C10*), ABISELECT(152,100), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(208,144), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(208,144), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C11*)(S7025C10*), ABISELECT(208,144), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C10*), ABISELECT(256,184), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C10*), ABISELECT(256,184), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C10*), ABISELECT(152,100), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*)(S7025C10*), ABISELECT(592,420), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(616,436), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(616,436), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C3*)(S7025C10*), ABISELECT(592,420), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(648,464), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(648,464), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C11*)(S7025C10*), ABISELECT(648,464), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C10*), ABISELECT(696,504), "S7025C7");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C10*), ABISELECT(696,504), "S7025C7");
    check_base_class_offset(lv, (S7025C10*)(S7025C13*), ABISELECT(592,420), "S7025C7");
    check_base_class_offset(lv, (S7025C13*), ABISELECT(560,404), "S7025C7");
    test_class_info(&lv, &cd_S7025C7);
    dp->~S7025C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C7(Test_S7025C7, "S7025C7", ABISELECT(928,664));

#else // __cplusplus

extern void _ZN7S7025C7C1Ev();
extern void _ZN7S7025C7D1Ev();
Name_Map name_map_S7025C7[] = {
  NSPAIR(_ZN7S7025C7C1Ev),
  NSPAIR(_ZN7S7025C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C8;
extern VTBL_ENTRY _ZTI7S7025C8[];
extern  VTBL_ENTRY _ZTV7S7025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C8[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C8;
extern VTBL_ENTRY _ZTI7S7025C8[];
extern  VTBL_ENTRY _ZTV7S7025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C8[];
extern Class_Descriptor cd_S7025C9;
extern VTBL_ENTRY _ZTI7S7025C9[];
extern  VTBL_ENTRY _ZTV7S7025C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C9[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C11;
extern VTBL_ENTRY _ZTI8S7025C11[];
extern  VTBL_ENTRY _ZTV8S7025C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C11[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C10;
extern VTBL_ENTRY _ZTI8S7025C10[];
extern  VTBL_ENTRY _ZTV8S7025C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C10[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C11;
extern VTBL_ENTRY _ZTI8S7025C11[];
extern  VTBL_ENTRY _ZTV8S7025C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C11[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C10;
extern VTBL_ENTRY _ZTI8S7025C10[];
extern  VTBL_ENTRY _ZTV8S7025C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C10[];
extern Class_Descriptor cd_S7025C13;
extern VTBL_ENTRY _ZTI8S7025C13[];
extern  VTBL_ENTRY _ZTV8S7025C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C13[];
static Base_Class bases_S7025C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7025C4,    ABISELECT(480,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(536,388), //bcp->offset
    142, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7025C5,    ABISELECT(560,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7025C4,    ABISELECT(504,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(504,360), //bcp->offset
    132, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(480,344), //bcp->offset
    115, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7025C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S7025C5,    ABISELECT(24,16), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7025C8,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7025C4,    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
    21, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7025C4,    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
    22, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(72,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(48,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7025C4,    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
    25, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7025C5,    ABISELECT(128,88), //bcp->offset
    63, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7025C8,    ABISELECT(104,72), //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
    27, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7025C9,    ABISELECT(104,72), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7025C4,    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
    29, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7025C4,    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
    30, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(176,116), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(152,100), //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
    26, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7025C11,    ABISELECT(208,144), //bcp->offset
    91, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(256,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
    36, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(256,184), //bcp->offset
    105, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7025C10,    ABISELECT(152,100), //bcp->offset
    68, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7025C4,    ABISELECT(592,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(616,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
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(616,436), //bcp->offset
    200, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(592,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(648,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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(648,464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7025C11,    ABISELECT(648,464), //bcp->offset
    210, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(696,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(696,504), //bcp->offset
    224, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7025C10,    ABISELECT(592,420), //bcp->offset
    173, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7025C13,    ABISELECT(560,404), //bcp->offset
    154, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7025C7[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
extern void _ZN7S7025C73v42Ev();
extern void _ZN7S7025C73v43Ev();
extern void _ZN7S7025C73v44Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
extern void _ZN7S7025C93v27Ev();
extern void _ZN7S7025C93v28Ev();
extern void _ZN7S7025C93v29Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN8S7025C133v37Ev();
extern void _ZN8S7025C133v38Ev();
extern void _ZN8S7025C133v39Ev();
extern void _ZN8S7025C133v40Ev();
extern void _ZN8S7025C133v41Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY vtc_S7025C7[] = {
  ABISELECT(592,420),
  ABISELECT(560,404),
  ABISELECT(536,388),
  ABISELECT(560,404),
  ABISELECT(480,344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7025C73v42Ev,
  (VTBL_ENTRY)&_ZN7S7025C73v43Ev,
  (VTBL_ENTRY)&_ZN7S7025C73v44Ev,
  ABISELECT(512,372),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  ABISELECT(488,360),
  ABISELECT(512,376),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  ABISELECT(464,344),
  ABISELECT(488,360),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(432,316),
  ABISELECT(456,332),
  ABISELECT(376,272),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v29Ev,
  ABISELECT(408,300),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  ABISELECT(384,288),
  ABISELECT(408,304),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
  ABISELECT(360,272),
  ABISELECT(384,288),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(328,244),
  ABISELECT(352,260),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
  ABISELECT(280,204),
  ABISELECT(304,220),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,44),
  ABISELECT(80,60),
  ABISELECT(-480,-344),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  ABISELECT(32,28),
  ABISELECT(56,44),
  ABISELECT(-504,-360),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-536,-388),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-560,-404),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v39Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v40Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v41Ev,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  ABISELECT(-592,-420),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-616,-436),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  ABISELECT(-648,-464),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  ABISELECT(-696,-504),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern VTBL_ENTRY _ZTV7S7025C7[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C8__7S7025C7[] = {
  ABISELECT(536,388),
  ABISELECT(560,404),
  ABISELECT(480,344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C57S7025C8__A1__7S7025C7[] = {
  ABISELECT(512,372),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C57S7025C8__A1__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C8__7S7025C7[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,44),
  ABISELECT(80,60),
  ABISELECT(-480,-344),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C8__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-560,-404),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C8__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-536,-388),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C8__7S7025C7[] = {
  ABISELECT(32,28),
  ABISELECT(56,44),
  ABISELECT(-504,-360),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__A__7S7025C8__7S7025C7[] = {
  ABISELECT(512,372),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__A__7S7025C7[] = {
  ABISELECT(488,360),
  ABISELECT(512,376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__A1__7S7025C7[] = {
  ABISELECT(464,344),
  ABISELECT(488,360),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C3__A1__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-488,-360),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C3__A1__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-464,-344),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C3__A__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-512,-376),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C3__A__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-488,-360),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C3__A__7S7025C7[] = {
  ABISELECT(464,344),
  ABISELECT(488,360),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
extern void _ZN7S7025C93v27Ev();
extern void _ZN7S7025C93v28Ev();
extern void _ZN7S7025C93v29Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C9__7S7025C7[] = {
  ABISELECT(432,316),
  ABISELECT(456,332),
  ABISELECT(376,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v29Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C87S7025C9__A1__7S7025C7[] = {
  ABISELECT(432,316),
  ABISELECT(456,332),
  ABISELECT(376,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C57S7025C87S7025C9__A2__7S7025C7[] = {
  ABISELECT(408,300),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C57S7025C87S7025C9__A2__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-408,-300),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C87S7025C9__A1__7S7025C7[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,44),
  ABISELECT(80,60),
  ABISELECT(-376,-272),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C87S7025C9__A1__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-456,-332),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C87S7025C9__A1__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C87S7025C9__A1__7S7025C7[] = {
  ABISELECT(32,28),
  ABISELECT(56,44),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__A__7S7025C87S7025C9__A1__7S7025C7[] = {
  ABISELECT(408,300),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C9__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C9__7S7025C7[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,44),
  ABISELECT(80,60),
  ABISELECT(-376,-272),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C9__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-456,-332),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C9__7S7025C7[] = {
  ABISELECT(32,28),
  ABISELECT(56,44),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C57S7025C8__A1__7S7025C9__7S7025C7[] = {
  ABISELECT(408,300),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C10__A__7S7025C7[] = {
  ABISELECT(384,288),
  ABISELECT(408,304),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C38S7025C10__A2__7S7025C7[] = {
  ABISELECT(384,288),
  ABISELECT(408,304),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C38S7025C10__A2__7S7025C7[] = {
  ABISELECT(360,272),
  ABISELECT(384,288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C38S7025C10__A2__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C38S7025C10__A2__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C38S7025C10__A2__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-408,-304),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C38S7025C10__A2__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C38S7025C10__A2__7S7025C7[] = {
  ABISELECT(360,272),
  ABISELECT(384,288),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C118S7025C10__7S7025C7[] = {
  ABISELECT(328,244),
  ABISELECT(352,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C118S7025C10__A3__7S7025C7[] = {
  ABISELECT(328,244),
  ABISELECT(352,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C118S7025C10__A3__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-352,-260),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C118S7025C10__A3__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C118S7025C10__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-352,-260),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__8S7025C118S7025C10__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C10__A4__7S7025C7[] = {
  ABISELECT(280,204),
  ABISELECT(304,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C10__A4__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-304,-220),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C10__A4__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-204),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C10__A__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-408,-304),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__8S7025C10__A__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__8S7025C10__A__7S7025C7[] = {
  ABISELECT(360,272),
  ABISELECT(384,288),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C11__8S7025C10__A__7S7025C7[] = {
  ABISELECT(328,244),
  ABISELECT(352,260),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__A2__8S7025C10__A__7S7025C7[] = {
  ABISELECT(280,204),
  ABISELECT(304,220),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C7[] = {
  ABISELECT(56,44),
  ABISELECT(80,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C7[] = {
  ABISELECT(32,28),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C3__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C3__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C3__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C3__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C3__7S7025C7[] = {
  ABISELECT(32,28),
  ABISELECT(56,44),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C7[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C5__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN8S7025C133v37Ev();
extern void _ZN8S7025C133v38Ev();
extern void _ZN8S7025C133v39Ev();
extern void _ZN8S7025C133v40Ev();
extern void _ZN8S7025C133v41Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C13__7S7025C7[] = {
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v39Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v40Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v41Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C10__8S7025C13__7S7025C7[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__8S7025C13__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C38S7025C10__8S7025C13__7S7025C7[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C118S7025C10__8S7025C13__7S7025C7[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C10__A2__8S7025C13__7S7025C7[] = {
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C10__A1__7S7025C7[] = {
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C38S7025C10__A3__7S7025C7[] = {
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C38S7025C10__A5__7S7025C7[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C38S7025C10__A5__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C38S7025C10__A5__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C38S7025C10__A3__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C38S7025C10__A3__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C38S7025C10__A3__7S7025C7[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C118S7025C10__A1__7S7025C7[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C118S7025C10__A6__7S7025C7[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C118S7025C10__A6__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C118S7025C10__A6__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C118S7025C10__A1__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__8S7025C118S7025C10__A1__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C10__A7__7S7025C7[] = {
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C10__A7__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(136,100),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C10__A7__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,116),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C10__A1__7S7025C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__8S7025C10__A1__7S7025C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__8S7025C10__A1__7S7025C7[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C11__8S7025C10__A1__7S7025C7[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__A2__8S7025C10__A1__7S7025C7[] = {
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
static  VTT_ENTRY vtt_S7025C7[] = {
  {&(_ZTV7S7025C7[7]),  7,234},
  {&(_tg__ZTV7S7025C8__7S7025C7[5]),  5,15},
  {&(_tg__ZTV7S7025C57S7025C8__A1__7S7025C7[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C57S7025C8__A1__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C3__7S7025C8__7S7025C7[11]),  11,17},
  {&(_tg__ZTV7S7025C5__7S7025C8__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C8__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C8__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__A__7S7025C8__7S7025C7[3]),  3,5},
  {&(_tg__ZTV7S7025C3__A__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C3__A1__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C3__A1__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C3__A1__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C3__A__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C3__A__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C3__A__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C9__7S7025C7[5]),  5,18},
  {&(_tg__ZTV7S7025C87S7025C9__A1__7S7025C7[5]),  5,15},
  {&(_tg__ZTV7S7025C57S7025C87S7025C9__A2__7S7025C7[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C57S7025C87S7025C9__A2__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C3__7S7025C87S7025C9__A1__7S7025C7[11]),  11,17},
  {&(_tg__ZTV7S7025C5__7S7025C87S7025C9__A1__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C87S7025C9__A1__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C87S7025C9__A1__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__A__7S7025C87S7025C9__A1__7S7025C7[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C9__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C3__7S7025C9__7S7025C7[11]),  11,17},
  {&(_tg__ZTV7S7025C5__7S7025C9__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C9__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C57S7025C8__A1__7S7025C9__7S7025C7[3]),  3,5},
  {&(_tg__ZTV8S7025C10__A__7S7025C7[4]),  4,13},
  {&(_tg__ZTV7S7025C38S7025C10__A2__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C38S7025C10__A2__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C38S7025C10__A2__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C38S7025C10__A2__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C38S7025C10__A2__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C38S7025C10__A2__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C38S7025C10__A2__7S7025C7[4]),  4,10},
  {&(_tg__ZTV8S7025C118S7025C10__7S7025C7[4]),  4,14},
  {&(_tg__ZTV7S7025C68S7025C118S7025C10__A3__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C118S7025C10__A3__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C118S7025C10__A3__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C118S7025C10__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__8S7025C118S7025C10__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C68S7025C10__A4__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C10__A4__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C10__A4__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C10__A__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__8S7025C10__A__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__8S7025C10__A__7S7025C7[4]),  4,10},
  {&(_tg__ZTV8S7025C11__8S7025C10__A__7S7025C7[4]),  4,14},
  {&(_tg__ZTV7S7025C6__A2__8S7025C10__A__7S7025C7[4]),  4,10},
  {&(_ZTV7S7025C7[126]),  126,234},
  {&(_ZTV7S7025C7[166]),  166,234},
  {&(_ZTV7S7025C7[149]),  149,234},
  {&(_ZTV7S7025C7[136]),  136,234},
  {&(_ZTV7S7025C7[23]),  23,234},
  {&(_ZTV7S7025C7[29]),  29,234},
  {&(_ZTV7S7025C7[39]),  39,234},
  {&(_ZTV7S7025C7[50]),  50,234},
  {&(_ZTV7S7025C7[66]),  66,234},
  {&(_ZTV7S7025C7[72]),  72,234},
  {&(_ZTV7S7025C7[85]),  85,234},
  {&(_ZTV7S7025C7[95]),  95,234},
  {&(_ZTV7S7025C7[109]),  109,234},
  {&(_ZTV7S7025C7[166]),  166,234},
  {&(_ZTV7S7025C7[191]),  191,234},
  {&(_ZTV7S7025C7[204]),  204,234},
  {&(_ZTV7S7025C7[214]),  214,234},
  {&(_ZTV7S7025C7[228]),  228,234},
  {&(_tg__ZTV7S7025C3__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C3__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C3__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C3__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C3__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C3__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C7[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C5__7S7025C7[7]),  7,12},
  {&(_tg__ZTV8S7025C13__7S7025C7[7]),  7,14},
  {&(_tg__ZTV8S7025C10__8S7025C13__7S7025C7[18]),  18,27},
  {&(_tg__ZTV8S7025C13__7S7025C7[7]),  7,14},
  {&(_tg__ZTV7S7025C4__A1__8S7025C13__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C38S7025C10__8S7025C13__7S7025C7[4]),  4,10},
  {&(_tg__ZTV8S7025C118S7025C10__8S7025C13__7S7025C7[4]),  4,14},
  {&(_tg__ZTV7S7025C68S7025C10__A2__8S7025C13__7S7025C7[4]),  4,10},
  {&(_tg__ZTV8S7025C10__A1__7S7025C7[4]),  4,13},
  {&(_tg__ZTV7S7025C38S7025C10__A3__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C38S7025C10__A5__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C38S7025C10__A5__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C38S7025C10__A5__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C38S7025C10__A3__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C38S7025C10__A3__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C38S7025C10__A3__7S7025C7[4]),  4,10},
  {&(_tg__ZTV8S7025C118S7025C10__A1__7S7025C7[4]),  4,14},
  {&(_tg__ZTV7S7025C68S7025C118S7025C10__A6__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C118S7025C10__A6__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C118S7025C10__A6__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C118S7025C10__A1__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__8S7025C118S7025C10__A1__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C68S7025C10__A7__7S7025C7[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C10__A7__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C10__A7__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C10__A1__7S7025C7[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__8S7025C10__A1__7S7025C7[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__8S7025C10__A1__7S7025C7[4]),  4,10},
  {&(_tg__ZTV8S7025C11__8S7025C10__A1__7S7025C7[4]),  4,14},
  {&(_tg__ZTV7S7025C6__A2__8S7025C10__A1__7S7025C7[4]),  4,10},
};
extern VTBL_ENTRY _ZTI7S7025C7[];
extern  VTBL_ENTRY _ZTV7S7025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C7[];
Class_Descriptor cd_S7025C7 = {  "S7025C7", // class name
  bases_S7025C7, 38,
  &(vtc_S7025C7[0]), // expected_vtbl_contents
  &(vtt_S7025C7[0]), // expected_vtt_contents
  ABISELECT(928,664), // object size
  NSPAIRA(_ZTI7S7025C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7025C7),234, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7025C7),108, //virtual table table var
  38, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7025C14  {
  void *s7025c14f0[7];
  int s7025c14f1;
  void *s7025c14f2;
  virtual void  v45(); // _ZN8S7025C143v45Ev
  virtual void  v46(); // _ZN8S7025C143v46Ev
  virtual void  v47(); // _ZN8S7025C143v47Ev
  virtual void  v48(); // _ZN8S7025C143v48Ev
  virtual void  v49(); // _ZN8S7025C143v49Ev
  virtual void  v50(); // _ZN8S7025C143v50Ev
  ~S7025C14(); // tgen
  S7025C14(); // tgen
};
//SIG(-1 S7025C14) C1{ v1 v2 v3 v4 v5 v6 Fp[7] Fi Fp}


void  S7025C14 ::v45(){vfunc_called(this, "_ZN8S7025C143v45Ev");}
void  S7025C14 ::v46(){vfunc_called(this, "_ZN8S7025C143v46Ev");}
void  S7025C14 ::v47(){vfunc_called(this, "_ZN8S7025C143v47Ev");}
void  S7025C14 ::v48(){vfunc_called(this, "_ZN8S7025C143v48Ev");}
void  S7025C14 ::v49(){vfunc_called(this, "_ZN8S7025C143v49Ev");}
void  S7025C14 ::v50(){vfunc_called(this, "_ZN8S7025C143v50Ev");}
S7025C14 ::~S7025C14(){ note_dtor("S7025C14", this);} // tgen
S7025C14 ::S7025C14(){ note_ctor("S7025C14", this);} // tgen

static void Test_S7025C14()
{
  extern Class_Descriptor cd_S7025C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S7025C14, buf);
    S7025C14 *dp, &lv = *(dp=new (buf) S7025C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S7025C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7025C14)");
    check_field_offset(lv, s7025c14f0, ABISELECT(8,4), "S7025C14.s7025c14f0");
    check_field_offset(lv, s7025c14f1, ABISELECT(64,32), "S7025C14.s7025c14f1");
    check_field_offset(lv, s7025c14f2, ABISELECT(72,36), "S7025C14.s7025c14f2");
    test_class_info(&lv, &cd_S7025C14);
    dp->~S7025C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C14(Test_S7025C14, "S7025C14", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S7025C14C1Ev();
extern void _ZN8S7025C14D1Ev();
Name_Map name_map_S7025C14[] = {
  NSPAIR(_ZN8S7025C14C1Ev),
  NSPAIR(_ZN8S7025C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7025C14[];
extern void _ZN8S7025C143v45Ev();
extern void _ZN8S7025C143v46Ev();
extern void _ZN8S7025C143v47Ev();
extern void _ZN8S7025C143v48Ev();
extern void _ZN8S7025C143v49Ev();
extern void _ZN8S7025C143v50Ev();
static  VTBL_ENTRY vtc_S7025C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C14[0]),
  (VTBL_ENTRY)&_ZN8S7025C143v45Ev,
  (VTBL_ENTRY)&_ZN8S7025C143v46Ev,
  (VTBL_ENTRY)&_ZN8S7025C143v47Ev,
  (VTBL_ENTRY)&_ZN8S7025C143v48Ev,
  (VTBL_ENTRY)&_ZN8S7025C143v49Ev,
  (VTBL_ENTRY)&_ZN8S7025C143v50Ev,
};
extern VTBL_ENTRY _ZTI8S7025C14[];
extern  VTBL_ENTRY _ZTV8S7025C14[];
Class_Descriptor cd_S7025C14 = {  "S7025C14", // class name
  0,0,//no base classes
  &(vtc_S7025C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S7025C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7025C14),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  S7025C1  : S7025C2 , S7025C3 , S7025C7 , S7025C4 , S7025C14 {
  virtual  ~S7025C1(); // _ZN7S7025C1D2Ev
  virtual void  v1(); // _ZN7S7025C12v1Ev
  virtual void  v2(); // _ZN7S7025C12v2Ev
  virtual void  v3(); // _ZN7S7025C12v3Ev
  virtual void  v4(); // _ZN7S7025C12v4Ev
  virtual void  v5(); // _ZN7S7025C12v5Ev
  S7025C1(); // tgen
};
//SIG(1 S7025C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 Fp[8]} BC3{ BC4{ v13 v14 v15 v16 v17 Fs[5]} VBC5{ VBC4 v18 v19} BC6{ BC4 VBC5 v20 Fi[2]} v21 Fi} BC7{ BC8{ VBC3 BC4 BC5 v22 v23 v24 v25 v26 Fc Fp} BC3 BC9{ VBC4 BC8 v27 v28 v29} BC10{ BC3 BC11{ VBC5 BC6 v30 v31 v32 v33 Fi[3] Fp} BC6 v34 v35 v36 Fc[4] FL FC12{ BC13{ BC14{ v53 v54 v55 v56 v57 Fs[5]} VBC15{ VBC14 v58 v59} v60 Fi[2]} VBC16{ BC14 VBC15 BC13 v61 Fi} VBC17{ VBC16 BC14 BC15 v62 v63 v64 v65 v66 Fc Fp} v51 v52 Fp} Fp} VBC18{ VBC10 v37 v38 v39 v40 v41 FD} v42 v43 v44} BC4 BC19{ v45 v46 v47 v48 v49 v50 Fp[7] Fi Fp} vd v1 v2 v3 v4 v5}


 S7025C1 ::~S7025C1(){ note_dtor("S7025C1", this);}
void  S7025C1 ::v1(){vfunc_called(this, "_ZN7S7025C12v1Ev");}
void  S7025C1 ::v2(){vfunc_called(this, "_ZN7S7025C12v2Ev");}
void  S7025C1 ::v3(){vfunc_called(this, "_ZN7S7025C12v3Ev");}
void  S7025C1 ::v4(){vfunc_called(this, "_ZN7S7025C12v4Ev");}
void  S7025C1 ::v5(){vfunc_called(this, "_ZN7S7025C12v5Ev");}
S7025C1 ::S7025C1(){ note_ctor("S7025C1", this);} // tgen

static void Test_S7025C1()
{
  extern Class_Descriptor cd_S7025C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(74,201)];
    init_test(&cd_S7025C1, buf);
    S7025C1 *dp, &lv = *(dp=new (buf) S7025C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1168,800), "sizeof(S7025C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7025C1)");
    check_base_class_offset(lv, (S7025C2*), 0, "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*), ABISELECT(72,36), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C5*), ABISELECT(712,480), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C8 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C5*)(S7025C8*)(S7025C7*), ABISELECT(712,480), "S7025C1");
    /*is_ambiguous_... S7025C9::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C9*)(S7025C7*), ABISELECT(712,480), "S7025C1");
    /*is_ambiguous_... S7025C8::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C5*)(S7025C8*)(S7025C9*)(S7025C7*), ABISELECT(712,480), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C3*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C3*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C3*)(S7025C7*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*)(S7025C7*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C3*)(S7025C10*)(S7025C7*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*)(S7025C10*)(S7025C7*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C11*)(S7025C10*)(S7025C7*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C11*)(S7025C10*)(S7025C7*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C10*)(S7025C7*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C3*)(S7025C10*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C11*)(S7025C10*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C6*)(S7025C10*), ABISELECT(800,540), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*), ABISELECT(96,52), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C3*), ABISELECT(96,52), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C3*), ABISELECT(72,36), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*), ABISELECT(736,496), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*), ABISELECT(760,512), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C3*), ABISELECT(760,512), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C8 */ AMB_check_base_class_offset(lv, (S7025C3*)(S7025C8*)(S7025C7*), ABISELECT(736,496), "S7025C1");
    check_base_class_offset(lv, (S7025C3*)(S7025C8*)(S7025C9*)(S7025C7*), ABISELECT(736,496), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C8 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C8*)(S7025C7*), ABISELECT(128,80), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C8 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C8*)(S7025C7*), ABISELECT(152,96), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C8 */ AMB_check_base_class_offset(lv, (S7025C8*)(S7025C7*), ABISELECT(128,80), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*)(S7025C7*), ABISELECT(176,108), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*)(S7025C7*), ABISELECT(200,124), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C3*)(S7025C7*), ABISELECT(200,124), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C3 */ AMB_check_base_class_offset(lv, (S7025C3*)(S7025C7*), ABISELECT(176,108), "S7025C1");
    /*is_ambiguous_... S7025C8::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C8*)(S7025C9*)(S7025C7*), ABISELECT(232,152), "S7025C1");
    /*is_ambiguous_... S7025C8::S7025C5 */ AMB_check_base_class_offset(lv, (S7025C5*)(S7025C8*)(S7025C9*)(S7025C7*), ABISELECT(256,168), "S7025C1");
    check_base_class_offset(lv, (S7025C8*)(S7025C9*)(S7025C7*), ABISELECT(232,152), "S7025C1");
    check_base_class_offset(lv, (S7025C9*)(S7025C7*), ABISELECT(232,152), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*)(S7025C10*)(S7025C7*), ABISELECT(280,180), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*)(S7025C10*)(S7025C7*), ABISELECT(304,196), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C3*)(S7025C10*)(S7025C7*), ABISELECT(304,196), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C3*)(S7025C10*)(S7025C7*), ABISELECT(280,180), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C11*)(S7025C10*)(S7025C7*), ABISELECT(336,224), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C11*)(S7025C10*)(S7025C7*), ABISELECT(336,224), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C11*)(S7025C10*)(S7025C7*), ABISELECT(336,224), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C10*)(S7025C7*), ABISELECT(384,264), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C10*)(S7025C7*), ABISELECT(384,264), "S7025C1");
    /*is_ambiguous_... S7025C7::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C10*)(S7025C7*), ABISELECT(280,180), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C3*)(S7025C10*), ABISELECT(832,556), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(856,572), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C3*)(S7025C10*), ABISELECT(856,572), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C3*)(S7025C10*), ABISELECT(832,556), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(888,600), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C11*)(S7025C10*), ABISELECT(888,600), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C11*)(S7025C10*), ABISELECT(888,600), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C4*)(S7025C6*)(S7025C10*), ABISELECT(936,640), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C10 */ AMB_check_base_class_offset(lv, (S7025C6*)(S7025C10*), ABISELECT(936,640), "S7025C1");
    check_base_class_offset(lv, (S7025C10*)(S7025C13*), ABISELECT(832,556), "S7025C1");
    check_base_class_offset(lv, (S7025C13*)(S7025C7*), ABISELECT(800,540), "S7025C1");
    check_base_class_offset(lv, (S7025C7*), ABISELECT(128,80), "S7025C1");
    /*is_ambiguous_... S7025C1::S7025C4 */ AMB_check_base_class_offset(lv, (S7025C4*), ABISELECT(608,424), "S7025C1");
    check_base_class_offset(lv, (S7025C14*), ABISELECT(632,440), "S7025C1");
    test_class_info(&lv, &cd_S7025C1);
    dp->~S7025C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7025C1(Test_S7025C1, "S7025C1", ABISELECT(1168,800));

#else // __cplusplus

extern void _ZN7S7025C1C1Ev();
extern void _ZN7S7025C1D2Ev();
Name_Map name_map_S7025C1[] = {
  NSPAIR(_ZN7S7025C1C1Ev),
  NSPAIR(_ZN7S7025C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7025C2;
extern VTBL_ENTRY _ZTI7S7025C2[];
extern  VTBL_ENTRY _ZTV7S7025C2[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C8;
extern VTBL_ENTRY _ZTI7S7025C8[];
extern  VTBL_ENTRY _ZTV7S7025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C8[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C5;
extern VTBL_ENTRY _ZTI7S7025C5[];
extern  VTBL_ENTRY _ZTV7S7025C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C5[];
extern Class_Descriptor cd_S7025C8;
extern VTBL_ENTRY _ZTI7S7025C8[];
extern  VTBL_ENTRY _ZTV7S7025C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C8[];
extern Class_Descriptor cd_S7025C9;
extern VTBL_ENTRY _ZTI7S7025C9[];
extern  VTBL_ENTRY _ZTV7S7025C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C9[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C11;
extern VTBL_ENTRY _ZTI8S7025C11[];
extern  VTBL_ENTRY _ZTV8S7025C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C11[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C10;
extern VTBL_ENTRY _ZTI8S7025C10[];
extern  VTBL_ENTRY _ZTV8S7025C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C10[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C3;
extern VTBL_ENTRY _ZTI7S7025C3[];
extern  VTBL_ENTRY _ZTV7S7025C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C3[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C11;
extern VTBL_ENTRY _ZTI8S7025C11[];
extern  VTBL_ENTRY _ZTV8S7025C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C11[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C6;
extern VTBL_ENTRY _ZTI7S7025C6[];
extern  VTBL_ENTRY _ZTV7S7025C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C6[];
extern Class_Descriptor cd_S7025C10;
extern VTBL_ENTRY _ZTI8S7025C10[];
extern  VTBL_ENTRY _ZTV8S7025C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C10[];
extern Class_Descriptor cd_S7025C13;
extern VTBL_ENTRY _ZTI8S7025C13[];
extern  VTBL_ENTRY _ZTV8S7025C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7025C13[];
extern Class_Descriptor cd_S7025C7;
extern VTBL_ENTRY _ZTI7S7025C7[];
extern  VTBL_ENTRY _ZTV7S7025C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C7[];
extern Class_Descriptor cd_S7025C4;
extern VTBL_ENTRY _ZTI7S7025C4[];
extern  VTBL_ENTRY _ZTV7S7025C4[];
extern Class_Descriptor cd_S7025C14;
extern VTBL_ENTRY _ZTI8S7025C14[];
extern  VTBL_ENTRY _ZTV8S7025C14[];
static Base_Class bases_S7025C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7025C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7025C4,    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
    19, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(712,480), //bcp->offset
    171, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7025C5,    ABISELECT(800,540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7025C4,    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
    20, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(96,52), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(72,36), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7025C4,    ABISELECT(736,496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(760,512), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7025C6,    ABISELECT(760,512), //bcp->offset
    200, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(736,496), //bcp->offset
    183, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7025C4,    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
    23, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7025C5,    ABISELECT(152,96), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7025C8,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7025C4,    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
    26, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7025C4,    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
    27, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(200,124), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(176,108), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7025C4,    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
    30, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7025C5,    ABISELECT(256,168), //bcp->offset
    104, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7025C8,    ABISELECT(232,152), //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
    32, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7025C9,    ABISELECT(232,152), //bcp->offset
    86, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7025C4,    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
    34, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7025C4,    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
    35, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(304,196), //bcp->offset
    122, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(280,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(336,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
    38, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(336,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7025C11,    ABISELECT(336,224), //bcp->offset
    132, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(384,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
    41, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(384,264), //bcp->offset
    146, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7025C10,    ABISELECT(280,180), //bcp->offset
    109, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(832,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(856,572), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(856,572), //bcp->offset
    256, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7025C3,    ABISELECT(832,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(888,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
    11, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(888,600), //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
    12, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7025C11,    ABISELECT(888,600), //bcp->offset
    266, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7025C4,    ABISELECT(936,640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7025C6,    ABISELECT(936,640), //bcp->offset
    280, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7025C10,    ABISELECT(832,556), //bcp->offset
    229, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7025C13,    ABISELECT(800,540), //bcp->offset
    210, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S7025C7,    ABISELECT(128,80), //bcp->offset
    41, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7025C4,    ABISELECT(608,424), //bcp->offset
    156, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7025C14,    ABISELECT(632,440), //bcp->offset
    163, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7025C1[];
extern void _ZN7S7025C1D1Ev();
extern void _ZN7S7025C1D0Ev();
extern void _ZN7S7025C22v6Ev();
extern void _ZN7S7025C22v7Ev();
extern void _ZN7S7025C22v8Ev();
extern void _ZN7S7025C22v9Ev();
extern void _ZN7S7025C23v10Ev();
extern void _ZN7S7025C23v11Ev();
extern void _ZN7S7025C23v12Ev();
extern void _ZN7S7025C12v1Ev();
extern void _ZN7S7025C12v2Ev();
extern void _ZN7S7025C12v3Ev();
extern void _ZN7S7025C12v4Ev();
extern void _ZN7S7025C12v5Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
extern void _ZN7S7025C73v42Ev();
extern void _ZN7S7025C73v43Ev();
extern void _ZN7S7025C73v44Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
extern void _ZN7S7025C93v27Ev();
extern void _ZN7S7025C93v28Ev();
extern void _ZN7S7025C93v29Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN8S7025C143v45Ev();
extern void _ZN8S7025C143v46Ev();
extern void _ZN8S7025C143v47Ev();
extern void _ZN8S7025C143v48Ev();
extern void _ZN8S7025C143v49Ev();
extern void _ZN8S7025C143v50Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN8S7025C133v37Ev();
extern void _ZN8S7025C133v38Ev();
extern void _ZN8S7025C133v39Ev();
extern void _ZN8S7025C133v40Ev();
extern void _ZN8S7025C133v41Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY vtc_S7025C1[] = {
  ABISELECT(832,556),
  ABISELECT(800,540),
  ABISELECT(736,496),
  ABISELECT(712,480),
  ABISELECT(800,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7025C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7025C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7025C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7025C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7025C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7025C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7025C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7025C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7025C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7025C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7025C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7025C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7025C12v5Ev,
  ABISELECT(640,444),
  ABISELECT(728,504),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  ABISELECT(616,428),
  ABISELECT(704,488),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(704,476),
  ABISELECT(672,460),
  ABISELECT(584,400),
  ABISELECT(672,460),
  ABISELECT(608,416),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7025C73v42Ev,
  (VTBL_ENTRY)&_ZN7S7025C73v43Ev,
  (VTBL_ENTRY)&_ZN7S7025C73v44Ev,
  ABISELECT(560,384),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  ABISELECT(536,372),
  ABISELECT(624,432),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  ABISELECT(512,356),
  ABISELECT(600,416),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(480,328),
  ABISELECT(568,388),
  ABISELECT(504,344),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v29Ev,
  ABISELECT(456,312),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  ABISELECT(432,300),
  ABISELECT(520,360),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
  ABISELECT(408,284),
  ABISELECT(496,344),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(376,256),
  ABISELECT(464,316),
  ABISELECT(-336,-224),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
  ABISELECT(328,216),
  ABISELECT(416,276),
  ABISELECT(-384,-264),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(-608,-424),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  ABISELECT(-632,-440),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN8S7025C143v45Ev,
  (VTBL_ENTRY)&_ZN8S7025C143v46Ev,
  (VTBL_ENTRY)&_ZN8S7025C143v47Ev,
  (VTBL_ENTRY)&_ZN8S7025C143v48Ev,
  (VTBL_ENTRY)&_ZN8S7025C143v49Ev,
  (VTBL_ENTRY)&_ZN8S7025C143v50Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-712,-480),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(64,44),
  ABISELECT(-736,-496),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  ABISELECT(-48,-32),
  ABISELECT(40,28),
  ABISELECT(-760,-512),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-800,-540),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v39Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v40Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v41Ev,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-76),
  ABISELECT(-32,-16),
  ABISELECT(-832,-556),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
  ABISELECT(-144,-92),
  ABISELECT(-56,-32),
  ABISELECT(-856,-572),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  ABISELECT(-176,-120),
  ABISELECT(-88,-60),
  ABISELECT(-888,-600),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
  ABISELECT(-224,-160),
  ABISELECT(-136,-100),
  ABISELECT(-936,-640),
  (VTBL_ENTRY)&(_ZTI7S7025C1[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern VTBL_ENTRY _ZTV7S7025C1[];
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__A__7S7025C1[] = {
  ABISELECT(640,444),
  ABISELECT(728,504),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C1[] = {
  ABISELECT(616,428),
  ABISELECT(704,488),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C3__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-704,-488),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C3__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-616,-428),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C3__A__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-728,-504),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C3__A__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-444),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C3__A__7S7025C1[] = {
  ABISELECT(616,428),
  ABISELECT(704,488),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
extern void _ZN7S7025C73v42Ev();
extern void _ZN7S7025C73v43Ev();
extern void _ZN7S7025C73v44Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C7__7S7025C1[] = {
  ABISELECT(704,476),
  ABISELECT(672,460),
  ABISELECT(584,400),
  ABISELECT(672,460),
  ABISELECT(608,416),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7025C73v42Ev,
  (VTBL_ENTRY)&_ZN7S7025C73v43Ev,
  (VTBL_ENTRY)&_ZN7S7025C73v44Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C87S7025C7__7S7025C1[] = {
  ABISELECT(584,400),
  ABISELECT(672,460),
  ABISELECT(608,416),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C57S7025C87S7025C7__A1__7S7025C1[] = {
  ABISELECT(560,384),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C57S7025C87S7025C7__A1__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-384),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C87S7025C7__7S7025C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(64,44),
  ABISELECT(-608,-416),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C87S7025C7__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-672,-460),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C87S7025C7__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-400),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C87S7025C7__7S7025C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(40,28),
  ABISELECT(-632,-432),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__A__7S7025C87S7025C7__7S7025C1[] = {
  ABISELECT(560,384),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C37S7025C7__A2__7S7025C1[] = {
  ABISELECT(536,372),
  ABISELECT(624,432),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C37S7025C7__A2__7S7025C1[] = {
  ABISELECT(512,356),
  ABISELECT(600,416),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C37S7025C7__A2__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-600,-416),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C37S7025C7__A2__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-356),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C37S7025C7__A2__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-624,-432),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C37S7025C7__A2__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-536,-372),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C37S7025C7__A2__7S7025C1[] = {
  ABISELECT(512,356),
  ABISELECT(600,416),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
extern void _ZN7S7025C93v27Ev();
extern void _ZN7S7025C93v28Ev();
extern void _ZN7S7025C93v29Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C97S7025C7__7S7025C1[] = {
  ABISELECT(480,328),
  ABISELECT(568,388),
  ABISELECT(504,344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v29Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C87S7025C97S7025C7__A1__7S7025C1[] = {
  ABISELECT(480,328),
  ABISELECT(568,388),
  ABISELECT(504,344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C57S7025C87S7025C97S7025C7__A2__7S7025C1[] = {
  ABISELECT(456,312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C57S7025C87S7025C97S7025C7__A2__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-456,-312),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C87S7025C97S7025C7__A1__7S7025C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(64,44),
  ABISELECT(-504,-344),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C87S7025C97S7025C7__A1__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-568,-388),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C87S7025C97S7025C7__A1__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-328),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C87S7025C97S7025C7__A1__7S7025C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(40,28),
  ABISELECT(-528,-360),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__A__7S7025C87S7025C97S7025C7__A1__7S7025C1[] = {
  ABISELECT(456,312),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C8[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C97S7025C7__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-328),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C97S7025C7__7S7025C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(64,44),
  ABISELECT(-504,-344),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C97S7025C7__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-568,-388),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C97S7025C7__7S7025C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(40,28),
  ABISELECT(-528,-360),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C57S7025C8__A1__7S7025C97S7025C7__7S7025C1[] = {
  ABISELECT(456,312),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C9[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C107S7025C7__7S7025C1[] = {
  ABISELECT(432,300),
  ABISELECT(520,360),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C38S7025C107S7025C7__A3__7S7025C1[] = {
  ABISELECT(432,300),
  ABISELECT(520,360),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C38S7025C107S7025C7__A3__7S7025C1[] = {
  ABISELECT(408,284),
  ABISELECT(496,344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C38S7025C107S7025C7__A3__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-496,-344),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C38S7025C107S7025C7__A3__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-408,-284),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C38S7025C107S7025C7__A3__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-520,-360),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C38S7025C107S7025C7__A3__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-300),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C38S7025C107S7025C7__A3__7S7025C1[] = {
  ABISELECT(408,284),
  ABISELECT(496,344),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C118S7025C107S7025C7__7S7025C1[] = {
  ABISELECT(376,256),
  ABISELECT(464,316),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C118S7025C107S7025C7__A4__7S7025C1[] = {
  ABISELECT(376,256),
  ABISELECT(464,316),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C118S7025C107S7025C7__A4__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-464,-316),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C118S7025C107S7025C7__A4__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-256),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C118S7025C107S7025C7__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-464,-316),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__8S7025C118S7025C107S7025C7__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-256),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C107S7025C7__A5__7S7025C1[] = {
  ABISELECT(328,216),
  ABISELECT(416,276),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C107S7025C7__A5__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-416,-276),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C107S7025C7__A5__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-216),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C107S7025C7__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-520,-360),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__8S7025C107S7025C7__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-300),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__8S7025C107S7025C7__7S7025C1[] = {
  ABISELECT(408,284),
  ABISELECT(496,344),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C11__8S7025C107S7025C7__7S7025C1[] = {
  ABISELECT(376,256),
  ABISELECT(464,316),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__A2__8S7025C107S7025C7__7S7025C1[] = {
  ABISELECT(328,216),
  ABISELECT(416,276),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__7S7025C7__7S7025C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(64,44),
  ABISELECT(-608,-416),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN8S7025C133v37Ev();
extern void _ZN8S7025C133v38Ev();
extern void _ZN8S7025C133v39Ev();
extern void _ZN8S7025C133v40Ev();
extern void _ZN8S7025C133v41Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C13__7S7025C7__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-672,-460),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v39Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v40Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v41Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C7__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-400),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__7S7025C7__7S7025C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(40,28),
  ABISELECT(-632,-432),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C57S7025C8__A1__7S7025C7__7S7025C1[] = {
  ABISELECT(560,384),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__A__7S7025C7__7S7025C1[] = {
  ABISELECT(536,372),
  ABISELECT(624,432),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__A1__7S7025C7__7S7025C1[] = {
  ABISELECT(512,356),
  ABISELECT(600,416),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C83v22Ev();
extern void _ZN7S7025C83v23Ev();
extern void _ZN7S7025C83v24Ev();
extern void _ZN7S7025C83v25Ev();
extern void _ZN7S7025C83v26Ev();
extern void _ZN7S7025C93v27Ev();
extern void _ZN7S7025C93v28Ev();
extern void _ZN7S7025C93v29Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C9__7S7025C7__7S7025C1[] = {
  ABISELECT(480,328),
  ABISELECT(568,388),
  ABISELECT(504,344),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7025C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7025C93v29Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C57S7025C87S7025C9__A2__7S7025C7__7S7025C1[] = {
  ABISELECT(456,312),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C10__A__7S7025C7__7S7025C1[] = {
  ABISELECT(432,300),
  ABISELECT(520,360),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C38S7025C10__A2__7S7025C7__7S7025C1[] = {
  ABISELECT(408,284),
  ABISELECT(496,344),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C118S7025C10__7S7025C7__7S7025C1[] = {
  ABISELECT(376,256),
  ABISELECT(464,316),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C10__A4__7S7025C7__7S7025C1[] = {
  ABISELECT(328,216),
  ABISELECT(416,276),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C10__A1__7S7025C7__7S7025C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-76),
  ABISELECT(-32,-16),
  ABISELECT(-704,-476),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C38S7025C10__A5__7S7025C7__7S7025C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-56,-32),
  ABISELECT(-728,-492),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C118S7025C10__A1__7S7025C7__7S7025C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(-88,-60),
  ABISELECT(-760,-520),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C10__A7__7S7025C7__7S7025C1[] = {
  ABISELECT(-224,-160),
  ABISELECT(-136,-100),
  ABISELECT(-808,-560),
  (VTBL_ENTRY)&(_ZTI7S7025C7[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C1[] = {
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__7S7025C5__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7025C5[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C3__A1__7S7025C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__A1__7S7025C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C3__A1__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C3__A1__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C3__A1__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C3__A1__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C3__A1__7S7025C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(40,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
extern void _ZN8S7025C133v37Ev();
extern void _ZN8S7025C133v38Ev();
extern void _ZN8S7025C133v39Ev();
extern void _ZN8S7025C133v40Ev();
extern void _ZN8S7025C133v41Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C13__7S7025C1[] = {
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v39Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v40Ev,
  (VTBL_ENTRY)&_ZN8S7025C133v41Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C10__8S7025C13__7S7025C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-76),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__8S7025C13__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C38S7025C10__8S7025C13__7S7025C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C118S7025C10__8S7025C13__7S7025C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C10__A2__8S7025C13__7S7025C1[] = {
  ABISELECT(-224,-160),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S7025C13[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
extern void _ZN8S7025C103v34Ev();
extern void _ZN8S7025C103v35Ev();
extern void _ZN8S7025C103v36Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C10__A1__7S7025C1[] = {
  ABISELECT(-120,-76),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v34Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7025C103v36Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C38S7025C10__A4__7S7025C1[] = {
  ABISELECT(-120,-76),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C33v21Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C38S7025C10__A6__7S7025C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C67S7025C38S7025C10__A6__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C67S7025C38S7025C10__A6__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C38S7025C10__A4__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C38S7025C10__A4__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__7S7025C38S7025C10__A4__7S7025C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7025C3[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C118S7025C10__A1__7S7025C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C118S7025C10__A7__7S7025C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C118S7025C10__A7__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C118S7025C10__A7__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C118S7025C10__A1__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__8S7025C118S7025C10__A1__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI8S7025C11[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C68S7025C10__A8__7S7025C1[] = {
  ABISELECT(-224,-160),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__7S7025C68S7025C10__A8__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(136,100),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__7S7025C68S7025C10__A8__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(224,160),
  (VTBL_ENTRY)&(_ZTI7S7025C6[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C53v18Ev();
extern void _ZN7S7025C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C5__8S7025C10__A1__7S7025C1[] = {
  0,
  0,
  ABISELECT(-88,-60),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7025C53v19Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C4__A1__8S7025C10__A1__7S7025C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C67S7025C3__8S7025C10__A1__7S7025C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
extern void _ZN8S7025C113v30Ev();
extern void _ZN8S7025C113v31Ev();
extern void _ZN8S7025C113v32Ev();
extern void _ZN8S7025C113v33Ev();
static  VTBL_ENTRY _tg__ZTV8S7025C11__8S7025C10__A1__7S7025C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v30Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v31Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v32Ev,
  (VTBL_ENTRY)&_ZN8S7025C113v33Ev,
};
extern void _ZN7S7025C43v13Ev();
extern void _ZN7S7025C43v14Ev();
extern void _ZN7S7025C43v15Ev();
extern void _ZN7S7025C43v16Ev();
extern void _ZN7S7025C43v17Ev();
extern void _ZN7S7025C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7025C6__A2__8S7025C10__A1__7S7025C1[] = {
  ABISELECT(-224,-160),
  ABISELECT(-136,-100),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI8S7025C10[0]),
  (VTBL_ENTRY)&_ZN7S7025C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7025C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7025C63v20Ev,
};
static  VTT_ENTRY vtt_S7025C1[] = {
  {&(_ZTV7S7025C1[7]),  7,290},
  {&(_tg__ZTV7S7025C3__A__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C3__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C3__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C3__A__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C3__A__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C3__A__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C7__7S7025C1[7]),  7,20},
  {&(_tg__ZTV7S7025C87S7025C7__7S7025C1[5]),  5,15},
  {&(_tg__ZTV7S7025C57S7025C87S7025C7__A1__7S7025C1[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C57S7025C87S7025C7__A1__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C3__7S7025C87S7025C7__7S7025C1[11]),  11,17},
  {&(_tg__ZTV7S7025C5__7S7025C87S7025C7__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C87S7025C7__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C87S7025C7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__A__7S7025C87S7025C7__7S7025C1[3]),  3,5},
  {&(_tg__ZTV7S7025C37S7025C7__A2__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C37S7025C7__A2__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C37S7025C7__A2__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C37S7025C7__A2__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C37S7025C7__A2__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C37S7025C7__A2__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C37S7025C7__A2__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C97S7025C7__7S7025C1[5]),  5,18},
  {&(_tg__ZTV7S7025C87S7025C97S7025C7__A1__7S7025C1[5]),  5,15},
  {&(_tg__ZTV7S7025C57S7025C87S7025C97S7025C7__A2__7S7025C1[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C57S7025C87S7025C97S7025C7__A2__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C3__7S7025C87S7025C97S7025C7__A1__7S7025C1[11]),  11,17},
  {&(_tg__ZTV7S7025C5__7S7025C87S7025C97S7025C7__A1__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C87S7025C97S7025C7__A1__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C87S7025C97S7025C7__A1__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__A__7S7025C87S7025C97S7025C7__A1__7S7025C1[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C97S7025C7__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C3__7S7025C97S7025C7__7S7025C1[11]),  11,17},
  {&(_tg__ZTV7S7025C5__7S7025C97S7025C7__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C97S7025C7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C57S7025C8__A1__7S7025C97S7025C7__7S7025C1[3]),  3,5},
  {&(_tg__ZTV8S7025C107S7025C7__7S7025C1[4]),  4,13},
  {&(_tg__ZTV7S7025C38S7025C107S7025C7__A3__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C38S7025C107S7025C7__A3__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C38S7025C107S7025C7__A3__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C38S7025C107S7025C7__A3__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C38S7025C107S7025C7__A3__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C38S7025C107S7025C7__A3__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C38S7025C107S7025C7__A3__7S7025C1[4]),  4,10},
  {&(_tg__ZTV8S7025C118S7025C107S7025C7__7S7025C1[4]),  4,14},
  {&(_tg__ZTV7S7025C68S7025C118S7025C107S7025C7__A4__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C118S7025C107S7025C7__A4__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C118S7025C107S7025C7__A4__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C118S7025C107S7025C7__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__8S7025C118S7025C107S7025C7__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C68S7025C107S7025C7__A5__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C107S7025C7__A5__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C107S7025C7__A5__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C107S7025C7__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__8S7025C107S7025C7__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__8S7025C107S7025C7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV8S7025C11__8S7025C107S7025C7__7S7025C1[4]),  4,14},
  {&(_tg__ZTV7S7025C6__A2__8S7025C107S7025C7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C3__7S7025C7__7S7025C1[11]),  11,17},
  {&(_tg__ZTV8S7025C13__7S7025C7__7S7025C1[12]),  12,19},
  {&(_tg__ZTV7S7025C4__A1__7S7025C7__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__7S7025C7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C57S7025C8__A1__7S7025C7__7S7025C1[3]),  3,5},
  {&(_tg__ZTV7S7025C3__A__7S7025C7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C3__A1__7S7025C7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C9__7S7025C7__7S7025C1[5]),  5,18},
  {&(_tg__ZTV7S7025C57S7025C87S7025C9__A2__7S7025C7__7S7025C1[3]),  3,5},
  {&(_tg__ZTV8S7025C10__A__7S7025C7__7S7025C1[4]),  4,13},
  {&(_tg__ZTV7S7025C67S7025C38S7025C10__A2__7S7025C7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV8S7025C118S7025C10__7S7025C7__7S7025C1[4]),  4,14},
  {&(_tg__ZTV7S7025C68S7025C10__A4__7S7025C7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV8S7025C13__7S7025C7__7S7025C1[12]),  12,19},
  {&(_tg__ZTV8S7025C10__A1__7S7025C7__7S7025C1[18]),  18,27},
  {&(_tg__ZTV7S7025C67S7025C38S7025C10__A5__7S7025C7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV8S7025C118S7025C10__A1__7S7025C7__7S7025C1[4]),  4,14},
  {&(_tg__ZTV7S7025C68S7025C10__A7__7S7025C7__7S7025C1[4]),  4,10},
  {&(_ZTV7S7025C1[25]),  25,290},
  {&(_ZTV7S7025C1[222]),  222,290},
  {&(_ZTV7S7025C1[178]),  178,290},
  {&(_ZTV7S7025C1[35]),  35,290},
  {&(_ZTV7S7025C1[48]),  48,290},
  {&(_ZTV7S7025C1[194]),  194,290},
  {&(_ZTV7S7025C1[204]),  204,290},
  {&(_ZTV7S7025C1[64]),  64,290},
  {&(_ZTV7S7025C1[70]),  70,290},
  {&(_ZTV7S7025C1[80]),  80,290},
  {&(_ZTV7S7025C1[91]),  91,290},
  {&(_ZTV7S7025C1[107]),  107,290},
  {&(_ZTV7S7025C1[113]),  113,290},
  {&(_ZTV7S7025C1[126]),  126,290},
  {&(_ZTV7S7025C1[136]),  136,290},
  {&(_ZTV7S7025C1[150]),  150,290},
  {&(_ZTV7S7025C1[222]),  222,290},
  {&(_ZTV7S7025C1[247]),  247,290},
  {&(_ZTV7S7025C1[260]),  260,290},
  {&(_ZTV7S7025C1[270]),  270,290},
  {&(_ZTV7S7025C1[284]),  284,290},
  {&(_tg__ZTV7S7025C5__7S7025C1[3]),  3,5},
  {&(_tg__ZTV7S7025C4__7S7025C5__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C3__A1__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C3__A1__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C3__A1__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C3__A1__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C3__A1__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C3__A1__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C3__A1__7S7025C1[4]),  4,10},
  {&(_tg__ZTV8S7025C13__7S7025C1[7]),  7,14},
  {&(_tg__ZTV8S7025C10__8S7025C13__7S7025C1[18]),  18,27},
  {&(_tg__ZTV8S7025C13__7S7025C1[7]),  7,14},
  {&(_tg__ZTV7S7025C4__A1__8S7025C13__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C38S7025C10__8S7025C13__7S7025C1[4]),  4,10},
  {&(_tg__ZTV8S7025C118S7025C10__8S7025C13__7S7025C1[4]),  4,14},
  {&(_tg__ZTV7S7025C68S7025C10__A2__8S7025C13__7S7025C1[4]),  4,10},
  {&(_tg__ZTV8S7025C10__A1__7S7025C1[4]),  4,13},
  {&(_tg__ZTV7S7025C38S7025C10__A4__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C67S7025C38S7025C10__A6__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C67S7025C38S7025C10__A6__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C67S7025C38S7025C10__A6__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C5__7S7025C38S7025C10__A4__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C38S7025C10__A4__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C6__7S7025C38S7025C10__A4__7S7025C1[4]),  4,10},
  {&(_tg__ZTV8S7025C118S7025C10__A1__7S7025C1[4]),  4,14},
  {&(_tg__ZTV7S7025C68S7025C118S7025C10__A7__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C118S7025C10__A7__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C118S7025C10__A7__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C118S7025C10__A1__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__8S7025C118S7025C10__A1__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C68S7025C10__A8__7S7025C1[4]),  4,10},
  {&(_tg__ZTV7S7025C5__7S7025C68S7025C10__A8__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__7S7025C68S7025C10__A8__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C5__8S7025C10__A1__7S7025C1[5]),  5,7},
  {&(_tg__ZTV7S7025C4__A1__8S7025C10__A1__7S7025C1[7]),  7,12},
  {&(_tg__ZTV7S7025C67S7025C3__8S7025C10__A1__7S7025C1[4]),  4,10},
  {&(_tg__ZTV8S7025C11__8S7025C10__A1__7S7025C1[4]),  4,14},
  {&(_tg__ZTV7S7025C6__A2__8S7025C10__A1__7S7025C1[4]),  4,10},
};
extern VTBL_ENTRY _ZTI7S7025C1[];
extern  VTBL_ENTRY _ZTV7S7025C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7025C1[];
Class_Descriptor cd_S7025C1 = {  "S7025C1", // class name
  bases_S7025C1, 46,
  &(vtc_S7025C1[0]), // expected_vtbl_contents
  &(vtt_S7025C1[0]), // expected_vtt_contents
  ABISELECT(1168,800), // object size
  NSPAIRA(_ZTI7S7025C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7025C1),290, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7025C1),137, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C5  {
  void *s19872c5f0[7];
  __tsi64 s19872c5f1;
  short s19872c5f2;
  virtual void  v5(); // _ZN8S19872C52v5Ev
  ~S19872C5(); // tgen
  S19872C5(); // tgen
};
//SIG(-1 S19872C5) C1{ v1 Fp[7] FL Fs}


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

static void Test_S19872C5()
{
  extern Class_Descriptor cd_S19872C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S19872C5, buf);
    S19872C5 *dp, &lv = *(dp=new (buf) S19872C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S19872C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19872C5)");
    check_field_offset(lv, s19872c5f0, ABISELECT(8,4), "S19872C5.s19872c5f0");
    check_field_offset(lv, s19872c5f1, ABISELECT(64,32), "S19872C5.s19872c5f1");
    check_field_offset(lv, s19872c5f2, ABISELECT(72,40), "S19872C5.s19872c5f2");
    test_class_info(&lv, &cd_S19872C5);
    dp->~S19872C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C5(Test_S19872C5, "S19872C5", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S19872C5C1Ev();
extern void _ZN8S19872C5D1Ev();
Name_Map name_map_S19872C5[] = {
  NSPAIR(_ZN8S19872C5C1Ev),
  NSPAIR(_ZN8S19872C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19872C5[];
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY vtc_S19872C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C5[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
Class_Descriptor cd_S19872C5 = {  "S19872C5", // class name
  0,0,//no base classes
  &(vtc_S19872C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S19872C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19872C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C7  : virtual S19872C5 {
  virtual void  v6(); // _ZN8S19872C72v6Ev
  virtual void  v7(); // _ZN8S19872C72v7Ev
  ~S19872C7(); // tgen
  S19872C7(); // tgen
};
//SIG(-1 S19872C7) C1{ VBC2{ v3 Fp[7] FL Fs} v1 v2}


void  S19872C7 ::v6(){vfunc_called(this, "_ZN8S19872C72v6Ev");}
void  S19872C7 ::v7(){vfunc_called(this, "_ZN8S19872C72v7Ev");}
S19872C7 ::~S19872C7(){ note_dtor("S19872C7", this);} // tgen
S19872C7 ::S19872C7(){ note_ctor("S19872C7", this);} // tgen

static void Test_S19872C7()
{
  extern Class_Descriptor cd_S19872C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S19872C7, buf);
    S19872C7 *dp, &lv = *(dp=new (buf) S19872C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S19872C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19872C7)");
    check_base_class_offset(lv, (S19872C5*), ABISELECT(8,4), "S19872C7");
    test_class_info(&lv, &cd_S19872C7);
    dp->~S19872C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C7(Test_S19872C7, "S19872C7", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN8S19872C7C1Ev();
extern void _ZN8S19872C7D1Ev();
Name_Map name_map_S19872C7[] = {
  NSPAIR(_ZN8S19872C7C1Ev),
  NSPAIR(_ZN8S19872C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
static Base_Class bases_S19872C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    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 _ZTI8S19872C7[];
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY vtc_S19872C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S19872C7[];
static  VTT_ENTRY vtt_S19872C7[] = {
  {&(_ZTV8S19872C7[3]),  3,9},
  {&(_ZTV8S19872C7[8]),  8,9},
};
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
Class_Descriptor cd_S19872C7 = {  "S19872C7", // class name
  bases_S19872C7, 1,
  &(vtc_S19872C7[0]), // expected_vtbl_contents
  &(vtt_S19872C7[0]), // expected_vtt_contents
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI8S19872C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19872C7),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19872C7),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  S19872C9  : S3164C31_nt , S19872C5 {
  int s19872c9f0;
  virtual void  v8(); // _ZN8S19872C92v8Ev
  ~S19872C9(); // tgen
  S19872C9(); // tgen
};
//SIG(-1 S19872C9) C1{ BC2{ m} BC3{ v2 Fp[7] FL Fs} v1 Fi}


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

static void Test_S19872C9()
{
  extern Class_Descriptor cd_S19872C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S19872C9, buf);
    S19872C9 *dp, &lv = *(dp=new (buf) S19872C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19872C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19872C9)");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S19872C9");
    check_base_class_offset(lv, (S19872C5*), 0, "S19872C9");
    check_field_offset(lv, s19872c9f0, ABISELECT(76,44), "S19872C9.s19872c9f0");
    test_class_info(&lv, &cd_S19872C9);
    dp->~S19872C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C9(Test_S19872C9, "S19872C9", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S19872C9C1Ev();
extern void _ZN8S19872C9D1Ev();
Name_Map name_map_S19872C9[] = {
  NSPAIR(_ZN8S19872C9C1Ev),
  NSPAIR(_ZN8S19872C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
static Base_Class bases_S19872C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19872C9[];
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY vtc_S19872C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C9[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern VTBL_ENTRY _ZTI8S19872C9[];
extern  VTBL_ENTRY _ZTV8S19872C9[];
Class_Descriptor cd_S19872C9 = {  "S19872C9", // class name
  bases_S19872C9, 2,
  &(vtc_S19872C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S19872C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19872C9),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  S19872C10  : S19872C5 {
  ::S19872C5 s19872c10f0;
  virtual void  v9(); // _ZN9S19872C102v9Ev
  virtual void  v10(); // _ZN9S19872C103v10Ev
  ~S19872C10(); // tgen
  S19872C10(); // tgen
};
//SIG(-1 S19872C10) C1{ BC2{ v3 Fp[7] FL Fs} v1 v2 FC2}


void  S19872C10 ::v9(){vfunc_called(this, "_ZN9S19872C102v9Ev");}
void  S19872C10 ::v10(){vfunc_called(this, "_ZN9S19872C103v10Ev");}
S19872C10 ::~S19872C10(){ note_dtor("S19872C10", this);} // tgen
S19872C10 ::S19872C10(){ note_ctor("S19872C10", this);} // tgen

static void Test_S19872C10()
{
  extern Class_Descriptor cd_S19872C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,23)];
    init_test(&cd_S19872C10, buf);
    S19872C10 *dp, &lv = *(dp=new (buf) S19872C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S19872C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19872C10)");
    check_base_class_offset(lv, (S19872C5*), 0, "S19872C10");
    check_field_offset(lv, s19872c10f0, ABISELECT(80,44), "S19872C10.s19872c10f0");
    test_class_info(&lv, &cd_S19872C10);
    dp->~S19872C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C10(Test_S19872C10, "S19872C10", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN9S19872C10C1Ev();
extern void _ZN9S19872C10D1Ev();
Name_Map name_map_S19872C10[] = {
  NSPAIR(_ZN9S19872C10C1Ev),
  NSPAIR(_ZN9S19872C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
static Base_Class bases_S19872C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19872C10[];
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY vtc_S19872C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C10[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
Class_Descriptor cd_S19872C10 = {  "S19872C10", // class name
  bases_S19872C10, 1,
  &(vtc_S19872C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI9S19872C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19872C10),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  S19872C12  : S19872C5 {
  virtual void  v11(); // _ZN9S19872C123v11Ev
  ~S19872C12(); // tgen
  S19872C12(); // tgen
};
//SIG(-1 S19872C12) C1{ BC2{ v2 Fp[7] FL Fs} v1}


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

static void Test_S19872C12()
{
  extern Class_Descriptor cd_S19872C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S19872C12, buf);
    S19872C12 *dp, &lv = *(dp=new (buf) S19872C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S19872C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19872C12)");
    check_base_class_offset(lv, (S19872C5*), 0, "S19872C12");
    test_class_info(&lv, &cd_S19872C12);
    dp->~S19872C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C12(Test_S19872C12, "S19872C12", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN9S19872C12C1Ev();
extern void _ZN9S19872C12D1Ev();
Name_Map name_map_S19872C12[] = {
  NSPAIR(_ZN9S19872C12C1Ev),
  NSPAIR(_ZN9S19872C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
static Base_Class bases_S19872C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19872C12[];
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
static  VTBL_ENTRY vtc_S19872C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C12[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
};
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
Class_Descriptor cd_S19872C12 = {  "S19872C12", // class name
  bases_S19872C12, 1,
  &(vtc_S19872C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI9S19872C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19872C12),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  S19872C11  : virtual S19872C10 , S3164C31_nt , virtual S19872C5 , S19872C12 {
  virtual void  v12(); // _ZN9S19872C113v12Ev
  virtual void  v13(); // _ZN9S19872C113v13Ev
  virtual void  v14(); // _ZN9S19872C113v14Ev
  ~S19872C11(); // tgen
  S19872C11(); // tgen
};
//SIG(-1 S19872C11) C1{ VBC2{ BC3{ v4 Fp[7] FL Fs} v5 v6 FC3} BC4{ m} VBC3 BC5{ BC3 v7} v1 v2 v3}


void  S19872C11 ::v12(){vfunc_called(this, "_ZN9S19872C113v12Ev");}
void  S19872C11 ::v13(){vfunc_called(this, "_ZN9S19872C113v13Ev");}
void  S19872C11 ::v14(){vfunc_called(this, "_ZN9S19872C113v14Ev");}
S19872C11 ::~S19872C11(){ note_dtor("S19872C11", this);} // tgen
S19872C11 ::S19872C11(){ note_ctor("S19872C11", this);} // tgen

static void Test_S19872C11()
{
  extern Class_Descriptor cd_S19872C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,45)];
    init_test(&cd_S19872C11, buf);
    S19872C11 *dp, &lv = *(dp=new (buf) S19872C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,176), "sizeof(S19872C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19872C11)");
    check_base_class_offset(lv, (S19872C5*)(S19872C10*), ABISELECT(80,44), "S19872C11");
    check_base_class_offset(lv, (S19872C10*), ABISELECT(80,44), "S19872C11");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S19872C11");
    /*is_ambiguous_... S19872C11::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*), ABISELECT(240,132), "S19872C11");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*), 0, "S19872C11");
    check_base_class_offset(lv, (S19872C12*), 0, "S19872C11");
    test_class_info(&lv, &cd_S19872C11);
    dp->~S19872C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C11(Test_S19872C11, "S19872C11", ABISELECT(320,176));

#else // __cplusplus

extern void _ZN9S19872C11C1Ev();
extern void _ZN9S19872C11D1Ev();
Name_Map name_map_S19872C11[] = {
  NSPAIR(_ZN9S19872C11C1Ev),
  NSPAIR(_ZN9S19872C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C10;
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
static Base_Class bases_S19872C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19872C10,    ABISELECT(80,44), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19872C5,    ABISELECT(240,132), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19872C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI9S19872C11[];
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY vtc_S19872C11[] = {
  ABISELECT(240,132),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
  0,
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
  0,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern VTBL_ENTRY _ZTV9S19872C11[];
static  VTT_ENTRY vtt_S19872C11[] = {
  {&(_ZTV9S19872C11[4]),  4,21},
  {&(_ZTV9S19872C11[14]),  14,21},
  {&(_ZTV9S19872C11[20]),  20,21},
};
extern VTBL_ENTRY _ZTI9S19872C11[];
extern  VTBL_ENTRY _ZTV9S19872C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C11[];
Class_Descriptor cd_S19872C11 = {  "S19872C11", // class name
  bases_S19872C11, 6,
  &(vtc_S19872C11[0]), // expected_vtbl_contents
  &(vtt_S19872C11[0]), // expected_vtt_contents
  ABISELECT(320,176), // object size
  NSPAIRA(_ZTI9S19872C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19872C11),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19872C11),3, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C13  : S19872C12 {
  int s19872c13f0;
  virtual void  v15(); // _ZN9S19872C133v15Ev
  virtual void  v16(); // _ZN9S19872C133v16Ev
  ~S19872C13(); // tgen
  S19872C13(); // tgen
};
//SIG(-1 S19872C13) C1{ BC2{ BC3{ v3 Fp[7] FL Fs} v4} v1 v2 Fi}


void  S19872C13 ::v15(){vfunc_called(this, "_ZN9S19872C133v15Ev");}
void  S19872C13 ::v16(){vfunc_called(this, "_ZN9S19872C133v16Ev");}
S19872C13 ::~S19872C13(){ note_dtor("S19872C13", this);} // tgen
S19872C13 ::S19872C13(){ note_ctor("S19872C13", this);} // tgen

static void Test_S19872C13()
{
  extern Class_Descriptor cd_S19872C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S19872C13, buf);
    S19872C13 *dp, &lv = *(dp=new (buf) S19872C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19872C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19872C13)");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*), 0, "S19872C13");
    check_base_class_offset(lv, (S19872C12*), 0, "S19872C13");
    check_field_offset(lv, s19872c13f0, ABISELECT(76,44), "S19872C13.s19872c13f0");
    test_class_info(&lv, &cd_S19872C13);
    dp->~S19872C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C13(Test_S19872C13, "S19872C13", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN9S19872C13C1Ev();
extern void _ZN9S19872C13D1Ev();
Name_Map name_map_S19872C13[] = {
  NSPAIR(_ZN9S19872C13C1Ev),
  NSPAIR(_ZN9S19872C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
static Base_Class bases_S19872C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19872C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19872C13[];
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY vtc_S19872C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C13[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern VTBL_ENTRY _ZTI9S19872C13[];
extern  VTBL_ENTRY _ZTV9S19872C13[];
Class_Descriptor cd_S19872C13 = {  "S19872C13", // class name
  bases_S19872C13, 2,
  &(vtc_S19872C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI9S19872C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19872C13),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C8  : virtual S19872C9 , virtual S19872C10 , virtual S19872C11 , virtual S19872C13 , S3164C31_nt {
  long double s19872c8f0[2];
  virtual void  v17(); // _ZN8S19872C83v17Ev
  virtual void  v18(); // _ZN8S19872C83v18Ev
  ~S19872C8(); // tgen
  S19872C8(); // tgen
};
//SIG(-1 S19872C8) C1{ VBC2{ BC3{ m} BC4{ v3 Fp[7] FL Fs} v4 Fi} VBC5{ BC4 v5 v6 FC4} VBC6{ VBC5 BC3 VBC4 BC7{ BC4 v7} v8 v9 v10} VBC8{ BC7 v11 v12 Fi} BC3 v1 v2 FD[2]}


void  S19872C8 ::v17(){vfunc_called(this, "_ZN8S19872C83v17Ev");}
void  S19872C8 ::v18(){vfunc_called(this, "_ZN8S19872C83v18Ev");}
S19872C8 ::~S19872C8(){ note_dtor("S19872C8", this);} // tgen
S19872C8 ::S19872C8(){ note_ctor("S19872C8", this);} // tgen

static void Test_S19872C8()
{
  extern Class_Descriptor cd_S19872C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(34,76)];
    init_test(&cd_S19872C8, buf);
    S19872C8 *dp, &lv = *(dp=new (buf) S19872C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,300), "sizeof(S19872C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19872C8)");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C9*), ABISELECT(48,28), "S19872C8");
    check_base_class_offset(lv, (S19872C5*)(S19872C9*), ABISELECT(48,28), "S19872C8");
    check_base_class_offset(lv, (S19872C9*), ABISELECT(48,28), "S19872C8");
    check_base_class_offset(lv, (S19872C5*)(S19872C10*), ABISELECT(128,76), "S19872C8");
    check_base_class_offset(lv, (S19872C10*), ABISELECT(128,76), "S19872C8");
    check_base_class_offset(lv, (S19872C10*)(S19872C11*), ABISELECT(128,76), "S19872C8");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C11*), ABISELECT(288,164), "S19872C8");
    /*is_ambiguous_... S19872C11::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C11*), ABISELECT(368,208), "S19872C8");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C11*), ABISELECT(288,164), "S19872C8");
    check_base_class_offset(lv, (S19872C12*)(S19872C11*), ABISELECT(288,164), "S19872C8");
    check_base_class_offset(lv, (S19872C11*), ABISELECT(288,164), "S19872C8");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C13*), ABISELECT(448,252), "S19872C8");
    check_base_class_offset(lv, (S19872C12*)(S19872C13*), ABISELECT(448,252), "S19872C8");
    check_base_class_offset(lv, (S19872C13*), ABISELECT(448,252), "S19872C8");
    /*is_ambiguous_... S19872C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S19872C8");
    check_field_offset(lv, s19872c8f0, ABISELECT(16,4), "S19872C8.s19872c8f0");
    test_class_info(&lv, &cd_S19872C8);
    dp->~S19872C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C8(Test_S19872C8, "S19872C8", ABISELECT(528,300));

#else // __cplusplus

extern void _ZN8S19872C8C1Ev();
extern void _ZN8S19872C8D1Ev();
Name_Map name_map_S19872C8[] = {
  NSPAIR(_ZN8S19872C8C1Ev),
  NSPAIR(_ZN8S19872C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C9;
extern VTBL_ENTRY _ZTI8S19872C9[];
extern  VTBL_ENTRY _ZTV8S19872C9[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C10;
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C11;
extern VTBL_ENTRY _ZTI9S19872C11[];
extern  VTBL_ENTRY _ZTV9S19872C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C11[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C13;
extern VTBL_ENTRY _ZTI9S19872C13[];
extern  VTBL_ENTRY _ZTV9S19872C13[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S19872C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_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
    2, //immediately_derived
  0, 0},
  {&cd_S19872C5,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19872C9,    ABISELECT(48,28), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19872C5,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19872C10,    ABISELECT(128,76), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_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
    9, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(368,208), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19872C5,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(288,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19872C11,    ABISELECT(288,164), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19872C5,    ABISELECT(448,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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(448,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19872C13,    ABISELECT(448,252), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19872C8[];
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY vtc_S19872C8[] = {
  ABISELECT(448,252),
  ABISELECT(368,208),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-252),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern VTBL_ENTRY _ZTV8S19872C8[];
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C8[] = {
  ABISELECT(80,44),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C11__8S19872C8[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A1__9S19872C11__8S19872C8[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
static  VTT_ENTRY vtt_S19872C8[] = {
  {&(_ZTV8S19872C8[7]),  7,51},
  {&(_ZTV8S19872C8[13]),  13,51},
  {&(_ZTV8S19872C8[20]),  20,51},
  {&(_ZTV8S19872C8[32]),  32,51},
  {&(_ZTV8S19872C8[40]),  40,51},
  {&(_ZTV8S19872C8[47]),  47,51},
  {&(_tg__ZTV9S19872C11__8S19872C8[4]),  4,9},
  {&(_tg__ZTV9S19872C10__9S19872C11__8S19872C8[5]),  5,8},
  {&(_tg__ZTV8S19872C5__A1__9S19872C11__8S19872C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19872C8[];
extern  VTBL_ENTRY _ZTV8S19872C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C8[];
Class_Descriptor cd_S19872C8 = {  "S19872C8", // class name
  bases_S19872C8, 14,
  &(vtc_S19872C8[0]), // expected_vtbl_contents
  &(vtt_S19872C8[0]), // expected_vtt_contents
  ABISELECT(528,300), // object size
  NSPAIRA(_ZTI8S19872C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19872C8),51, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19872C8),9, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C6  : virtual S19872C5 , virtual S19872C7 , virtual S19872C8 , virtual S3164C31_nt {
  void *s19872c6f0;
  long double s19872c6f1;
  virtual void  v19(); // _ZN8S19872C63v19Ev
  ~S19872C6(); // tgen
  S19872C6(); // tgen
};
//SIG(-1 S19872C6) C1{ VBC2{ v2 Fp[7] FL Fs} VBC3{ VBC2 v3 v4} VBC4{ VBC5{ BC6{ m} BC2 v5 Fi} VBC7{ BC2 v6 v7 FC2} VBC8{ VBC7 BC6 VBC2 BC9{ BC2 v8} v9 v10 v11} VBC10{ BC9 v12 v13 Fi} BC6 v14 v15 FD[2]} VBC6 v1 Fp FD}


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

static void Test_S19872C6()
{
  extern Class_Descriptor cd_S19872C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,81)];
    init_test(&cd_S19872C6, buf);
    S19872C6 *dp, &lv = *(dp=new (buf) S19872C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,320), "sizeof(S19872C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19872C6)");
    /*is_ambiguous_... S19872C6::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*), ABISELECT(32,20), "S19872C6");
    check_base_class_offset(lv, (S19872C5*)(S19872C7*), ABISELECT(32,20), "S19872C6");
    /*is_ambiguous_... S19872C11::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C11*), ABISELECT(32,20), "S19872C6");
    check_base_class_offset(lv, (S19872C7*), 0, "S19872C6");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C9*), ABISELECT(160,92), "S19872C6");
    check_base_class_offset(lv, (S19872C5*)(S19872C9*), ABISELECT(160,92), "S19872C6");
    check_base_class_offset(lv, (S19872C9*)(S19872C8*), ABISELECT(160,92), "S19872C6");
    check_base_class_offset(lv, (S19872C5*)(S19872C10*), ABISELECT(240,140), "S19872C6");
    check_base_class_offset(lv, (S19872C10*)(S19872C8*), ABISELECT(240,140), "S19872C6");
    check_base_class_offset(lv, (S19872C10*)(S19872C11*), ABISELECT(240,140), "S19872C6");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C11*), ABISELECT(400,228), "S19872C6");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C11*), ABISELECT(400,228), "S19872C6");
    check_base_class_offset(lv, (S19872C12*)(S19872C11*), ABISELECT(400,228), "S19872C6");
    check_base_class_offset(lv, (S19872C11*)(S19872C8*), ABISELECT(400,228), "S19872C6");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C13*), ABISELECT(480,272), "S19872C6");
    check_base_class_offset(lv, (S19872C12*)(S19872C13*), ABISELECT(480,272), "S19872C6");
    check_base_class_offset(lv, (S19872C13*)(S19872C8*), ABISELECT(480,272), "S19872C6");
    /*is_ambiguous_... S19872C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C8*), ABISELECT(112,64), "S19872C6");
    check_base_class_offset(lv, (S19872C8*), ABISELECT(112,64), "S19872C6");
    /*is_ambiguous_... S19872C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S19872C6");
    check_field_offset(lv, s19872c6f0, ABISELECT(8,4), "S19872C6.s19872c6f0");
    check_field_offset(lv, s19872c6f1, ABISELECT(16,8), "S19872C6.s19872c6f1");
    test_class_info(&lv, &cd_S19872C6);
    dp->~S19872C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C6(Test_S19872C6, "S19872C6", ABISELECT(560,320));

#else // __cplusplus

extern void _ZN8S19872C6C1Ev();
extern void _ZN8S19872C6D1Ev();
Name_Map name_map_S19872C6[] = {
  NSPAIR(_ZN8S19872C6C1Ev),
  NSPAIR(_ZN8S19872C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C9;
extern VTBL_ENTRY _ZTI8S19872C9[];
extern  VTBL_ENTRY _ZTV8S19872C9[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C10;
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C11;
extern VTBL_ENTRY _ZTI9S19872C11[];
extern  VTBL_ENTRY _ZTV9S19872C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C11[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C13;
extern VTBL_ENTRY _ZTI9S19872C13[];
extern  VTBL_ENTRY _ZTV9S19872C13[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C8;
extern VTBL_ENTRY _ZTI8S19872C8[];
extern  VTBL_ENTRY _ZTV8S19872C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S19872C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    ABISELECT(32,20), //bcp->offset
    15, //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_S19872C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_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
    4, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19872C9,    ABISELECT(160,92), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19872C10,    ABISELECT(240,140), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19872C11,    ABISELECT(400,228), //bcp->offset
    44, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(480,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(480,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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19872C13,    ABISELECT(480,272), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_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
    15, //immediately_derived
  0, 0},
  {&cd_S19872C8,    ABISELECT(112,64), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19872C6[];
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY vtc_S19872C6[] = {
  0,
  ABISELECT(480,272),
  ABISELECT(400,228),
  ABISELECT(240,140),
  ABISELECT(160,92),
  ABISELECT(112,64),
  0,
  0,
  0,
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-80,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
  0,
  0,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
  0,
  0,
  0,
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  ABISELECT(-160,-88),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-272),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern VTBL_ENTRY _ZTV8S19872C6[];
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__8S19872C6[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C7__8S19872C6[] = {
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C6[] = {
  ABISELECT(368,208),
  ABISELECT(-80,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C8__8S19872C6[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C8__8S19872C6[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C8__8S19872C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__8S19872C8__8S19872C6[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C8__8S19872C6[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C6[] = {
  ABISELECT(-368,-208),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C11__8S19872C6[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A1__9S19872C11__8S19872C6[] = {
  0,
  ABISELECT(368,208),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
static  VTT_ENTRY vtt_S19872C6[] = {
  {&(_ZTV8S19872C6[12]),  12,68},
  {&(_ZTV8S19872C6[18]),  18,68},
  {&(_ZTV8S19872C6[12]),  12,68},
  {&(_ZTV8S19872C6[28]),  28,68},
  {&(_ZTV8S19872C6[34]),  34,68},
  {&(_ZTV8S19872C6[41]),  41,68},
  {&(_ZTV8S19872C6[53]),  53,68},
  {&(_ZTV8S19872C6[64]),  64,68},
  {&(_tg__ZTV8S19872C7__8S19872C6[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C7__8S19872C6[3]),  3,4},
  {&(_tg__ZTV8S19872C8__8S19872C6[7]),  7,9},
  {&(_tg__ZTV8S19872C9__8S19872C8__8S19872C6[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C8__8S19872C6[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C8__8S19872C6[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__8S19872C8__8S19872C6[3]),  3,4},
  {&(_tg__ZTV9S19872C13__8S19872C8__8S19872C6[6]),  6,10},
  {&(_tg__ZTV9S19872C11__8S19872C6[4]),  4,9},
  {&(_tg__ZTV9S19872C10__9S19872C11__8S19872C6[5]),  5,8},
  {&(_tg__ZTV8S19872C5__A1__9S19872C11__8S19872C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19872C6[];
extern  VTBL_ENTRY _ZTV8S19872C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C6[];
Class_Descriptor cd_S19872C6 = {  "S19872C6", // class name
  bases_S19872C6, 17,
  &(vtc_S19872C6[0]), // expected_vtbl_contents
  &(vtt_S19872C6[0]), // expected_vtt_contents
  ABISELECT(560,320), // object size
  NSPAIRA(_ZTI8S19872C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19872C6),68, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19872C6),19, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C14  : virtual S19872C10 , virtual S19872C8 , virtual S3164C31_nt {
  long double s19872c14f0;
  virtual  ~S19872C14(); // _ZN9S19872C14D2Ev
  virtual void  v20(); // _ZN9S19872C143v20Ev
  S19872C14(); // tgen
};
//SIG(-1 S19872C14) C1{ VBC2{ BC3{ v2 Fp[7] FL Fs} v3 v4 FC3} VBC4{ VBC5{ BC6{ m} BC3 v5 Fi} VBC2 VBC7{ VBC2 BC6 VBC3 BC8{ BC3 v6} v7 v8 v9} VBC9{ BC8 v10 v11 Fi} BC6 v12 v13 FD[2]} VBC6 vd v1 FD}


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

static void Test_S19872C14()
{
  extern Class_Descriptor cd_S19872C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,80)];
    init_test(&cd_S19872C14, buf);
    S19872C14 *dp, &lv = *(dp=new (buf) S19872C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,316), "sizeof(S19872C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19872C14)");
    check_base_class_offset(lv, (S19872C5*)(S19872C10*), ABISELECT(32,16), "S19872C14");
    check_base_class_offset(lv, (S19872C10*), ABISELECT(32,16), "S19872C14");
    check_base_class_offset(lv, (S19872C10*)(S19872C8*), ABISELECT(32,16), "S19872C14");
    check_base_class_offset(lv, (S19872C10*)(S19872C11*), ABISELECT(32,16), "S19872C14");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C9*), ABISELECT(240,132), "S19872C14");
    check_base_class_offset(lv, (S19872C5*)(S19872C9*), ABISELECT(240,132), "S19872C14");
    check_base_class_offset(lv, (S19872C9*)(S19872C8*), ABISELECT(240,132), "S19872C14");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C11*), ABISELECT(320,180), "S19872C14");
    /*is_ambiguous_... S19872C11::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C11*), ABISELECT(400,224), "S19872C14");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C11*), ABISELECT(320,180), "S19872C14");
    check_base_class_offset(lv, (S19872C12*)(S19872C11*), ABISELECT(320,180), "S19872C14");
    check_base_class_offset(lv, (S19872C11*)(S19872C8*), ABISELECT(320,180), "S19872C14");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C13*), ABISELECT(480,268), "S19872C14");
    check_base_class_offset(lv, (S19872C12*)(S19872C13*), ABISELECT(480,268), "S19872C14");
    check_base_class_offset(lv, (S19872C13*)(S19872C8*), ABISELECT(480,268), "S19872C14");
    /*is_ambiguous_... S19872C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C8*), ABISELECT(192,104), "S19872C14");
    check_base_class_offset(lv, (S19872C8*), ABISELECT(192,104), "S19872C14");
    /*is_ambiguous_... S19872C14::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S19872C14");
    check_field_offset(lv, s19872c14f0, ABISELECT(16,4), "S19872C14.s19872c14f0");
    test_class_info(&lv, &cd_S19872C14);
    dp->~S19872C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C14(Test_S19872C14, "S19872C14", ABISELECT(560,316));

#else // __cplusplus

extern void _ZN9S19872C14C1Ev();
extern void _ZN9S19872C14D2Ev();
Name_Map name_map_S19872C14[] = {
  NSPAIR(_ZN9S19872C14C1Ev),
  NSPAIR(_ZN9S19872C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C10;
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C9;
extern VTBL_ENTRY _ZTI8S19872C9[];
extern  VTBL_ENTRY _ZTV8S19872C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C11;
extern VTBL_ENTRY _ZTI9S19872C11[];
extern  VTBL_ENTRY _ZTV9S19872C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C11[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C13;
extern VTBL_ENTRY _ZTI9S19872C13[];
extern  VTBL_ENTRY _ZTV9S19872C13[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C8;
extern VTBL_ENTRY _ZTI8S19872C8[];
extern  VTBL_ENTRY _ZTV8S19872C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S19872C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    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
  0, 0},
  {&cd_S19872C10,    ABISELECT(32,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_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
    4, //immediately_derived
  0, 0},
  {&cd_S19872C5,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19872C9,    ABISELECT(240,132), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(400,224), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(320,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19872C11,    ABISELECT(320,180), //bcp->offset
    37, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(480,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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(480,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19872C13,    ABISELECT(480,268), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19872C8,    ABISELECT(192,104), //bcp->offset
    20, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19872C14[];
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY vtc_S19872C14[] = {
  0,
  ABISELECT(480,268),
  ABISELECT(400,224),
  ABISELECT(320,180),
  ABISELECT(240,132),
  ABISELECT(192,104),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
  0,
  0,
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
  0,
  0,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
  0,
  ABISELECT(-400,-224),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern VTBL_ENTRY _ZTV9S19872C14[];
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C14[] = {
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C8__9S19872C14[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C8__9S19872C14[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C8__9S19872C14[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__8S19872C8__9S19872C14[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C8__9S19872C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C14[] = {
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C11__9S19872C14[] = {
  0,
  0,
  0,
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A1__9S19872C11__9S19872C14[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
static  VTT_ENTRY vtt_S19872C14[] = {
  {&(_ZTV9S19872C14[9]),  9,65},
  {&(_ZTV9S19872C14[17]),  17,65},
  {&(_ZTV9S19872C14[29]),  29,65},
  {&(_ZTV9S19872C14[35]),  35,65},
  {&(_ZTV9S19872C14[46]),  46,65},
  {&(_ZTV9S19872C14[54]),  54,65},
  {&(_ZTV9S19872C14[61]),  61,65},
  {&(_tg__ZTV8S19872C8__9S19872C14[7]),  7,9},
  {&(_tg__ZTV8S19872C9__8S19872C8__9S19872C14[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C8__9S19872C14[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C8__9S19872C14[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__8S19872C8__9S19872C14[3]),  3,4},
  {&(_tg__ZTV9S19872C13__8S19872C8__9S19872C14[6]),  6,10},
  {&(_tg__ZTV9S19872C11__9S19872C14[4]),  4,9},
  {&(_tg__ZTV9S19872C10__9S19872C11__9S19872C14[5]),  5,8},
  {&(_tg__ZTV8S19872C5__A1__9S19872C11__9S19872C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
Class_Descriptor cd_S19872C14 = {  "S19872C14", // class name
  bases_S19872C14, 16,
  &(vtc_S19872C14[0]), // expected_vtbl_contents
  &(vtt_S19872C14[0]), // expected_vtt_contents
  ABISELECT(560,316), // object size
  NSPAIRA(_ZTI9S19872C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19872C14),65, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19872C14),16, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C4  : virtual S19872C5 , S19872C6 , S19872C14 , S19872C7 {
  void *s19872c4f0[25];
  short s19872c4f1;
  ::S19872C10 s19872c4f2;
  virtual  ~S19872C4(); // _ZN8S19872C4D2Ev
  virtual void  v21(); // _ZN8S19872C43v21Ev
  virtual void  v22(); // _ZN8S19872C43v22Ev
  virtual void  v23(); // _ZN8S19872C43v23Ev
  virtual void  v24(); // _ZN8S19872C43v24Ev
  S19872C4(); // tgen
};
//SIG(-1 S19872C4) C1{ VBC2{ v5 Fp[7] FL Fs} BC3{ VBC2 VBC4{ VBC2 v6 v7} VBC5{ VBC6{ BC7{ m} BC2 v8 Fi} VBC8{ BC2 v9 v10 FC2} VBC9{ VBC8 BC7 VBC2 BC10{ BC2 v11} v12 v13 v14} VBC11{ BC10 v15 v16 Fi} BC7 v17 v18 FD[2]} VBC7 v19 Fp FD} BC12{ VBC8 VBC5 VBC7 vd v20 FD} BC4 vd v1 v2 v3 v4 Fp[25] Fs FC8}


 S19872C4 ::~S19872C4(){ note_dtor("S19872C4", this);}
void  S19872C4 ::v21(){vfunc_called(this, "_ZN8S19872C43v21Ev");}
void  S19872C4 ::v22(){vfunc_called(this, "_ZN8S19872C43v22Ev");}
void  S19872C4 ::v23(){vfunc_called(this, "_ZN8S19872C43v23Ev");}
void  S19872C4 ::v24(){vfunc_called(this, "_ZN8S19872C43v24Ev");}
S19872C4 ::S19872C4(){ note_ctor("S19872C4", this);} // tgen

static void Test_S19872C4()
{
  extern Class_Descriptor cd_S19872C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(62,134)];
    init_test(&cd_S19872C4, buf);
    S19872C4 *dp, &lv = *(dp=new (buf) S19872C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(976,532), "sizeof(S19872C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19872C4)");
    /*is_ambiguous_... S19872C4::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*), ABISELECT(440,232), "S19872C4");
    /*is_ambiguous_... S19872C6::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C6*), ABISELECT(440,232), "S19872C4");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*), ABISELECT(440,232), "S19872C4");
    /*is_ambiguous_... S19872C11::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C11*), ABISELECT(440,232), "S19872C4");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*), ABISELECT(440,232), "S19872C4");
    check_base_class_offset(lv, (S19872C7*)(S19872C6*), 0, "S19872C4");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C9*), ABISELECT(576,304), "S19872C4");
    check_base_class_offset(lv, (S19872C5*)(S19872C9*), ABISELECT(576,304), "S19872C4");
    check_base_class_offset(lv, (S19872C9*)(S19872C8*), ABISELECT(576,304), "S19872C4");
    check_base_class_offset(lv, (S19872C5*)(S19872C10*), ABISELECT(656,352), "S19872C4");
    check_base_class_offset(lv, (S19872C10*)(S19872C8*), ABISELECT(656,352), "S19872C4");
    check_base_class_offset(lv, (S19872C10*)(S19872C11*), ABISELECT(656,352), "S19872C4");
    check_base_class_offset(lv, (S19872C10*)(S19872C14*), ABISELECT(656,352), "S19872C4");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C11*), ABISELECT(816,440), "S19872C4");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C11*), ABISELECT(816,440), "S19872C4");
    check_base_class_offset(lv, (S19872C12*)(S19872C11*), ABISELECT(816,440), "S19872C4");
    check_base_class_offset(lv, (S19872C11*)(S19872C8*), ABISELECT(816,440), "S19872C4");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C13*), ABISELECT(896,484), "S19872C4");
    check_base_class_offset(lv, (S19872C12*)(S19872C13*), ABISELECT(896,484), "S19872C4");
    check_base_class_offset(lv, (S19872C13*)(S19872C8*), ABISELECT(896,484), "S19872C4");
    /*is_ambiguous_... S19872C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C8*), ABISELECT(528,276), "S19872C4");
    check_base_class_offset(lv, (S19872C8*)(S19872C6*), ABISELECT(528,276), "S19872C4");
    check_base_class_offset(lv, (S19872C8*)(S19872C14*), ABISELECT(528,276), "S19872C4");
    /*is_ambiguous_... S19872C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C6*), 0, "S19872C4");
    /*is_ambiguous_... S19872C14::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*), 0, "S19872C4");
    check_base_class_offset(lv, (S19872C6*), 0, "S19872C4");
    check_base_class_offset(lv, (S19872C14*), ABISELECT(32,20), "S19872C4");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C7*), ABISELECT(64,36), "S19872C4");
    check_field_offset(lv, s19872c4f0, ABISELECT(72,40), "S19872C4.s19872c4f0");
    check_field_offset(lv, s19872c4f1, ABISELECT(272,140), "S19872C4.s19872c4f1");
    check_field_offset(lv, s19872c4f2, ABISELECT(280,144), "S19872C4.s19872c4f2");
    test_class_info(&lv, &cd_S19872C4);
    dp->~S19872C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C4(Test_S19872C4, "S19872C4", ABISELECT(976,532));

#else // __cplusplus

extern void _ZN8S19872C4C1Ev();
extern void _ZN8S19872C4D2Ev();
Name_Map name_map_S19872C4[] = {
  NSPAIR(_ZN8S19872C4C1Ev),
  NSPAIR(_ZN8S19872C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C9;
extern VTBL_ENTRY _ZTI8S19872C9[];
extern  VTBL_ENTRY _ZTV8S19872C9[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C10;
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C11;
extern VTBL_ENTRY _ZTI9S19872C11[];
extern  VTBL_ENTRY _ZTV9S19872C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C11[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C13;
extern VTBL_ENTRY _ZTI9S19872C13[];
extern  VTBL_ENTRY _ZTV9S19872C13[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C8;
extern VTBL_ENTRY _ZTI8S19872C8[];
extern  VTBL_ENTRY _ZTV8S19872C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C6;
extern VTBL_ENTRY _ZTI8S19872C6[];
extern  VTBL_ENTRY _ZTV8S19872C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C6[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
static Base_Class bases_S19872C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    ABISELECT(440,232), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19872C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(576,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
    4, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19872C9,    ABISELECT(576,304), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19872C10,    ABISELECT(656,352), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(816,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
    10, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(816,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(816,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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19872C11,    ABISELECT(816,440), //bcp->offset
    67, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19872C13,    ABISELECT(896,484), //bcp->offset
    81, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(528,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
    15, //immediately_derived
  0, 0},
  {&cd_S19872C8,    ABISELECT(528,276), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19872C6,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19872C14,    ABISELECT(32,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19872C7,    ABISELECT(64,36), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19872C4[];
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void _ZN8S19872C4D1Ev();
extern void _ZN8S19872C4D0Ev();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
extern void ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev)();
extern void _ZN9S19872C143v20Ev();
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY vtc_S19872C4[] = {
  0,
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
  ABISELECT(-32,-20),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  ABISELECT(376,196),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern VTBL_ENTRY _ZTV8S19872C4[];
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C6__8S19872C4[] = {
  0,
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C6__8S19872C4[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C6__8S19872C4[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C6__8S19872C4[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C6__8S19872C4[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C6__8S19872C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C6__8S19872C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__8S19872C4[] = {
  ABISELECT(-32,-20),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C14__8S19872C4[] = {
  0,
  0,
  0,
  ABISELECT(-624,-332),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C14__8S19872C4[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-496,-256),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C14__8S19872C4[] = {
  0,
  0,
  ABISELECT(-544,-284),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C14__8S19872C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-784,-420),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C14__8S19872C4[] = {
  0,
  ABISELECT(-408,-212),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C14__8S19872C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-864,-464),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__A__8S19872C4[] = {
  ABISELECT(376,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C7__A__8S19872C4[] = {
  0,
  ABISELECT(-376,-196),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__8S19872C4[] = {
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C7__8S19872C4[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C4[] = {
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C8__8S19872C4[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C8__8S19872C4[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C8__8S19872C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__8S19872C8__8S19872C4[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C8__8S19872C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C4[] = {
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C11__8S19872C4[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A1__9S19872C11__8S19872C4[] = {
  0,
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
static  VTT_ENTRY vtt_S19872C4[] = {
  {&(_ZTV8S19872C4[12]),  12,91},
  {&(_tg__ZTV8S19872C6__8S19872C4[12]),  12,15},
  {&(_tg__ZTV8S19872C5__8S19872C6__8S19872C4[3]),  3,4},
  {&(_tg__ZTV8S19872C6__8S19872C4[12]),  12,15},
  {&(_tg__ZTV8S19872C8__8S19872C6__8S19872C4[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C6__8S19872C4[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C6__8S19872C4[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C6__8S19872C4[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C6__8S19872C4[6]),  6,10},
  {&(_tg__ZTV9S19872C14__8S19872C4[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C14__8S19872C4[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C14__8S19872C4[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C14__8S19872C4[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C14__8S19872C4[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C14__8S19872C4[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C14__8S19872C4[6]),  6,10},
  {&(_tg__ZTV8S19872C7__A__8S19872C4[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C7__A__8S19872C4[3]),  3,4},
  {&(_ZTV8S19872C4[41]),  41,91},
  {&(_ZTV8S19872C4[12]),  12,91},
  {&(_ZTV8S19872C4[51]),  51,91},
  {&(_ZTV8S19872C4[57]),  57,91},
  {&(_ZTV8S19872C4[64]),  64,91},
  {&(_ZTV8S19872C4[76]),  76,91},
  {&(_ZTV8S19872C4[87]),  87,91},
  {&(_ZTV8S19872C4[30]),  30,91},
  {&(_ZTV8S19872C4[36]),  36,91},
  {&(_tg__ZTV8S19872C7__8S19872C4[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C7__8S19872C4[3]),  3,4},
  {&(_tg__ZTV8S19872C8__8S19872C4[7]),  7,9},
  {&(_tg__ZTV8S19872C9__8S19872C8__8S19872C4[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C8__8S19872C4[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C8__8S19872C4[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__8S19872C8__8S19872C4[3]),  3,4},
  {&(_tg__ZTV9S19872C13__8S19872C8__8S19872C4[6]),  6,10},
  {&(_tg__ZTV9S19872C11__8S19872C4[4]),  4,9},
  {&(_tg__ZTV9S19872C10__9S19872C11__8S19872C4[5]),  5,8},
  {&(_tg__ZTV8S19872C5__A1__9S19872C11__8S19872C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19872C4[];
extern  VTBL_ENTRY _ZTV8S19872C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C4[];
Class_Descriptor cd_S19872C4 = {  "S19872C4", // class name
  bases_S19872C4, 20,
  &(vtc_S19872C4[0]), // expected_vtbl_contents
  &(vtt_S19872C4[0]), // expected_vtt_contents
  ABISELECT(976,532), // object size
  NSPAIRA(_ZTI8S19872C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19872C4),91, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19872C4),38, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C3  : S19872C4 {
  virtual void  v25(); // _ZN8S19872C33v25Ev
  virtual void  v26(); // _ZN8S19872C33v26Ev
  ~S19872C3(); // tgen
  S19872C3(); // tgen
};
//SIG(-1 S19872C3) C1{ BC2{ VBC3{ v3 Fp[7] FL Fs} BC4{ VBC3 VBC5{ VBC3 v4 v5} VBC6{ VBC7{ BC8{ m} BC3 v6 Fi} VBC9{ BC3 v7 v8 FC3} VBC10{ VBC9 BC8 VBC3 BC11{ BC3 v9} v10 v11 v12} VBC12{ BC11 v13 v14 Fi} BC8 v15 v16 FD[2]} VBC8 v17 Fp FD} BC13{ VBC9 VBC6 VBC8 vd v18 FD} BC5 vd v19 v20 v21 v22 Fp[25] Fs FC9} v1 v2}


void  S19872C3 ::v25(){vfunc_called(this, "_ZN8S19872C33v25Ev");}
void  S19872C3 ::v26(){vfunc_called(this, "_ZN8S19872C33v26Ev");}
S19872C3 ::~S19872C3(){ note_dtor("S19872C3", this);} // tgen
S19872C3 ::S19872C3(){ note_ctor("S19872C3", this);} // tgen

static void Test_S19872C3()
{
  extern Class_Descriptor cd_S19872C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(62,134)];
    init_test(&cd_S19872C3, buf);
    S19872C3 *dp, &lv = *(dp=new (buf) S19872C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(976,532), "sizeof(S19872C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19872C3)");
    /*is_ambiguous_... S19872C4::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C4*), ABISELECT(440,232), "S19872C3");
    /*is_ambiguous_... S19872C6::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C6*)(S19872C4*), ABISELECT(440,232), "S19872C3");
    /*is_ambiguous_... S19872C3::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*), ABISELECT(440,232), "S19872C3");
    /*is_ambiguous_... S19872C11::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C11*), ABISELECT(440,232), "S19872C3");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*)(S19872C4*), ABISELECT(440,232), "S19872C3");
    check_base_class_offset(lv, (S19872C7*)(S19872C6*)(S19872C4*), 0, "S19872C3");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C9*), ABISELECT(576,304), "S19872C3");
    check_base_class_offset(lv, (S19872C5*)(S19872C9*), ABISELECT(576,304), "S19872C3");
    check_base_class_offset(lv, (S19872C9*)(S19872C8*), ABISELECT(576,304), "S19872C3");
    check_base_class_offset(lv, (S19872C5*)(S19872C10*), ABISELECT(656,352), "S19872C3");
    check_base_class_offset(lv, (S19872C10*)(S19872C8*), ABISELECT(656,352), "S19872C3");
    check_base_class_offset(lv, (S19872C10*)(S19872C11*), ABISELECT(656,352), "S19872C3");
    check_base_class_offset(lv, (S19872C10*)(S19872C14*)(S19872C4*), ABISELECT(656,352), "S19872C3");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C11*), ABISELECT(816,440), "S19872C3");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C11*), ABISELECT(816,440), "S19872C3");
    check_base_class_offset(lv, (S19872C12*)(S19872C11*), ABISELECT(816,440), "S19872C3");
    check_base_class_offset(lv, (S19872C11*)(S19872C8*), ABISELECT(816,440), "S19872C3");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C13*), ABISELECT(896,484), "S19872C3");
    check_base_class_offset(lv, (S19872C12*)(S19872C13*), ABISELECT(896,484), "S19872C3");
    check_base_class_offset(lv, (S19872C13*)(S19872C8*), ABISELECT(896,484), "S19872C3");
    /*is_ambiguous_... S19872C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C8*), ABISELECT(528,276), "S19872C3");
    check_base_class_offset(lv, (S19872C8*)(S19872C6*)(S19872C4*), ABISELECT(528,276), "S19872C3");
    check_base_class_offset(lv, (S19872C8*)(S19872C14*)(S19872C4*), ABISELECT(528,276), "S19872C3");
    /*is_ambiguous_... S19872C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C6*)(S19872C4*), 0, "S19872C3");
    /*is_ambiguous_... S19872C14::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*)(S19872C4*), 0, "S19872C3");
    check_base_class_offset(lv, (S19872C6*)(S19872C4*), 0, "S19872C3");
    check_base_class_offset(lv, (S19872C14*)(S19872C4*), ABISELECT(32,20), "S19872C3");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C7*)(S19872C4*), ABISELECT(64,36), "S19872C3");
    check_base_class_offset(lv, (S19872C4*), 0, "S19872C3");
    test_class_info(&lv, &cd_S19872C3);
    dp->~S19872C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C3(Test_S19872C3, "S19872C3", ABISELECT(976,532));

#else // __cplusplus

extern void _ZN8S19872C3C1Ev();
extern void _ZN8S19872C3D1Ev();
Name_Map name_map_S19872C3[] = {
  NSPAIR(_ZN8S19872C3C1Ev),
  NSPAIR(_ZN8S19872C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C9;
extern VTBL_ENTRY _ZTI8S19872C9[];
extern  VTBL_ENTRY _ZTV8S19872C9[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C10;
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C11;
extern VTBL_ENTRY _ZTI9S19872C11[];
extern  VTBL_ENTRY _ZTV9S19872C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C11[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C13;
extern VTBL_ENTRY _ZTI9S19872C13[];
extern  VTBL_ENTRY _ZTV9S19872C13[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C8;
extern VTBL_ENTRY _ZTI8S19872C8[];
extern  VTBL_ENTRY _ZTV8S19872C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C6;
extern VTBL_ENTRY _ZTI8S19872C6[];
extern  VTBL_ENTRY _ZTV8S19872C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C6[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S19872C4;
extern VTBL_ENTRY _ZTI8S19872C4[];
extern  VTBL_ENTRY _ZTV8S19872C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C4[];
static Base_Class bases_S19872C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    ABISELECT(440,232), //bcp->offset
    40, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19872C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(576,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
    4, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(576,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19872C9,    ABISELECT(576,304), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19872C10,    ABISELECT(656,352), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(816,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
    10, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(816,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(816,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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19872C11,    ABISELECT(816,440), //bcp->offset
    69, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19872C13,    ABISELECT(896,484), //bcp->offset
    83, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(528,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
    15, //immediately_derived
  0, 0},
  {&cd_S19872C8,    ABISELECT(528,276), //bcp->offset
    44, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19872C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19872C14,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19872C7,    ABISELECT(64,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19872C4,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19872C3[];
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void _ZN8S19872C3D1Ev();
extern void _ZN8S19872C3D0Ev();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
extern void _ZN8S19872C33v25Ev();
extern void _ZN8S19872C33v26Ev();
extern void ABISELECT(_ZThn32_N8S19872C3D1Ev,_ZThn20_N8S19872C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19872C3D0Ev,_ZThn20_N8S19872C3D0Ev)();
extern void _ZN9S19872C143v20Ev();
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY vtc_S19872C3[] = {
  0,
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19872C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19872C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
  (VTBL_ENTRY)&_ZN8S19872C33v25Ev,
  (VTBL_ENTRY)&_ZN8S19872C33v26Ev,
  ABISELECT(-32,-20),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C3D1Ev,_ZThn20_N8S19872C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C3D0Ev,_ZThn20_N8S19872C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  ABISELECT(376,196),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern VTBL_ENTRY _ZTV8S19872C3[];
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void _ZN8S19872C4D1Ev();
extern void _ZN8S19872C4D0Ev();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C4__8S19872C3[] = {
  0,
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C68S19872C4__8S19872C3[] = {
  0,
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C68S19872C4__8S19872C3[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C68S19872C4__8S19872C3[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C68S19872C4__8S19872C3[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C68S19872C4__8S19872C3[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C68S19872C4__8S19872C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C68S19872C4__8S19872C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C148S19872C4__8S19872C3[] = {
  ABISELECT(-32,-20),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C148S19872C4__8S19872C3[] = {
  0,
  0,
  0,
  ABISELECT(-624,-332),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C148S19872C4__8S19872C3[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-496,-256),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C148S19872C4__8S19872C3[] = {
  0,
  0,
  ABISELECT(-544,-284),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C148S19872C4__8S19872C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-784,-420),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C148S19872C4__8S19872C3[] = {
  0,
  ABISELECT(-408,-212),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C148S19872C4__8S19872C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-864,-464),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C78S19872C4__A1__8S19872C3[] = {
  ABISELECT(376,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C78S19872C4__A1__8S19872C3[] = {
  0,
  ABISELECT(-376,-196),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C4__8S19872C3[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C4__8S19872C3[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C4__8S19872C3[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C4__8S19872C3[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C4__8S19872C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C4__8S19872C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev)();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__8S19872C4__8S19872C3[] = {
  ABISELECT(-32,-20),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__A__8S19872C4__8S19872C3[] = {
  ABISELECT(376,196),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__8S19872C3[] = {
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C7__8S19872C3[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C3[] = {
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C8__8S19872C3[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C8__8S19872C3[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C8__8S19872C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__8S19872C8__8S19872C3[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C8__8S19872C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C3[] = {
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C11__8S19872C3[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A1__9S19872C11__8S19872C3[] = {
  0,
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
static  VTT_ENTRY vtt_S19872C3[] = {
  {&(_ZTV8S19872C3[12]),  12,93},
  {&(_tg__ZTV8S19872C4__8S19872C3[12]),  12,21},
  {&(_tg__ZTV8S19872C68S19872C4__8S19872C3[12]),  12,15},
  {&(_tg__ZTV8S19872C5__8S19872C68S19872C4__8S19872C3[3]),  3,4},
  {&(_tg__ZTV8S19872C68S19872C4__8S19872C3[12]),  12,15},
  {&(_tg__ZTV8S19872C8__8S19872C68S19872C4__8S19872C3[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C68S19872C4__8S19872C3[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C68S19872C4__8S19872C3[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C68S19872C4__8S19872C3[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C68S19872C4__8S19872C3[6]),  6,10},
  {&(_tg__ZTV9S19872C148S19872C4__8S19872C3[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C148S19872C4__8S19872C3[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C148S19872C4__8S19872C3[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C148S19872C4__8S19872C3[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C148S19872C4__8S19872C3[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C148S19872C4__8S19872C3[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C148S19872C4__8S19872C3[6]),  6,10},
  {&(_tg__ZTV8S19872C78S19872C4__A1__8S19872C3[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C78S19872C4__A1__8S19872C3[3]),  3,4},
  {&(_tg__ZTV8S19872C5__8S19872C4__8S19872C3[3]),  3,4},
  {&(_tg__ZTV8S19872C4__8S19872C3[12]),  12,21},
  {&(_tg__ZTV8S19872C8__8S19872C4__8S19872C3[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C4__8S19872C3[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C4__8S19872C3[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C4__8S19872C3[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C4__8S19872C3[6]),  6,10},
  {&(_tg__ZTV9S19872C14__8S19872C4__8S19872C3[9]),  9,12},
  {&(_tg__ZTV8S19872C7__A__8S19872C4__8S19872C3[3]),  3,5},
  {&(_ZTV8S19872C3[43]),  43,93},
  {&(_ZTV8S19872C3[12]),  12,93},
  {&(_ZTV8S19872C3[53]),  53,93},
  {&(_ZTV8S19872C3[59]),  59,93},
  {&(_ZTV8S19872C3[66]),  66,93},
  {&(_ZTV8S19872C3[78]),  78,93},
  {&(_ZTV8S19872C3[89]),  89,93},
  {&(_ZTV8S19872C3[32]),  32,93},
  {&(_ZTV8S19872C3[38]),  38,93},
  {&(_tg__ZTV8S19872C7__8S19872C3[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C7__8S19872C3[3]),  3,4},
  {&(_tg__ZTV8S19872C8__8S19872C3[7]),  7,9},
  {&(_tg__ZTV8S19872C9__8S19872C8__8S19872C3[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C8__8S19872C3[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C8__8S19872C3[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__8S19872C8__8S19872C3[3]),  3,4},
  {&(_tg__ZTV9S19872C13__8S19872C8__8S19872C3[6]),  6,10},
  {&(_tg__ZTV9S19872C11__8S19872C3[4]),  4,9},
  {&(_tg__ZTV9S19872C10__9S19872C11__8S19872C3[5]),  5,8},
  {&(_tg__ZTV8S19872C5__A1__9S19872C11__8S19872C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19872C3[];
extern  VTBL_ENTRY _ZTV8S19872C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C3[];
Class_Descriptor cd_S19872C3 = {  "S19872C3", // class name
  bases_S19872C3, 21,
  &(vtc_S19872C3[0]), // expected_vtbl_contents
  &(vtt_S19872C3[0]), // expected_vtt_contents
  ABISELECT(976,532), // object size
  NSPAIRA(_ZTI8S19872C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19872C3),93, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19872C3),48, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C17  : virtual S19872C10 {
  void *s19872c17f0;
  ~S19872C17(); // tgen
  S19872C17(); // tgen
};
//SIG(-1 S19872C17) C1{ VBC2{ BC3{ v1 Fp[7] FL Fs} v2 v3 FC3} Fp}


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

static void Test_S19872C17()
{
  extern Class_Descriptor cd_S19872C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,25)];
    init_test(&cd_S19872C17, buf);
    S19872C17 *dp, &lv = *(dp=new (buf) S19872C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S19872C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19872C17)");
    check_base_class_offset(lv, (S19872C5*)(S19872C10*), ABISELECT(16,8), "S19872C17");
    check_base_class_offset(lv, (S19872C10*), ABISELECT(16,8), "S19872C17");
    check_field_offset(lv, s19872c17f0, ABISELECT(8,4), "S19872C17.s19872c17f0");
    test_class_info(&lv, &cd_S19872C17);
    dp->~S19872C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C17(Test_S19872C17, "S19872C17", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN9S19872C17C1Ev();
extern void _ZN9S19872C17D1Ev();
Name_Map name_map_S19872C17[] = {
  NSPAIR(_ZN9S19872C17C1Ev),
  NSPAIR(_ZN9S19872C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C10;
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
static Base_Class bases_S19872C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19872C10,    ABISELECT(16,8), //bcp->offset
    3, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19872C17[];
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY vtc_S19872C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C17[0]),
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19872C17[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern VTBL_ENTRY _ZTV9S19872C17[];
static  VTT_ENTRY vtt_S19872C17[] = {
  {&(_ZTV9S19872C17[3]),  3,11},
  {&(_ZTV9S19872C17[8]),  8,11},
};
extern VTBL_ENTRY _ZTI9S19872C17[];
extern  VTBL_ENTRY _ZTV9S19872C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C17[];
Class_Descriptor cd_S19872C17 = {  "S19872C17", // class name
  bases_S19872C17, 2,
  &(vtc_S19872C17[0]), // expected_vtbl_contents
  &(vtt_S19872C17[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI9S19872C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19872C17),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19872C17),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C16  : S19872C12 , S19872C4 , virtual S19872C14 , virtual S19872C17 {
  virtual  ~S19872C16(); // _ZN9S19872C16D2Ev
  virtual void  v27(); // _ZN9S19872C163v27Ev
  S19872C16(); // tgen
};
//SIG(-1 S19872C16) C1{ BC2{ BC3{ v2 Fp[7] FL Fs} v3} BC4{ VBC3 BC5{ VBC3 VBC6{ VBC3 v4 v5} VBC7{ VBC8{ BC9{ m} BC3 v6 Fi} VBC10{ BC3 v7 v8 FC3} VBC11{ VBC10 BC9 VBC3 BC2 v9 v10 v11} VBC12{ BC2 v12 v13 Fi} BC9 v14 v15 FD[2]} VBC9 v16 Fp FD} BC13{ VBC10 VBC7 VBC9 vd v17 FD} BC6 vd v18 v19 v20 v21 Fp[25] Fs FC10} VBC13 VBC14{ VBC10 Fp} vd v1}


 S19872C16 ::~S19872C16(){ note_dtor("S19872C16", this);}
void  S19872C16 ::v27(){vfunc_called(this, "_ZN9S19872C163v27Ev");}
S19872C16 ::S19872C16(){ note_ctor("S19872C16", this);} // tgen

static void Test_S19872C16()
{
  extern Class_Descriptor cd_S19872C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(70,151)];
    init_test(&cd_S19872C16, buf);
    S19872C16 *dp, &lv = *(dp=new (buf) S19872C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1104,600), "sizeof(S19872C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19872C16)");
    /*is_ambiguous_... S19872C16::S19872C12 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C12*), 0, "S19872C16");
    /*is_ambiguous_... S19872C16::S19872C12 */ AMB_check_base_class_offset(lv, (S19872C12*), 0, "S19872C16");
    /*is_ambiguous_... S19872C4::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C4*), ABISELECT(520,276), "S19872C16");
    /*is_ambiguous_... S19872C6::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C6*)(S19872C4*), ABISELECT(520,276), "S19872C16");
    /*is_ambiguous_... S19872C16::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*), ABISELECT(520,276), "S19872C16");
    /*is_ambiguous_... S19872C11::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C11*), ABISELECT(520,276), "S19872C16");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*)(S19872C4*), ABISELECT(520,276), "S19872C16");
    check_base_class_offset(lv, (S19872C7*)(S19872C6*)(S19872C4*), ABISELECT(80,44), "S19872C16");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C9*), ABISELECT(656,348), "S19872C16");
    check_base_class_offset(lv, (S19872C5*)(S19872C9*), ABISELECT(656,348), "S19872C16");
    check_base_class_offset(lv, (S19872C9*)(S19872C8*), ABISELECT(656,348), "S19872C16");
    check_base_class_offset(lv, (S19872C5*)(S19872C10*), ABISELECT(736,396), "S19872C16");
    check_base_class_offset(lv, (S19872C10*)(S19872C8*), ABISELECT(736,396), "S19872C16");
    check_base_class_offset(lv, (S19872C10*)(S19872C11*), ABISELECT(736,396), "S19872C16");
    check_base_class_offset(lv, (S19872C10*)(S19872C14*)(S19872C4*), ABISELECT(736,396), "S19872C16");
    /*is_ambiguous_... S19872C16::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C10*)(S19872C14*), ABISELECT(736,396), "S19872C16");
    check_base_class_offset(lv, (S19872C10*)(S19872C17*), ABISELECT(736,396), "S19872C16");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C11*), ABISELECT(896,484), "S19872C16");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C11*), ABISELECT(896,484), "S19872C16");
    check_base_class_offset(lv, (S19872C12*)(S19872C11*), ABISELECT(896,484), "S19872C16");
    check_base_class_offset(lv, (S19872C11*)(S19872C8*), ABISELECT(896,484), "S19872C16");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C13*), ABISELECT(976,528), "S19872C16");
    check_base_class_offset(lv, (S19872C12*)(S19872C13*), ABISELECT(976,528), "S19872C16");
    check_base_class_offset(lv, (S19872C13*)(S19872C8*), ABISELECT(976,528), "S19872C16");
    /*is_ambiguous_... S19872C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C8*), ABISELECT(608,320), "S19872C16");
    check_base_class_offset(lv, (S19872C8*)(S19872C6*)(S19872C4*), ABISELECT(608,320), "S19872C16");
    check_base_class_offset(lv, (S19872C8*)(S19872C14*)(S19872C4*), ABISELECT(608,320), "S19872C16");
    /*is_ambiguous_... S19872C16::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C8*)(S19872C14*), ABISELECT(608,320), "S19872C16");
    /*is_ambiguous_... S19872C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C6*)(S19872C4*), 0, "S19872C16");
    /*is_ambiguous_... S19872C14::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*)(S19872C4*), 0, "S19872C16");
    /*is_ambiguous_... S19872C16::S19872C14 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*), 0, "S19872C16");
    check_base_class_offset(lv, (S19872C6*)(S19872C4*), ABISELECT(80,44), "S19872C16");
    check_base_class_offset(lv, (S19872C14*)(S19872C4*), ABISELECT(112,64), "S19872C16");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C7*)(S19872C4*), ABISELECT(144,80), "S19872C16");
    check_base_class_offset(lv, (S19872C4*), ABISELECT(80,44), "S19872C16");
    /*is_ambiguous_... S19872C16::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C14*), ABISELECT(1056,576), "S19872C16");
    check_base_class_offset(lv, (S19872C17*), ABISELECT(1088,592), "S19872C16");
    test_class_info(&lv, &cd_S19872C16);
    dp->~S19872C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C16(Test_S19872C16, "S19872C16", ABISELECT(1104,600));

#else // __cplusplus

extern void _ZN9S19872C16C1Ev();
extern void _ZN9S19872C16D2Ev();
Name_Map name_map_S19872C16[] = {
  NSPAIR(_ZN9S19872C16C1Ev),
  NSPAIR(_ZN9S19872C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C9;
extern VTBL_ENTRY _ZTI8S19872C9[];
extern  VTBL_ENTRY _ZTV8S19872C9[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C10;
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C11;
extern VTBL_ENTRY _ZTI9S19872C11[];
extern  VTBL_ENTRY _ZTV9S19872C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C11[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C13;
extern VTBL_ENTRY _ZTI9S19872C13[];
extern  VTBL_ENTRY _ZTV9S19872C13[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C8;
extern VTBL_ENTRY _ZTI8S19872C8[];
extern  VTBL_ENTRY _ZTV8S19872C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C6;
extern VTBL_ENTRY _ZTI8S19872C6[];
extern  VTBL_ENTRY _ZTV8S19872C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C6[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S19872C4;
extern VTBL_ENTRY _ZTI8S19872C4[];
extern  VTBL_ENTRY _ZTV8S19872C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C4[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C17;
extern VTBL_ENTRY _ZTI9S19872C17[];
extern  VTBL_ENTRY _ZTV9S19872C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C17[];
static Base_Class bases_S19872C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19872C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19872C5,    ABISELECT(520,276), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19872C7,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19872C9,    ABISELECT(656,348), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(736,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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19872C10,    ABISELECT(736,396), //bcp->offset
    76, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(896,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19872C11,    ABISELECT(896,484), //bcp->offset
    84, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(976,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
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(976,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
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19872C13,    ABISELECT(976,528), //bcp->offset
    98, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(608,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
    17, //immediately_derived
  0, 0},
  {&cd_S19872C8,    ABISELECT(608,320), //bcp->offset
    59, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19872C6,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //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
    22, //immediately_derived
  0, 0},
  {&cd_S19872C14,    ABISELECT(112,64), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19872C7,    ABISELECT(144,80), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19872C4,    ABISELECT(80,44), //bcp->offset
    17, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19872C14,    ABISELECT(1056,576), //bcp->offset
    108, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19872C17,    ABISELECT(1088,592), //bcp->offset
    122, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19872C16[];
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C16D1Ev();
extern void _ZN9S19872C16D0Ev();
extern void _ZN9S19872C163v27Ev();
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void ABISELECT(_ZThn80_N9S19872C16D1Ev,_ZThn44_N9S19872C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19872C16D0Ev,_ZThn44_N9S19872C16D0Ev)();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
extern void ABISELECT(_ZThn112_N9S19872C16D1Ev,_ZThn64_N9S19872C16D1Ev)();
extern void ABISELECT(_ZThn112_N9S19872C16D0Ev,_ZThn64_N9S19872C16D0Ev)();
extern void _ZN9S19872C143v20Ev();
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
extern void ABISELECT(_ZTv0_n80_N9S19872C16D1Ev,_ZTv0_n40_N9S19872C16D1Ev)();
extern void ABISELECT(_ZThn1056_N9S19872C16D1Ev,_ZThn576_N9S19872C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19872C16D0Ev,_ZTv0_n40_N9S19872C16D0Ev)();
extern void ABISELECT(_ZThn1056_N9S19872C16D0Ev,_ZThn576_N9S19872C16D0Ev)() __attribute__((weak));
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY vtc_S19872C16[] = {
  ABISELECT(1088,592),
  ABISELECT(1056,576),
  0,
  ABISELECT(976,528),
  ABISELECT(896,484),
  ABISELECT(736,396),
  ABISELECT(656,348),
  ABISELECT(608,320),
  ABISELECT(80,44),
  ABISELECT(520,276),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C163v27Ev,
  ABISELECT(-80,-44),
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19872C16D1Ev,_ZThn44_N9S19872C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19872C16D0Ev,_ZThn44_N9S19872C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
  ABISELECT(-112,-64),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19872C16D1Ev,_ZThn64_N9S19872C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19872C16D0Ev,_ZThn64_N9S19872C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  ABISELECT(376,196),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  0,
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-608,-320),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
  0,
  0,
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
  0,
  0,
  0,
  ABISELECT(-736,-396),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-976,-528),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
  0,
  ABISELECT(-1056,-576),
  ABISELECT(-1056,-576),
  ABISELECT(-80,-48),
  ABISELECT(-536,-300),
  ABISELECT(-160,-92),
  ABISELECT(-400,-228),
  ABISELECT(-448,-256),
  ABISELECT(-320,-180),
  ABISELECT(-1056,-576),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19872C16D1Ev,_ZTv0_n40_N9S19872C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19872C16D0Ev,_ZTv0_n40_N9S19872C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  ABISELECT(-352,-196),
  ABISELECT(-1088,-592),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
};
extern VTBL_ENTRY _ZTV9S19872C16[];
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void _ZN8S19872C4D1Ev();
extern void _ZN8S19872C4D0Ev();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C4__9S19872C16[] = {
  ABISELECT(-80,-44),
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C68S19872C4__9S19872C16[] = {
  ABISELECT(-80,-44),
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C68S19872C4__9S19872C16[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C68S19872C4__9S19872C16[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C68S19872C4__9S19872C16[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C68S19872C4__9S19872C16[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C68S19872C4__9S19872C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C68S19872C4__9S19872C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C148S19872C4__9S19872C16[] = {
  ABISELECT(-112,-64),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C148S19872C4__9S19872C16[] = {
  0,
  0,
  0,
  ABISELECT(-624,-332),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C148S19872C4__9S19872C16[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-496,-256),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C148S19872C4__9S19872C16[] = {
  0,
  0,
  ABISELECT(-544,-284),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C148S19872C4__9S19872C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-784,-420),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C148S19872C4__9S19872C16[] = {
  0,
  ABISELECT(-408,-212),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C148S19872C4__9S19872C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-864,-464),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C78S19872C4__A1__9S19872C16[] = {
  ABISELECT(376,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C78S19872C4__A1__9S19872C16[] = {
  0,
  ABISELECT(-376,-196),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C4__9S19872C16[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C4__9S19872C16[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C4__9S19872C16[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C4__9S19872C16[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C4__9S19872C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C4__9S19872C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev)();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__8S19872C4__9S19872C16[] = {
  ABISELECT(-112,-64),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__A__8S19872C4__9S19872C16[] = {
  ABISELECT(376,196),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__9S19872C16[] = {
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C7__9S19872C16[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C16[] = {
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C8__9S19872C16[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C8__9S19872C16[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C8__9S19872C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__8S19872C8__9S19872C16[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C8__9S19872C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C16[] = {
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C11__9S19872C16[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A1__9S19872C11__9S19872C16[] = {
  0,
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__A1__9S19872C16[] = {
  ABISELECT(-1056,-576),
  ABISELECT(-80,-48),
  ABISELECT(-536,-300),
  ABISELECT(-160,-92),
  ABISELECT(-400,-228),
  ABISELECT(-448,-256),
  ABISELECT(-320,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C14__A1__9S19872C16[] = {
  0,
  0,
  0,
  ABISELECT(320,180),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C14__A1__9S19872C16[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C14__A1__9S19872C16[] = {
  0,
  0,
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C14__A1__9S19872C16[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C14__A1__9S19872C16[] = {
  0,
  ABISELECT(536,300),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C14__A1__9S19872C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19872C17__9S19872C16[] = {
  ABISELECT(-352,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C17[0]),
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C17__9S19872C16[] = {
  0,
  0,
  0,
  ABISELECT(352,196),
  (VTBL_ENTRY)&(_ZTI9S19872C17[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
static  VTT_ENTRY vtt_S19872C16[] = {
  {&(_ZTV9S19872C16[12]),  12,125},
  {&(_tg__ZTV8S19872C4__9S19872C16[12]),  12,21},
  {&(_tg__ZTV8S19872C68S19872C4__9S19872C16[12]),  12,15},
  {&(_tg__ZTV8S19872C5__8S19872C68S19872C4__9S19872C16[3]),  3,4},
  {&(_tg__ZTV8S19872C68S19872C4__9S19872C16[12]),  12,15},
  {&(_tg__ZTV8S19872C8__8S19872C68S19872C4__9S19872C16[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C68S19872C4__9S19872C16[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C68S19872C4__9S19872C16[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C68S19872C4__9S19872C16[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C68S19872C4__9S19872C16[6]),  6,10},
  {&(_tg__ZTV9S19872C148S19872C4__9S19872C16[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C148S19872C4__9S19872C16[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C148S19872C4__9S19872C16[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C148S19872C4__9S19872C16[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C148S19872C4__9S19872C16[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C148S19872C4__9S19872C16[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C148S19872C4__9S19872C16[6]),  6,10},
  {&(_tg__ZTV8S19872C78S19872C4__A1__9S19872C16[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C78S19872C4__A1__9S19872C16[3]),  3,4},
  {&(_tg__ZTV8S19872C5__8S19872C4__9S19872C16[3]),  3,4},
  {&(_tg__ZTV8S19872C4__9S19872C16[12]),  12,21},
  {&(_tg__ZTV8S19872C8__8S19872C4__9S19872C16[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C4__9S19872C16[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C4__9S19872C16[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C4__9S19872C16[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C4__9S19872C16[6]),  6,10},
  {&(_tg__ZTV9S19872C14__8S19872C4__9S19872C16[9]),  9,12},
  {&(_tg__ZTV8S19872C7__A__8S19872C4__9S19872C16[3]),  3,5},
  {&(_ZTV9S19872C16[29]),  29,125},
  {&(_ZTV9S19872C16[58]),  58,125},
  {&(_ZTV9S19872C16[29]),  29,125},
  {&(_ZTV9S19872C16[68]),  68,125},
  {&(_ZTV9S19872C16[74]),  74,125},
  {&(_ZTV9S19872C16[81]),  81,125},
  {&(_ZTV9S19872C16[93]),  93,125},
  {&(_ZTV9S19872C16[104]),  104,125},
  {&(_ZTV9S19872C16[47]),  47,125},
  {&(_ZTV9S19872C16[53]),  53,125},
  {&(_ZTV9S19872C16[119]),  119,125},
  {&(_ZTV9S19872C16[125]),  125,125},
  {&(_tg__ZTV8S19872C7__9S19872C16[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C7__9S19872C16[3]),  3,4},
  {&(_tg__ZTV8S19872C8__9S19872C16[7]),  7,9},
  {&(_tg__ZTV8S19872C9__8S19872C8__9S19872C16[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C8__9S19872C16[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C8__9S19872C16[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__8S19872C8__9S19872C16[3]),  3,4},
  {&(_tg__ZTV9S19872C13__8S19872C8__9S19872C16[6]),  6,10},
  {&(_tg__ZTV9S19872C11__9S19872C16[4]),  4,9},
  {&(_tg__ZTV9S19872C10__9S19872C11__9S19872C16[5]),  5,8},
  {&(_tg__ZTV8S19872C5__A1__9S19872C11__9S19872C16[3]),  3,4},
  {&(_tg__ZTV9S19872C14__A1__9S19872C16[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C14__A1__9S19872C16[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C14__A1__9S19872C16[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C14__A1__9S19872C16[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C14__A1__9S19872C16[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C14__A1__9S19872C16[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C14__A1__9S19872C16[6]),  6,10},
  {&(_tg__ZTV9S19872C17__9S19872C16[3]),  3,3},
  {&(_tg__ZTV9S19872C10__9S19872C17__9S19872C16[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19872C16[];
extern  VTBL_ENTRY _ZTV9S19872C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C16[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19872C16D0Ev,_ZTv0_n40_N9S19872C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S19872C16D0Ev,_ZThn576_N9S19872C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19872C16D1Ev,_ZTv0_n40_N9S19872C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S19872C16D1Ev,_ZThn576_N9S19872C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19872C16 = {  "S19872C16", // class name
  bases_S19872C16, 25,
  &(vtc_S19872C16[0]), // expected_vtbl_contents
  &(vtt_S19872C16[0]), // expected_vtt_contents
  ABISELECT(1104,600), // object size
  NSPAIRA(_ZTI9S19872C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19872C16),125, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19872C16),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C15  : virtual S19872C10 , S19872C14 , S19872C16 , S19872C5 {
  int s19872c15f0[2];
  virtual void  v28(); // _ZN9S19872C153v28Ev
  virtual void  v29(); // _ZN9S19872C153v29Ev
  virtual void  v30(); // _ZN9S19872C153v30Ev
  virtual void  v31(); // _ZN9S19872C153v31Ev
  virtual void  v32(); // _ZN9S19872C153v32Ev
  ~S19872C15(); // tgen
  S19872C15(); // tgen
};
//SIG(-1 S19872C15) C1{ VBC2{ BC3{ v6 Fp[7] FL Fs} v7 v8 FC3} BC4{ VBC2 VBC5{ VBC6{ BC7{ m} BC3 v9 Fi} VBC2 VBC8{ VBC2 BC7 VBC3 BC9{ BC3 v10} v11 v12 v13} VBC10{ BC9 v14 v15 Fi} BC7 v16 v17 FD[2]} VBC7 vd v18 FD} BC11{ BC9 BC12{ VBC3 BC13{ VBC3 VBC14{ VBC3 v19 v20} VBC5 VBC7 v21 Fp FD} BC4 BC14 vd v22 v23 v24 v25 Fp[25] Fs FC2} VBC4 VBC15{ VBC2 Fp} vd v26} BC3 v1 v2 v3 v4 v5 Fi[2]}


void  S19872C15 ::v28(){vfunc_called(this, "_ZN9S19872C153v28Ev");}
void  S19872C15 ::v29(){vfunc_called(this, "_ZN9S19872C153v29Ev");}
void  S19872C15 ::v30(){vfunc_called(this, "_ZN9S19872C153v30Ev");}
void  S19872C15 ::v31(){vfunc_called(this, "_ZN9S19872C153v31Ev");}
void  S19872C15 ::v32(){vfunc_called(this, "_ZN9S19872C153v32Ev");}
S19872C15 ::~S19872C15(){ note_dtor("S19872C15", this);} // tgen
S19872C15 ::S19872C15(){ note_ctor("S19872C15", this);} // tgen

static void Test_S19872C15()
{
  extern Class_Descriptor cd_S19872C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,168)];
    init_test(&cd_S19872C15, buf);
    S19872C15 *dp, &lv = *(dp=new (buf) S19872C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,668), "sizeof(S19872C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19872C15)");
    check_base_class_offset(lv, (S19872C5*)(S19872C10*), ABISELECT(640,344), "S19872C15");
    check_base_class_offset(lv, (S19872C10*), ABISELECT(640,344), "S19872C15");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C10*)(S19872C14*), ABISELECT(640,344), "S19872C15");
    check_base_class_offset(lv, (S19872C10*)(S19872C8*), ABISELECT(640,344), "S19872C15");
    check_base_class_offset(lv, (S19872C10*)(S19872C11*), ABISELECT(640,344), "S19872C15");
    check_base_class_offset(lv, (S19872C10*)(S19872C14*)(S19872C4*)(S19872C16*), ABISELECT(640,344), "S19872C15");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C10*)(S19872C14*), ABISELECT(640,344), "S19872C15");
    check_base_class_offset(lv, (S19872C10*)(S19872C17*), ABISELECT(640,344), "S19872C15");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C9*), ABISELECT(848,460), "S19872C15");
    check_base_class_offset(lv, (S19872C5*)(S19872C9*), ABISELECT(848,460), "S19872C15");
    check_base_class_offset(lv, (S19872C9*)(S19872C8*), ABISELECT(848,460), "S19872C15");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C11*), ABISELECT(928,508), "S19872C15");
    /*is_ambiguous_... S19872C11::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C11*), ABISELECT(1008,552), "S19872C15");
    /*is_ambiguous_... S19872C4::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C4*)(S19872C16*), ABISELECT(1008,552), "S19872C15");
    /*is_ambiguous_... S19872C6::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C6*)(S19872C4*)(S19872C16*), ABISELECT(1008,552), "S19872C15");
    /*is_ambiguous_... S19872C15::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*), ABISELECT(1008,552), "S19872C15");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*)(S19872C4*)(S19872C16*), ABISELECT(1008,552), "S19872C15");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C11*), ABISELECT(928,508), "S19872C15");
    check_base_class_offset(lv, (S19872C12*)(S19872C11*), ABISELECT(928,508), "S19872C15");
    check_base_class_offset(lv, (S19872C11*)(S19872C8*), ABISELECT(928,508), "S19872C15");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C13*), ABISELECT(1088,596), "S19872C15");
    check_base_class_offset(lv, (S19872C12*)(S19872C13*), ABISELECT(1088,596), "S19872C15");
    check_base_class_offset(lv, (S19872C13*)(S19872C8*), ABISELECT(1088,596), "S19872C15");
    /*is_ambiguous_... S19872C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C8*), ABISELECT(800,432), "S19872C15");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C8*)(S19872C14*), ABISELECT(800,432), "S19872C15");
    check_base_class_offset(lv, (S19872C8*)(S19872C6*)(S19872C4*)(S19872C16*), ABISELECT(800,432), "S19872C15");
    check_base_class_offset(lv, (S19872C8*)(S19872C14*)(S19872C4*)(S19872C16*), ABISELECT(800,432), "S19872C15");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C8*)(S19872C14*), ABISELECT(800,432), "S19872C15");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*), 0, "S19872C15");
    /*is_ambiguous_... S19872C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C6*)(S19872C4*)(S19872C16*), 0, "S19872C15");
    /*is_ambiguous_... S19872C14::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*)(S19872C4*)(S19872C16*), 0, "S19872C15");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*), 0, "S19872C15");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C14*), 0, "S19872C15");
    /*is_ambiguous_... S19872C16::S19872C12 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C16*), ABISELECT(32,16), "S19872C15");
    /*is_ambiguous_... S19872C16::S19872C12 */ AMB_check_base_class_offset(lv, (S19872C12*)(S19872C16*), ABISELECT(32,16), "S19872C15");
    check_base_class_offset(lv, (S19872C7*)(S19872C6*)(S19872C4*)(S19872C16*), ABISELECT(112,60), "S19872C15");
    check_base_class_offset(lv, (S19872C6*)(S19872C4*)(S19872C16*), ABISELECT(112,60), "S19872C15");
    check_base_class_offset(lv, (S19872C14*)(S19872C4*)(S19872C16*), ABISELECT(144,80), "S19872C15");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C7*)(S19872C4*)(S19872C16*), ABISELECT(176,96), "S19872C15");
    check_base_class_offset(lv, (S19872C4*)(S19872C16*), ABISELECT(112,60), "S19872C15");
    /*is_ambiguous_... S19872C16::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C14*)(S19872C16*), ABISELECT(1168,644), "S19872C15");
    check_base_class_offset(lv, (S19872C17*)(S19872C16*), ABISELECT(1200,660), "S19872C15");
    check_base_class_offset(lv, (S19872C16*), ABISELECT(32,16), "S19872C15");
    /*is_ambiguous_... S19872C15::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*), ABISELECT(552,292), "S19872C15");
    check_field_offset(lv, s19872c15f0, ABISELECT(628,336), "S19872C15.s19872c15f0");
    test_class_info(&lv, &cd_S19872C15);
    dp->~S19872C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C15(Test_S19872C15, "S19872C15", ABISELECT(1216,668));

#else // __cplusplus

extern void _ZN9S19872C15C1Ev();
extern void _ZN9S19872C15D1Ev();
Name_Map name_map_S19872C15[] = {
  NSPAIR(_ZN9S19872C15C1Ev),
  NSPAIR(_ZN9S19872C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C10;
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C9;
extern VTBL_ENTRY _ZTI8S19872C9[];
extern  VTBL_ENTRY _ZTV8S19872C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C11;
extern VTBL_ENTRY _ZTI9S19872C11[];
extern  VTBL_ENTRY _ZTV9S19872C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C11[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C13;
extern VTBL_ENTRY _ZTI9S19872C13[];
extern  VTBL_ENTRY _ZTV9S19872C13[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C8;
extern VTBL_ENTRY _ZTI8S19872C8[];
extern  VTBL_ENTRY _ZTV8S19872C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S19872C6;
extern VTBL_ENTRY _ZTI8S19872C6[];
extern  VTBL_ENTRY _ZTV8S19872C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C6[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S19872C4;
extern VTBL_ENTRY _ZTI8S19872C4[];
extern  VTBL_ENTRY _ZTV8S19872C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C4[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C17;
extern VTBL_ENTRY _ZTI9S19872C17[];
extern  VTBL_ENTRY _ZTV9S19872C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C17[];
extern Class_Descriptor cd_S19872C16;
extern VTBL_ENTRY _ZTI9S19872C16[];
extern  VTBL_ENTRY _ZTV9S19872C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C16[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
static Base_Class bases_S19872C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19872C5,    ABISELECT(640,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19872C10,    ABISELECT(640,344), //bcp->offset
    78, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    ABISELECT(848,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
    4, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(848,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19872C9,    ABISELECT(848,460), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(928,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
    9, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(1008,552), //bcp->offset
    117, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(928,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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(928,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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19872C11,    ABISELECT(928,508), //bcp->offset
    103, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(1088,596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(1088,596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19872C13,    ABISELECT(1088,596), //bcp->offset
    121, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(800,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19872C8,    ABISELECT(800,432), //bcp->offset
    86, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19872C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19872C5,    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
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19872C12,    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
    18, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19872C7,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19872C6,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19872C14,    ABISELECT(144,80), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19872C7,    ABISELECT(176,96), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19872C4,    ABISELECT(112,60), //bcp->offset
    37, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19872C14,    ABISELECT(1168,644), //bcp->offset
    131, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19872C17,    ABISELECT(1200,660), //bcp->offset
    145, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19872C16,    ABISELECT(32,16), //bcp->offset
    20, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19872C5,    ABISELECT(552,292), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19872C15[];
extern void _ZN9S19872C15D1Ev();
extern void _ZN9S19872C15D0Ev();
extern void _ZN9S19872C143v20Ev();
extern void _ZN9S19872C153v28Ev();
extern void _ZN9S19872C153v29Ev();
extern void _ZN9S19872C153v30Ev();
extern void _ZN9S19872C153v31Ev();
extern void _ZN9S19872C153v32Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void ABISELECT(_ZThn32_N9S19872C15D1Ev,_ZThn16_N9S19872C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S19872C15D0Ev,_ZThn16_N9S19872C15D0Ev)();
extern void _ZN9S19872C163v27Ev();
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void ABISELECT(_ZThn112_N9S19872C15D1Ev,_ZThn60_N9S19872C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S19872C15D0Ev,_ZThn60_N9S19872C15D0Ev)();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
extern void ABISELECT(_ZThn144_N9S19872C15D1Ev,_ZThn80_N9S19872C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S19872C15D0Ev,_ZThn80_N9S19872C15D0Ev)();
extern void _ZN9S19872C143v20Ev();
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
extern void ABISELECT(_ZTv0_n80_N9S19872C15D1Ev,_ZTv0_n40_N9S19872C15D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19872C15D1Ev,_ZThn644_N9S19872C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19872C15D0Ev,_ZTv0_n40_N9S19872C15D0Ev)();
extern void ABISELECT(_ZThn1168_N9S19872C15D0Ev,_ZThn644_N9S19872C15D0Ev)() __attribute__((weak));
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY vtc_S19872C15[] = {
  ABISELECT(1200,660),
  ABISELECT(1168,644),
  ABISELECT(112,60),
  0,
  ABISELECT(1088,596),
  ABISELECT(1008,552),
  ABISELECT(928,508),
  ABISELECT(848,460),
  ABISELECT(800,432),
  ABISELECT(640,344),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN9S19872C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C15D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v28Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v29Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v30Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v31Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v32Ev,
  ABISELECT(1168,644),
  ABISELECT(1136,628),
  ABISELECT(-32,-16),
  ABISELECT(1056,580),
  ABISELECT(896,492),
  ABISELECT(608,328),
  ABISELECT(816,444),
  ABISELECT(768,416),
  ABISELECT(80,44),
  ABISELECT(976,536),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19872C15D1Ev,_ZThn16_N9S19872C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19872C15D0Ev,_ZThn16_N9S19872C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C163v27Ev,
  ABISELECT(-112,-60),
  ABISELECT(976,536),
  ABISELECT(816,448),
  ABISELECT(528,284),
  ABISELECT(736,400),
  ABISELECT(688,372),
  0,
  0,
  0,
  ABISELECT(896,492),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19872C15D1Ev,_ZThn60_N9S19872C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19872C15D0Ev,_ZThn60_N9S19872C15D0Ev),
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
  ABISELECT(-144,-80),
  ABISELECT(944,516),
  ABISELECT(864,472),
  ABISELECT(784,428),
  ABISELECT(704,380),
  ABISELECT(656,352),
  ABISELECT(496,264),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S19872C15D1Ev,_ZThn80_N9S19872C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S19872C15D0Ev,_ZThn80_N9S19872C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  ABISELECT(832,456),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  ABISELECT(-552,-292),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  0,
  0,
  0,
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
  0,
  0,
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  ABISELECT(-800,-432),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
  0,
  0,
  ABISELECT(-848,-460),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-928,-508),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
  0,
  ABISELECT(-1008,-552),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1088,-596),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
  0,
  ABISELECT(-1168,-644),
  ABISELECT(-1168,-644),
  ABISELECT(-80,-48),
  ABISELECT(-160,-92),
  ABISELECT(-240,-136),
  ABISELECT(-320,-184),
  ABISELECT(-368,-212),
  ABISELECT(-528,-300),
  ABISELECT(-1168,-644),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19872C15D1Ev,_ZTv0_n40_N9S19872C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19872C15D0Ev,_ZTv0_n40_N9S19872C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  ABISELECT(-560,-316),
  ABISELECT(-1200,-660),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
};
extern VTBL_ENTRY _ZTV9S19872C15[];
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__A__9S19872C15[] = {
  0,
  ABISELECT(1088,596),
  ABISELECT(1008,552),
  ABISELECT(928,508),
  ABISELECT(848,460),
  ABISELECT(800,432),
  ABISELECT(640,344),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C14__A__9S19872C15[] = {
  0,
  0,
  0,
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C14__A__9S19872C15[] = {
  0,
  0,
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  ABISELECT(-800,-432),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C14__A__9S19872C15[] = {
  0,
  0,
  ABISELECT(-848,-460),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C14__A__9S19872C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-928,-508),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C14__A__9S19872C15[] = {
  0,
  ABISELECT(-1008,-552),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C14__A__9S19872C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1088,-596),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C16D1Ev();
extern void _ZN9S19872C16D0Ev();
extern void _ZN9S19872C163v27Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C16__9S19872C15[] = {
  ABISELECT(1168,644),
  ABISELECT(1136,628),
  ABISELECT(-32,-16),
  ABISELECT(1056,580),
  ABISELECT(896,492),
  ABISELECT(608,328),
  ABISELECT(816,444),
  ABISELECT(768,416),
  ABISELECT(80,44),
  ABISELECT(976,536),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C163v27Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void _ZN8S19872C4D1Ev();
extern void _ZN8S19872C4D0Ev();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C49S19872C16__9S19872C15[] = {
  ABISELECT(-112,-60),
  ABISELECT(976,536),
  ABISELECT(816,448),
  ABISELECT(528,284),
  ABISELECT(736,400),
  ABISELECT(688,372),
  0,
  0,
  0,
  ABISELECT(896,492),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C68S19872C49S19872C16__9S19872C15[] = {
  ABISELECT(-112,-60),
  ABISELECT(976,536),
  ABISELECT(816,448),
  ABISELECT(528,284),
  ABISELECT(736,400),
  ABISELECT(688,372),
  0,
  0,
  0,
  ABISELECT(896,492),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C68S19872C49S19872C16__9S19872C15[] = {
  0,
  ABISELECT(-896,-492),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C68S19872C49S19872C16__9S19872C15[] = {
  0,
  0,
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  ABISELECT(-688,-372),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C68S19872C49S19872C16__9S19872C15[] = {
  0,
  0,
  ABISELECT(-736,-400),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C68S19872C49S19872C16__9S19872C15[] = {
  0,
  0,
  0,
  ABISELECT(-528,-284),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C68S19872C49S19872C16__9S19872C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-816,-448),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C68S19872C49S19872C16__9S19872C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-976,-536),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C148S19872C49S19872C16__A1__9S19872C15[] = {
  ABISELECT(-144,-80),
  ABISELECT(944,516),
  ABISELECT(864,472),
  ABISELECT(784,428),
  ABISELECT(704,380),
  ABISELECT(656,352),
  ABISELECT(496,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C148S19872C49S19872C16__A1__9S19872C15[] = {
  0,
  0,
  0,
  ABISELECT(-496,-264),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C148S19872C49S19872C16__A1__9S19872C15[] = {
  0,
  0,
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C148S19872C49S19872C16__A1__9S19872C15[] = {
  0,
  0,
  ABISELECT(-704,-380),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C148S19872C49S19872C16__A1__9S19872C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-784,-428),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C148S19872C49S19872C16__A1__9S19872C15[] = {
  0,
  ABISELECT(-864,-472),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C148S19872C49S19872C16__A1__9S19872C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-944,-516),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C78S19872C49S19872C16__A1__9S19872C15[] = {
  ABISELECT(832,456),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C78S19872C49S19872C16__A1__9S19872C15[] = {
  0,
  ABISELECT(-832,-456),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C49S19872C16__9S19872C15[] = {
  0,
  ABISELECT(-896,-492),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C49S19872C16__9S19872C15[] = {
  0,
  0,
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  ABISELECT(-688,-372),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C49S19872C16__9S19872C15[] = {
  0,
  0,
  ABISELECT(-736,-400),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C49S19872C16__9S19872C15[] = {
  0,
  0,
  0,
  ABISELECT(-528,-284),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C49S19872C16__9S19872C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-816,-448),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C49S19872C16__9S19872C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-976,-536),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev)();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__8S19872C49S19872C16__9S19872C15[] = {
  ABISELECT(-144,-80),
  ABISELECT(944,516),
  ABISELECT(864,472),
  ABISELECT(784,428),
  ABISELECT(704,380),
  ABISELECT(656,352),
  ABISELECT(496,264),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__A__8S19872C49S19872C16__9S19872C15[] = {
  ABISELECT(832,456),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void ABISELECT(_ZThn80_N9S19872C16D1Ev,_ZThn44_N9S19872C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19872C16D0Ev,_ZThn44_N9S19872C16D0Ev)();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C4__9S19872C16__9S19872C15[] = {
  ABISELECT(-112,-60),
  ABISELECT(976,536),
  ABISELECT(816,448),
  ABISELECT(528,284),
  ABISELECT(736,400),
  ABISELECT(688,372),
  0,
  0,
  0,
  ABISELECT(896,492),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19872C16D1Ev,_ZThn44_N9S19872C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19872C16D0Ev,_ZThn44_N9S19872C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A1__9S19872C16__9S19872C15[] = {
  0,
  ABISELECT(-976,-536),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C16__9S19872C15[] = {
  0,
  0,
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  ABISELECT(-768,-416),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C16__9S19872C15[] = {
  0,
  0,
  ABISELECT(-816,-444),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C16__9S19872C15[] = {
  0,
  0,
  0,
  ABISELECT(-608,-328),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C16__9S19872C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-896,-492),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C16__9S19872C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1056,-580),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void ABISELECT(_ZThn112_N9S19872C16D1Ev,_ZThn64_N9S19872C16D1Ev)();
extern void ABISELECT(_ZThn112_N9S19872C16D0Ev,_ZThn64_N9S19872C16D0Ev)();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C148S19872C4__9S19872C16__9S19872C15[] = {
  ABISELECT(-144,-80),
  ABISELECT(944,516),
  ABISELECT(864,472),
  ABISELECT(784,428),
  ABISELECT(704,380),
  ABISELECT(656,352),
  ABISELECT(496,264),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19872C16D1Ev,_ZThn64_N9S19872C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19872C16D0Ev,_ZThn64_N9S19872C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C78S19872C4__A1__9S19872C16__9S19872C15[] = {
  ABISELECT(832,456),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void ABISELECT(_ZTv0_n80_N9S19872C16D1Ev,_ZTv0_n40_N9S19872C16D1Ev)();
extern void ABISELECT(_ZThn1136_N9S19872C16D1Ev,_ZThn628_N9S19872C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19872C16D0Ev,_ZTv0_n40_N9S19872C16D0Ev)();
extern void ABISELECT(_ZThn1136_N9S19872C16D0Ev,_ZThn628_N9S19872C16D0Ev)() __attribute__((weak));
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__A1__9S19872C16__9S19872C15[] = {
  0,
  ABISELECT(-1136,-628),
  ABISELECT(-1168,-644),
  ABISELECT(-80,-48),
  ABISELECT(-160,-92),
  ABISELECT(-240,-136),
  ABISELECT(-320,-184),
  ABISELECT(-368,-212),
  ABISELECT(-528,-300),
  ABISELECT(-1136,-628),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19872C16D1Ev,_ZTv0_n40_N9S19872C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19872C16D0Ev,_ZTv0_n40_N9S19872C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19872C17__9S19872C16__9S19872C15[] = {
  ABISELECT(-560,-316),
  ABISELECT(-1168,-644),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C15[] = {
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C8__9S19872C15[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C8__9S19872C15[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C8__9S19872C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__8S19872C8__9S19872C15[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C8__9S19872C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C15[] = {
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C11__9S19872C15[] = {
  0,
  0,
  0,
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A1__9S19872C11__9S19872C15[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__9S19872C15[] = {
  ABISELECT(896,492),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C7__9S19872C15[] = {
  0,
  ABISELECT(-896,-492),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__A2__9S19872C15[] = {
  ABISELECT(-1168,-644),
  ABISELECT(-80,-48),
  ABISELECT(-160,-92),
  ABISELECT(-240,-136),
  ABISELECT(-320,-184),
  ABISELECT(-368,-212),
  ABISELECT(-528,-300),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C14__A2__9S19872C15[] = {
  0,
  0,
  0,
  ABISELECT(528,300),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C14__A2__9S19872C15[] = {
  0,
  0,
  ABISELECT(288,164),
  ABISELECT(208,120),
  ABISELECT(128,76),
  ABISELECT(-160,-88),
  ABISELECT(48,28),
  ABISELECT(368,212),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C14__A2__9S19872C15[] = {
  0,
  0,
  ABISELECT(320,184),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C14__A2__9S19872C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-288,-164),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C14__A2__9S19872C15[] = {
  0,
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C14__A2__9S19872C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19872C17__9S19872C15[] = {
  ABISELECT(-560,-316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C17[0]),
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C17__9S19872C15[] = {
  0,
  0,
  0,
  ABISELECT(560,316),
  (VTBL_ENTRY)&(_ZTI9S19872C17[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
static  VTT_ENTRY vtt_S19872C15[] = {
  {&(_ZTV9S19872C15[12]),  12,148},
  {&(_tg__ZTV9S19872C14__A__9S19872C15[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C14__A__9S19872C15[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C14__A__9S19872C15[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C14__A__9S19872C15[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C14__A__9S19872C15[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C14__A__9S19872C15[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C14__A__9S19872C15[6]),  6,10},
  {&(_tg__ZTV9S19872C16__9S19872C15[12]),  12,17},
  {&(_tg__ZTV8S19872C49S19872C16__9S19872C15[12]),  12,21},
  {&(_tg__ZTV8S19872C68S19872C49S19872C16__9S19872C15[12]),  12,15},
  {&(_tg__ZTV8S19872C5__8S19872C68S19872C49S19872C16__9S19872C15[3]),  3,4},
  {&(_tg__ZTV8S19872C68S19872C49S19872C16__9S19872C15[12]),  12,15},
  {&(_tg__ZTV8S19872C8__8S19872C68S19872C49S19872C16__9S19872C15[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C68S19872C49S19872C16__9S19872C15[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C68S19872C49S19872C16__9S19872C15[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C68S19872C49S19872C16__9S19872C15[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C68S19872C49S19872C16__9S19872C15[6]),  6,10},
  {&(_tg__ZTV9S19872C148S19872C49S19872C16__A1__9S19872C15[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C148S19872C49S19872C16__A1__9S19872C15[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C148S19872C49S19872C16__A1__9S19872C15[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C148S19872C49S19872C16__A1__9S19872C15[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C148S19872C49S19872C16__A1__9S19872C15[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C148S19872C49S19872C16__A1__9S19872C15[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C148S19872C49S19872C16__A1__9S19872C15[6]),  6,10},
  {&(_tg__ZTV8S19872C78S19872C49S19872C16__A1__9S19872C15[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C78S19872C49S19872C16__A1__9S19872C15[3]),  3,4},
  {&(_tg__ZTV8S19872C5__8S19872C49S19872C16__9S19872C15[3]),  3,4},
  {&(_tg__ZTV8S19872C49S19872C16__9S19872C15[12]),  12,21},
  {&(_tg__ZTV8S19872C8__8S19872C49S19872C16__9S19872C15[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C49S19872C16__9S19872C15[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C49S19872C16__9S19872C15[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C49S19872C16__9S19872C15[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C49S19872C16__9S19872C15[6]),  6,10},
  {&(_tg__ZTV9S19872C14__8S19872C49S19872C16__9S19872C15[9]),  9,12},
  {&(_tg__ZTV8S19872C7__A__8S19872C49S19872C16__9S19872C15[3]),  3,5},
  {&(_tg__ZTV8S19872C4__9S19872C16__9S19872C15[12]),  12,21},
  {&(_tg__ZTV8S19872C5__A1__9S19872C16__9S19872C15[3]),  3,4},
  {&(_tg__ZTV8S19872C4__9S19872C16__9S19872C15[12]),  12,21},
  {&(_tg__ZTV8S19872C8__9S19872C16__9S19872C15[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C16__9S19872C15[4]),  4,6},
  {&(_tg__ZTV9S19872C10__9S19872C16__9S19872C15[5]),  5,8},
  {&(_tg__ZTV9S19872C11__9S19872C16__9S19872C15[9]),  9,14},
  {&(_tg__ZTV9S19872C13__9S19872C16__9S19872C15[6]),  6,10},
  {&(_tg__ZTV9S19872C148S19872C4__9S19872C16__9S19872C15[9]),  9,12},
  {&(_tg__ZTV8S19872C78S19872C4__A1__9S19872C16__9S19872C15[3]),  3,5},
  {&(_tg__ZTV9S19872C14__A1__9S19872C16__9S19872C15[11]),  11,14},
  {&(_tg__ZTV9S19872C17__9S19872C16__9S19872C15[3]),  3,3},
  {&(_ZTV9S19872C15[83]),  83,148},
  {&(_ZTV9S19872C15[95]),  95,148},
  {&(_ZTV9S19872C15[101]),  101,148},
  {&(_ZTV9S19872C15[112]),  112,148},
  {&(_ZTV9S19872C15[120]),  120,148},
  {&(_ZTV9S19872C15[127]),  127,148},
  {&(_ZTV9S19872C15[32]),  32,148},
  {&(_ZTV9S19872C15[49]),  49,148},
  {&(_ZTV9S19872C15[49]),  49,148},
  {&(_ZTV9S19872C15[67]),  67,148},
  {&(_ZTV9S19872C15[73]),  73,148},
  {&(_ZTV9S19872C15[142]),  142,148},
  {&(_ZTV9S19872C15[148]),  148,148},
  {&(_tg__ZTV8S19872C8__9S19872C15[7]),  7,9},
  {&(_tg__ZTV8S19872C9__8S19872C8__9S19872C15[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C8__9S19872C15[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C8__9S19872C15[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__8S19872C8__9S19872C15[3]),  3,4},
  {&(_tg__ZTV9S19872C13__8S19872C8__9S19872C15[6]),  6,10},
  {&(_tg__ZTV9S19872C11__9S19872C15[4]),  4,9},
  {&(_tg__ZTV9S19872C10__9S19872C11__9S19872C15[5]),  5,8},
  {&(_tg__ZTV8S19872C5__A1__9S19872C11__9S19872C15[3]),  3,4},
  {&(_tg__ZTV8S19872C7__9S19872C15[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C7__9S19872C15[3]),  3,4},
  {&(_tg__ZTV9S19872C14__A2__9S19872C15[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C14__A2__9S19872C15[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C14__A2__9S19872C15[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C14__A2__9S19872C15[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C14__A2__9S19872C15[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C14__A2__9S19872C15[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C14__A2__9S19872C15[6]),  6,10},
  {&(_tg__ZTV9S19872C17__9S19872C15[3]),  3,3},
  {&(_tg__ZTV9S19872C10__9S19872C17__9S19872C15[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19872C15[];
extern  VTBL_ENTRY _ZTV9S19872C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C15[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19872C16D0Ev,_ZTv0_n40_N9S19872C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1136_N9S19872C16D0Ev,_ZThn628_N9S19872C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19872C16D1Ev,_ZTv0_n40_N9S19872C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1136_N9S19872C16D1Ev,_ZThn628_N9S19872C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19872C15D0Ev,_ZTv0_n40_N9S19872C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1168_N9S19872C15D0Ev,_ZThn644_N9S19872C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19872C15D1Ev,_ZTv0_n40_N9S19872C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1168_N9S19872C15D1Ev,_ZThn644_N9S19872C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19872C15 = {  "S19872C15", // class name
  bases_S19872C15, 28,
  &(vtc_S19872C15[0]), // expected_vtbl_contents
  &(vtt_S19872C15[0]), // expected_vtt_contents
  ABISELECT(1216,668), // object size
  NSPAIRA(_ZTI9S19872C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19872C15),148, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19872C15),81, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19872C1  : virtual S3164C31_nt , virtual S19872C3 , virtual S19872C15 , S19872C13 {
  virtual  ~S19872C1(); // _ZN8S19872C1D2Ev
  virtual void  v1(); // _ZN8S19872C12v1Ev
  virtual void  v2(); // _ZN8S19872C12v2Ev
  virtual void  v3(); // _ZN8S19872C12v3Ev
  virtual void  v4(); // _ZN8S19872C12v4Ev
  S19872C1(); // tgen
};
//SIG(1 S19872C1) C1{ VBC2{ m} VBC3{ BC4{ VBC5{ v5 Fp[7] FL Fs} BC6{ VBC5 VBC7{ VBC5 v6 v7} VBC8{ VBC9{ BC2 BC5 v8 Fi} VBC10{ BC5 v9 v10 FC5} VBC11{ VBC10 BC2 VBC5 BC12{ BC5 v11} v12 v13 v14} VBC13{ BC12 v15 v16 Fi} BC2 v17 v18 FD[2]} VBC2 v19 Fp FD} BC14{ VBC10 VBC8 VBC2 vd v20 FD} BC7 vd v21 v22 v23 v24 Fp[25] Fs FC10} v25 v26} VBC15{ VBC10 BC14 BC16{ BC12 BC4 VBC14 VBC17{ VBC10 Fp} vd v27} BC5 v28 v29 v30 v31 v32 Fi[2]} BC13 vd v1 v2 v3 v4}


 S19872C1 ::~S19872C1(){ note_dtor("S19872C1", this);}
void  S19872C1 ::v1(){vfunc_called(this, "_ZN8S19872C12v1Ev");}
void  S19872C1 ::v2(){vfunc_called(this, "_ZN8S19872C12v2Ev");}
void  S19872C1 ::v3(){vfunc_called(this, "_ZN8S19872C12v3Ev");}
void  S19872C1 ::v4(){vfunc_called(this, "_ZN8S19872C12v4Ev");}
S19872C1 ::S19872C1(){ note_ctor("S19872C1", this);} // tgen

static void Test_S19872C1()
{
  extern Class_Descriptor cd_S19872C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(110,238)];
    init_test(&cd_S19872C1, buf);
    S19872C1 *dp, &lv = *(dp=new (buf) S19872C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1744,948), "sizeof(S19872C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19872C1)");
    /*is_ambiguous_... S19872C1::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S19872C1");
    /*is_ambiguous_... S19872C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C6*)(S19872C4*)(S19872C3*), 0, "S19872C1");
    /*is_ambiguous_... S19872C14::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*)(S19872C4*)(S19872C3*), 0, "S19872C1");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*)(S19872C15*), 0, "S19872C1");
    /*is_ambiguous_... S19872C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C6*)(S19872C4*)(S19872C16*)(S19872C15*), 0, "S19872C1");
    /*is_ambiguous_... S19872C14::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*)(S19872C4*)(S19872C16*)(S19872C15*), 0, "S19872C1");
    /*is_ambiguous_... S19872C1::S19872C14 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C14*), 0, "S19872C1");
    /*is_ambiguous_... S19872C4::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C4*)(S19872C3*), ABISELECT(520,280), "S19872C1");
    /*is_ambiguous_... S19872C6::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C6*)(S19872C4*)(S19872C3*), ABISELECT(520,280), "S19872C1");
    /*is_ambiguous_... S19872C1::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*), ABISELECT(520,280), "S19872C1");
    /*is_ambiguous_... S19872C11::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C11*), ABISELECT(520,280), "S19872C1");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*)(S19872C4*)(S19872C3*), ABISELECT(520,280), "S19872C1");
    /*is_ambiguous_... S19872C4::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(520,280), "S19872C1");
    /*is_ambiguous_... S19872C6::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C6*)(S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(520,280), "S19872C1");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C7*)(S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(520,280), "S19872C1");
    check_base_class_offset(lv, (S19872C7*)(S19872C6*)(S19872C4*)(S19872C3*), ABISELECT(80,48), "S19872C1");
    check_base_class_offset(lv, (S19872C7*)(S19872C6*)(S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(80,48), "S19872C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C9*), ABISELECT(656,352), "S19872C1");
    check_base_class_offset(lv, (S19872C5*)(S19872C9*), ABISELECT(656,352), "S19872C1");
    check_base_class_offset(lv, (S19872C9*)(S19872C8*), ABISELECT(656,352), "S19872C1");
    check_base_class_offset(lv, (S19872C5*)(S19872C10*), ABISELECT(736,400), "S19872C1");
    check_base_class_offset(lv, (S19872C10*)(S19872C8*), ABISELECT(736,400), "S19872C1");
    check_base_class_offset(lv, (S19872C10*)(S19872C11*), ABISELECT(736,400), "S19872C1");
    check_base_class_offset(lv, (S19872C10*)(S19872C14*)(S19872C4*)(S19872C3*), ABISELECT(736,400), "S19872C1");
    check_base_class_offset(lv, (S19872C10*)(S19872C15*), ABISELECT(736,400), "S19872C1");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C10*)(S19872C14*)(S19872C15*), ABISELECT(736,400), "S19872C1");
    check_base_class_offset(lv, (S19872C10*)(S19872C14*)(S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(736,400), "S19872C1");
    /*is_ambiguous_... S19872C1::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C10*)(S19872C14*), ABISELECT(736,400), "S19872C1");
    check_base_class_offset(lv, (S19872C10*)(S19872C17*), ABISELECT(736,400), "S19872C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S19872C11*), ABISELECT(896,488), "S19872C1");
    check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C11*), ABISELECT(896,488), "S19872C1");
    check_base_class_offset(lv, (S19872C12*)(S19872C11*), ABISELECT(896,488), "S19872C1");
    check_base_class_offset(lv, (S19872C11*)(S19872C8*), ABISELECT(896,488), "S19872C1");
    /*is_ambiguous_... S19872C1::S19872C13 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C13*), ABISELECT(976,532), "S19872C1");
    /*is_ambiguous_... S19872C1::S19872C13 */ AMB_check_base_class_offset(lv, (S19872C12*)(S19872C13*), ABISELECT(976,532), "S19872C1");
    check_base_class_offset(lv, (S19872C13*)(S19872C8*), ABISELECT(976,532), "S19872C1");
    /*is_ambiguous_... S19872C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19872C8*), ABISELECT(608,324), "S19872C1");
    check_base_class_offset(lv, (S19872C8*)(S19872C6*)(S19872C4*)(S19872C3*), ABISELECT(608,324), "S19872C1");
    check_base_class_offset(lv, (S19872C8*)(S19872C14*)(S19872C4*)(S19872C3*), ABISELECT(608,324), "S19872C1");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C8*)(S19872C14*)(S19872C15*), ABISELECT(608,324), "S19872C1");
    check_base_class_offset(lv, (S19872C8*)(S19872C6*)(S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(608,324), "S19872C1");
    check_base_class_offset(lv, (S19872C8*)(S19872C14*)(S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(608,324), "S19872C1");
    /*is_ambiguous_... S19872C1::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C8*)(S19872C14*), ABISELECT(608,324), "S19872C1");
    check_base_class_offset(lv, (S19872C6*)(S19872C4*)(S19872C3*), ABISELECT(80,48), "S19872C1");
    check_base_class_offset(lv, (S19872C14*)(S19872C4*)(S19872C3*), ABISELECT(112,68), "S19872C1");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C7*)(S19872C4*)(S19872C3*), ABISELECT(144,84), "S19872C1");
    check_base_class_offset(lv, (S19872C4*)(S19872C3*), ABISELECT(80,48), "S19872C1");
    check_base_class_offset(lv, (S19872C3*), ABISELECT(80,48), "S19872C1");
    /*is_ambiguous_... S19872C15::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C14*)(S19872C15*), ABISELECT(1056,580), "S19872C1");
    /*is_ambiguous_... S19872C16::S19872C12 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C16*)(S19872C15*), ABISELECT(1088,596), "S19872C1");
    /*is_ambiguous_... S19872C16::S19872C12 */ AMB_check_base_class_offset(lv, (S19872C12*)(S19872C16*)(S19872C15*), ABISELECT(1088,596), "S19872C1");
    check_base_class_offset(lv, (S19872C6*)(S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(1168,640), "S19872C1");
    check_base_class_offset(lv, (S19872C14*)(S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(1200,660), "S19872C1");
    /*is_ambiguous_... S19872C4::S19872C7 */ AMB_check_base_class_offset(lv, (S19872C7*)(S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(1232,676), "S19872C1");
    check_base_class_offset(lv, (S19872C4*)(S19872C16*)(S19872C15*), ABISELECT(1168,640), "S19872C1");
    /*is_ambiguous_... S19872C16::S19872C14 */ AMB_check_base_class_offset(lv, (S19872C14*)(S19872C16*)(S19872C15*), ABISELECT(1696,924), "S19872C1");
    check_base_class_offset(lv, (S19872C17*)(S19872C16*)(S19872C15*), ABISELECT(1728,940), "S19872C1");
    check_base_class_offset(lv, (S19872C16*)(S19872C15*), ABISELECT(1088,596), "S19872C1");
    /*is_ambiguous_... S19872C15::S19872C5 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C15*), ABISELECT(1608,872), "S19872C1");
    check_base_class_offset(lv, (S19872C15*), ABISELECT(1056,580), "S19872C1");
    /*is_ambiguous_... S19872C1::S19872C13 */ AMB_check_base_class_offset(lv, (S19872C5*)(S19872C12*)(S19872C13*), 0, "S19872C1");
    /*is_ambiguous_... S19872C1::S19872C13 */ AMB_check_base_class_offset(lv, (S19872C12*)(S19872C13*), 0, "S19872C1");
    /*is_ambiguous_... S19872C1::S19872C13 */ AMB_check_base_class_offset(lv, (S19872C13*), 0, "S19872C1");
    test_class_info(&lv, &cd_S19872C1);
    dp->~S19872C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19872C1(Test_S19872C1, "S19872C1", ABISELECT(1744,948));

#else // __cplusplus

extern void _ZN8S19872C1C1Ev();
extern void _ZN8S19872C1D2Ev();
Name_Map name_map_S19872C1[] = {
  NSPAIR(_ZN8S19872C1C1Ev),
  NSPAIR(_ZN8S19872C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C9;
extern VTBL_ENTRY _ZTI8S19872C9[];
extern  VTBL_ENTRY _ZTV8S19872C9[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C10;
extern VTBL_ENTRY _ZTI9S19872C10[];
extern  VTBL_ENTRY _ZTV9S19872C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C11;
extern VTBL_ENTRY _ZTI9S19872C11[];
extern  VTBL_ENTRY _ZTV9S19872C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C11[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C13;
extern VTBL_ENTRY _ZTI9S19872C13[];
extern  VTBL_ENTRY _ZTV9S19872C13[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19872C8;
extern VTBL_ENTRY _ZTI8S19872C8[];
extern  VTBL_ENTRY _ZTV8S19872C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C8[];
extern Class_Descriptor cd_S19872C6;
extern VTBL_ENTRY _ZTI8S19872C6[];
extern  VTBL_ENTRY _ZTV8S19872C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C6[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S19872C4;
extern VTBL_ENTRY _ZTI8S19872C4[];
extern  VTBL_ENTRY _ZTV8S19872C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C4[];
extern Class_Descriptor cd_S19872C3;
extern VTBL_ENTRY _ZTI8S19872C3[];
extern  VTBL_ENTRY _ZTV8S19872C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C3[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C6;
extern VTBL_ENTRY _ZTI8S19872C6[];
extern  VTBL_ENTRY _ZTV8S19872C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C6[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C7;
extern VTBL_ENTRY _ZTI8S19872C7[];
extern  VTBL_ENTRY _ZTV8S19872C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C7[];
extern Class_Descriptor cd_S19872C4;
extern VTBL_ENTRY _ZTI8S19872C4[];
extern  VTBL_ENTRY _ZTV8S19872C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C4[];
extern Class_Descriptor cd_S19872C14;
extern VTBL_ENTRY _ZTI9S19872C14[];
extern  VTBL_ENTRY _ZTV9S19872C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C14[];
extern Class_Descriptor cd_S19872C17;
extern VTBL_ENTRY _ZTI9S19872C17[];
extern  VTBL_ENTRY _ZTV9S19872C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C17[];
extern Class_Descriptor cd_S19872C16;
extern VTBL_ENTRY _ZTI9S19872C16[];
extern  VTBL_ENTRY _ZTV9S19872C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C16[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C15;
extern VTBL_ENTRY _ZTI9S19872C15[];
extern  VTBL_ENTRY _ZTV9S19872C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19872C15[];
extern Class_Descriptor cd_S19872C5;
extern VTBL_ENTRY _ZTI8S19872C5[];
extern  VTBL_ENTRY _ZTV8S19872C5[];
extern Class_Descriptor cd_S19872C12;
extern VTBL_ENTRY _ZTI9S19872C12[];
extern  VTBL_ENTRY _ZTV9S19872C12[];
extern Class_Descriptor cd_S19872C13;
extern VTBL_ENTRY _ZTI9S19872C13[];
extern  VTBL_ENTRY _ZTV9S19872C13[];
static Base_Class bases_S19872C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19872C5,    ABISELECT(520,280), //bcp->offset
    73, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19872C7,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19872C9,    ABISELECT(656,352), //bcp->offset
    88, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(736,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19872C10,    ABISELECT(736,400), //bcp->offset
    94, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(896,488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19872C5,    ABISELECT(896,488), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19872C12,    ABISELECT(896,488), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19872C11,    ABISELECT(896,488), //bcp->offset
    102, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19872C5,    ABISELECT(976,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(976,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19872C13,    ABISELECT(976,532), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(608,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
    16, //immediately_derived
  0, 0},
  {&cd_S19872C8,    ABISELECT(608,324), //bcp->offset
    77, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19872C6,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19872C14,    ABISELECT(112,68), //bcp->offset
    56, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19872C7,    ABISELECT(144,84), //bcp->offset
    68, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19872C4,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //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
    21, //immediately_derived
  0, 0},
  {&cd_S19872C3,    ABISELECT(80,48), //bcp->offset
    24, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19872C14,    ABISELECT(1056,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(1088,596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19872C12,    ABISELECT(1088,596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19872C6,    ABISELECT(1168,640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19872C14,    ABISELECT(1200,660), //bcp->offset
    201, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19872C7,    ABISELECT(1232,676), //bcp->offset
    213, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19872C4,    ABISELECT(1168,640), //bcp->offset
    180, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19872C14,    ABISELECT(1696,924), //bcp->offset
    221, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19872C17,    ABISELECT(1728,940), //bcp->offset
    235, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19872C16,    ABISELECT(1088,596), //bcp->offset
    163, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19872C5,    ABISELECT(1608,872), //bcp->offset
    218, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19872C15,    ABISELECT(1056,580), //bcp->offset
    126, //bcp->virtual_function_table_offset
    29, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19872C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19872C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19872C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19872C1[];
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
extern void _ZN8S19872C1D1Ev();
extern void _ZN8S19872C1D0Ev();
extern void _ZN8S19872C12v1Ev();
extern void _ZN8S19872C12v2Ev();
extern void _ZN8S19872C12v3Ev();
extern void _ZN8S19872C12v4Ev();
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19872C1D1Ev,_ZTv0_n56_N8S19872C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19872C1D1Ev,_ZThn48_N8S19872C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19872C1D0Ev,_ZTv0_n56_N8S19872C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19872C1D0Ev,_ZThn48_N8S19872C1D0Ev)() __attribute__((weak));
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
extern void _ZN8S19872C33v25Ev();
extern void _ZN8S19872C33v26Ev();
extern void ABISELECT(_ZTvn32_n112_N8S19872C1D1Ev,_ZTvn20_n56_N8S19872C1D1Ev)();
extern void ABISELECT(_ZTvn32_n112_N8S19872C1D0Ev,_ZTvn20_n56_N8S19872C1D0Ev)();
extern void _ZN9S19872C143v20Ev();
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
extern void ABISELECT(_ZTv0_n104_N8S19872C1D1Ev,_ZTv0_n52_N8S19872C1D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19872C1D1Ev,_ZThn580_N8S19872C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19872C1D0Ev,_ZTv0_n52_N8S19872C1D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19872C1D0Ev,_ZThn580_N8S19872C1D0Ev)() __attribute__((weak));
extern void _ZN9S19872C143v20Ev();
extern void _ZN9S19872C153v28Ev();
extern void _ZN9S19872C153v29Ev();
extern void _ZN9S19872C153v30Ev();
extern void _ZN9S19872C153v31Ev();
extern void _ZN9S19872C153v32Ev();
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void ABISELECT(_ZTvn32_n104_N8S19872C1D1Ev,_ZTvn16_n52_N8S19872C1D1Ev)();
extern void ABISELECT(_ZTvn32_n104_N8S19872C1D0Ev,_ZTvn16_n52_N8S19872C1D0Ev)();
extern void _ZN9S19872C163v27Ev();
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void ABISELECT(_ZTvn112_n104_N8S19872C1D1Ev,_ZTvn60_n52_N8S19872C1D1Ev)();
extern void ABISELECT(_ZTvn112_n104_N8S19872C1D0Ev,_ZTvn60_n52_N8S19872C1D0Ev)();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
extern void ABISELECT(_ZTvn144_n104_N8S19872C1D1Ev,_ZTvn80_n52_N8S19872C1D1Ev)();
extern void ABISELECT(_ZTvn144_n104_N8S19872C1D0Ev,_ZTvn80_n52_N8S19872C1D0Ev)();
extern void _ZN9S19872C143v20Ev();
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C52v5Ev();
extern void ABISELECT(_ZTv0_n80_N8S19872C1D1Ev,_ZTv0_n40_N8S19872C1D1Ev)();
extern void ABISELECT(_ZThn1696_N8S19872C1D1Ev,_ZThn924_N8S19872C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19872C1D0Ev,_ZTv0_n40_N8S19872C1D0Ev)();
extern void ABISELECT(_ZThn1696_N8S19872C1D0Ev,_ZThn924_N8S19872C1D0Ev)() __attribute__((weak));
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY vtc_S19872C1[] = {
  ABISELECT(1728,940),
  ABISELECT(1696,924),
  ABISELECT(1056,580),
  ABISELECT(976,532),
  ABISELECT(896,488),
  ABISELECT(736,400),
  ABISELECT(656,352),
  ABISELECT(608,324),
  ABISELECT(80,48),
  ABISELECT(520,280),
  ABISELECT(80,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
  (VTBL_ENTRY)&_ZN8S19872C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19872C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19872C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19872C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19872C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19872C12v4Ev,
  0,
  0,
  ABISELECT(32,20),
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19872C1D1Ev,_ZTv0_n56_N8S19872C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19872C1D0Ev,_ZTv0_n56_N8S19872C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
  (VTBL_ENTRY)&_ZN8S19872C33v25Ev,
  (VTBL_ENTRY)&_ZN8S19872C33v26Ev,
  ABISELECT(-112,-68),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N8S19872C1D1Ev,_ZTvn20_n56_N8S19872C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n112_N8S19872C1D0Ev,_ZTvn20_n56_N8S19872C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  ABISELECT(376,196),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  0,
  ABISELECT(-520,-280),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-608,-324),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
  0,
  0,
  0,
  ABISELECT(-736,-400),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-896,-488),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-976,-532),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1056,-580),
  ABISELECT(672,360),
  ABISELECT(640,344),
  ABISELECT(-976,-532),
  ABISELECT(-1056,-580),
  ABISELECT(-80,-48),
  ABISELECT(-536,-300),
  ABISELECT(-160,-92),
  ABISELECT(-400,-228),
  ABISELECT(-448,-256),
  ABISELECT(-320,-180),
  ABISELECT(-1056,-580),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19872C1D1Ev,_ZTv0_n52_N8S19872C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19872C1D0Ev,_ZTv0_n52_N8S19872C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v28Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v29Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v30Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v31Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v32Ev,
  ABISELECT(640,344),
  ABISELECT(608,328),
  ABISELECT(-1088,-596),
  ABISELECT(-112,-64),
  ABISELECT(-192,-108),
  ABISELECT(-352,-196),
  ABISELECT(-432,-244),
  ABISELECT(-480,-272),
  ABISELECT(-1008,-548),
  ABISELECT(-568,-316),
  ABISELECT(-1088,-596),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n104_N8S19872C1D1Ev,_ZTvn16_n52_N8S19872C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n104_N8S19872C1D0Ev,_ZTvn16_n52_N8S19872C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C163v27Ev,
  ABISELECT(-1168,-640),
  ABISELECT(-192,-108),
  ABISELECT(-272,-152),
  ABISELECT(-432,-240),
  ABISELECT(-512,-288),
  ABISELECT(-560,-316),
  ABISELECT(-1088,-592),
  ABISELECT(-1088,-592),
  ABISELECT(-1088,-592),
  ABISELECT(-648,-360),
  ABISELECT(-1168,-640),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n104_N8S19872C1D1Ev,_ZTvn60_n52_N8S19872C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n104_N8S19872C1D0Ev,_ZTvn60_n52_N8S19872C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
  ABISELECT(-1200,-660),
  ABISELECT(-224,-128),
  ABISELECT(-680,-380),
  ABISELECT(-304,-172),
  ABISELECT(-544,-308),
  ABISELECT(-592,-336),
  ABISELECT(-464,-260),
  ABISELECT(-1200,-660),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n104_N8S19872C1D1Ev,_ZTvn80_n52_N8S19872C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n104_N8S19872C1D0Ev,_ZTvn80_n52_N8S19872C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  ABISELECT(-712,-396),
  ABISELECT(-1232,-676),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  ABISELECT(-1608,-872),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  0,
  ABISELECT(-1696,-924),
  ABISELECT(-1696,-924),
  ABISELECT(-720,-392),
  ABISELECT(-1176,-644),
  ABISELECT(-800,-436),
  ABISELECT(-1040,-572),
  ABISELECT(-1088,-600),
  ABISELECT(-960,-524),
  ABISELECT(-1696,-924),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19872C1D1Ev,_ZTv0_n40_N8S19872C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19872C1D0Ev,_ZTv0_n40_N8S19872C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  ABISELECT(-992,-540),
  ABISELECT(-1728,-940),
  (VTBL_ENTRY)&(_ZTI8S19872C1[0]),
};
extern VTBL_ENTRY _ZTV8S19872C1[];
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void _ZN8S19872C3D1Ev();
extern void _ZN8S19872C3D0Ev();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
extern void _ZN8S19872C33v25Ev();
extern void _ZN8S19872C33v26Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C3__8S19872C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19872C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19872C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
  (VTBL_ENTRY)&_ZN8S19872C33v25Ev,
  (VTBL_ENTRY)&_ZN8S19872C33v26Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void _ZN8S19872C4D1Ev();
extern void _ZN8S19872C4D0Ev();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C48S19872C3__8S19872C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C68S19872C48S19872C3__8S19872C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(896,484),
  ABISELECT(816,440),
  ABISELECT(656,352),
  ABISELECT(576,304),
  ABISELECT(528,276),
  0,
  0,
  0,
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C68S19872C48S19872C3__8S19872C1[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C68S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C68S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C68S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C68S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C68S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C148S19872C48S19872C3__8S19872C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C148S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(-624,-332),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C148S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-496,-256),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C148S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  ABISELECT(-544,-284),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C148S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-784,-420),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C148S19872C48S19872C3__8S19872C1[] = {
  0,
  ABISELECT(-408,-212),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C148S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-864,-464),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C78S19872C48S19872C3__A1__8S19872C1[] = {
  ABISELECT(376,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C78S19872C48S19872C3__A1__8S19872C1[] = {
  0,
  ABISELECT(-376,-196),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C48S19872C3__8S19872C1[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C48S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev)();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__8S19872C48S19872C3__8S19872C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__A__8S19872C48S19872C3__8S19872C1[] = {
  ABISELECT(376,196),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C3__8S19872C1[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C3__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-528,-276),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C3__8S19872C1[] = {
  0,
  0,
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-816,-440),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C3__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-896,-484),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void ABISELECT(_ZThn32_N8S19872C3D1Ev,_ZThn20_N8S19872C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19872C3D0Ev,_ZThn20_N8S19872C3D0Ev)();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C148S19872C4__8S19872C3__8S19872C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(864,464),
  ABISELECT(408,212),
  ABISELECT(784,420),
  ABISELECT(544,284),
  ABISELECT(496,256),
  ABISELECT(624,332),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C3D1Ev,_ZThn20_N8S19872C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C3D0Ev,_ZThn20_N8S19872C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C78S19872C4__A1__8S19872C3__8S19872C1[] = {
  ABISELECT(376,196),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19872C3[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__8S19872C1[] = {
  ABISELECT(440,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C7__8S19872C1[] = {
  0,
  ABISELECT(-440,-232),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C1[] = {
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C8__8S19872C1[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C8__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C8__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__8S19872C8__8S19872C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C8__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19872C8[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C1[] = {
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C11__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A1__9S19872C11__8S19872C1[] = {
  0,
  ABISELECT(376,208),
  (VTBL_ENTRY)&(_ZTI9S19872C11[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN9S19872C15D1Ev();
extern void _ZN9S19872C15D0Ev();
extern void _ZN9S19872C143v20Ev();
extern void _ZN9S19872C153v28Ev();
extern void _ZN9S19872C153v29Ev();
extern void _ZN9S19872C153v30Ev();
extern void _ZN9S19872C153v31Ev();
extern void _ZN9S19872C153v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C15__8S19872C1[] = {
  ABISELECT(672,360),
  ABISELECT(640,344),
  ABISELECT(-976,-532),
  ABISELECT(-1056,-580),
  ABISELECT(-80,-48),
  ABISELECT(-536,-300),
  ABISELECT(-160,-92),
  ABISELECT(-400,-228),
  ABISELECT(-448,-256),
  ABISELECT(-320,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN9S19872C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C15D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v28Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v29Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v30Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v31Ev,
  (VTBL_ENTRY)&_ZN9S19872C153v32Ev,
};
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C149S19872C15__A1__8S19872C1[] = {
  ABISELECT(-1056,-580),
  ABISELECT(-80,-48),
  ABISELECT(-536,-300),
  ABISELECT(-160,-92),
  ABISELECT(-400,-228),
  ABISELECT(-448,-256),
  ABISELECT(-320,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C149S19872C15__A1__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(320,180),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C149S19872C15__A1__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C149S19872C15__A1__8S19872C1[] = {
  0,
  0,
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C149S19872C15__A1__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C149S19872C15__A1__8S19872C1[] = {
  0,
  ABISELECT(536,300),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C149S19872C15__A1__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C16D1Ev();
extern void _ZN9S19872C16D0Ev();
extern void _ZN9S19872C163v27Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C169S19872C15__8S19872C1[] = {
  ABISELECT(640,344),
  ABISELECT(608,328),
  ABISELECT(-1088,-596),
  ABISELECT(-112,-64),
  ABISELECT(-192,-108),
  ABISELECT(-352,-196),
  ABISELECT(-432,-244),
  ABISELECT(-480,-272),
  ABISELECT(-1008,-548),
  ABISELECT(-568,-316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C163v27Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void _ZN8S19872C4D1Ev();
extern void _ZN8S19872C4D0Ev();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  ABISELECT(-1168,-640),
  ABISELECT(-192,-108),
  ABISELECT(-272,-152),
  ABISELECT(-432,-240),
  ABISELECT(-512,-288),
  ABISELECT(-560,-316),
  ABISELECT(-1088,-592),
  ABISELECT(-1088,-592),
  ABISELECT(-1088,-592),
  ABISELECT(-648,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19872C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  ABISELECT(-1168,-640),
  ABISELECT(-192,-108),
  ABISELECT(-272,-152),
  ABISELECT(-432,-240),
  ABISELECT(-512,-288),
  ABISELECT(-560,-316),
  ABISELECT(-1088,-592),
  ABISELECT(-1088,-592),
  ABISELECT(-1088,-592),
  ABISELECT(-648,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  ABISELECT(440,232),
  ABISELECT(1088,592),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(560,316),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(272,152),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S19872C6[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[] = {
  ABISELECT(-1200,-660),
  ABISELECT(-224,-128),
  ABISELECT(-680,-380),
  ABISELECT(-304,-172),
  ABISELECT(-544,-308),
  ABISELECT(-592,-336),
  ABISELECT(-464,-260),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(464,260),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[] = {
  0,
  0,
  ABISELECT(544,308),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[] = {
  0,
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(224,128),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C78S19872C49S19872C169S19872C15__A2__8S19872C1[] = {
  ABISELECT(-712,-396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C78S19872C49S19872C169S19872C15__A2__8S19872C1[] = {
  0,
  ABISELECT(712,396),
  (VTBL_ENTRY)&(_ZTI8S19872C7[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__8S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__8S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  ABISELECT(440,232),
  ABISELECT(1088,592),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__8S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(560,316),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__8S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__8S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__8S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(272,152),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__8S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev)();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__8S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  ABISELECT(-1200,-660),
  ABISELECT(-224,-128),
  ABISELECT(-680,-380),
  ABISELECT(-304,-172),
  ABISELECT(-544,-308),
  ABISELECT(-592,-336),
  ABISELECT(-464,-260),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D1Ev,_ZThn20_N8S19872C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19872C4D0Ev,_ZThn20_N8S19872C4D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__A__8S19872C49S19872C169S19872C15__A1__8S19872C1[] = {
  ABISELECT(-712,-396),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19872C4[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void ABISELECT(_ZThn80_N9S19872C16D1Ev,_ZThn44_N9S19872C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19872C16D0Ev,_ZThn44_N9S19872C16D0Ev)();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C4__9S19872C169S19872C15__8S19872C1[] = {
  ABISELECT(-1168,-640),
  ABISELECT(-192,-108),
  ABISELECT(-272,-152),
  ABISELECT(-432,-240),
  ABISELECT(-512,-288),
  ABISELECT(-560,-316),
  ABISELECT(-1088,-592),
  ABISELECT(-1088,-592),
  ABISELECT(-1088,-592),
  ABISELECT(-648,-360),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19872C16D1Ev,_ZThn44_N9S19872C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19872C16D0Ev,_ZThn44_N9S19872C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A1__9S19872C169S19872C15__8S19872C1[] = {
  0,
  ABISELECT(568,316),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__9S19872C169S19872C15__8S19872C1[] = {
  0,
  0,
  ABISELECT(440,232),
  ABISELECT(1008,548),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C169S19872C15__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(480,272),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C169S19872C15__8S19872C1[] = {
  0,
  0,
  ABISELECT(432,244),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C169S19872C15__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(352,196),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C169S19872C15__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C169S19872C15__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void ABISELECT(_ZThn112_N9S19872C16D1Ev,_ZThn64_N9S19872C16D1Ev)();
extern void ABISELECT(_ZThn112_N9S19872C16D0Ev,_ZThn64_N9S19872C16D0Ev)();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C148S19872C4__9S19872C169S19872C15__8S19872C1[] = {
  ABISELECT(-1200,-660),
  ABISELECT(-224,-128),
  ABISELECT(-680,-380),
  ABISELECT(-304,-172),
  ABISELECT(-544,-308),
  ABISELECT(-592,-336),
  ABISELECT(-464,-260),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19872C16D1Ev,_ZThn64_N9S19872C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19872C16D0Ev,_ZThn64_N9S19872C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C78S19872C4__A1__9S19872C169S19872C15__8S19872C1[] = {
  ABISELECT(-712,-396),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void ABISELECT(_ZTv0_n80_N9S19872C16D1Ev,_ZTv0_n40_N9S19872C16D1Ev)();
extern void ABISELECT(_ZThn608_N9S19872C16D1Ev,_ZThn328_N9S19872C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19872C16D0Ev,_ZTv0_n40_N9S19872C16D0Ev)();
extern void ABISELECT(_ZThn608_N9S19872C16D0Ev,_ZThn328_N9S19872C16D0Ev)() __attribute__((weak));
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__A1__9S19872C169S19872C15__8S19872C1[] = {
  0,
  ABISELECT(-608,-328),
  ABISELECT(-1696,-924),
  ABISELECT(-720,-392),
  ABISELECT(-1176,-644),
  ABISELECT(-800,-436),
  ABISELECT(-1040,-572),
  ABISELECT(-1088,-600),
  ABISELECT(-960,-524),
  ABISELECT(-608,-328),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19872C16D1Ev,_ZTv0_n40_N9S19872C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19872C16D0Ev,_ZTv0_n40_N9S19872C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19872C17__9S19872C169S19872C15__8S19872C1[] = {
  ABISELECT(-992,-540),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI9S19872C16[0]),
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C15__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(320,180),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C15__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C15__8S19872C1[] = {
  0,
  0,
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C15__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C15__8S19872C1[] = {
  0,
  ABISELECT(536,300),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C15__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void ABISELECT(_ZThn32_N9S19872C15D1Ev,_ZThn16_N9S19872C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S19872C15D0Ev,_ZThn16_N9S19872C15D0Ev)();
extern void _ZN9S19872C163v27Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C16__9S19872C15__8S19872C1[] = {
  ABISELECT(640,344),
  ABISELECT(608,328),
  ABISELECT(-1088,-596),
  ABISELECT(-112,-64),
  ABISELECT(-192,-108),
  ABISELECT(-352,-196),
  ABISELECT(-432,-244),
  ABISELECT(-480,-272),
  ABISELECT(-1008,-548),
  ABISELECT(-568,-316),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19872C15D1Ev,_ZThn16_N9S19872C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19872C15D0Ev,_ZThn16_N9S19872C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C163v27Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
extern void _ZN8S19872C63v19Ev();
extern void ABISELECT(_ZThn112_N9S19872C15D1Ev,_ZThn60_N9S19872C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S19872C15D0Ev,_ZThn60_N9S19872C15D0Ev)();
extern void _ZN8S19872C43v21Ev();
extern void _ZN8S19872C43v22Ev();
extern void _ZN8S19872C43v23Ev();
extern void _ZN8S19872C43v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C49S19872C16__9S19872C15__8S19872C1[] = {
  ABISELECT(-1168,-640),
  ABISELECT(-192,-108),
  ABISELECT(-272,-152),
  ABISELECT(-432,-240),
  ABISELECT(-512,-288),
  ABISELECT(-560,-316),
  ABISELECT(-1088,-592),
  ABISELECT(-1088,-592),
  ABISELECT(-1088,-592),
  ABISELECT(-648,-360),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
  (VTBL_ENTRY)&_ZN8S19872C63v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19872C15D1Ev,_ZThn60_N9S19872C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19872C15D0Ev,_ZThn60_N9S19872C15D0Ev),
  (VTBL_ENTRY)&_ZN8S19872C43v21Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v22Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v23Ev,
  (VTBL_ENTRY)&_ZN8S19872C43v24Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C7__9S19872C15__8S19872C1[] = {
  0,
  0,
  ABISELECT(440,232),
  ABISELECT(976,532),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void ABISELECT(_ZThn144_N9S19872C15D1Ev,_ZThn80_N9S19872C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S19872C15D0Ev,_ZThn80_N9S19872C15D0Ev)();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C148S19872C49S19872C16__A1__9S19872C15__8S19872C1[] = {
  ABISELECT(-1200,-660),
  ABISELECT(-224,-128),
  ABISELECT(-680,-380),
  ABISELECT(-304,-172),
  ABISELECT(-544,-308),
  ABISELECT(-592,-336),
  ABISELECT(-464,-260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S19872C15D1Ev,_ZThn80_N9S19872C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S19872C15D0Ev,_ZThn80_N9S19872C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C72v6Ev();
extern void _ZN8S19872C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C78S19872C49S19872C16__A1__9S19872C15__8S19872C1[] = {
  ABISELECT(-712,-396),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&_ZN8S19872C72v6Ev,
  (VTBL_ENTRY)&_ZN8S19872C72v7Ev,
};
extern void ABISELECT(_ZTv0_n80_N9S19872C15D1Ev,_ZTv0_n40_N9S19872C15D1Ev)();
extern void ABISELECT(_ZThn640_N9S19872C15D1Ev,_ZThn344_N9S19872C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19872C15D0Ev,_ZTv0_n40_N9S19872C15D0Ev)();
extern void ABISELECT(_ZThn640_N9S19872C15D0Ev,_ZThn344_N9S19872C15D0Ev)() __attribute__((weak));
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__A2__9S19872C15__8S19872C1[] = {
  0,
  ABISELECT(-640,-344),
  ABISELECT(-1696,-924),
  ABISELECT(-720,-392),
  ABISELECT(-1176,-644),
  ABISELECT(-800,-436),
  ABISELECT(-1040,-572),
  ABISELECT(-1088,-600),
  ABISELECT(-960,-524),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19872C15D1Ev,_ZTv0_n40_N9S19872C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19872C15D0Ev,_ZTv0_n40_N9S19872C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19872C17__9S19872C15__8S19872C1[] = {
  ABISELECT(-992,-540),
  ABISELECT(-672,-360),
  (VTBL_ENTRY)&(_ZTI9S19872C15[0]),
};
extern void _ZN9S19872C14D1Ev();
extern void _ZN9S19872C14D0Ev();
extern void _ZN9S19872C143v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C14__A3__8S19872C1[] = {
  ABISELECT(-1696,-924),
  ABISELECT(-720,-392),
  ABISELECT(-1176,-644),
  ABISELECT(-800,-436),
  ABISELECT(-1040,-572),
  ABISELECT(-1088,-600),
  ABISELECT(-960,-524),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN9S19872C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19872C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19872C143v20Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C14__A3__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(960,524),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
extern void _ZN8S19872C83v17Ev();
extern void _ZN8S19872C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C8__9S19872C14__A3__8S19872C1[] = {
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-88,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(1088,600),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C83v17Ev,
  (VTBL_ENTRY)&_ZN8S19872C83v18Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN8S19872C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C9__9S19872C14__A3__8S19872C1[] = {
  0,
  0,
  ABISELECT(1040,572),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19872C92v8Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C113v12Ev();
extern void _ZN9S19872C113v13Ev();
extern void _ZN9S19872C113v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C11__9S19872C14__A3__8S19872C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-208),
  ABISELECT(-160,-88),
  ABISELECT(800,436),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v12Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v13Ev,
  (VTBL_ENTRY)&_ZN9S19872C113v14Ev,
};
extern void _ZN8S19872C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19872C5__A2__9S19872C14__A3__8S19872C1[] = {
  0,
  ABISELECT(1176,644),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C123v11Ev();
extern void _ZN9S19872C133v15Ev();
extern void _ZN9S19872C133v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C13__9S19872C14__A3__8S19872C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(720,392),
  (VTBL_ENTRY)&(_ZTI9S19872C14[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C123v11Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v15Ev,
  (VTBL_ENTRY)&_ZN9S19872C133v16Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19872C17__8S19872C1[] = {
  ABISELECT(-992,-540),
  0,
  (VTBL_ENTRY)&(_ZTI9S19872C17[0]),
};
extern void _ZN8S19872C52v5Ev();
extern void _ZN9S19872C102v9Ev();
extern void _ZN9S19872C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S19872C10__9S19872C17__8S19872C1[] = {
  0,
  0,
  0,
  ABISELECT(992,540),
  (VTBL_ENTRY)&(_ZTI9S19872C17[0]),
  (VTBL_ENTRY)&_ZN8S19872C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19872C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19872C103v10Ev,
};
static  VTT_ENTRY vtt_S19872C1[] = {
  {&(_ZTV8S19872C1[14]),  14,238},
  {&(_ZTV8S19872C1[45]),  45,238},
  {&(_ZTV8S19872C1[76]),  76,238},
  {&(_ZTV8S19872C1[45]),  45,238},
  {&(_ZTV8S19872C1[86]),  86,238},
  {&(_ZTV8S19872C1[92]),  92,238},
  {&(_ZTV8S19872C1[99]),  99,238},
  {&(_ZTV8S19872C1[111]),  111,238},
  {&(_ZTV8S19872C1[122]),  122,238},
  {&(_ZTV8S19872C1[65]),  65,238},
  {&(_ZTV8S19872C1[71]),  71,238},
  {&(_ZTV8S19872C1[155]),  155,238},
  {&(_ZTV8S19872C1[175]),  175,238},
  {&(_ZTV8S19872C1[192]),  192,238},
  {&(_ZTV8S19872C1[210]),  210,238},
  {&(_ZTV8S19872C1[216]),  216,238},
  {&(_ZTV8S19872C1[232]),  232,238},
  {&(_ZTV8S19872C1[238]),  238,238},
  {&(_ZTV8S19872C1[220]),  220,238},
  {&(_tg__ZTV8S19872C3__8S19872C1[12]),  12,23},
  {&(_tg__ZTV8S19872C48S19872C3__8S19872C1[12]),  12,21},
  {&(_tg__ZTV8S19872C68S19872C48S19872C3__8S19872C1[12]),  12,15},
  {&(_tg__ZTV8S19872C5__8S19872C68S19872C48S19872C3__8S19872C1[3]),  3,4},
  {&(_tg__ZTV8S19872C68S19872C48S19872C3__8S19872C1[12]),  12,15},
  {&(_tg__ZTV8S19872C8__8S19872C68S19872C48S19872C3__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C68S19872C48S19872C3__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C68S19872C48S19872C3__8S19872C1[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C68S19872C48S19872C3__8S19872C1[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C68S19872C48S19872C3__8S19872C1[6]),  6,10},
  {&(_tg__ZTV9S19872C148S19872C48S19872C3__8S19872C1[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C148S19872C48S19872C3__8S19872C1[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C148S19872C48S19872C3__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C148S19872C48S19872C3__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C148S19872C48S19872C3__8S19872C1[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C148S19872C48S19872C3__8S19872C1[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C148S19872C48S19872C3__8S19872C1[6]),  6,10},
  {&(_tg__ZTV8S19872C78S19872C48S19872C3__A1__8S19872C1[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C78S19872C48S19872C3__A1__8S19872C1[3]),  3,4},
  {&(_tg__ZTV8S19872C5__8S19872C48S19872C3__8S19872C1[3]),  3,4},
  {&(_tg__ZTV8S19872C48S19872C3__8S19872C1[12]),  12,21},
  {&(_tg__ZTV8S19872C8__8S19872C48S19872C3__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C48S19872C3__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C48S19872C3__8S19872C1[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C48S19872C3__8S19872C1[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C48S19872C3__8S19872C1[6]),  6,10},
  {&(_tg__ZTV9S19872C14__8S19872C48S19872C3__8S19872C1[9]),  9,12},
  {&(_tg__ZTV8S19872C7__A__8S19872C48S19872C3__8S19872C1[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C3__8S19872C1[3]),  3,4},
  {&(_tg__ZTV8S19872C3__8S19872C1[12]),  12,23},
  {&(_tg__ZTV8S19872C8__8S19872C3__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C3__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C3__8S19872C1[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C3__8S19872C1[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C3__8S19872C1[6]),  6,10},
  {&(_tg__ZTV9S19872C148S19872C4__8S19872C3__8S19872C1[9]),  9,12},
  {&(_tg__ZTV8S19872C78S19872C4__A1__8S19872C3__8S19872C1[3]),  3,5},
  {&(_tg__ZTV8S19872C7__8S19872C1[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C7__8S19872C1[3]),  3,4},
  {&(_tg__ZTV8S19872C8__8S19872C1[7]),  7,9},
  {&(_tg__ZTV8S19872C9__8S19872C8__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C8__8S19872C1[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C8__8S19872C1[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__8S19872C8__8S19872C1[3]),  3,4},
  {&(_tg__ZTV9S19872C13__8S19872C8__8S19872C1[6]),  6,10},
  {&(_tg__ZTV9S19872C11__8S19872C1[4]),  4,9},
  {&(_tg__ZTV9S19872C10__9S19872C11__8S19872C1[5]),  5,8},
  {&(_tg__ZTV8S19872C5__A1__9S19872C11__8S19872C1[3]),  3,4},
  {&(_tg__ZTV9S19872C15__8S19872C1[12]),  12,20},
  {&(_tg__ZTV9S19872C149S19872C15__A1__8S19872C1[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C149S19872C15__A1__8S19872C1[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C149S19872C15__A1__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C149S19872C15__A1__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C149S19872C15__A1__8S19872C1[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C149S19872C15__A1__8S19872C1[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C149S19872C15__A1__8S19872C1[6]),  6,10},
  {&(_tg__ZTV9S19872C169S19872C15__8S19872C1[12]),  12,17},
  {&(_tg__ZTV8S19872C49S19872C169S19872C15__A1__8S19872C1[12]),  12,21},
  {&(_tg__ZTV8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[12]),  12,15},
  {&(_tg__ZTV8S19872C5__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[3]),  3,4},
  {&(_tg__ZTV8S19872C7__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[5]),  5,7},
  {&(_tg__ZTV8S19872C8__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C68S19872C49S19872C169S19872C15__A1__8S19872C1[6]),  6,10},
  {&(_tg__ZTV9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C148S19872C49S19872C169S19872C15__A2__8S19872C1[6]),  6,10},
  {&(_tg__ZTV8S19872C78S19872C49S19872C169S19872C15__A2__8S19872C1[3]),  3,5},
  {&(_tg__ZTV8S19872C5__8S19872C78S19872C49S19872C169S19872C15__A2__8S19872C1[3]),  3,4},
  {&(_tg__ZTV8S19872C5__8S19872C49S19872C169S19872C15__A1__8S19872C1[3]),  3,4},
  {&(_tg__ZTV8S19872C7__8S19872C49S19872C169S19872C15__A1__8S19872C1[5]),  5,7},
  {&(_tg__ZTV8S19872C8__8S19872C49S19872C169S19872C15__A1__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__8S19872C49S19872C169S19872C15__A1__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C10__8S19872C49S19872C169S19872C15__A1__8S19872C1[5]),  5,8},
  {&(_tg__ZTV9S19872C11__8S19872C49S19872C169S19872C15__A1__8S19872C1[9]),  9,14},
  {&(_tg__ZTV9S19872C13__8S19872C49S19872C169S19872C15__A1__8S19872C1[6]),  6,10},
  {&(_tg__ZTV9S19872C14__8S19872C49S19872C169S19872C15__A1__8S19872C1[9]),  9,12},
  {&(_tg__ZTV8S19872C7__A__8S19872C49S19872C169S19872C15__A1__8S19872C1[3]),  3,5},
  {&(_tg__ZTV8S19872C4__9S19872C169S19872C15__8S19872C1[12]),  12,21},
  {&(_tg__ZTV8S19872C5__A1__9S19872C169S19872C15__8S19872C1[3]),  3,4},
  {&(_tg__ZTV8S19872C7__9S19872C169S19872C15__8S19872C1[5]),  5,7},
  {&(_tg__ZTV8S19872C8__9S19872C169S19872C15__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C169S19872C15__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C10__9S19872C169S19872C15__8S19872C1[5]),  5,8},
  {&(_tg__ZTV9S19872C11__9S19872C169S19872C15__8S19872C1[9]),  9,14},
  {&(_tg__ZTV9S19872C13__9S19872C169S19872C15__8S19872C1[6]),  6,10},
  {&(_tg__ZTV9S19872C148S19872C4__9S19872C169S19872C15__8S19872C1[9]),  9,12},
  {&(_tg__ZTV8S19872C78S19872C4__A1__9S19872C169S19872C15__8S19872C1[3]),  3,5},
  {&(_tg__ZTV9S19872C14__A1__9S19872C169S19872C15__8S19872C1[11]),  11,14},
  {&(_tg__ZTV9S19872C17__9S19872C169S19872C15__8S19872C1[3]),  3,3},
  {&(_tg__ZTV9S19872C10__9S19872C15__8S19872C1[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C15__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C15__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C15__8S19872C1[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C15__8S19872C1[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C15__8S19872C1[6]),  6,10},
  {&(_tg__ZTV9S19872C16__9S19872C15__8S19872C1[12]),  12,17},
  {&(_tg__ZTV8S19872C49S19872C16__9S19872C15__8S19872C1[12]),  12,21},
  {&(_tg__ZTV8S19872C7__9S19872C15__8S19872C1[5]),  5,7},
  {&(_tg__ZTV9S19872C148S19872C49S19872C16__A1__9S19872C15__8S19872C1[9]),  9,12},
  {&(_tg__ZTV8S19872C78S19872C49S19872C16__A1__9S19872C15__8S19872C1[3]),  3,5},
  {&(_tg__ZTV9S19872C14__A2__9S19872C15__8S19872C1[11]),  11,14},
  {&(_tg__ZTV9S19872C17__9S19872C15__8S19872C1[3]),  3,3},
  {&(_tg__ZTV9S19872C14__A3__8S19872C1[9]),  9,12},
  {&(_tg__ZTV9S19872C10__9S19872C14__A3__8S19872C1[5]),  5,8},
  {&(_tg__ZTV8S19872C8__9S19872C14__A3__8S19872C1[9]),  9,11},
  {&(_tg__ZTV8S19872C9__9S19872C14__A3__8S19872C1[4]),  4,6},
  {&(_tg__ZTV9S19872C11__9S19872C14__A3__8S19872C1[9]),  9,14},
  {&(_tg__ZTV8S19872C5__A2__9S19872C14__A3__8S19872C1[3]),  3,4},
  {&(_tg__ZTV9S19872C13__9S19872C14__A3__8S19872C1[6]),  6,10},
  {&(_tg__ZTV9S19872C17__8S19872C1[3]),  3,3},
  {&(_tg__ZTV9S19872C10__9S19872C17__8S19872C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19872C1[];
extern  VTBL_ENTRY _ZTV8S19872C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19872C1[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19872C15D0Ev,_ZTv0_n40_N9S19872C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19872C15D0Ev,_ZThn344_N9S19872C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19872C15D1Ev,_ZTv0_n40_N9S19872C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19872C15D1Ev,_ZThn344_N9S19872C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19872C16D0Ev,_ZTv0_n40_N9S19872C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N9S19872C16D0Ev,_ZThn328_N9S19872C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19872C16D1Ev,_ZTv0_n40_N9S19872C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N9S19872C16D1Ev,_ZThn328_N9S19872C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19872C1D0Ev,_ZTv0_n40_N8S19872C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1696_N8S19872C1D0Ev,_ZThn924_N8S19872C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19872C1D1Ev,_ZTv0_n40_N8S19872C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1696_N8S19872C1D1Ev,_ZThn924_N8S19872C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19872C1D0Ev,_ZTv0_n52_N8S19872C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19872C1D0Ev,_ZThn580_N8S19872C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19872C1D1Ev,_ZTv0_n52_N8S19872C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19872C1D1Ev,_ZThn580_N8S19872C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19872C1D0Ev,_ZTv0_n56_N8S19872C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19872C1D0Ev,_ZThn48_N8S19872C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19872C1D1Ev,_ZTv0_n56_N8S19872C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19872C1D1Ev,_ZThn48_N8S19872C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19872C1 = {  "S19872C1", // class name
  bases_S19872C1, 37,
  &(vtc_S19872C1[0]), // expected_vtbl_contents
  &(vtt_S19872C1[0]), // expected_vtt_contents
  ABISELECT(1744,948), // object size
  NSPAIRA(_ZTI8S19872C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19872C1),238, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19872C1),137, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2367C4  {
  ::S2213C20_nt s2367c4f0;
  int s2367c4f1[2];
  char s2367c4f2;
  virtual  ~S2367C4(); // _ZN7S2367C4D1Ev
  virtual void  v5(); // _ZN7S2367C42v5Ev
  virtual void  v6(); // _ZN7S2367C42v6Ev
  virtual void  v7(); // _ZN7S2367C42v7Ev
  S2367C4(); // tgen
};
//SIG(-1 S2367C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2367C4 ::~S2367C4(){ note_dtor("S2367C4", this);}
void  S2367C4 ::v5(){vfunc_called(this, "_ZN7S2367C42v5Ev");}
void  S2367C4 ::v6(){vfunc_called(this, "_ZN7S2367C42v6Ev");}
void  S2367C4 ::v7(){vfunc_called(this, "_ZN7S2367C42v7Ev");}
S2367C4 ::S2367C4(){ note_ctor("S2367C4", this);} // tgen

static void Test_S2367C4()
{
  extern Class_Descriptor cd_S2367C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2367C4, buf);
    S2367C4 *dp, &lv = *(dp=new (buf) S2367C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2367C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2367C4)");
    check_field_offset(lv, s2367c4f0, ABISELECT(8,4), "S2367C4.s2367c4f0");
    check_field_offset(lv, s2367c4f1, ABISELECT(24,16), "S2367C4.s2367c4f1");
    check_field_offset(lv, s2367c4f2, ABISELECT(32,24), "S2367C4.s2367c4f2");
    test_class_info(&lv, &cd_S2367C4);
    dp->~S2367C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2367C4(Test_S2367C4, "S2367C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2367C4C1Ev();
extern void _ZN7S2367C4D1Ev();
Name_Map name_map_S2367C4[] = {
  NSPAIR(_ZN7S2367C4C1Ev),
  NSPAIR(_ZN7S2367C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2367C4[];
extern void _ZN7S2367C4D1Ev();
extern void _ZN7S2367C4D0Ev();
extern void _ZN7S2367C42v5Ev();
extern void _ZN7S2367C42v6Ev();
extern void _ZN7S2367C42v7Ev();
static  VTBL_ENTRY vtc_S2367C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2367C4[0]),
  (VTBL_ENTRY)&_ZN7S2367C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2367C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v7Ev,
};
extern VTBL_ENTRY _ZTI7S2367C4[];
extern  VTBL_ENTRY _ZTV7S2367C4[];
Class_Descriptor cd_S2367C4 = {  "S2367C4", // class name
  0,0,//no base classes
  &(vtc_S2367C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2367C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2367C4),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  S2367C3_nt  : S2367C4 {
  void *s2367c3f0;
  virtual void  v8(); // _ZN10S2367C3_nt2v8Ev
  virtual void  v9(); // _ZN10S2367C3_nt2v9Ev
  ~S2367C3_nt(); // tgen
  S2367C3_nt(); // tgen
};
//SIG(-1 S2367C3_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S2367C3_nt ::v8(){vfunc_called(this, "_ZN10S2367C3_nt2v8Ev");}
void  S2367C3_nt ::v9(){vfunc_called(this, "_ZN10S2367C3_nt2v9Ev");}
S2367C3_nt ::~S2367C3_nt(){ note_dtor("S2367C3_nt", this);} // tgen
S2367C3_nt ::S2367C3_nt(){ note_ctor("S2367C3_nt", this);} // tgen

//skip512 S2367C3_nt

#else // __cplusplus

extern void _ZN10S2367C3_ntC1Ev();
extern void _ZN10S2367C3_ntD1Ev();
Name_Map name_map_S2367C3_nt[] = {
  NSPAIR(_ZN10S2367C3_ntC1Ev),
  NSPAIR(_ZN10S2367C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C4;
extern VTBL_ENTRY _ZTI7S2367C4[];
extern  VTBL_ENTRY _ZTV7S2367C4[];
static Base_Class bases_S2367C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2367C3_nt[];
extern void _ZN10S2367C3_ntD1Ev();
extern void _ZN10S2367C3_ntD0Ev();
extern void _ZN7S2367C42v5Ev();
extern void _ZN7S2367C42v6Ev();
extern void _ZN7S2367C42v7Ev();
extern void _ZN10S2367C3_nt2v8Ev();
extern void _ZN10S2367C3_nt2v9Ev();
static  VTBL_ENTRY vtc_S2367C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2367C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S2367C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2367C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v7Ev,
  (VTBL_ENTRY)&_ZN10S2367C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2367C3_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S2367C3_nt[];
VTBL_ENTRY *P__ZTI10S2367C3_nt = _ZTI10S2367C3_nt; 
extern  VTBL_ENTRY _ZTV10S2367C3_nt[];
Class_Descriptor cd_S2367C3_nt = {  "S2367C3_nt", // class name
  bases_S2367C3_nt, 1,
  &(vtc_S2367C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S2367C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2367C3_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  S2367C8_nt  {
  __tsi64 s2367c8f0[4];
};
//SIG(-1 S2367C8_nt) C1{ FL[4]}



//skip512 S2367C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2367C7_nt  {
  ::S2367C8_nt s2367c7f0;
  void  mf2367c7(); // _ZN10S2367C7_nt8mf2367c7Ev
};
//SIG(-1 S2367C7_nt) C1{ m FC2{ FL[4]}}


void  S2367C7_nt ::mf2367c7(){}

//skip512 S2367C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2367C10_nt  {
  void *s2367c10f0;
  void  mf2367c10(); // _ZN11S2367C10_nt9mf2367c10Ev
};
//SIG(-1 S2367C10_nt) C1{ m Fp}


void  S2367C10_nt ::mf2367c10(){}

//skip512 S2367C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2367C9  {
  ::S2213C20_nt s2367c9f0;
  ::S2367C10_nt s2367c9f1;
  int s2367c9f2[2];
  ::S2213C20_nt s2367c9f3;
  ::S2367C10_nt s2367c9f4;
  int s2367c9f5[2];
  void  mf2367c9(); // _ZN7S2367C98mf2367c9Ev
};
//SIG(-1 S2367C9) C1{ m FC2{ m Fp Fi FC3{ m}} FC4{ m Fp} Fi[2] FC2 FC4 Fi[2]}


void  S2367C9 ::mf2367c9(){}

static void Test_S2367C9()
{
  {
    init_simple_test("S2367C9");
    S2367C9 lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S2367C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2367C9)");
    check_field_offset(lv, s2367c9f0, 0, "S2367C9.s2367c9f0");
    check_field_offset(lv, s2367c9f1, ABISELECT(16,12), "S2367C9.s2367c9f1");
    check_field_offset(lv, s2367c9f2, ABISELECT(24,16), "S2367C9.s2367c9f2");
    check_field_offset(lv, s2367c9f3, ABISELECT(32,24), "S2367C9.s2367c9f3");
    check_field_offset(lv, s2367c9f4, ABISELECT(48,36), "S2367C9.s2367c9f4");
    check_field_offset(lv, s2367c9f5, ABISELECT(56,40), "S2367C9.s2367c9f5");
  }
}
static Arrange_To_Call_Me vS2367C9(Test_S2367C9, "S2367C9", ABISELECT(64,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2367C12_nt  {
  ::S3164C4_nt s2367c12f0;
  ::S2137C26_nt s2367c12f1;
  void  mf2367c12(); // _ZN11S2367C12_nt9mf2367c12Ev
};
//SIG(-1 S2367C12_nt) C1{ m FC2{ m Fi[2]} FC3{ m Fi[2]}}


void  S2367C12_nt ::mf2367c12(){}

//skip512 S2367C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2367C11_nt  {
  void *s2367c11f0[2];
  int s2367c11f1[2];
  void *s2367c11f2;
  __tsi64 s2367c11f3;
  void *s2367c11f4[9];
  short s2367c11f5;
  void *s2367c11f6[2];
  ::S2367C12_nt s2367c11f7;
  ::S2137C26_nt s2367c11f8;
  char s2367c11f9;
  int s2367c11f10[3];
  char s2367c11f11;
  int s2367c11f12[6];
  char s2367c11f13;
  void  mf2367c11(); // _ZN11S2367C11_nt9mf2367c11Ev
};
//SIG(-1 S2367C11_nt) C1{ m Fp[2] Fi[2] Fp FL Fp[9] Fs Fp[2] FC2{ m FC3{ m Fi[2]} FC4{ m Fi[2]}} FC4 Fc Fi[3] Fc Fi[6] Fc}


void  S2367C11_nt ::mf2367c11(){}

//skip512 S2367C11_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2367C15  {
  int s2367c15f0[2];
  __tsi64 s2367c15f1;
  int s2367c15f2;
  void  mf2367c15(); // _ZN8S2367C159mf2367c15Ev
};
//SIG(-1 S2367C15) C1{ m Fi[2] FL Fi}


void  S2367C15 ::mf2367c15(){}

static void Test_S2367C15()
{
  {
    init_simple_test("S2367C15");
    S2367C15 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S2367C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2367C15)");
    check_field_offset(lv, s2367c15f0, 0, "S2367C15.s2367c15f0");
    check_field_offset(lv, s2367c15f1, 8, "S2367C15.s2367c15f1");
    check_field_offset(lv, s2367c15f2, 16, "S2367C15.s2367c15f2");
  }
}
static Arrange_To_Call_Me vS2367C15(Test_S2367C15, "S2367C15", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2367C2  : S2367C3_nt {
  int s2367c2f0[4];
  void *s2367c2f1[4];
  int s2367c2f2[2];
  ::S2367C7_nt s2367c2f3;
  char s2367c2f4[2];
  ::S2367C9 s2367c2f5;
  void *s2367c2f6;
  ::S2367C11_nt s2367c2f7;
  ::S2367C11_nt s2367c2f8;
  ::S2367C15 s2367c2f9;
  ::S3164C31_nt s2367c2f10;
  __tsi64 s2367c2f11[3];
  int s2367c2f12;
  __tsi64 s2367c2f13;
  ::S2213C20_nt s2367c2f14;
  __tsi64 s2367c2f15;
  virtual void  v10(); // _ZN7S2367C23v10Ev
  virtual void  v11(); // _ZN7S2367C23v11Ev
  virtual void  v12(); // _ZN7S2367C23v12Ev
  virtual void  v13(); // _ZN7S2367C23v13Ev
  virtual void  v14(); // _ZN7S2367C23v14Ev
  virtual void  v15(); // _ZN7S2367C23v15Ev
  ~S2367C2(); // tgen
  S2367C2(); // tgen
};
//SIG(-1 S2367C2) C1{ BC2{ BC3{ vd v7 v8 v9 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v10 v11 Fp} v1 v2 v3 v4 v5 v6 Fi[4] Fp[4] Fi[2] FC6{ m FC7{ FL[4]}} Fc[2] FC8{ m FC4 FC9{ m Fp} Fi[2] FC4 FC9 Fi[2]} Fp FC10{ m Fp[2] Fi[2] Fp FL Fp[9] Fs Fp[2] FC11{ m FC12{ m Fi[2]} FC13{ m Fi[2]}} FC13 Fc Fi[3] Fc Fi[6] Fc} FC10 FC14{ m Fi[2] FL Fi} FC15{ m} FL[3] Fi FL FC4 FL}


void  S2367C2 ::v10(){vfunc_called(this, "_ZN7S2367C23v10Ev");}
void  S2367C2 ::v11(){vfunc_called(this, "_ZN7S2367C23v11Ev");}
void  S2367C2 ::v12(){vfunc_called(this, "_ZN7S2367C23v12Ev");}
void  S2367C2 ::v13(){vfunc_called(this, "_ZN7S2367C23v13Ev");}
void  S2367C2 ::v14(){vfunc_called(this, "_ZN7S2367C23v14Ev");}
void  S2367C2 ::v15(){vfunc_called(this, "_ZN7S2367C23v15Ev");}
S2367C2 ::~S2367C2(){ note_dtor("S2367C2", this);} // tgen
S2367C2 ::S2367C2(){ note_ctor("S2367C2", this);} // tgen

static void Test_S2367C2()
{
  extern Class_Descriptor cd_S2367C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(92,135)];
    init_test(&cd_S2367C2, buf);
    S2367C2 *dp, &lv = *(dp=new (buf) S2367C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(728,536), "sizeof(S2367C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2367C2)");
    check_base_class_offset(lv, (S2367C4*)(S2367C3_nt*), 0, "S2367C2");
    check_base_class_offset(lv, (S2367C3_nt*), 0, "S2367C2");
    check_field_offset(lv, s2367c2f0, ABISELECT(48,32), "S2367C2.s2367c2f0");
    check_field_offset(lv, s2367c2f1, ABISELECT(64,48), "S2367C2.s2367c2f1");
    check_field_offset(lv, s2367c2f2, ABISELECT(96,64), "S2367C2.s2367c2f2");
    check_field_offset(lv, s2367c2f3, ABISELECT(104,72), "S2367C2.s2367c2f3");
    check_field_offset(lv, s2367c2f4, ABISELECT(136,104), "S2367C2.s2367c2f4");
    check_field_offset(lv, s2367c2f5, ABISELECT(144,108), "S2367C2.s2367c2f5");
    check_field_offset(lv, s2367c2f6, ABISELECT(208,156), "S2367C2.s2367c2f6");
    check_field_offset(lv, s2367c2f7, ABISELECT(216,160), "S2367C2.s2367c2f7");
    check_field_offset(lv, s2367c2f8, ABISELECT(424,308), "S2367C2.s2367c2f8");
    check_field_offset(lv, s2367c2f9, ABISELECT(632,456), "S2367C2.s2367c2f9");
    check_field_offset(lv, s2367c2f10, ABISELECT(656,476), "S2367C2.s2367c2f10");
    check_field_offset(lv, s2367c2f11, ABISELECT(664,480), "S2367C2.s2367c2f11");
    check_field_offset(lv, s2367c2f12, ABISELECT(688,504), "S2367C2.s2367c2f12");
    check_field_offset(lv, s2367c2f13, ABISELECT(696,508), "S2367C2.s2367c2f13");
    check_field_offset(lv, s2367c2f14, ABISELECT(704,516), "S2367C2.s2367c2f14");
    check_field_offset(lv, s2367c2f15, ABISELECT(720,528), "S2367C2.s2367c2f15");
    test_class_info(&lv, &cd_S2367C2);
    dp->~S2367C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2367C2(Test_S2367C2, "S2367C2", ABISELECT(728,536));

#else // __cplusplus

extern void _ZN7S2367C2C1Ev();
extern void _ZN7S2367C2D1Ev();
Name_Map name_map_S2367C2[] = {
  NSPAIR(_ZN7S2367C2C1Ev),
  NSPAIR(_ZN7S2367C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C4;
extern VTBL_ENTRY _ZTI7S2367C4[];
extern  VTBL_ENTRY _ZTV7S2367C4[];
extern Class_Descriptor cd_S2367C3_nt;
extern VTBL_ENTRY _ZTI10S2367C3_nt[];
extern  VTBL_ENTRY _ZTV10S2367C3_nt[];
static Base_Class bases_S2367C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2367C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S2367C2[];
extern void _ZN7S2367C2D1Ev();
extern void _ZN7S2367C2D0Ev();
extern void _ZN7S2367C42v5Ev();
extern void _ZN7S2367C42v6Ev();
extern void _ZN7S2367C42v7Ev();
extern void _ZN10S2367C3_nt2v8Ev();
extern void _ZN10S2367C3_nt2v9Ev();
extern void _ZN7S2367C23v10Ev();
extern void _ZN7S2367C23v11Ev();
extern void _ZN7S2367C23v12Ev();
extern void _ZN7S2367C23v13Ev();
extern void _ZN7S2367C23v14Ev();
extern void _ZN7S2367C23v15Ev();
static  VTBL_ENTRY vtc_S2367C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2367C2[0]),
  (VTBL_ENTRY)&_ZN7S2367C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2367C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v7Ev,
  (VTBL_ENTRY)&_ZN10S2367C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2367C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v15Ev,
};
extern VTBL_ENTRY _ZTI7S2367C2[];
extern  VTBL_ENTRY _ZTV7S2367C2[];
Class_Descriptor cd_S2367C2 = {  "S2367C2", // class name
  bases_S2367C2, 2,
  &(vtc_S2367C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(728,536), // object size
  NSPAIRA(_ZTI7S2367C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2367C2),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2367C17  {
  __tsi64 s2367c17f0;
  ::S2213C20_nt s2367c17f1;
  ::S2367C10_nt s2367c17f2;
  void *s2367c17f3;
  void  mf2367c17(); // _ZN8S2367C179mf2367c17Ev
};
//SIG(-1 S2367C17) C1{ m FL FC2{ m Fp Fi FC3{ m}} FC4{ m Fp} Fp}


void  S2367C17 ::mf2367c17(){}

static void Test_S2367C17()
{
  {
    init_simple_test("S2367C17");
    S2367C17 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2367C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2367C17)");
    check_field_offset(lv, s2367c17f0, 0, "S2367C17.s2367c17f0");
    check_field_offset(lv, s2367c17f1, 8, "S2367C17.s2367c17f1");
    check_field_offset(lv, s2367c17f2, ABISELECT(24,20), "S2367C17.s2367c17f2");
    check_field_offset(lv, s2367c17f3, ABISELECT(32,24), "S2367C17.s2367c17f3");
  }
}
static Arrange_To_Call_Me vS2367C17(Test_S2367C17, "S2367C17", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2367C19  {
  void *s2367c19f0;
  void  mf2367c19(); // _ZN8S2367C199mf2367c19Ev
};
//SIG(-1 S2367C19) C1{ m Fp}


void  S2367C19 ::mf2367c19(){}

static void Test_S2367C19()
{
  {
    init_simple_test("S2367C19");
    S2367C19 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2367C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2367C19)");
    check_field_offset(lv, s2367c19f0, 0, "S2367C19.s2367c19f0");
  }
}
static Arrange_To_Call_Me vS2367C19(Test_S2367C19, "S2367C19", ABISELECT(8,4));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S2367C19[];
VTBL_ENTRY *P__ZTI8S2367C19 = _ZTI8S2367C19; 
Class_Descriptor cd_S2367C19 = {  "S2367C19", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S2367C19),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  S2367C1  : S2367C2 {
  ::S2367C17 s2367c1f0;
  void *s2367c1f1;
  ::S2367C19 s2367c1f2;
  void *s2367c1f3;
  virtual void  v1(); // _ZN7S2367C12v1Ev
  virtual void  v2(); // _ZN7S2367C12v2Ev
  virtual void  v3(); // _ZN7S2367C12v3Ev
  virtual void  v4(); // _ZN7S2367C12v4Ev
  ~S2367C1(); // tgen
  S2367C1(); // tgen
};
//SIG(1 S2367C1) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} v8 v9 Fp} v10 v11 v12 v13 v14 v15 Fi[4] Fp[4] Fi[2] FC7{ m FC8{ FL[4]}} Fc[2] FC9{ m FC5 FC10{ m Fp} Fi[2] FC5 FC10 Fi[2]} Fp FC11{ m Fp[2] Fi[2] Fp FL Fp[9] Fs Fp[2] FC12{ m FC13{ m Fi[2]} FC14{ m Fi[2]}} FC14 Fc Fi[3] Fc Fi[6] Fc} FC11 FC15{ m Fi[2] FL Fi} FC16{ m} FL[3] Fi FL FC5 FL} v1 v2 v3 v4 FC17{ m FL FC5 FC10 Fp} Fp FC18{ m Fp} Fp}


void  S2367C1 ::v1(){vfunc_called(this, "_ZN7S2367C12v1Ev");}
void  S2367C1 ::v2(){vfunc_called(this, "_ZN7S2367C12v2Ev");}
void  S2367C1 ::v3(){vfunc_called(this, "_ZN7S2367C12v3Ev");}
void  S2367C1 ::v4(){vfunc_called(this, "_ZN7S2367C12v4Ev");}
S2367C1 ::~S2367C1(){ note_dtor("S2367C1", this);} // tgen
S2367C1 ::S2367C1(){ note_ctor("S2367C1", this);} // tgen

static void Test_S2367C1()
{
  extern Class_Descriptor cd_S2367C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(100,145)];
    init_test(&cd_S2367C1, buf);
    S2367C1 *dp, &lv = *(dp=new (buf) S2367C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(792,576), "sizeof(S2367C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2367C1)");
    check_base_class_offset(lv, (S2367C4*)(S2367C3_nt*)(S2367C2*), 0, "S2367C1");
    check_base_class_offset(lv, (S2367C3_nt*)(S2367C2*), 0, "S2367C1");
    check_base_class_offset(lv, (S2367C2*), 0, "S2367C1");
    check_field_offset(lv, s2367c1f0, ABISELECT(728,536), "S2367C1.s2367c1f0");
    check_field_offset(lv, s2367c1f1, ABISELECT(768,564), "S2367C1.s2367c1f1");
    check_field_offset(lv, s2367c1f2, ABISELECT(776,568), "S2367C1.s2367c1f2");
    check_field_offset(lv, s2367c1f3, ABISELECT(784,572), "S2367C1.s2367c1f3");
    test_class_info(&lv, &cd_S2367C1);
    dp->~S2367C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2367C1(Test_S2367C1, "S2367C1", ABISELECT(792,576));

#else // __cplusplus

extern void _ZN7S2367C1C1Ev();
extern void _ZN7S2367C1D1Ev();
Name_Map name_map_S2367C1[] = {
  NSPAIR(_ZN7S2367C1C1Ev),
  NSPAIR(_ZN7S2367C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C4;
extern VTBL_ENTRY _ZTI7S2367C4[];
extern  VTBL_ENTRY _ZTV7S2367C4[];
extern Class_Descriptor cd_S2367C3_nt;
extern VTBL_ENTRY _ZTI10S2367C3_nt[];
extern  VTBL_ENTRY _ZTV10S2367C3_nt[];
extern Class_Descriptor cd_S2367C2;
extern VTBL_ENTRY _ZTI7S2367C2[];
extern  VTBL_ENTRY _ZTV7S2367C2[];
static Base_Class bases_S2367C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2367C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2367C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2367C1[];
extern void _ZN7S2367C1D1Ev();
extern void _ZN7S2367C1D0Ev();
extern void _ZN7S2367C42v5Ev();
extern void _ZN7S2367C42v6Ev();
extern void _ZN7S2367C42v7Ev();
extern void _ZN10S2367C3_nt2v8Ev();
extern void _ZN10S2367C3_nt2v9Ev();
extern void _ZN7S2367C23v10Ev();
extern void _ZN7S2367C23v11Ev();
extern void _ZN7S2367C23v12Ev();
extern void _ZN7S2367C23v13Ev();
extern void _ZN7S2367C23v14Ev();
extern void _ZN7S2367C23v15Ev();
extern void _ZN7S2367C12v1Ev();
extern void _ZN7S2367C12v2Ev();
extern void _ZN7S2367C12v3Ev();
extern void _ZN7S2367C12v4Ev();
static  VTBL_ENTRY vtc_S2367C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2367C1[0]),
  (VTBL_ENTRY)&_ZN7S2367C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2367C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2367C42v7Ev,
  (VTBL_ENTRY)&_ZN10S2367C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2367C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2367C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2367C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2367C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2367C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2367C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S2367C1[];
extern  VTBL_ENTRY _ZTV7S2367C1[];
Class_Descriptor cd_S2367C1 = {  "S2367C1", // class name
  bases_S2367C1, 3,
  &(vtc_S2367C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(792,576), // object size
  NSPAIRA(_ZTI7S2367C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2367C1),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  S864C5  {
  ::S2213C20_nt s864c5f0;
  int s864c5f1[2];
  char s864c5f2;
  virtual  ~S864C5(); // _ZN6S864C5D1Ev
  virtual void  v2(); // _ZN6S864C52v2Ev
  virtual void  v3(); // _ZN6S864C52v3Ev
  virtual void  v4(); // _ZN6S864C52v4Ev
  S864C5(); // tgen
};
//SIG(-1 S864C5) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S864C5 ::~S864C5(){ note_dtor("S864C5", this);}
void  S864C5 ::v2(){vfunc_called(this, "_ZN6S864C52v2Ev");}
void  S864C5 ::v3(){vfunc_called(this, "_ZN6S864C52v3Ev");}
void  S864C5 ::v4(){vfunc_called(this, "_ZN6S864C52v4Ev");}
S864C5 ::S864C5(){ note_ctor("S864C5", this);} // tgen

static void Test_S864C5()
{
  extern Class_Descriptor cd_S864C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S864C5, buf);
    S864C5 *dp, &lv = *(dp=new (buf) S864C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S864C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S864C5)");
    check_field_offset(lv, s864c5f0, ABISELECT(8,4), "S864C5.s864c5f0");
    check_field_offset(lv, s864c5f1, ABISELECT(24,16), "S864C5.s864c5f1");
    check_field_offset(lv, s864c5f2, ABISELECT(32,24), "S864C5.s864c5f2");
    test_class_info(&lv, &cd_S864C5);
    dp->~S864C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS864C5(Test_S864C5, "S864C5", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN6S864C5C1Ev();
extern void _ZN6S864C5D1Ev();
Name_Map name_map_S864C5[] = {
  NSPAIR(_ZN6S864C5C1Ev),
  NSPAIR(_ZN6S864C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S864C5[];
extern void _ZN6S864C5D1Ev();
extern void _ZN6S864C5D0Ev();
extern void _ZN6S864C52v2Ev();
extern void _ZN6S864C52v3Ev();
extern void _ZN6S864C52v4Ev();
static  VTBL_ENTRY vtc_S864C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S864C5[0]),
  (VTBL_ENTRY)&_ZN6S864C5D1Ev,
  (VTBL_ENTRY)&_ZN6S864C5D0Ev,
  (VTBL_ENTRY)&_ZN6S864C52v2Ev,
  (VTBL_ENTRY)&_ZN6S864C52v3Ev,
  (VTBL_ENTRY)&_ZN6S864C52v4Ev,
};
extern VTBL_ENTRY _ZTI6S864C5[];
extern  VTBL_ENTRY _ZTV6S864C5[];
Class_Descriptor cd_S864C5 = {  "S864C5", // class name
  0,0,//no base classes
  &(vtc_S864C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI6S864C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S864C5),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  S864C4  : S864C5 {
  void *s864c4f0;
  virtual void  v5(); // _ZN6S864C42v5Ev
  virtual void  v6(); // _ZN6S864C42v6Ev
  ~S864C4(); // tgen
  S864C4(); // tgen
};
//SIG(-1 S864C4) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S864C4 ::v5(){vfunc_called(this, "_ZN6S864C42v5Ev");}
void  S864C4 ::v6(){vfunc_called(this, "_ZN6S864C42v6Ev");}
S864C4 ::~S864C4(){ note_dtor("S864C4", this);} // tgen
S864C4 ::S864C4(){ note_ctor("S864C4", this);} // tgen

static void Test_S864C4()
{
  extern Class_Descriptor cd_S864C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S864C4, buf);
    S864C4 *dp, &lv = *(dp=new (buf) S864C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S864C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S864C4)");
    check_base_class_offset(lv, (S864C5*), 0, "S864C4");
    check_field_offset(lv, s864c4f0, ABISELECT(40,28), "S864C4.s864c4f0");
    test_class_info(&lv, &cd_S864C4);
    dp->~S864C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS864C4(Test_S864C4, "S864C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN6S864C4C1Ev();
extern void _ZN6S864C4D1Ev();
Name_Map name_map_S864C4[] = {
  NSPAIR(_ZN6S864C4C1Ev),
  NSPAIR(_ZN6S864C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S864C5;
extern VTBL_ENTRY _ZTI6S864C5[];
extern  VTBL_ENTRY _ZTV6S864C5[];
static Base_Class bases_S864C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S864C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S864C4[];
extern void _ZN6S864C4D1Ev();
extern void _ZN6S864C4D0Ev();
extern void _ZN6S864C52v2Ev();
extern void _ZN6S864C52v3Ev();
extern void _ZN6S864C52v4Ev();
extern void _ZN6S864C42v5Ev();
extern void _ZN6S864C42v6Ev();
static  VTBL_ENTRY vtc_S864C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S864C4[0]),
  (VTBL_ENTRY)&_ZN6S864C4D1Ev,
  (VTBL_ENTRY)&_ZN6S864C4D0Ev,
  (VTBL_ENTRY)&_ZN6S864C52v2Ev,
  (VTBL_ENTRY)&_ZN6S864C52v3Ev,
  (VTBL_ENTRY)&_ZN6S864C52v4Ev,
  (VTBL_ENTRY)&_ZN6S864C42v5Ev,
  (VTBL_ENTRY)&_ZN6S864C42v6Ev,
};
extern VTBL_ENTRY _ZTI6S864C4[];
extern  VTBL_ENTRY _ZTV6S864C4[];
Class_Descriptor cd_S864C4 = {  "S864C4", // class name
  bases_S864C4, 1,
  &(vtc_S864C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI6S864C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S864C4),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  S864C3  : S864C4 {
  int s864c3f0[4];
  void *s864c3f1[4];
  int s864c3f2[2];
  ::S2367C7_nt s864c3f3;
  char s864c3f4[2];
  ::S2367C9 s864c3f5;
  void *s864c3f6;
  ::S2367C11_nt s864c3f7;
  ::S2367C11_nt s864c3f8;
  ::S2367C15 s864c3f9;
  ::S3164C31_nt s864c3f10;
  __tsi64 s864c3f11[3];
  int s864c3f12;
  __tsi64 s864c3f13;
  ::S2213C20_nt s864c3f14;
  __tsi64 s864c3f15;
  virtual void  v7(); // _ZN6S864C32v7Ev
  virtual void  v8(); // _ZN6S864C32v8Ev
  virtual void  v9(); // _ZN6S864C32v9Ev
  virtual void  v10(); // _ZN6S864C33v10Ev
  virtual void  v11(); // _ZN6S864C33v11Ev
  virtual void  v12(); // _ZN6S864C33v12Ev
  ~S864C3(); // tgen
  S864C3(); // tgen
};
//SIG(-1 S864C3) C1{ BC2{ BC3{ vd v7 v8 v9 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v10 v11 Fp} v1 v2 v3 v4 v5 v6 Fi[4] Fp[4] Fi[2] FC6{ m FC7{ FL[4]}} Fc[2] FC8{ m FC4 FC9{ m Fp} Fi[2] FC4 FC9 Fi[2]} Fp FC10{ m Fp[2] Fi[2] Fp FL Fp[9] Fs Fp[2] FC11{ m FC12{ m Fi[2]} FC13{ m Fi[2]}} FC13 Fc Fi[3] Fc Fi[6] Fc} FC10 FC14{ m Fi[2] FL Fi} FC15{ m} FL[3] Fi FL FC4 FL}


void  S864C3 ::v7(){vfunc_called(this, "_ZN6S864C32v7Ev");}
void  S864C3 ::v8(){vfunc_called(this, "_ZN6S864C32v8Ev");}
void  S864C3 ::v9(){vfunc_called(this, "_ZN6S864C32v9Ev");}
void  S864C3 ::v10(){vfunc_called(this, "_ZN6S864C33v10Ev");}
void  S864C3 ::v11(){vfunc_called(this, "_ZN6S864C33v11Ev");}
void  S864C3 ::v12(){vfunc_called(this, "_ZN6S864C33v12Ev");}
S864C3 ::~S864C3(){ note_dtor("S864C3", this);} // tgen
S864C3 ::S864C3(){ note_ctor("S864C3", this);} // tgen

static void Test_S864C3()
{
  extern Class_Descriptor cd_S864C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(92,135)];
    init_test(&cd_S864C3, buf);
    S864C3 *dp, &lv = *(dp=new (buf) S864C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(728,536), "sizeof(S864C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S864C3)");
    check_base_class_offset(lv, (S864C5*)(S864C4*), 0, "S864C3");
    check_base_class_offset(lv, (S864C4*), 0, "S864C3");
    check_field_offset(lv, s864c3f0, ABISELECT(48,32), "S864C3.s864c3f0");
    check_field_offset(lv, s864c3f1, ABISELECT(64,48), "S864C3.s864c3f1");
    check_field_offset(lv, s864c3f2, ABISELECT(96,64), "S864C3.s864c3f2");
    check_field_offset(lv, s864c3f3, ABISELECT(104,72), "S864C3.s864c3f3");
    check_field_offset(lv, s864c3f4, ABISELECT(136,104), "S864C3.s864c3f4");
    check_field_offset(lv, s864c3f5, ABISELECT(144,108), "S864C3.s864c3f5");
    check_field_offset(lv, s864c3f6, ABISELECT(208,156), "S864C3.s864c3f6");
    check_field_offset(lv, s864c3f7, ABISELECT(216,160), "S864C3.s864c3f7");
    check_field_offset(lv, s864c3f8, ABISELECT(424,308), "S864C3.s864c3f8");
    check_field_offset(lv, s864c3f9, ABISELECT(632,456), "S864C3.s864c3f9");
    check_field_offset(lv, s864c3f10, ABISELECT(656,476), "S864C3.s864c3f10");
    check_field_offset(lv, s864c3f11, ABISELECT(664,480), "S864C3.s864c3f11");
    check_field_offset(lv, s864c3f12, ABISELECT(688,504), "S864C3.s864c3f12");
    check_field_offset(lv, s864c3f13, ABISELECT(696,508), "S864C3.s864c3f13");
    check_field_offset(lv, s864c3f14, ABISELECT(704,516), "S864C3.s864c3f14");
    check_field_offset(lv, s864c3f15, ABISELECT(720,528), "S864C3.s864c3f15");
    test_class_info(&lv, &cd_S864C3);
    dp->~S864C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS864C3(Test_S864C3, "S864C3", ABISELECT(728,536));

#else // __cplusplus

extern void _ZN6S864C3C1Ev();
extern void _ZN6S864C3D1Ev();
Name_Map name_map_S864C3[] = {
  NSPAIR(_ZN6S864C3C1Ev),
  NSPAIR(_ZN6S864C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S864C5;
extern VTBL_ENTRY _ZTI6S864C5[];
extern  VTBL_ENTRY _ZTV6S864C5[];
extern Class_Descriptor cd_S864C4;
extern VTBL_ENTRY _ZTI6S864C4[];
extern  VTBL_ENTRY _ZTV6S864C4[];
static Base_Class bases_S864C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S864C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S864C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S864C3[];
extern void _ZN6S864C3D1Ev();
extern void _ZN6S864C3D0Ev();
extern void _ZN6S864C52v2Ev();
extern void _ZN6S864C52v3Ev();
extern void _ZN6S864C52v4Ev();
extern void _ZN6S864C42v5Ev();
extern void _ZN6S864C42v6Ev();
extern void _ZN6S864C32v7Ev();
extern void _ZN6S864C32v8Ev();
extern void _ZN6S864C32v9Ev();
extern void _ZN6S864C33v10Ev();
extern void _ZN6S864C33v11Ev();
extern void _ZN6S864C33v12Ev();
static  VTBL_ENTRY vtc_S864C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S864C3[0]),
  (VTBL_ENTRY)&_ZN6S864C3D1Ev,
  (VTBL_ENTRY)&_ZN6S864C3D0Ev,
  (VTBL_ENTRY)&_ZN6S864C52v2Ev,
  (VTBL_ENTRY)&_ZN6S864C52v3Ev,
  (VTBL_ENTRY)&_ZN6S864C52v4Ev,
  (VTBL_ENTRY)&_ZN6S864C42v5Ev,
  (VTBL_ENTRY)&_ZN6S864C42v6Ev,
  (VTBL_ENTRY)&_ZN6S864C32v7Ev,
  (VTBL_ENTRY)&_ZN6S864C32v8Ev,
  (VTBL_ENTRY)&_ZN6S864C32v9Ev,
  (VTBL_ENTRY)&_ZN6S864C33v10Ev,
  (VTBL_ENTRY)&_ZN6S864C33v11Ev,
  (VTBL_ENTRY)&_ZN6S864C33v12Ev,
};
extern VTBL_ENTRY _ZTI6S864C3[];
extern  VTBL_ENTRY _ZTV6S864C3[];
Class_Descriptor cd_S864C3 = {  "S864C3", // class name
  bases_S864C3, 2,
  &(vtc_S864C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(728,536), // object size
  NSPAIRA(_ZTI6S864C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S864C3),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S864C2  : S864C3 {
  ::S2367C19 s864c2f0;
  void *s864c2f1;
  int s864c2f2;
  virtual void  v13(); // _ZN6S864C23v13Ev
  virtual void  v14(); // _ZN6S864C23v14Ev
  virtual void  v15(); // _ZN6S864C23v15Ev
  virtual void  v16(); // _ZN6S864C23v16Ev
  virtual void  v17(); // _ZN6S864C23v17Ev
  virtual void  v18(); // _ZN6S864C23v18Ev
  ~S864C2(); // tgen
  S864C2(); // tgen
};
//SIG(-1 S864C2) C1{ BC2{ BC3{ BC4{ vd v7 v8 v9 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} v10 v11 Fp} v12 v13 v14 v15 v16 v17 Fi[4] Fp[4] Fi[2] FC7{ m FC8{ FL[4]}} Fc[2] FC9{ m FC5 FC10{ m Fp} Fi[2] FC5 FC10 Fi[2]} Fp FC11{ m Fp[2] Fi[2] Fp FL Fp[9] Fs Fp[2] FC12{ m FC13{ m Fi[2]} FC14{ m Fi[2]}} FC14 Fc Fi[3] Fc Fi[6] Fc} FC11 FC15{ m Fi[2] FL Fi} FC16{ m} FL[3] Fi FL FC5 FL} v1 v2 v3 v4 v5 v6 FC17{ m Fp} Fp Fi}


void  S864C2 ::v13(){vfunc_called(this, "_ZN6S864C23v13Ev");}
void  S864C2 ::v14(){vfunc_called(this, "_ZN6S864C23v14Ev");}
void  S864C2 ::v15(){vfunc_called(this, "_ZN6S864C23v15Ev");}
void  S864C2 ::v16(){vfunc_called(this, "_ZN6S864C23v16Ev");}
void  S864C2 ::v17(){vfunc_called(this, "_ZN6S864C23v17Ev");}
void  S864C2 ::v18(){vfunc_called(this, "_ZN6S864C23v18Ev");}
S864C2 ::~S864C2(){ note_dtor("S864C2", this);} // tgen
S864C2 ::S864C2(){ note_ctor("S864C2", this);} // tgen

static void Test_S864C2()
{
  extern Class_Descriptor cd_S864C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(95,138)];
    init_test(&cd_S864C2, buf);
    S864C2 *dp, &lv = *(dp=new (buf) S864C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,548), "sizeof(S864C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S864C2)");
    check_base_class_offset(lv, (S864C5*)(S864C4*)(S864C3*), 0, "S864C2");
    check_base_class_offset(lv, (S864C4*)(S864C3*), 0, "S864C2");
    check_base_class_offset(lv, (S864C3*), 0, "S864C2");
    check_field_offset(lv, s864c2f0, ABISELECT(728,536), "S864C2.s864c2f0");
    check_field_offset(lv, s864c2f1, ABISELECT(736,540), "S864C2.s864c2f1");
    check_field_offset(lv, s864c2f2, ABISELECT(744,544), "S864C2.s864c2f2");
    test_class_info(&lv, &cd_S864C2);
    dp->~S864C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS864C2(Test_S864C2, "S864C2", ABISELECT(752,548));

#else // __cplusplus

extern void _ZN6S864C2C1Ev();
extern void _ZN6S864C2D1Ev();
Name_Map name_map_S864C2[] = {
  NSPAIR(_ZN6S864C2C1Ev),
  NSPAIR(_ZN6S864C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S864C5;
extern VTBL_ENTRY _ZTI6S864C5[];
extern  VTBL_ENTRY _ZTV6S864C5[];
extern Class_Descriptor cd_S864C4;
extern VTBL_ENTRY _ZTI6S864C4[];
extern  VTBL_ENTRY _ZTV6S864C4[];
extern Class_Descriptor cd_S864C3;
extern VTBL_ENTRY _ZTI6S864C3[];
extern  VTBL_ENTRY _ZTV6S864C3[];
static Base_Class bases_S864C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S864C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S864C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S864C2[];
extern void _ZN6S864C2D1Ev();
extern void _ZN6S864C2D0Ev();
extern void _ZN6S864C52v2Ev();
extern void _ZN6S864C52v3Ev();
extern void _ZN6S864C52v4Ev();
extern void _ZN6S864C42v5Ev();
extern void _ZN6S864C42v6Ev();
extern void _ZN6S864C32v7Ev();
extern void _ZN6S864C32v8Ev();
extern void _ZN6S864C32v9Ev();
extern void _ZN6S864C33v10Ev();
extern void _ZN6S864C33v11Ev();
extern void _ZN6S864C33v12Ev();
extern void _ZN6S864C23v13Ev();
extern void _ZN6S864C23v14Ev();
extern void _ZN6S864C23v15Ev();
extern void _ZN6S864C23v16Ev();
extern void _ZN6S864C23v17Ev();
extern void _ZN6S864C23v18Ev();
static  VTBL_ENTRY vtc_S864C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S864C2[0]),
  (VTBL_ENTRY)&_ZN6S864C2D1Ev,
  (VTBL_ENTRY)&_ZN6S864C2D0Ev,
  (VTBL_ENTRY)&_ZN6S864C52v2Ev,
  (VTBL_ENTRY)&_ZN6S864C52v3Ev,
  (VTBL_ENTRY)&_ZN6S864C52v4Ev,
  (VTBL_ENTRY)&_ZN6S864C42v5Ev,
  (VTBL_ENTRY)&_ZN6S864C42v6Ev,
  (VTBL_ENTRY)&_ZN6S864C32v7Ev,
  (VTBL_ENTRY)&_ZN6S864C32v8Ev,
  (VTBL_ENTRY)&_ZN6S864C32v9Ev,
  (VTBL_ENTRY)&_ZN6S864C33v10Ev,
  (VTBL_ENTRY)&_ZN6S864C33v11Ev,
  (VTBL_ENTRY)&_ZN6S864C33v12Ev,
  (VTBL_ENTRY)&_ZN6S864C23v13Ev,
  (VTBL_ENTRY)&_ZN6S864C23v14Ev,
  (VTBL_ENTRY)&_ZN6S864C23v15Ev,
  (VTBL_ENTRY)&_ZN6S864C23v16Ev,
  (VTBL_ENTRY)&_ZN6S864C23v17Ev,
  (VTBL_ENTRY)&_ZN6S864C23v18Ev,
};
extern VTBL_ENTRY _ZTI6S864C2[];
extern  VTBL_ENTRY _ZTV6S864C2[];
Class_Descriptor cd_S864C2 = {  "S864C2", // class name
  bases_S864C2, 3,
  &(vtc_S864C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(752,548), // object size
  NSPAIRA(_ZTI6S864C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S864C2),21, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S864C1  : S864C2 {
  __tsi64 s864c1f0;
  virtual void  v1(); // _ZN6S864C12v1Ev
  ~S864C1(); // tgen
  S864C1(); // tgen
};
//SIG(1 S864C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 FC6{ m Fp Fi FC7{ m}} Fi[2] Fc} v5 v6 Fp} v7 v8 v9 v10 v11 v12 Fi[4] Fp[4] Fi[2] FC8{ m FC9{ FL[4]}} Fc[2] FC10{ m FC6 FC11{ m Fp} Fi[2] FC6 FC11 Fi[2]} Fp FC12{ m Fp[2] Fi[2] Fp FL Fp[9] Fs Fp[2] FC13{ m FC14{ m Fi[2]} FC15{ m Fi[2]}} FC15 Fc Fi[3] Fc Fi[6] Fc} FC12 FC16{ m Fi[2] FL Fi} FC17{ m} FL[3] Fi FL FC6 FL} v13 v14 v15 v16 v17 v18 FC18{ m Fp} Fp Fi} v1 FL}


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

static void Test_S864C1()
{
  extern Class_Descriptor cd_S864C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(96,140)];
    init_test(&cd_S864C1, buf);
    S864C1 *dp, &lv = *(dp=new (buf) S864C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(760,556), "sizeof(S864C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S864C1)");
    check_base_class_offset(lv, (S864C5*)(S864C4*)(S864C3*)(S864C2*), 0, "S864C1");
    check_base_class_offset(lv, (S864C4*)(S864C3*)(S864C2*), 0, "S864C1");
    check_base_class_offset(lv, (S864C3*)(S864C2*), 0, "S864C1");
    check_base_class_offset(lv, (S864C2*), 0, "S864C1");
    check_field_offset(lv, s864c1f0, ABISELECT(752,548), "S864C1.s864c1f0");
    test_class_info(&lv, &cd_S864C1);
    dp->~S864C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS864C1(Test_S864C1, "S864C1", ABISELECT(760,556));

#else // __cplusplus

extern void _ZN6S864C1C1Ev();
extern void _ZN6S864C1D1Ev();
Name_Map name_map_S864C1[] = {
  NSPAIR(_ZN6S864C1C1Ev),
  NSPAIR(_ZN6S864C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S864C5;
extern VTBL_ENTRY _ZTI6S864C5[];
extern  VTBL_ENTRY _ZTV6S864C5[];
extern Class_Descriptor cd_S864C4;
extern VTBL_ENTRY _ZTI6S864C4[];
extern  VTBL_ENTRY _ZTV6S864C4[];
extern Class_Descriptor cd_S864C3;
extern VTBL_ENTRY _ZTI6S864C3[];
extern  VTBL_ENTRY _ZTV6S864C3[];
extern Class_Descriptor cd_S864C2;
extern VTBL_ENTRY _ZTI6S864C2[];
extern  VTBL_ENTRY _ZTV6S864C2[];
static Base_Class bases_S864C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S864C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S864C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S864C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S864C1[];
extern void _ZN6S864C1D1Ev();
extern void _ZN6S864C1D0Ev();
extern void _ZN6S864C52v2Ev();
extern void _ZN6S864C52v3Ev();
extern void _ZN6S864C52v4Ev();
extern void _ZN6S864C42v5Ev();
extern void _ZN6S864C42v6Ev();
extern void _ZN6S864C32v7Ev();
extern void _ZN6S864C32v8Ev();
extern void _ZN6S864C32v9Ev();
extern void _ZN6S864C33v10Ev();
extern void _ZN6S864C33v11Ev();
extern void _ZN6S864C33v12Ev();
extern void _ZN6S864C23v13Ev();
extern void _ZN6S864C23v14Ev();
extern void _ZN6S864C23v15Ev();
extern void _ZN6S864C23v16Ev();
extern void _ZN6S864C23v17Ev();
extern void _ZN6S864C23v18Ev();
extern void _ZN6S864C12v1Ev();
static  VTBL_ENTRY vtc_S864C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S864C1[0]),
  (VTBL_ENTRY)&_ZN6S864C1D1Ev,
  (VTBL_ENTRY)&_ZN6S864C1D0Ev,
  (VTBL_ENTRY)&_ZN6S864C52v2Ev,
  (VTBL_ENTRY)&_ZN6S864C52v3Ev,
  (VTBL_ENTRY)&_ZN6S864C52v4Ev,
  (VTBL_ENTRY)&_ZN6S864C42v5Ev,
  (VTBL_ENTRY)&_ZN6S864C42v6Ev,
  (VTBL_ENTRY)&_ZN6S864C32v7Ev,
  (VTBL_ENTRY)&_ZN6S864C32v8Ev,
  (VTBL_ENTRY)&_ZN6S864C32v9Ev,
  (VTBL_ENTRY)&_ZN6S864C33v10Ev,
  (VTBL_ENTRY)&_ZN6S864C33v11Ev,
  (VTBL_ENTRY)&_ZN6S864C33v12Ev,
  (VTBL_ENTRY)&_ZN6S864C23v13Ev,
  (VTBL_ENTRY)&_ZN6S864C23v14Ev,
  (VTBL_ENTRY)&_ZN6S864C23v15Ev,
  (VTBL_ENTRY)&_ZN6S864C23v16Ev,
  (VTBL_ENTRY)&_ZN6S864C23v17Ev,
  (VTBL_ENTRY)&_ZN6S864C23v18Ev,
  (VTBL_ENTRY)&_ZN6S864C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S864C1[];
extern  VTBL_ENTRY _ZTV6S864C1[];
Class_Descriptor cd_S864C1 = {  "S864C1", // class name
  bases_S864C1, 4,
  &(vtc_S864C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(760,556), // object size
  NSPAIRA(_ZTI6S864C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S864C1),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18557C1  {
  ::S21161C14 s18557c1f0;
  int s18557c1f1;
  int s18557c1f2;
  int s18557c1f3;
  int s18557c1f4;
  void *s18557c1f5;
  void *s18557c1f6[9];
  void *s18557c1f7;
  virtual void  v1(); // _ZN8S18557C12v1Ev
  virtual void  v2(); // _ZN8S18557C12v2Ev
  ~S18557C1(); // tgen
  S18557C1(); // tgen
};
//SIG(1 S18557C1) C1{ v1 v2 FC2{ BC3{ VBC4{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC5{ VBC4 BC6{ m Fp[14]} Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} VBC8{ VBC5 BC4 Fc:6 Fc[8] FD FC6 FC6} BC6 VBC9{ VBC4 VBC6 BC5 v5 v6 FC5 FD[7] FC5 FL Fp[5]} vd v7 v8 Fi Fi FC6 Fc Fc Fi Fs FL} BC10{ VBC9 BC6 BC5 Fi Fi Fi:28 Fi Fl} v3 v4 FU11{ m Fi FL Fc[7] Fl Fl[8] Fp[8] FD Fs FL} Fi Fi Fi Fs} Fi Fi Fi Fi Fp Fp[9] Fp}


void  S18557C1 ::v1(){vfunc_called(this, "_ZN8S18557C12v1Ev");}
void  S18557C1 ::v2(){vfunc_called(this, "_ZN8S18557C12v2Ev");}
S18557C1 ::~S18557C1(){ note_dtor("S18557C1", this);} // tgen
S18557C1 ::S18557C1(){ note_ctor("S18557C1", this);} // tgen

static void Test_S18557C1()
{
  extern Class_Descriptor cd_S18557C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(164,388)];
    init_test(&cd_S18557C1, buf);
    S18557C1 *dp, &lv = *(dp=new (buf) S18557C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2608,1548), "sizeof(S18557C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18557C1)");
    check_field_offset(lv, s18557c1f0, ABISELECT(16,4), "S18557C1.s18557c1f0");
    check_field_offset(lv, s18557c1f1, ABISELECT(2496,1488), "S18557C1.s18557c1f1");
    check_field_offset(lv, s18557c1f2, ABISELECT(2500,1492), "S18557C1.s18557c1f2");
    check_field_offset(lv, s18557c1f3, ABISELECT(2504,1496), "S18557C1.s18557c1f3");
    check_field_offset(lv, s18557c1f4, ABISELECT(2508,1500), "S18557C1.s18557c1f4");
    check_field_offset(lv, s18557c1f5, ABISELECT(2512,1504), "S18557C1.s18557c1f5");
    check_field_offset(lv, s18557c1f6, ABISELECT(2520,1508), "S18557C1.s18557c1f6");
    check_field_offset(lv, s18557c1f7, ABISELECT(2592,1544), "S18557C1.s18557c1f7");
    test_class_info(&lv, &cd_S18557C1);
    dp->~S18557C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18557C1(Test_S18557C1, "S18557C1", ABISELECT(2608,1548));

#else // __cplusplus

extern void _ZN8S18557C1C1Ev();
extern void _ZN8S18557C1D1Ev();
Name_Map name_map_S18557C1[] = {
  NSPAIR(_ZN8S18557C1C1Ev),
  NSPAIR(_ZN8S18557C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18557C1[];
extern void _ZN8S18557C12v1Ev();
extern void _ZN8S18557C12v2Ev();
static  VTBL_ENTRY vtc_S18557C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18557C1[0]),
  (VTBL_ENTRY)&_ZN8S18557C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18557C12v2Ev,
};
extern VTBL_ENTRY _ZTI8S18557C1[];
extern  VTBL_ENTRY _ZTV8S18557C1[];
Class_Descriptor cd_S18557C1 = {  "S18557C1", // class name
  0,0,//no base classes
  &(vtc_S18557C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2608,1548), // object size
  NSPAIRA(_ZTI8S18557C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18557C1),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  S20567C4  {
  long s20567c4f0;
  virtual void  v9(); // _ZN8S20567C42v9Ev
  virtual void  v10(); // _ZN8S20567C43v10Ev
  virtual void  v11(); // _ZN8S20567C43v11Ev
  virtual void  v12(); // _ZN8S20567C43v12Ev
  virtual void  v13(); // _ZN8S20567C43v13Ev
  ~S20567C4(); // tgen
  S20567C4(); // tgen
};
//SIG(-1 S20567C4) C1{ v1 v2 v3 v4 v5 Fl}


void  S20567C4 ::v9(){vfunc_called(this, "_ZN8S20567C42v9Ev");}
void  S20567C4 ::v10(){vfunc_called(this, "_ZN8S20567C43v10Ev");}
void  S20567C4 ::v11(){vfunc_called(this, "_ZN8S20567C43v11Ev");}
void  S20567C4 ::v12(){vfunc_called(this, "_ZN8S20567C43v12Ev");}
void  S20567C4 ::v13(){vfunc_called(this, "_ZN8S20567C43v13Ev");}
S20567C4 ::~S20567C4(){ note_dtor("S20567C4", this);} // tgen
S20567C4 ::S20567C4(){ note_ctor("S20567C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20567C4C1Ev();
extern void _ZN8S20567C4D1Ev();
Name_Map name_map_S20567C4[] = {
  NSPAIR(_ZN8S20567C4C1Ev),
  NSPAIR(_ZN8S20567C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20567C4[];
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY vtc_S20567C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C4[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
Class_Descriptor cd_S20567C4 = {  "S20567C4", // class name
  0,0,//no base classes
  &(vtc_S20567C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20567C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20567C4),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  S20567C5_nt  {
  virtual  ~S20567C5_nt(); // _ZN11S20567C5_ntD1Ev
  virtual void  v14(); // _ZN11S20567C5_nt3v14Ev
  S20567C5_nt(); // tgen
};
//SIG(-1 S20567C5_nt) C1{ vd v1}


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

//skip512 S20567C5_nt

#else // __cplusplus

extern void _ZN11S20567C5_ntC1Ev();
extern void _ZN11S20567C5_ntD1Ev();
Name_Map name_map_S20567C5_nt[] = {
  NSPAIR(_ZN11S20567C5_ntC1Ev),
  NSPAIR(_ZN11S20567C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern void _ZN11S20567C5_ntD1Ev();
extern void _ZN11S20567C5_ntD0Ev();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY vtc_S20567C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20567C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20567C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20567C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
VTBL_ENTRY *P__ZTI11S20567C5_nt = _ZTI11S20567C5_nt; 
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
Class_Descriptor cd_S20567C5_nt = {  "S20567C5_nt", // class name
  0,0,//no base classes
  &(vtc_S20567C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20567C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20567C5_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  S20567C6  {
  virtual  ~S20567C6(); // _ZN8S20567C6D1Ev
  virtual void  v15(); // _ZN8S20567C63v15Ev
  S20567C6(); // tgen
};
//SIG(-1 S20567C6) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S20567C6C1Ev();
extern void _ZN8S20567C6D1Ev();
Name_Map name_map_S20567C6[] = {
  NSPAIR(_ZN8S20567C6C1Ev),
  NSPAIR(_ZN8S20567C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20567C6[];
extern void _ZN8S20567C6D1Ev();
extern void _ZN8S20567C6D0Ev();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY vtc_S20567C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C6[0]),
  (VTBL_ENTRY)&_ZN8S20567C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
Class_Descriptor cd_S20567C6 = {  "S20567C6", // class name
  0,0,//no base classes
  &(vtc_S20567C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20567C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20567C6),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  S20567C3  : S20567C4 , S20567C5_nt , S20567C6 {
  virtual  ~S20567C3(); // _ZN8S20567C3D1Ev
  virtual void  v16(); // _ZN8S20567C33v16Ev
  S20567C3(); // tgen
};
//SIG(-1 S20567C3) C1{ BC2{ v2 v3 v4 v5 v6 Fl} BC3{ vd v7} BC4{ vd v8} vd v1}


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

static void Test_S20567C3()
{
  extern Class_Descriptor cd_S20567C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20567C3, buf);
    S20567C3 *dp, &lv = *(dp=new (buf) S20567C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20567C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20567C3)");
    check_base_class_offset(lv, (S20567C4*), 0, "S20567C3");
    check_base_class_offset(lv, (S20567C5_nt*), ABISELECT(16,8), "S20567C3");
    check_base_class_offset(lv, (S20567C6*), ABISELECT(24,12), "S20567C3");
    test_class_info(&lv, &cd_S20567C3);
    dp->~S20567C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20567C3(Test_S20567C3, "S20567C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20567C3C1Ev();
extern void _ZN8S20567C3D1Ev();
Name_Map name_map_S20567C3[] = {
  NSPAIR(_ZN8S20567C3C1Ev),
  NSPAIR(_ZN8S20567C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
static Base_Class bases_S20567C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20567C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20567C5_nt,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20567C6,    ABISELECT(24,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20567C3[];
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void _ZN8S20567C3D1Ev();
extern void _ZN8S20567C3D0Ev();
extern void _ZN8S20567C33v16Ev();
extern void ABISELECT(_ZThn16_N8S20567C3D1Ev,_ZThn8_N8S20567C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20567C3D0Ev,_ZThn8_N8S20567C3D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
extern void ABISELECT(_ZThn24_N8S20567C3D1Ev,_ZThn12_N8S20567C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S20567C3D0Ev,_ZThn12_N8S20567C3D0Ev)();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY vtc_S20567C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C3[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20567C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20567C3D1Ev,_ZThn8_N8S20567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20567C3D0Ev,_ZThn8_N8S20567C3D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20567C3D1Ev,_ZThn12_N8S20567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20567C3D0Ev,_ZThn12_N8S20567C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern VTBL_ENTRY _ZTI8S20567C3[];
extern  VTBL_ENTRY _ZTV8S20567C3[];
Class_Descriptor cd_S20567C3 = {  "S20567C3", // class name
  bases_S20567C3, 3,
  &(vtc_S20567C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20567C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20567C3),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20567C8  : virtual S20567C4 {
  int s20567c8f0;
  virtual  ~S20567C8(); // _ZN8S20567C8D2Ev
  virtual void  v17(); // _ZN8S20567C83v17Ev
  virtual void  v18(); // _ZN8S20567C83v18Ev
  virtual void  v19(); // _ZN8S20567C83v19Ev
  virtual void  v20(); // _ZN8S20567C83v20Ev
  S20567C8(); // tgen
};
//SIG(-1 S20567C8) C1{ VBC2{ v5 v6 v7 v8 v9 Fl} vd v1 v2 v3 v4 Fi}


 S20567C8 ::~S20567C8(){ note_dtor("S20567C8", this);}
void  S20567C8 ::v17(){vfunc_called(this, "_ZN8S20567C83v17Ev");}
void  S20567C8 ::v18(){vfunc_called(this, "_ZN8S20567C83v18Ev");}
void  S20567C8 ::v19(){vfunc_called(this, "_ZN8S20567C83v19Ev");}
void  S20567C8 ::v20(){vfunc_called(this, "_ZN8S20567C83v20Ev");}
S20567C8 ::S20567C8(){ note_ctor("S20567C8", this);} // tgen

static void Test_S20567C8()
{
  extern Class_Descriptor cd_S20567C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20567C8, buf);
    S20567C8 *dp, &lv = *(dp=new (buf) S20567C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20567C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20567C8)");
    check_base_class_offset(lv, (S20567C4*), ABISELECT(16,8), "S20567C8");
    check_field_offset(lv, s20567c8f0, ABISELECT(8,4), "S20567C8.s20567c8f0");
    test_class_info(&lv, &cd_S20567C8);
    dp->~S20567C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20567C8(Test_S20567C8, "S20567C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20567C8C1Ev();
extern void _ZN8S20567C8D2Ev();
Name_Map name_map_S20567C8[] = {
  NSPAIR(_ZN8S20567C8C1Ev),
  NSPAIR(_ZN8S20567C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
static Base_Class bases_S20567C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20567C4,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20567C8[];
extern void _ZN8S20567C8D1Ev();
extern void _ZN8S20567C8D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY vtc_S20567C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern VTBL_ENTRY _ZTV8S20567C8[];
static  VTT_ENTRY vtt_S20567C8[] = {
  {&(_ZTV8S20567C8[3]),  3,21},
  {&(_ZTV8S20567C8[16]),  16,21},
};
extern VTBL_ENTRY _ZTI8S20567C8[];
extern  VTBL_ENTRY _ZTV8S20567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C8[];
Class_Descriptor cd_S20567C8 = {  "S20567C8", // class name
  bases_S20567C8, 1,
  &(vtc_S20567C8[0]), // expected_vtbl_contents
  &(vtt_S20567C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20567C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20567C8),21, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20567C8),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  S20567C7  : virtual S20567C5_nt , virtual S20567C3 , S20567C8 {
  int s20567c7f0[10];
  char s20567c7f1;
  int s20567c7f2;
  char  :0;
  virtual  ~S20567C7(); // _ZN8S20567C7D2Ev
  virtual void  v21(); // _ZN8S20567C73v21Ev
  virtual void  v22(); // _ZN8S20567C73v22Ev
  virtual void  v23(); // _ZN8S20567C73v23Ev
  virtual void  v24(); // _ZN8S20567C73v24Ev
  virtual void  v25(); // _ZN8S20567C73v25Ev
  virtual void  v26(); // _ZN8S20567C73v26Ev
  S20567C7(); // tgen
};
//SIG(-1 S20567C7) C1{ VBC2{ vd v7} VBC3{ BC4{ v8 v9 v10 v11 v12 Fl} BC2 BC5{ vd v13} vd v14} BC6{ VBC4 vd v15 v16 v17 v18 Fi} vd v1 v2 v3 v4 v5 v6 Fi[10] Fc Fi Fc:0}


 S20567C7 ::~S20567C7(){ note_dtor("S20567C7", this);}
void  S20567C7 ::v21(){vfunc_called(this, "_ZN8S20567C73v21Ev");}
void  S20567C7 ::v22(){vfunc_called(this, "_ZN8S20567C73v22Ev");}
void  S20567C7 ::v23(){vfunc_called(this, "_ZN8S20567C73v23Ev");}
void  S20567C7 ::v24(){vfunc_called(this, "_ZN8S20567C73v24Ev");}
void  S20567C7 ::v25(){vfunc_called(this, "_ZN8S20567C73v25Ev");}
void  S20567C7 ::v26(){vfunc_called(this, "_ZN8S20567C73v26Ev");}
S20567C7 ::S20567C7(){ note_ctor("S20567C7", this);} // tgen

static void Test_S20567C7()
{
  extern Class_Descriptor cd_S20567C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S20567C7, buf);
    S20567C7 *dp, &lv = *(dp=new (buf) S20567C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S20567C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20567C7)");
    /*is_ambiguous_... S20567C7::S20567C5_nt */ AMB_check_base_class_offset(lv, (S20567C5_nt*), ABISELECT(64,56), "S20567C7");
    check_base_class_offset(lv, (S20567C4*)(S20567C3*), ABISELECT(72,60), "S20567C7");
    check_base_class_offset(lv, (S20567C5_nt*)(S20567C3*), ABISELECT(88,68), "S20567C7");
    check_base_class_offset(lv, (S20567C6*)(S20567C3*), ABISELECT(96,72), "S20567C7");
    check_base_class_offset(lv, (S20567C3*), ABISELECT(72,60), "S20567C7");
    check_base_class_offset(lv, (S20567C4*)(S20567C8*), ABISELECT(104,76), "S20567C7");
    check_base_class_offset(lv, (S20567C8*), 0, "S20567C7");
    check_field_offset(lv, s20567c7f0, ABISELECT(12,8), "S20567C7.s20567c7f0");
    check_field_offset(lv, s20567c7f1, ABISELECT(52,48), "S20567C7.s20567c7f1");
    check_field_offset(lv, s20567c7f2, ABISELECT(56,52), "S20567C7.s20567c7f2");
    test_class_info(&lv, &cd_S20567C7);
    dp->~S20567C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20567C7(Test_S20567C7, "S20567C7", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN8S20567C7C1Ev();
extern void _ZN8S20567C7D2Ev();
Name_Map name_map_S20567C7[] = {
  NSPAIR(_ZN8S20567C7C1Ev),
  NSPAIR(_ZN8S20567C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C3;
extern VTBL_ENTRY _ZTI8S20567C3[];
extern  VTBL_ENTRY _ZTV8S20567C3[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C8;
extern VTBL_ENTRY _ZTI8S20567C8[];
extern  VTBL_ENTRY _ZTV8S20567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C8[];
static Base_Class bases_S20567C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20567C5_nt,    ABISELECT(64,56), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20567C4,    ABISELECT(72,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20567C5_nt,    ABISELECT(88,68), //bcp->offset
    43, //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
    4, //immediately_derived
  0, 0},
  {&cd_S20567C6,    ABISELECT(96,72), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20567C3,    ABISELECT(72,60), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20567C4,    ABISELECT(104,76), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20567C8,    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 _ZTI8S20567C7[];
extern void _ZN8S20567C7D1Ev();
extern void _ZN8S20567C7D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C73v21Ev();
extern void _ZN8S20567C73v22Ev();
extern void _ZN8S20567C73v23Ev();
extern void _ZN8S20567C73v24Ev();
extern void _ZN8S20567C73v25Ev();
extern void _ZN8S20567C73v26Ev();
extern void ABISELECT(_ZTv0_n24_N8S20567C7D1Ev,_ZTv0_n12_N8S20567C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S20567C7D1Ev,_ZThn56_N8S20567C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C7D0Ev,_ZTv0_n12_N8S20567C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S20567C7D0Ev,_ZThn56_N8S20567C7D0Ev)() __attribute__((weak));
extern void _ZN11S20567C5_nt3v14Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S20567C7D1Ev,_ZTv0_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZThn72_N8S20567C7D1Ev,_ZThn60_N8S20567C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20567C7D0Ev,_ZTv0_n32_N8S20567C7D0Ev)();
extern void ABISELECT(_ZThn72_N8S20567C7D0Ev,_ZThn60_N8S20567C7D0Ev)() __attribute__((weak));
extern void _ZN8S20567C33v16Ev();
extern void ABISELECT(_ZTvn16_n64_N8S20567C7D1Ev,_ZTvn8_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20567C7D0Ev,_ZTvn8_n32_N8S20567C7D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
extern void ABISELECT(_ZTvn24_n64_N8S20567C7D1Ev,_ZTvn12_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20567C7D0Ev,_ZTvn12_n32_N8S20567C7D0Ev)();
extern void _ZN8S20567C63v15Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY vtc_S20567C7[] = {
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v26Ev,
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C7D1Ev,_ZTv0_n12_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C7D0Ev,_ZTv0_n12_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-60),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C7D1Ev,_ZTv0_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C7D0Ev,_ZTv0_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C7D1Ev,_ZTvn8_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C7D0Ev,_ZTvn8_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C7D1Ev,_ZTvn12_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C7D0Ev,_ZTvn12_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern VTBL_ENTRY _ZTV8S20567C7[];
extern void _ZN8S20567C8D1Ev();
extern void _ZN8S20567C8D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C8__8S20567C7[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__8S20567C8__8S20567C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
static  VTT_ENTRY vtt_S20567C7[] = {
  {&(_ZTV8S20567C7[5]),  5,65},
  {&(_tg__ZTV8S20567C8__8S20567C7[3]),  3,9},
  {&(_tg__ZTV8S20567C4__8S20567C8__8S20567C7[7]),  7,12},
  {&(_ZTV8S20567C7[21]),  21,65},
  {&(_ZTV8S20567C7[35]),  35,65},
  {&(_ZTV8S20567C7[45]),  45,65},
  {&(_ZTV8S20567C7[50]),  50,65},
  {&(_ZTV8S20567C7[60]),  60,65},
};
extern VTBL_ENTRY _ZTI8S20567C7[];
extern  VTBL_ENTRY _ZTV8S20567C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C7[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C7D0Ev,_ZTv0_n32_N8S20567C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20567C7D0Ev,_ZThn60_N8S20567C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C7D1Ev,_ZTv0_n32_N8S20567C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20567C7D1Ev,_ZThn60_N8S20567C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C7D0Ev,_ZTv0_n12_N8S20567C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20567C7D0Ev,_ZThn56_N8S20567C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C7D1Ev,_ZTv0_n12_N8S20567C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20567C7D1Ev,_ZThn56_N8S20567C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20567C7 = {  "S20567C7", // class name
  bases_S20567C7, 7,
  &(vtc_S20567C7[0]), // expected_vtbl_contents
  &(vtt_S20567C7[0]), // expected_vtt_contents
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI8S20567C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20567C7),65, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20567C7),8, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20567C10  : virtual S20567C6 , virtual S20567C3 , S20567C4 , virtual S20567C5_nt {
  int s20567c10f0;
  virtual  ~S20567C10(); // _ZN9S20567C10D2Ev
  virtual void  v27(); // _ZN9S20567C103v27Ev
  virtual void  v28(); // _ZN9S20567C103v28Ev
  virtual void  v29(); // _ZN9S20567C103v29Ev
  virtual void  v30(); // _ZN9S20567C103v30Ev
  virtual void  v31(); // _ZN9S20567C103v31Ev
  virtual void  v32(); // _ZN9S20567C103v32Ev
  virtual void  v33(); // _ZN9S20567C103v33Ev
  virtual void  v34(); // _ZN9S20567C103v34Ev
  S20567C10(); // tgen
};
//SIG(-1 S20567C10) C1{ VBC2{ vd v9} VBC3{ BC4{ v10 v11 v12 v13 v14 Fl} BC5{ vd v15} BC2 vd v16} BC4 VBC5 vd v1 v2 v3 v4 v5 v6 v7 v8 Fi}


 S20567C10 ::~S20567C10(){ note_dtor("S20567C10", this);}
void  S20567C10 ::v27(){vfunc_called(this, "_ZN9S20567C103v27Ev");}
void  S20567C10 ::v28(){vfunc_called(this, "_ZN9S20567C103v28Ev");}
void  S20567C10 ::v29(){vfunc_called(this, "_ZN9S20567C103v29Ev");}
void  S20567C10 ::v30(){vfunc_called(this, "_ZN9S20567C103v30Ev");}
void  S20567C10 ::v31(){vfunc_called(this, "_ZN9S20567C103v31Ev");}
void  S20567C10 ::v32(){vfunc_called(this, "_ZN9S20567C103v32Ev");}
void  S20567C10 ::v33(){vfunc_called(this, "_ZN9S20567C103v33Ev");}
void  S20567C10 ::v34(){vfunc_called(this, "_ZN9S20567C103v34Ev");}
S20567C10 ::S20567C10(){ note_ctor("S20567C10", this);} // tgen

static void Test_S20567C10()
{
  extern Class_Descriptor cd_S20567C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S20567C10, buf);
    S20567C10 *dp, &lv = *(dp=new (buf) S20567C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S20567C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20567C10)");
    /*is_ambiguous_... S20567C10::S20567C6 */ AMB_check_base_class_offset(lv, (S20567C6*), ABISELECT(24,12), "S20567C10");
    check_base_class_offset(lv, (S20567C4*)(S20567C3*), ABISELECT(32,16), "S20567C10");
    check_base_class_offset(lv, (S20567C5_nt*)(S20567C3*), ABISELECT(48,24), "S20567C10");
    check_base_class_offset(lv, (S20567C6*)(S20567C3*), ABISELECT(56,28), "S20567C10");
    check_base_class_offset(lv, (S20567C3*), ABISELECT(32,16), "S20567C10");
    /*is_ambiguous_... S20567C10::S20567C4 */ AMB_check_base_class_offset(lv, (S20567C4*), 0, "S20567C10");
    /*is_ambiguous_... S20567C10::S20567C5_nt */ AMB_check_base_class_offset(lv, (S20567C5_nt*), ABISELECT(64,32), "S20567C10");
    check_field_offset(lv, s20567c10f0, ABISELECT(16,8), "S20567C10.s20567c10f0");
    test_class_info(&lv, &cd_S20567C10);
    dp->~S20567C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20567C10(Test_S20567C10, "S20567C10", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN9S20567C10C1Ev();
extern void _ZN9S20567C10D2Ev();
Name_Map name_map_S20567C10[] = {
  NSPAIR(_ZN9S20567C10C1Ev),
  NSPAIR(_ZN9S20567C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C3;
extern VTBL_ENTRY _ZTI8S20567C3[];
extern  VTBL_ENTRY _ZTV8S20567C3[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
static Base_Class bases_S20567C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20567C6,    ABISELECT(24,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20567C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20567C5_nt,    ABISELECT(48,24), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20567C6,    ABISELECT(56,28), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20567C3,    ABISELECT(32,16), //bcp->offset
    27, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20567C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20567C5_nt,    ABISELECT(64,32), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20567C10[];
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void _ZN9S20567C10D1Ev();
extern void _ZN9S20567C10D0Ev();
extern void _ZN9S20567C103v27Ev();
extern void _ZN9S20567C103v28Ev();
extern void _ZN9S20567C103v29Ev();
extern void _ZN9S20567C103v30Ev();
extern void _ZN9S20567C103v31Ev();
extern void _ZN9S20567C103v32Ev();
extern void _ZN9S20567C103v33Ev();
extern void _ZN9S20567C103v34Ev();
extern void ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S20567C10D1Ev,_ZThn12_N9S20567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S20567C10D0Ev,_ZThn12_N9S20567C10D0Ev)() __attribute__((weak));
extern void _ZN8S20567C63v15Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N9S20567C10D1Ev,_ZTv0_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S20567C10D1Ev,_ZThn16_N9S20567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20567C10D0Ev,_ZTv0_n32_N9S20567C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S20567C10D0Ev,_ZThn16_N9S20567C10D0Ev)() __attribute__((weak));
extern void _ZN8S20567C33v16Ev();
extern void ABISELECT(_ZTvn16_n64_N9S20567C10D1Ev,_ZTvn8_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N9S20567C10D0Ev,_ZTvn8_n32_N9S20567C10D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
extern void ABISELECT(_ZTvn24_n64_N9S20567C10D1Ev,_ZTvn12_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20567C10D0Ev,_ZTvn12_n32_N9S20567C10D0Ev)();
extern void _ZN8S20567C63v15Ev();
extern void ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S20567C10D1Ev,_ZThn32_N9S20567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S20567C10D0Ev,_ZThn32_N9S20567C10D0Ev)() __attribute__((weak));
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY vtc_S20567C10[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&_ZN9S20567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20567C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v27Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v34Ev,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20567C10D1Ev,_ZTv0_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20567C10D0Ev,_ZTv0_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S20567C10D1Ev,_ZTvn8_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S20567C10D0Ev,_ZTvn8_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20567C10D1Ev,_ZTvn12_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20567C10D0Ev,_ZTvn12_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  0,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern VTBL_ENTRY _ZTV9S20567C10[];
static  VTT_ENTRY vtt_S20567C10[] = {
  {&(_ZTV9S20567C10[5]),  5,63},
  {&(_ZTV9S20567C10[24]),  24,63},
  {&(_ZTV9S20567C10[38]),  38,63},
  {&(_ZTV9S20567C10[48]),  48,63},
  {&(_ZTV9S20567C10[53]),  53,63},
  {&(_ZTV9S20567C10[60]),  60,63},
};
extern VTBL_ENTRY _ZTI9S20567C10[];
extern  VTBL_ENTRY _ZTV9S20567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20567C10[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20567C10D0Ev,_ZTv0_n32_N9S20567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20567C10D0Ev,_ZThn16_N9S20567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20567C10D1Ev,_ZTv0_n32_N9S20567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20567C10D1Ev,_ZThn16_N9S20567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20567C10D0Ev,_ZThn32_N9S20567C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20567C10D0Ev,_ZThn12_N9S20567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20567C10D1Ev,_ZThn32_N9S20567C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20567C10D1Ev,_ZThn12_N9S20567C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20567C10 = {  "S20567C10", // class name
  bases_S20567C10, 7,
  &(vtc_S20567C10[0]), // expected_vtbl_contents
  &(vtt_S20567C10[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI9S20567C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20567C10),63, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20567C10),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20567C9  : virtual S20567C10 , virtual S20567C8 , S20567C6 , virtual S20567C7 {
  int s20567c9f0;
  virtual  ~S20567C9(); // _ZN8S20567C9D2Ev
  virtual void  v35(); // _ZN8S20567C93v35Ev
  virtual void  v36(); // _ZN8S20567C93v36Ev
  virtual void  v37(); // _ZN8S20567C93v37Ev
  S20567C9(); // tgen
};
//SIG(-1 S20567C9) C1{ VBC2{ VBC3{ vd v4} VBC4{ BC5{ v5 v6 v7 v8 v9 Fl} BC6{ vd v10} BC3 vd v11} BC5 VBC6 vd v12 v13 v14 v15 v16 v17 v18 v19 Fi} VBC7{ VBC5 vd v20 v21 v22 v23 Fi} BC3 VBC8{ VBC6 VBC4 BC7 vd v24 v25 v26 v27 v28 v29 Fi[10] Fc Fi Fc:0} vd v1 v2 v3 Fi}


 S20567C9 ::~S20567C9(){ note_dtor("S20567C9", this);}
void  S20567C9 ::v35(){vfunc_called(this, "_ZN8S20567C93v35Ev");}
void  S20567C9 ::v36(){vfunc_called(this, "_ZN8S20567C93v36Ev");}
void  S20567C9 ::v37(){vfunc_called(this, "_ZN8S20567C93v37Ev");}
S20567C9 ::S20567C9(){ note_ctor("S20567C9", this);} // tgen

static void Test_S20567C9()
{
  extern Class_Descriptor cd_S20567C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,30)];
    init_test(&cd_S20567C9, buf);
    S20567C9 *dp, &lv = *(dp=new (buf) S20567C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,116), "sizeof(S20567C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20567C9)");
    /*is_ambiguous_... S20567C10::S20567C6 */ AMB_check_base_class_offset(lv, (S20567C6*)(S20567C10*), ABISELECT(40,20), "S20567C9");
    check_base_class_offset(lv, (S20567C4*)(S20567C3*), ABISELECT(48,24), "S20567C9");
    check_base_class_offset(lv, (S20567C5_nt*)(S20567C3*), ABISELECT(64,32), "S20567C9");
    check_base_class_offset(lv, (S20567C6*)(S20567C3*), ABISELECT(72,36), "S20567C9");
    check_base_class_offset(lv, (S20567C3*)(S20567C10*), ABISELECT(48,24), "S20567C9");
    check_base_class_offset(lv, (S20567C3*)(S20567C7*), ABISELECT(48,24), "S20567C9");
    /*is_ambiguous_... S20567C10::S20567C4 */ AMB_check_base_class_offset(lv, (S20567C4*)(S20567C10*), ABISELECT(16,8), "S20567C9");
    /*is_ambiguous_... S20567C10::S20567C5_nt */ AMB_check_base_class_offset(lv, (S20567C5_nt*)(S20567C10*), ABISELECT(80,40), "S20567C9");
    /*is_ambiguous_... S20567C7::S20567C5_nt */ AMB_check_base_class_offset(lv, (S20567C5_nt*)(S20567C7*), ABISELECT(80,40), "S20567C9");
    check_base_class_offset(lv, (S20567C10*), ABISELECT(16,8), "S20567C9");
    /*is_ambiguous_... S20567C9::S20567C8 */ AMB_check_base_class_offset(lv, (S20567C4*)(S20567C8*), ABISELECT(104,52), "S20567C9");
    check_base_class_offset(lv, (S20567C4*)(S20567C8*)(S20567C7*), ABISELECT(104,52), "S20567C9");
    /*is_ambiguous_... S20567C9::S20567C8 */ AMB_check_base_class_offset(lv, (S20567C8*), ABISELECT(88,44), "S20567C9");
    /*is_ambiguous_... S20567C9::S20567C6 */ AMB_check_base_class_offset(lv, (S20567C6*), 0, "S20567C9");
    check_base_class_offset(lv, (S20567C8*)(S20567C7*), ABISELECT(120,60), "S20567C9");
    check_base_class_offset(lv, (S20567C7*), ABISELECT(120,60), "S20567C9");
    check_field_offset(lv, s20567c9f0, ABISELECT(8,4), "S20567C9.s20567c9f0");
    test_class_info(&lv, &cd_S20567C9);
    dp->~S20567C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20567C9(Test_S20567C9, "S20567C9", ABISELECT(184,116));

#else // __cplusplus

extern void _ZN8S20567C9C1Ev();
extern void _ZN8S20567C9D2Ev();
Name_Map name_map_S20567C9[] = {
  NSPAIR(_ZN8S20567C9C1Ev),
  NSPAIR(_ZN8S20567C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C3;
extern VTBL_ENTRY _ZTI8S20567C3[];
extern  VTBL_ENTRY _ZTV8S20567C3[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
extern Class_Descriptor cd_S20567C10;
extern VTBL_ENTRY _ZTI9S20567C10[];
extern  VTBL_ENTRY _ZTV9S20567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20567C10[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C8;
extern VTBL_ENTRY _ZTI8S20567C8[];
extern  VTBL_ENTRY _ZTV8S20567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C8[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C8;
extern VTBL_ENTRY _ZTI8S20567C8[];
extern  VTBL_ENTRY _ZTV8S20567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C8[];
extern Class_Descriptor cd_S20567C7;
extern VTBL_ENTRY _ZTI8S20567C7[];
extern  VTBL_ENTRY _ZTV8S20567C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C7[];
static Base_Class bases_S20567C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20567C6,    ABISELECT(40,20), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20567C4,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20567C5_nt,    ABISELECT(64,32), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20567C6,    ABISELECT(72,36), //bcp->offset
    80, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20567C3,    ABISELECT(48,24), //bcp->offset
    56, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20567C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20567C5_nt,    ABISELECT(80,40), //bcp->offset
    85, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20567C10,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20567C4,    ABISELECT(104,52), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20567C8,    ABISELECT(88,44), //bcp->offset
    92, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20567C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20567C8,    ABISELECT(120,60), //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
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20567C7,    ABISELECT(120,60), //bcp->offset
    118, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20567C9[];
extern void _ZN8S20567C9D1Ev();
extern void _ZN8S20567C9D0Ev();
extern void _ZN8S20567C63v15Ev();
extern void _ZN8S20567C93v35Ev();
extern void _ZN8S20567C93v36Ev();
extern void _ZN8S20567C93v37Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n88_N8S20567C9D1Ev,_ZTv0_n44_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S20567C9D1Ev,_ZThn8_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20567C9D0Ev,_ZTv0_n44_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S20567C9D0Ev,_ZThn8_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN9S20567C103v27Ev();
extern void _ZN9S20567C103v28Ev();
extern void _ZN9S20567C103v29Ev();
extern void _ZN9S20567C103v30Ev();
extern void _ZN9S20567C103v31Ev();
extern void _ZN9S20567C103v32Ev();
extern void _ZN9S20567C103v33Ev();
extern void _ZN9S20567C103v34Ev();
extern void ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S20567C9D1Ev,_ZThn20_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S20567C9D0Ev,_ZThn20_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C63v15Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S20567C9D1Ev,_ZTv0_n32_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S20567C9D1Ev,_ZThn24_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20567C9D0Ev,_ZTv0_n32_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S20567C9D0Ev,_ZThn24_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C33v16Ev();
extern void ABISELECT(_ZTvn16_n64_N8S20567C9D1Ev,_ZTvn8_n32_N8S20567C9D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20567C9D0Ev,_ZTvn8_n32_N8S20567C9D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
extern void ABISELECT(_ZTvn24_n64_N8S20567C9D1Ev,_ZTvn12_n32_N8S20567C9D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20567C9D0Ev,_ZTvn12_n32_N8S20567C9D0Ev)();
extern void _ZN8S20567C63v15Ev();
extern void ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S20567C9D1Ev,_ZThn40_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S20567C9D0Ev,_ZThn40_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN11S20567C5_nt3v14Ev();
extern void ABISELECT(_ZTv0_n32_N8S20567C9D1Ev,_ZTv0_n16_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn88_N8S20567C9D1Ev,_ZThn44_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20567C9D0Ev,_ZTv0_n16_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn88_N8S20567C9D0Ev,_ZThn44_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n48_N8S20567C9D1Ev,_ZTv0_n24_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn120_N8S20567C9D1Ev,_ZThn60_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20567C9D0Ev,_ZTv0_n24_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn120_N8S20567C9D0Ev,_ZThn60_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C73v21Ev();
extern void _ZN8S20567C73v22Ev();
extern void _ZN8S20567C73v23Ev();
extern void _ZN8S20567C73v24Ev();
extern void _ZN8S20567C73v25Ev();
extern void _ZN8S20567C73v26Ev();
static  VTBL_ENTRY vtc_S20567C9[] = {
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(88,44),
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v37Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C9D1Ev,_ZTv0_n44_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C9D0Ev,_ZTv0_n44_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20567C103v27Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v34Ev,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-48,-24),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C9D1Ev,_ZTv0_n32_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C9D0Ev,_ZTv0_n32_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C9D1Ev,_ZTvn8_n32_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C9D0Ev,_ZTvn8_n32_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C9D1Ev,_ZTvn12_n32_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C9D0Ev,_ZTvn12_n32_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  0,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C9D1Ev,_ZTv0_n16_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C9D0Ev,_ZTv0_n16_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-60),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C9D1Ev,_ZTv0_n24_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C9D0Ev,_ZTv0_n24_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v26Ev,
};
extern VTBL_ENTRY _ZTV8S20567C9[];
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void _ZN9S20567C10D1Ev();
extern void _ZN9S20567C10D0Ev();
extern void _ZN9S20567C103v27Ev();
extern void _ZN9S20567C103v28Ev();
extern void _ZN9S20567C103v29Ev();
extern void _ZN9S20567C103v30Ev();
extern void _ZN9S20567C103v31Ev();
extern void _ZN9S20567C103v32Ev();
extern void _ZN9S20567C103v33Ev();
extern void _ZN9S20567C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20567C10__8S20567C9[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&_ZN9S20567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20567C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v27Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v34Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S20567C10D1Ev,_ZThn12_N9S20567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S20567C10D0Ev,_ZThn12_N9S20567C10D0Ev)() __attribute__((weak));
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C6__9S20567C10__8S20567C9[] = {
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N9S20567C10D1Ev,_ZTv0_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S20567C10D1Ev,_ZThn16_N9S20567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20567C10D0Ev,_ZTv0_n32_N9S20567C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S20567C10D0Ev,_ZThn16_N9S20567C10D0Ev)() __attribute__((weak));
extern void _ZN8S20567C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C3__9S20567C10__8S20567C9[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20567C10D1Ev,_ZTv0_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20567C10D0Ev,_ZTv0_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
};
extern void ABISELECT(_ZTvn16_n64_N9S20567C10D1Ev,_ZTvn8_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N9S20567C10D0Ev,_ZTvn8_n32_N9S20567C10D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt8S20567C3__9S20567C10__8S20567C9[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S20567C10D1Ev,_ZTvn8_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S20567C10D0Ev,_ZTvn8_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N9S20567C10D1Ev,_ZTvn12_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20567C10D0Ev,_ZTvn12_n32_N9S20567C10D0Ev)();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C68S20567C3__A1__9S20567C10__8S20567C9[] = {
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20567C10D1Ev,_ZTvn12_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20567C10D0Ev,_ZTvn12_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S20567C10D1Ev,_ZThn32_N9S20567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S20567C10D0Ev,_ZThn32_N9S20567C10D0Ev)() __attribute__((weak));
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt__A1__9S20567C10__8S20567C9[] = {
  0,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void _ZN8S20567C8D1Ev();
extern void _ZN8S20567C8D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C8__8S20567C9[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__8S20567C8__8S20567C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern void _ZN8S20567C7D1Ev();
extern void _ZN8S20567C7D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C73v21Ev();
extern void _ZN8S20567C73v22Ev();
extern void _ZN8S20567C73v23Ev();
extern void _ZN8S20567C73v24Ev();
extern void _ZN8S20567C73v25Ev();
extern void _ZN8S20567C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C7__8S20567C9[] = {
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v26Ev,
};
extern void _ZN8S20567C8D1Ev();
extern void _ZN8S20567C8D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C88S20567C7__A1__8S20567C9[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__8S20567C88S20567C7__A1__8S20567C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20567C7D1Ev,_ZTv0_n12_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20567C7D0Ev,_ZTv0_n12_N8S20567C7D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt__8S20567C7__8S20567C9[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C7D1Ev,_ZTv0_n12_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C7D0Ev,_ZTv0_n12_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S20567C7D1Ev,_ZTv0_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S20567C7D0Ev,_ZTv0_n32_N8S20567C7D0Ev)();
extern void _ZN8S20567C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C3__8S20567C7__8S20567C9[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(72,36),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C7D1Ev,_ZTv0_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C7D0Ev,_ZTv0_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
};
extern void ABISELECT(_ZTvn16_n64_N8S20567C7D1Ev,_ZTvn8_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20567C7D0Ev,_ZTvn8_n32_N8S20567C7D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt8S20567C3__A1__8S20567C7__8S20567C9[] = {
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C7D1Ev,_ZTvn8_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C7D0Ev,_ZTvn8_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N8S20567C7D1Ev,_ZTvn12_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20567C7D0Ev,_ZTvn12_n32_N8S20567C7D0Ev)();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C68S20567C3__8S20567C7__8S20567C9[] = {
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C7D1Ev,_ZTvn12_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C7D0Ev,_ZTvn12_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__A1__8S20567C7__8S20567C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
static  VTT_ENTRY vtt_S20567C9[] = {
  {&(_ZTV8S20567C9[9]),  9,146},
  {&(_ZTV8S20567C9[34]),  34,146},
  {&(_ZTV8S20567C9[53]),  53,146},
  {&(_ZTV8S20567C9[67]),  67,146},
  {&(_ZTV8S20567C9[77]),  77,146},
  {&(_ZTV8S20567C9[82]),  82,146},
  {&(_ZTV8S20567C9[89]),  89,146},
  {&(_ZTV8S20567C9[100]),  100,146},
  {&(_ZTV8S20567C9[113]),  113,146},
  {&(_ZTV8S20567C9[134]),  134,146},
  {&(_tg__ZTV9S20567C10__8S20567C9[5]),  5,20},
  {&(_tg__ZTV8S20567C6__9S20567C10__8S20567C9[4]),  4,7},
  {&(_tg__ZTV8S20567C3__9S20567C10__8S20567C9[11]),  11,19},
  {&(_tg__ZTV11S20567C5_nt8S20567C3__9S20567C10__8S20567C9[2]),  2,5},
  {&(_tg__ZTV8S20567C68S20567C3__A1__9S20567C10__8S20567C9[2]),  2,5},
  {&(_tg__ZTV11S20567C5_nt__A1__9S20567C10__8S20567C9[4]),  4,7},
  {&(_tg__ZTV8S20567C8__8S20567C9[3]),  3,9},
  {&(_tg__ZTV8S20567C4__8S20567C8__8S20567C9[7]),  7,12},
  {&(_tg__ZTV8S20567C7__8S20567C9[5]),  5,17},
  {&(_tg__ZTV8S20567C88S20567C7__A1__8S20567C9[3]),  3,9},
  {&(_tg__ZTV8S20567C4__8S20567C88S20567C7__A1__8S20567C9[7]),  7,12},
  {&(_tg__ZTV11S20567C5_nt__8S20567C7__8S20567C9[4]),  4,7},
  {&(_tg__ZTV8S20567C3__8S20567C7__8S20567C9[11]),  11,19},
  {&(_tg__ZTV11S20567C5_nt8S20567C3__A1__8S20567C7__8S20567C9[2]),  2,5},
  {&(_tg__ZTV8S20567C68S20567C3__8S20567C7__8S20567C9[2]),  2,5},
  {&(_tg__ZTV8S20567C4__A1__8S20567C7__8S20567C9[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20567C9[];
extern  VTBL_ENTRY _ZTV8S20567C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C9[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20567C10D0Ev,_ZTv0_n32_N9S20567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20567C10D0Ev,_ZThn16_N9S20567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20567C10D1Ev,_ZTv0_n32_N9S20567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20567C10D1Ev,_ZThn16_N9S20567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20567C10D0Ev,_ZThn32_N9S20567C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20567C10D0Ev,_ZThn12_N9S20567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20567C10D1Ev,_ZThn32_N9S20567C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20567C10D1Ev,_ZThn12_N9S20567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C9D0Ev,_ZTv0_n24_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20567C9D0Ev,_ZThn60_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C9D1Ev,_ZTv0_n24_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20567C9D1Ev,_ZThn60_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C9D0Ev,_ZTv0_n16_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20567C9D0Ev,_ZThn44_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C9D1Ev,_ZTv0_n16_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20567C9D1Ev,_ZThn44_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C9D0Ev,_ZTv0_n32_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20567C9D0Ev,_ZThn24_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C9D1Ev,_ZTv0_n32_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20567C9D1Ev,_ZThn24_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20567C9D0Ev,_ZThn40_N8S20567C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20567C9D0Ev,_ZThn20_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20567C9D1Ev,_ZThn40_N8S20567C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20567C9D1Ev,_ZThn20_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C9D0Ev,_ZTv0_n44_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20567C9D0Ev,_ZThn8_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C9D1Ev,_ZTv0_n44_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20567C9D1Ev,_ZThn8_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20567C9 = {  "S20567C9", // class name
  bases_S20567C9, 13,
  &(vtc_S20567C9[0]), // expected_vtbl_contents
  &(vtt_S20567C9[0]), // expected_vtt_contents
  ABISELECT(184,116), // object size
  NSPAIRA(_ZTI8S20567C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20567C9),146, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20567C9),26, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20567C11  {
  ::S20567C6 s20567c11f0;
  int s20567c11f1;
  virtual void  v43(); // _ZN9S20567C113v43Ev
  virtual void  v44(); // _ZN9S20567C113v44Ev
  virtual void  v45(); // _ZN9S20567C113v45Ev
  virtual void  v46(); // _ZN9S20567C113v46Ev
  virtual void  v47(); // _ZN9S20567C113v47Ev
  ~S20567C11(); // tgen
  S20567C11(); // tgen
};
//SIG(1 S20567C11) C1{ v1 v2 v3 v4 v5 FC2{ vd v6} Fi}


void  S20567C11 ::v43(){vfunc_called(this, "_ZN9S20567C113v43Ev");}
void  S20567C11 ::v44(){vfunc_called(this, "_ZN9S20567C113v44Ev");}
void  S20567C11 ::v45(){vfunc_called(this, "_ZN9S20567C113v45Ev");}
void  S20567C11 ::v46(){vfunc_called(this, "_ZN9S20567C113v46Ev");}
void  S20567C11 ::v47(){vfunc_called(this, "_ZN9S20567C113v47Ev");}
S20567C11 ::~S20567C11(){ note_dtor("S20567C11", this);} // tgen
S20567C11 ::S20567C11(){ note_ctor("S20567C11", this);} // tgen

static void Test_S20567C11()
{
  extern Class_Descriptor cd_S20567C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20567C11, buf);
    S20567C11 *dp, &lv = *(dp=new (buf) S20567C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20567C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20567C11)");
    check_field_offset(lv, s20567c11f0, ABISELECT(8,4), "S20567C11.s20567c11f0");
    check_field_offset(lv, s20567c11f1, ABISELECT(16,8), "S20567C11.s20567c11f1");
    test_class_info(&lv, &cd_S20567C11);
    dp->~S20567C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20567C11(Test_S20567C11, "S20567C11", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20567C11C1Ev();
extern void _ZN9S20567C11D1Ev();
Name_Map name_map_S20567C11[] = {
  NSPAIR(_ZN9S20567C11C1Ev),
  NSPAIR(_ZN9S20567C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20567C11[];
extern void _ZN9S20567C113v43Ev();
extern void _ZN9S20567C113v44Ev();
extern void _ZN9S20567C113v45Ev();
extern void _ZN9S20567C113v46Ev();
extern void _ZN9S20567C113v47Ev();
static  VTBL_ENTRY vtc_S20567C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20567C11[0]),
  (VTBL_ENTRY)&_ZN9S20567C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20567C113v44Ev,
  (VTBL_ENTRY)&_ZN9S20567C113v45Ev,
  (VTBL_ENTRY)&_ZN9S20567C113v46Ev,
  (VTBL_ENTRY)&_ZN9S20567C113v47Ev,
};
extern VTBL_ENTRY _ZTI9S20567C11[];
extern  VTBL_ENTRY _ZTV9S20567C11[];
Class_Descriptor cd_S20567C11 = {  "S20567C11", // class name
  0,0,//no base classes
  &(vtc_S20567C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20567C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20567C11),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  S20567C2  : virtual S20567C3 , S20567C4 , virtual S20567C7 , S20567C9 {
  ::S20567C11 s20567c2f0[2];
  void *s20567c2f1;
  virtual  ~S20567C2(); // _ZN8S20567C2D2Ev
  virtual void  v38(); // _ZN8S20567C23v38Ev
  virtual void  v39(); // _ZN8S20567C23v39Ev
  virtual void  v40(); // _ZN8S20567C23v40Ev
  virtual void  v41(); // _ZN8S20567C23v41Ev
  virtual void  v42(); // _ZN8S20567C23v42Ev
  S20567C2(); // tgen
};
//SIG(-1 S20567C2) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 Fl} BC4{ vd v11} BC5{ vd v12} vd v13} BC3 VBC6{ VBC4 VBC2 BC7{ VBC3 vd v14 v15 v16 v17 Fi} vd v18 v19 v20 v21 v22 v23 Fi[10] Fc Fi Fc:0} BC8{ VBC9{ VBC5 VBC2 BC3 VBC4 vd v24 v25 v26 v27 v28 v29 v30 v31 Fi} VBC7 BC5 VBC6 vd v32 v33 v34 Fi} vd v1 v2 v3 v4 v5 FC10{ v35 v36 v37 v38 v39 FC5 Fi}[2] Fp}


 S20567C2 ::~S20567C2(){ note_dtor("S20567C2", this);}
void  S20567C2 ::v38(){vfunc_called(this, "_ZN8S20567C23v38Ev");}
void  S20567C2 ::v39(){vfunc_called(this, "_ZN8S20567C23v39Ev");}
void  S20567C2 ::v40(){vfunc_called(this, "_ZN8S20567C23v40Ev");}
void  S20567C2 ::v41(){vfunc_called(this, "_ZN8S20567C23v41Ev");}
void  S20567C2 ::v42(){vfunc_called(this, "_ZN8S20567C23v42Ev");}
S20567C2 ::S20567C2(){ note_ctor("S20567C2", this);} // tgen

static void Test_S20567C2()
{
  extern Class_Descriptor cd_S20567C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,39)];
    init_test(&cd_S20567C2, buf);
    S20567C2 *dp, &lv = *(dp=new (buf) S20567C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,152), "sizeof(S20567C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20567C2)");
    check_base_class_offset(lv, (S20567C4*)(S20567C3*), ABISELECT(88,44), "S20567C2");
    check_base_class_offset(lv, (S20567C5_nt*)(S20567C3*), ABISELECT(104,52), "S20567C2");
    check_base_class_offset(lv, (S20567C6*)(S20567C3*), ABISELECT(112,56), "S20567C2");
    check_base_class_offset(lv, (S20567C3*), ABISELECT(88,44), "S20567C2");
    check_base_class_offset(lv, (S20567C3*)(S20567C7*), ABISELECT(88,44), "S20567C2");
    check_base_class_offset(lv, (S20567C3*)(S20567C10*), ABISELECT(88,44), "S20567C2");
    /*is_ambiguous_... S20567C2::S20567C4 */ AMB_check_base_class_offset(lv, (S20567C4*), 0, "S20567C2");
    /*is_ambiguous_... S20567C7::S20567C5_nt */ AMB_check_base_class_offset(lv, (S20567C5_nt*)(S20567C7*), ABISELECT(184,116), "S20567C2");
    /*is_ambiguous_... S20567C10::S20567C5_nt */ AMB_check_base_class_offset(lv, (S20567C5_nt*)(S20567C10*), ABISELECT(184,116), "S20567C2");
    check_base_class_offset(lv, (S20567C4*)(S20567C8*)(S20567C7*), ABISELECT(192,120), "S20567C2");
    /*is_ambiguous_... S20567C2::S20567C8 */ AMB_check_base_class_offset(lv, (S20567C4*)(S20567C8*), ABISELECT(192,120), "S20567C2");
    check_base_class_offset(lv, (S20567C8*)(S20567C7*), ABISELECT(120,60), "S20567C2");
    check_base_class_offset(lv, (S20567C7*), ABISELECT(120,60), "S20567C2");
    check_base_class_offset(lv, (S20567C7*)(S20567C9*), ABISELECT(120,60), "S20567C2");
    /*is_ambiguous_... S20567C10::S20567C6 */ AMB_check_base_class_offset(lv, (S20567C6*)(S20567C10*), ABISELECT(232,140), "S20567C2");
    /*is_ambiguous_... S20567C10::S20567C4 */ AMB_check_base_class_offset(lv, (S20567C4*)(S20567C10*), ABISELECT(208,128), "S20567C2");
    check_base_class_offset(lv, (S20567C10*)(S20567C9*), ABISELECT(208,128), "S20567C2");
    /*is_ambiguous_... S20567C9::S20567C8 */ AMB_check_base_class_offset(lv, (S20567C8*)(S20567C9*), ABISELECT(240,144), "S20567C2");
    /*is_ambiguous_... S20567C9::S20567C6 */ AMB_check_base_class_offset(lv, (S20567C6*)(S20567C9*), ABISELECT(16,8), "S20567C2");
    check_base_class_offset(lv, (S20567C9*), ABISELECT(16,8), "S20567C2");
    check_field_offset(lv, s20567c2f0, ABISELECT(32,16), "S20567C2.s20567c2f0");
    check_field_offset(lv, s20567c2f1, ABISELECT(80,40), "S20567C2.s20567c2f1");
    test_class_info(&lv, &cd_S20567C2);
    dp->~S20567C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20567C2(Test_S20567C2, "S20567C2", ABISELECT(256,152));

#else // __cplusplus

extern void _ZN8S20567C2C1Ev();
extern void _ZN8S20567C2D2Ev();
Name_Map name_map_S20567C2[] = {
  NSPAIR(_ZN8S20567C2C1Ev),
  NSPAIR(_ZN8S20567C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C3;
extern VTBL_ENTRY _ZTI8S20567C3[];
extern  VTBL_ENTRY _ZTV8S20567C3[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C8;
extern VTBL_ENTRY _ZTI8S20567C8[];
extern  VTBL_ENTRY _ZTV8S20567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C8[];
extern Class_Descriptor cd_S20567C7;
extern VTBL_ENTRY _ZTI8S20567C7[];
extern  VTBL_ENTRY _ZTV8S20567C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C7[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C10;
extern VTBL_ENTRY _ZTI9S20567C10[];
extern  VTBL_ENTRY _ZTV9S20567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20567C10[];
extern Class_Descriptor cd_S20567C8;
extern VTBL_ENTRY _ZTI8S20567C8[];
extern  VTBL_ENTRY _ZTV8S20567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C8[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C9;
extern VTBL_ENTRY _ZTI8S20567C9[];
extern  VTBL_ENTRY _ZTV8S20567C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C9[];
static Base_Class bases_S20567C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20567C4,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20567C5_nt,    ABISELECT(104,52), //bcp->offset
    55, //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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20567C6,    ABISELECT(112,56), //bcp->offset
    60, //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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20567C3,    ABISELECT(88,44), //bcp->offset
    36, //bcp->virtual_function_table_offset
    11, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S20567C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20567C5_nt,    ABISELECT(184,116), //bcp->offset
    93, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20567C4,    ABISELECT(192,120), //bcp->offset
    100, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20567C8,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20567C7,    ABISELECT(120,60), //bcp->offset
    65, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20567C6,    ABISELECT(232,140), //bcp->offset
    146, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20567C4,    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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20567C10,    ABISELECT(208,128), //bcp->offset
    112, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20567C8,    ABISELECT(240,144), //bcp->offset
    153, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20567C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20567C9,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20567C2[];
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void _ZN8S20567C2D1Ev();
extern void _ZN8S20567C2D0Ev();
extern void _ZN8S20567C23v38Ev();
extern void _ZN8S20567C23v39Ev();
extern void _ZN8S20567C23v40Ev();
extern void _ZN8S20567C23v41Ev();
extern void _ZN8S20567C23v42Ev();
extern void ABISELECT(_ZThn16_N8S20567C2D1Ev,_ZThn8_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20567C2D0Ev,_ZThn8_N8S20567C2D0Ev)();
extern void _ZN8S20567C63v15Ev();
extern void _ZN8S20567C93v35Ev();
extern void _ZN8S20567C93v36Ev();
extern void _ZN8S20567C93v37Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S20567C2D1Ev,_ZTv0_n32_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn88_N8S20567C2D1Ev,_ZThn44_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20567C2D0Ev,_ZTv0_n32_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn88_N8S20567C2D0Ev,_ZThn44_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN8S20567C33v16Ev();
extern void ABISELECT(_ZTvn16_n64_N8S20567C2D1Ev,_ZTvn8_n32_N8S20567C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20567C2D0Ev,_ZTvn8_n32_N8S20567C2D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
extern void ABISELECT(_ZTvn24_n64_N8S20567C2D1Ev,_ZTvn12_n32_N8S20567C2D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20567C2D0Ev,_ZTvn12_n32_N8S20567C2D0Ev)();
extern void _ZN8S20567C63v15Ev();
extern void ABISELECT(_ZTv0_n48_N8S20567C2D1Ev,_ZTv0_n24_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S20567C2D1Ev,_ZThn60_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20567C2D0Ev,_ZTv0_n24_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S20567C2D0Ev,_ZThn60_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C73v21Ev();
extern void _ZN8S20567C73v22Ev();
extern void _ZN8S20567C73v23Ev();
extern void _ZN8S20567C73v24Ev();
extern void _ZN8S20567C73v25Ev();
extern void _ZN8S20567C73v26Ev();
extern void ABISELECT(_ZTv0_n24_N8S20567C2D1Ev,_ZTv0_n12_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S20567C2D1Ev,_ZThn116_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C2D0Ev,_ZTv0_n12_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn184_N8S20567C2D0Ev,_ZThn116_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN11S20567C5_nt3v14Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n88_N8S20567C2D1Ev,_ZTv0_n44_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S20567C2D1Ev,_ZThn128_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20567C2D0Ev,_ZTv0_n44_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S20567C2D0Ev,_ZThn128_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN9S20567C103v27Ev();
extern void _ZN9S20567C103v28Ev();
extern void _ZN9S20567C103v29Ev();
extern void _ZN9S20567C103v30Ev();
extern void _ZN9S20567C103v31Ev();
extern void _ZN9S20567C103v32Ev();
extern void _ZN9S20567C103v33Ev();
extern void _ZN9S20567C103v34Ev();
extern void ABISELECT(_ZTv0_n24_N8S20567C2D1Ev,_ZTv0_n12_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn232_N8S20567C2D1Ev,_ZThn140_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C2D0Ev,_ZTv0_n12_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn232_N8S20567C2D0Ev,_ZThn140_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN8S20567C63v15Ev();
extern void ABISELECT(_ZTv0_n32_N8S20567C2D1Ev,_ZTv0_n16_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn240_N8S20567C2D1Ev,_ZThn144_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20567C2D0Ev,_ZTv0_n16_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn240_N8S20567C2D0Ev,_ZThn144_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY vtc_S20567C2[] = {
  ABISELECT(240,144),
  ABISELECT(232,140),
  ABISELECT(208,128),
  ABISELECT(192,120),
  ABISELECT(184,116),
  ABISELECT(120,60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20567C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v38Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v39Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v40Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v41Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v42Ev,
  ABISELECT(104,52),
  ABISELECT(176,112),
  ABISELECT(224,136),
  ABISELECT(168,108),
  ABISELECT(72,36),
  ABISELECT(216,132),
  ABISELECT(192,120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20567C2D1Ev,_ZThn8_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20567C2D0Ev,_ZThn8_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v37Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C2D1Ev,_ZTv0_n32_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C2D0Ev,_ZTv0_n32_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C2D1Ev,_ZTvn8_n32_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C2D0Ev,_ZTvn8_n32_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C2D1Ev,_ZTvn12_n32_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C2D0Ev,_ZTvn12_n32_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  ABISELECT(64,56),
  ABISELECT(72,60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C2D1Ev,_ZTv0_n24_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C2D0Ev,_ZTv0_n24_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v26Ev,
  0,
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C2D1Ev,_ZTv0_n12_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C2D0Ev,_ZTv0_n12_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-128),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-120,-84),
  ABISELECT(24,12),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C2D1Ev,_ZTv0_n44_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C2D0Ev,_ZTv0_n44_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20567C103v27Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v34Ev,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-232,-140),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C2D1Ev,_ZTv0_n12_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C2D0Ev,_ZTv0_n12_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-144),
  ABISELECT(-48,-24),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C2D1Ev,_ZTv0_n16_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C2D0Ev,_ZTv0_n16_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S20567C2[];
extern void _ZN8S20567C9D1Ev();
extern void _ZN8S20567C9D0Ev();
extern void _ZN8S20567C63v15Ev();
extern void _ZN8S20567C93v35Ev();
extern void _ZN8S20567C93v36Ev();
extern void _ZN8S20567C93v37Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C9__8S20567C2[] = {
  ABISELECT(104,52),
  ABISELECT(176,112),
  ABISELECT(224,136),
  ABISELECT(168,108),
  ABISELECT(72,36),
  ABISELECT(216,132),
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v37Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n88_N8S20567C9D1Ev,_ZTv0_n44_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S20567C9D1Ev,_ZThn120_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20567C9D0Ev,_ZTv0_n44_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn192_N8S20567C9D0Ev,_ZThn120_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN9S20567C103v27Ev();
extern void _ZN9S20567C103v28Ev();
extern void _ZN9S20567C103v29Ev();
extern void _ZN9S20567C103v30Ev();
extern void _ZN9S20567C103v31Ev();
extern void _ZN9S20567C103v32Ev();
extern void _ZN9S20567C103v33Ev();
extern void _ZN9S20567C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20567C10__8S20567C9__8S20567C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-120),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-120,-84),
  ABISELECT(24,12),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C9D1Ev,_ZTv0_n44_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C9D0Ev,_ZTv0_n44_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20567C103v27Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v34Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn216_N8S20567C9D1Ev,_ZThn132_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn216_N8S20567C9D0Ev,_ZThn132_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C6__8S20567C9__8S20567C2[] = {
  0,
  ABISELECT(-216,-132),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S20567C9D1Ev,_ZTv0_n32_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S20567C9D1Ev,_ZThn36_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20567C9D0Ev,_ZTv0_n32_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn72_N8S20567C9D0Ev,_ZThn36_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C3__8S20567C9__8S20567C2[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-36),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C9D1Ev,_ZTv0_n32_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C9D0Ev,_ZTv0_n32_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
};
extern void ABISELECT(_ZTvn16_n64_N8S20567C9D1Ev,_ZTvn8_n32_N8S20567C9D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20567C9D0Ev,_ZTvn8_n32_N8S20567C9D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt8S20567C3__8S20567C9__8S20567C2[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C9D1Ev,_ZTvn8_n32_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C9D0Ev,_ZTvn8_n32_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N8S20567C9D1Ev,_ZTvn12_n32_N8S20567C9D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20567C9D0Ev,_ZTvn12_n32_N8S20567C9D0Ev)();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C68S20567C3__A1__8S20567C9__8S20567C2[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C9D1Ev,_ZTvn12_n32_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C9D0Ev,_ZTvn12_n32_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S20567C9D1Ev,_ZThn108_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S20567C9D0Ev,_ZThn108_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt__A1__8S20567C9__8S20567C2[] = {
  0,
  ABISELECT(-168,-108),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20567C9D1Ev,_ZTv0_n16_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn224_N8S20567C9D1Ev,_ZThn136_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20567C9D0Ev,_ZTv0_n16_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn224_N8S20567C9D0Ev,_ZThn136_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C8__8S20567C9__8S20567C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-224,-136),
  ABISELECT(-48,-24),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C9D1Ev,_ZTv0_n16_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C9D0Ev,_ZTv0_n16_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__A2__8S20567C9__8S20567C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20567C9D1Ev,_ZTv0_n24_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn104_N8S20567C9D1Ev,_ZThn52_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20567C9D0Ev,_ZTv0_n24_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn104_N8S20567C9D0Ev,_ZThn52_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C73v21Ev();
extern void _ZN8S20567C73v22Ev();
extern void _ZN8S20567C73v23Ev();
extern void _ZN8S20567C73v24Ev();
extern void _ZN8S20567C73v25Ev();
extern void _ZN8S20567C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C7__8S20567C9__8S20567C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  ABISELECT(64,56),
  ABISELECT(72,60),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C9D1Ev,_ZTv0_n24_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C9D0Ev,_ZTv0_n24_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v26Ev,
};
extern void _ZN8S20567C7D1Ev();
extern void _ZN8S20567C7D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C73v21Ev();
extern void _ZN8S20567C73v22Ev();
extern void _ZN8S20567C73v23Ev();
extern void _ZN8S20567C73v24Ev();
extern void _ZN8S20567C73v25Ev();
extern void _ZN8S20567C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C7__8S20567C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(64,56),
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v26Ev,
};
extern void _ZN8S20567C8D1Ev();
extern void _ZN8S20567C8D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C88S20567C7__8S20567C2[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__8S20567C88S20567C7__8S20567C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20567C7D1Ev,_ZTv0_n12_N8S20567C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S20567C7D1Ev,_ZThn56_N8S20567C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C7D0Ev,_ZTv0_n12_N8S20567C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S20567C7D0Ev,_ZThn56_N8S20567C7D0Ev)() __attribute__((weak));
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt__8S20567C7__8S20567C2[] = {
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C7D1Ev,_ZTv0_n12_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C7D0Ev,_ZTv0_n12_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S20567C7D1Ev,_ZTv0_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S20567C7D0Ev,_ZTv0_n32_N8S20567C7D0Ev)();
extern void _ZN8S20567C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C3__8S20567C7__8S20567C2[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C7D1Ev,_ZTv0_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C7D0Ev,_ZTv0_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
};
extern void ABISELECT(_ZTvn16_n64_N8S20567C7D1Ev,_ZTvn8_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20567C7D0Ev,_ZTvn8_n32_N8S20567C7D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt8S20567C3__A1__8S20567C7__8S20567C2[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C7D1Ev,_ZTvn8_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C7D0Ev,_ZTvn8_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N8S20567C7D1Ev,_ZTvn12_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20567C7D0Ev,_ZTvn12_n32_N8S20567C7D0Ev)();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C68S20567C3__8S20567C7__8S20567C2[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C7D1Ev,_ZTvn12_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C7D0Ev,_ZTvn12_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__A1__8S20567C7__8S20567C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void _ZN9S20567C10D1Ev();
extern void _ZN9S20567C10D0Ev();
extern void _ZN9S20567C103v27Ev();
extern void _ZN9S20567C103v28Ev();
extern void _ZN9S20567C103v29Ev();
extern void _ZN9S20567C103v30Ev();
extern void _ZN9S20567C103v31Ev();
extern void _ZN9S20567C103v32Ev();
extern void _ZN9S20567C103v33Ev();
extern void _ZN9S20567C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20567C10__8S20567C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-120,-84),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&_ZN9S20567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20567C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v27Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v34Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S20567C10D1Ev,_ZThn12_N9S20567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S20567C10D0Ev,_ZThn12_N9S20567C10D0Ev)() __attribute__((weak));
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C6__9S20567C10__8S20567C2[] = {
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N9S20567C10D1Ev,_ZTv0_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S20567C10D0Ev,_ZTv0_n32_N9S20567C10D0Ev)();
extern void _ZN8S20567C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C3__9S20567C10__8S20567C2[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(120,84),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,84),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20567C10D1Ev,_ZTv0_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20567C10D0Ev,_ZTv0_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
};
extern void ABISELECT(_ZTvn16_n64_N9S20567C10D1Ev,_ZTvn8_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N9S20567C10D0Ev,_ZTvn8_n32_N9S20567C10D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt8S20567C3__9S20567C10__8S20567C2[] = {
  ABISELECT(104,76),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S20567C10D1Ev,_ZTvn8_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S20567C10D0Ev,_ZTvn8_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N9S20567C10D1Ev,_ZTvn12_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20567C10D0Ev,_ZTvn12_n32_N9S20567C10D0Ev)();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C68S20567C3__A1__9S20567C10__8S20567C2[] = {
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20567C10D1Ev,_ZTvn12_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20567C10D0Ev,_ZTvn12_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt__A1__9S20567C10__8S20567C2[] = {
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void _ZN8S20567C8D1Ev();
extern void _ZN8S20567C8D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C8__A1__8S20567C2[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__8S20567C8__A1__8S20567C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
static  VTT_ENTRY vtt_S20567C2[] = {
  {&(_ZTV8S20567C2[9]),  9,167},
  {&(_tg__ZTV8S20567C9__8S20567C2[9]),  9,15},
  {&(_tg__ZTV9S20567C10__8S20567C9__8S20567C2[19]),  19,34},
  {&(_tg__ZTV8S20567C6__8S20567C9__8S20567C2[4]),  4,7},
  {&(_tg__ZTV8S20567C3__8S20567C9__8S20567C2[11]),  11,19},
  {&(_tg__ZTV11S20567C5_nt8S20567C3__8S20567C9__8S20567C2[2]),  2,5},
  {&(_tg__ZTV8S20567C68S20567C3__A1__8S20567C9__8S20567C2[2]),  2,5},
  {&(_tg__ZTV11S20567C5_nt__A1__8S20567C9__8S20567C2[4]),  4,7},
  {&(_tg__ZTV8S20567C8__8S20567C9__8S20567C2[8]),  8,14},
  {&(_tg__ZTV8S20567C4__A2__8S20567C9__8S20567C2[7]),  7,12},
  {&(_tg__ZTV8S20567C7__8S20567C9__8S20567C2[16]),  16,28},
  {&(_ZTV8S20567C2[47]),  47,167},
  {&(_ZTV8S20567C2[57]),  57,167},
  {&(_ZTV8S20567C2[62]),  62,167},
  {&(_ZTV8S20567C2[81]),  81,167},
  {&(_ZTV8S20567C2[97]),  97,167},
  {&(_ZTV8S20567C2[107]),  107,167},
  {&(_ZTV8S20567C2[30]),  30,167},
  {&(_ZTV8S20567C2[131]),  131,167},
  {&(_ZTV8S20567C2[150]),  150,167},
  {&(_ZTV8S20567C2[161]),  161,167},
  {&(_tg__ZTV8S20567C7__8S20567C2[5]),  5,17},
  {&(_tg__ZTV8S20567C88S20567C7__8S20567C2[3]),  3,9},
  {&(_tg__ZTV8S20567C4__8S20567C88S20567C7__8S20567C2[7]),  7,12},
  {&(_tg__ZTV11S20567C5_nt__8S20567C7__8S20567C2[4]),  4,7},
  {&(_tg__ZTV8S20567C3__8S20567C7__8S20567C2[11]),  11,19},
  {&(_tg__ZTV11S20567C5_nt8S20567C3__A1__8S20567C7__8S20567C2[2]),  2,5},
  {&(_tg__ZTV8S20567C68S20567C3__8S20567C7__8S20567C2[2]),  2,5},
  {&(_tg__ZTV8S20567C4__A1__8S20567C7__8S20567C2[7]),  7,12},
  {&(_tg__ZTV9S20567C10__8S20567C2[5]),  5,20},
  {&(_tg__ZTV8S20567C6__9S20567C10__8S20567C2[4]),  4,7},
  {&(_tg__ZTV8S20567C3__9S20567C10__8S20567C2[11]),  11,19},
  {&(_tg__ZTV11S20567C5_nt8S20567C3__9S20567C10__8S20567C2[2]),  2,5},
  {&(_tg__ZTV8S20567C68S20567C3__A1__9S20567C10__8S20567C2[2]),  2,5},
  {&(_tg__ZTV11S20567C5_nt__A1__9S20567C10__8S20567C2[4]),  4,7},
  {&(_tg__ZTV8S20567C8__A1__8S20567C2[3]),  3,9},
  {&(_tg__ZTV8S20567C4__8S20567C8__A1__8S20567C2[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20567C2[];
extern  VTBL_ENTRY _ZTV8S20567C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C2[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20567C10D0Ev,_ZThn12_N9S20567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20567C10D1Ev,_ZThn12_N9S20567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C7D0Ev,_ZTv0_n12_N8S20567C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20567C7D0Ev,_ZThn56_N8S20567C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C7D1Ev,_ZTv0_n12_N8S20567C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20567C7D1Ev,_ZThn56_N8S20567C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C9D0Ev,_ZTv0_n24_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20567C9D0Ev,_ZThn52_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C9D1Ev,_ZTv0_n24_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20567C9D1Ev,_ZThn52_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C9D0Ev,_ZTv0_n16_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20567C9D0Ev,_ZThn136_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C9D1Ev,_ZTv0_n16_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20567C9D1Ev,_ZThn136_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C9D0Ev,_ZTv0_n32_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20567C9D0Ev,_ZThn36_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C9D1Ev,_ZTv0_n32_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20567C9D1Ev,_ZThn36_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20567C9D0Ev,_ZThn108_N8S20567C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20567C9D0Ev,_ZThn132_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20567C9D1Ev,_ZThn108_N8S20567C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20567C9D1Ev,_ZThn132_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C9D0Ev,_ZTv0_n44_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20567C9D0Ev,_ZThn120_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C9D1Ev,_ZTv0_n44_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20567C9D1Ev,_ZThn120_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C2D0Ev,_ZTv0_n16_N8S20567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20567C2D0Ev,_ZThn144_N8S20567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C2D1Ev,_ZTv0_n16_N8S20567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20567C2D1Ev,_ZThn144_N8S20567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C2D0Ev,_ZTv0_n44_N8S20567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20567C2D0Ev,_ZThn128_N8S20567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C2D1Ev,_ZTv0_n44_N8S20567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20567C2D1Ev,_ZThn128_N8S20567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C2D0Ev,_ZTv0_n12_N8S20567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20567C2D0Ev,_ZThn140_N8S20567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20567C2D0Ev,_ZThn116_N8S20567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C2D1Ev,_ZTv0_n12_N8S20567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20567C2D1Ev,_ZThn140_N8S20567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20567C2D1Ev,_ZThn116_N8S20567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C2D0Ev,_ZTv0_n24_N8S20567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20567C2D0Ev,_ZThn60_N8S20567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C2D1Ev,_ZTv0_n24_N8S20567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20567C2D1Ev,_ZThn60_N8S20567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C2D0Ev,_ZTv0_n32_N8S20567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20567C2D0Ev,_ZThn44_N8S20567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C2D1Ev,_ZTv0_n32_N8S20567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20567C2D1Ev,_ZThn44_N8S20567C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20567C2 = {  "S20567C2", // class name
  bases_S20567C2, 15,
  &(vtc_S20567C2[0]), // expected_vtbl_contents
  &(vtt_S20567C2[0]), // expected_vtt_contents
  ABISELECT(256,152), // object size
  NSPAIRA(_ZTI8S20567C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20567C2),167, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20567C2),37, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20567C1  : virtual S20567C2 {
  void *s20567c1f0;
  int s20567c1f1[4];
  virtual void  v1(); // _ZN8S20567C12v1Ev
  virtual void  v2(); // _ZN8S20567C12v2Ev
  virtual void  v3(); // _ZN8S20567C12v3Ev
  virtual void  v4(); // _ZN8S20567C12v4Ev
  virtual void  v5(); // _ZN8S20567C12v5Ev
  virtual void  v6(); // _ZN8S20567C12v6Ev
  virtual void  v7(); // _ZN8S20567C12v7Ev
  virtual void  v8(); // _ZN8S20567C12v8Ev
  ~S20567C1(); // tgen
  S20567C1(); // tgen
};
//SIG(1 S20567C1) C1{ VBC2{ VBC3{ BC4{ v9 v10 v11 v12 v13 Fl} BC5{ vd v14} BC6{ vd v15} vd v16} BC4 VBC7{ VBC5 VBC3 BC8{ VBC4 vd v17 v18 v19 v20 Fi} vd v21 v22 v23 v24 v25 v26 Fi[10] Fc Fi Fc:0} BC9{ VBC10{ VBC6 VBC3 BC4 VBC5 vd v27 v28 v29 v30 v31 v32 v33 v34 Fi} VBC8 BC6 VBC7 vd v35 v36 v37 Fi} vd v38 v39 v40 v41 v42 FC11{ v43 v44 v45 v46 v47 FC6 Fi}[2] Fp} v1 v2 v3 v4 v5 v6 v7 v8 Fp Fi[4]}


void  S20567C1 ::v1(){vfunc_called(this, "_ZN8S20567C12v1Ev");}
void  S20567C1 ::v2(){vfunc_called(this, "_ZN8S20567C12v2Ev");}
void  S20567C1 ::v3(){vfunc_called(this, "_ZN8S20567C12v3Ev");}
void  S20567C1 ::v4(){vfunc_called(this, "_ZN8S20567C12v4Ev");}
void  S20567C1 ::v5(){vfunc_called(this, "_ZN8S20567C12v5Ev");}
void  S20567C1 ::v6(){vfunc_called(this, "_ZN8S20567C12v6Ev");}
void  S20567C1 ::v7(){vfunc_called(this, "_ZN8S20567C12v7Ev");}
void  S20567C1 ::v8(){vfunc_called(this, "_ZN8S20567C12v8Ev");}
S20567C1 ::~S20567C1(){ note_dtor("S20567C1", this);} // tgen
S20567C1 ::S20567C1(){ note_ctor("S20567C1", this);} // tgen

static void Test_S20567C1()
{
  extern Class_Descriptor cd_S20567C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,44)];
    init_test(&cd_S20567C1, buf);
    S20567C1 *dp, &lv = *(dp=new (buf) S20567C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,172), "sizeof(S20567C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20567C1)");
    check_base_class_offset(lv, (S20567C4*)(S20567C3*), ABISELECT(120,68), "S20567C1");
    check_base_class_offset(lv, (S20567C5_nt*)(S20567C3*), ABISELECT(136,76), "S20567C1");
    check_base_class_offset(lv, (S20567C6*)(S20567C3*), ABISELECT(144,80), "S20567C1");
    check_base_class_offset(lv, (S20567C3*)(S20567C2*), ABISELECT(120,68), "S20567C1");
    check_base_class_offset(lv, (S20567C3*)(S20567C7*), ABISELECT(120,68), "S20567C1");
    check_base_class_offset(lv, (S20567C3*)(S20567C10*), ABISELECT(120,68), "S20567C1");
    /*is_ambiguous_... S20567C2::S20567C4 */ AMB_check_base_class_offset(lv, (S20567C4*)(S20567C2*), ABISELECT(32,24), "S20567C1");
    /*is_ambiguous_... S20567C7::S20567C5_nt */ AMB_check_base_class_offset(lv, (S20567C5_nt*)(S20567C7*), 0, "S20567C1");
    /*is_ambiguous_... S20567C10::S20567C5_nt */ AMB_check_base_class_offset(lv, (S20567C5_nt*)(S20567C10*), 0, "S20567C1");
    check_base_class_offset(lv, (S20567C4*)(S20567C8*)(S20567C7*), ABISELECT(216,140), "S20567C1");
    /*is_ambiguous_... S20567C1::S20567C8 */ AMB_check_base_class_offset(lv, (S20567C4*)(S20567C8*), ABISELECT(216,140), "S20567C1");
    check_base_class_offset(lv, (S20567C8*)(S20567C7*), ABISELECT(152,84), "S20567C1");
    check_base_class_offset(lv, (S20567C7*)(S20567C2*), ABISELECT(152,84), "S20567C1");
    check_base_class_offset(lv, (S20567C7*)(S20567C9*)(S20567C2*), ABISELECT(152,84), "S20567C1");
    /*is_ambiguous_... S20567C10::S20567C6 */ AMB_check_base_class_offset(lv, (S20567C6*)(S20567C10*), ABISELECT(256,160), "S20567C1");
    /*is_ambiguous_... S20567C10::S20567C4 */ AMB_check_base_class_offset(lv, (S20567C4*)(S20567C10*), ABISELECT(232,148), "S20567C1");
    check_base_class_offset(lv, (S20567C10*)(S20567C9*)(S20567C2*), ABISELECT(232,148), "S20567C1");
    /*is_ambiguous_... S20567C9::S20567C8 */ AMB_check_base_class_offset(lv, (S20567C8*)(S20567C9*)(S20567C2*), ABISELECT(264,164), "S20567C1");
    /*is_ambiguous_... S20567C9::S20567C6 */ AMB_check_base_class_offset(lv, (S20567C6*)(S20567C9*)(S20567C2*), ABISELECT(48,32), "S20567C1");
    check_base_class_offset(lv, (S20567C9*)(S20567C2*), ABISELECT(48,32), "S20567C1");
    check_base_class_offset(lv, (S20567C2*), ABISELECT(32,24), "S20567C1");
    check_field_offset(lv, s20567c1f0, ABISELECT(8,4), "S20567C1.s20567c1f0");
    check_field_offset(lv, s20567c1f1, ABISELECT(16,8), "S20567C1.s20567c1f1");
    test_class_info(&lv, &cd_S20567C1);
    dp->~S20567C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20567C1(Test_S20567C1, "S20567C1", ABISELECT(280,172));

#else // __cplusplus

extern void _ZN8S20567C1C1Ev();
extern void _ZN8S20567C1D1Ev();
Name_Map name_map_S20567C1[] = {
  NSPAIR(_ZN8S20567C1C1Ev),
  NSPAIR(_ZN8S20567C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C3;
extern VTBL_ENTRY _ZTI8S20567C3[];
extern  VTBL_ENTRY _ZTV8S20567C3[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C5_nt;
extern VTBL_ENTRY _ZTI11S20567C5_nt[];
extern  VTBL_ENTRY _ZTV11S20567C5_nt[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C8;
extern VTBL_ENTRY _ZTI8S20567C8[];
extern  VTBL_ENTRY _ZTV8S20567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C8[];
extern Class_Descriptor cd_S20567C7;
extern VTBL_ENTRY _ZTI8S20567C7[];
extern  VTBL_ENTRY _ZTV8S20567C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C7[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C4;
extern VTBL_ENTRY _ZTI8S20567C4[];
extern  VTBL_ENTRY _ZTV8S20567C4[];
extern Class_Descriptor cd_S20567C10;
extern VTBL_ENTRY _ZTI9S20567C10[];
extern  VTBL_ENTRY _ZTV9S20567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20567C10[];
extern Class_Descriptor cd_S20567C8;
extern VTBL_ENTRY _ZTI8S20567C8[];
extern  VTBL_ENTRY _ZTV8S20567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C8[];
extern Class_Descriptor cd_S20567C6;
extern VTBL_ENTRY _ZTI8S20567C6[];
extern  VTBL_ENTRY _ZTV8S20567C6[];
extern Class_Descriptor cd_S20567C9;
extern VTBL_ENTRY _ZTI8S20567C9[];
extern  VTBL_ENTRY _ZTV8S20567C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C9[];
extern Class_Descriptor cd_S20567C2;
extern VTBL_ENTRY _ZTI8S20567C2[];
extern  VTBL_ENTRY _ZTV8S20567C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C2[];
static Base_Class bases_S20567C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20567C4,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20567C5_nt,    ABISELECT(136,76), //bcp->offset
    93, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20567C6,    ABISELECT(144,80), //bcp->offset
    98, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20567C3,    ABISELECT(120,68), //bcp->offset
    74, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20567C4,    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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20567C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20567C4,    ABISELECT(216,140), //bcp->offset
    131, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20567C8,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20567C7,    ABISELECT(152,84), //bcp->offset
    103, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20567C6,    ABISELECT(256,160), //bcp->offset
    177, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20567C4,    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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20567C10,    ABISELECT(232,148), //bcp->offset
    143, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20567C8,    ABISELECT(264,164), //bcp->offset
    184, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20567C6,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20567C9,    ABISELECT(48,32), //bcp->offset
    59, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20567C2,    ABISELECT(32,24), //bcp->offset
    23, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20567C1[];
extern void ABISELECT(_ZTv0_n24_N8S20567C1D1Ev,_ZTv0_n12_N8S20567C1D1Ev)();
extern void _ZN8S20567C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C1D0Ev,_ZTv0_n12_N8S20567C1D0Ev)();
extern void _ZN8S20567C1D0Ev() __attribute__((weak));
extern void _ZN11S20567C5_nt3v14Ev();
extern void _ZN8S20567C12v1Ev();
extern void _ZN8S20567C12v2Ev();
extern void _ZN8S20567C12v3Ev();
extern void _ZN8S20567C12v4Ev();
extern void _ZN8S20567C12v5Ev();
extern void _ZN8S20567C12v6Ev();
extern void _ZN8S20567C12v7Ev();
extern void _ZN8S20567C12v8Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n120_N8S20567C1D1Ev,_ZTv0_n60_N8S20567C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20567C1D1Ev,_ZThn24_N8S20567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20567C1D0Ev,_ZTv0_n60_N8S20567C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20567C1D0Ev,_ZThn24_N8S20567C1D0Ev)() __attribute__((weak));
extern void _ZN8S20567C23v38Ev();
extern void _ZN8S20567C23v39Ev();
extern void _ZN8S20567C23v40Ev();
extern void _ZN8S20567C23v41Ev();
extern void _ZN8S20567C23v42Ev();
extern void ABISELECT(_ZTvn16_n120_N8S20567C1D1Ev,_ZTvn8_n60_N8S20567C1D1Ev)();
extern void ABISELECT(_ZTvn16_n120_N8S20567C1D0Ev,_ZTvn8_n60_N8S20567C1D0Ev)();
extern void _ZN8S20567C63v15Ev();
extern void _ZN8S20567C93v35Ev();
extern void _ZN8S20567C93v36Ev();
extern void _ZN8S20567C93v37Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S20567C1D1Ev,_ZTv0_n32_N8S20567C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S20567C1D1Ev,_ZThn68_N8S20567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20567C1D0Ev,_ZTv0_n32_N8S20567C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S20567C1D0Ev,_ZThn68_N8S20567C1D0Ev)() __attribute__((weak));
extern void _ZN8S20567C33v16Ev();
extern void ABISELECT(_ZTvn16_n64_N8S20567C1D1Ev,_ZTvn8_n32_N8S20567C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20567C1D0Ev,_ZTvn8_n32_N8S20567C1D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
extern void ABISELECT(_ZTvn24_n64_N8S20567C1D1Ev,_ZTvn12_n32_N8S20567C1D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20567C1D0Ev,_ZTvn12_n32_N8S20567C1D0Ev)();
extern void _ZN8S20567C63v15Ev();
extern void ABISELECT(_ZTv0_n48_N8S20567C1D1Ev,_ZTv0_n24_N8S20567C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S20567C1D1Ev,_ZThn84_N8S20567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20567C1D0Ev,_ZTv0_n24_N8S20567C1D0Ev)();
extern void ABISELECT(_ZThn152_N8S20567C1D0Ev,_ZThn84_N8S20567C1D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C73v21Ev();
extern void _ZN8S20567C73v22Ev();
extern void _ZN8S20567C73v23Ev();
extern void _ZN8S20567C73v24Ev();
extern void _ZN8S20567C73v25Ev();
extern void _ZN8S20567C73v26Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n88_N8S20567C1D1Ev,_ZTv0_n44_N8S20567C1D1Ev)();
extern void ABISELECT(_ZThn232_N8S20567C1D1Ev,_ZThn148_N8S20567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20567C1D0Ev,_ZTv0_n44_N8S20567C1D0Ev)();
extern void ABISELECT(_ZThn232_N8S20567C1D0Ev,_ZThn148_N8S20567C1D0Ev)() __attribute__((weak));
extern void _ZN9S20567C103v27Ev();
extern void _ZN9S20567C103v28Ev();
extern void _ZN9S20567C103v29Ev();
extern void _ZN9S20567C103v30Ev();
extern void _ZN9S20567C103v31Ev();
extern void _ZN9S20567C103v32Ev();
extern void _ZN9S20567C103v33Ev();
extern void _ZN9S20567C103v34Ev();
extern void ABISELECT(_ZTv0_n24_N8S20567C1D1Ev,_ZTv0_n12_N8S20567C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S20567C1D1Ev,_ZThn160_N8S20567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C1D0Ev,_ZTv0_n12_N8S20567C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S20567C1D0Ev,_ZThn160_N8S20567C1D0Ev)() __attribute__((weak));
extern void _ZN8S20567C63v15Ev();
extern void ABISELECT(_ZTv0_n32_N8S20567C1D1Ev,_ZTv0_n16_N8S20567C1D1Ev)();
extern void ABISELECT(_ZThn264_N8S20567C1D1Ev,_ZThn164_N8S20567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20567C1D0Ev,_ZTv0_n16_N8S20567C1D0Ev)();
extern void ABISELECT(_ZThn264_N8S20567C1D0Ev,_ZThn164_N8S20567C1D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY vtc_S20567C1[] = {
  ABISELECT(264,164),
  ABISELECT(256,160),
  ABISELECT(232,148),
  ABISELECT(216,140),
  0,
  ABISELECT(152,84),
  ABISELECT(120,68),
  ABISELECT(32,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C1D1Ev,_ZTv0_n12_N8S20567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C1D0Ev,_ZTv0_n12_N8S20567C1D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S20567C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20567C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20567C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20567C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20567C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20567C12v6Ev,
  (VTBL_ENTRY)&_ZN8S20567C12v7Ev,
  (VTBL_ENTRY)&_ZN8S20567C12v8Ev,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-24),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(232,140),
  ABISELECT(224,136),
  ABISELECT(200,124),
  ABISELECT(184,116),
  ABISELECT(-32,-24),
  ABISELECT(120,60),
  ABISELECT(88,44),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20567C1D1Ev,_ZTv0_n60_N8S20567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20567C1D0Ev,_ZTv0_n60_N8S20567C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C23v38Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v39Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v40Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v41Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v42Ev,
  ABISELECT(104,52),
  ABISELECT(168,108),
  ABISELECT(216,132),
  ABISELECT(-48,-32),
  ABISELECT(72,36),
  ABISELECT(208,128),
  ABISELECT(184,116),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n120_N8S20567C1D1Ev,_ZTvn8_n60_N8S20567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n120_N8S20567C1D0Ev,_ZTvn8_n60_N8S20567C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v37Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-120,-68),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C1D1Ev,_ZTv0_n32_N8S20567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C1D0Ev,_ZTv0_n32_N8S20567C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C1D1Ev,_ZTvn8_n32_N8S20567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C1D0Ev,_ZTvn8_n32_N8S20567C1D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C1D1Ev,_ZTvn12_n32_N8S20567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C1D0Ev,_ZTvn12_n32_N8S20567C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-84),
  ABISELECT(-32,-16),
  ABISELECT(-152,-84),
  ABISELECT(64,56),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C1D1Ev,_ZTv0_n24_N8S20567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C1D0Ev,_ZTv0_n24_N8S20567C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v26Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-148),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-148),
  ABISELECT(-112,-80),
  ABISELECT(24,12),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C1D1Ev,_ZTv0_n44_N8S20567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C1D0Ev,_ZTv0_n44_N8S20567C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20567C103v27Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v34Ev,
  0,
  ABISELECT(-256,-160),
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C1D1Ev,_ZTv0_n12_N8S20567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C1D0Ev,_ZTv0_n12_N8S20567C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-264,-164),
  ABISELECT(-48,-24),
  ABISELECT(-264,-164),
  (VTBL_ENTRY)&(_ZTI8S20567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C1D1Ev,_ZTv0_n16_N8S20567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C1D0Ev,_ZTv0_n16_N8S20567C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S20567C1[];
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void _ZN8S20567C2D1Ev();
extern void _ZN8S20567C2D0Ev();
extern void _ZN8S20567C23v38Ev();
extern void _ZN8S20567C23v39Ev();
extern void _ZN8S20567C23v40Ev();
extern void _ZN8S20567C23v41Ev();
extern void _ZN8S20567C23v42Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C2__8S20567C1[] = {
  ABISELECT(232,140),
  ABISELECT(224,136),
  ABISELECT(200,124),
  ABISELECT(184,116),
  ABISELECT(-32,-24),
  ABISELECT(120,60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20567C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v38Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v39Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v40Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v41Ev,
  (VTBL_ENTRY)&_ZN8S20567C23v42Ev,
};
extern void _ZN8S20567C9D1Ev();
extern void _ZN8S20567C9D0Ev();
extern void _ZN8S20567C63v15Ev();
extern void _ZN8S20567C93v35Ev();
extern void _ZN8S20567C93v36Ev();
extern void _ZN8S20567C93v37Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C98S20567C2__8S20567C1[] = {
  ABISELECT(104,52),
  ABISELECT(168,108),
  ABISELECT(216,132),
  ABISELECT(-48,-32),
  ABISELECT(72,36),
  ABISELECT(208,128),
  ABISELECT(184,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v37Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n88_N8S20567C9D1Ev,_ZTv0_n44_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn184_N8S20567C9D1Ev,_ZThn116_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20567C9D0Ev,_ZTv0_n44_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn184_N8S20567C9D0Ev,_ZThn116_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN9S20567C103v27Ev();
extern void _ZN9S20567C103v28Ev();
extern void _ZN9S20567C103v29Ev();
extern void _ZN9S20567C103v30Ev();
extern void _ZN9S20567C103v31Ev();
extern void _ZN9S20567C103v32Ev();
extern void _ZN9S20567C103v33Ev();
extern void _ZN9S20567C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20567C10__8S20567C98S20567C2__8S20567C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-116),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-148),
  ABISELECT(-112,-80),
  ABISELECT(24,12),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C9D1Ev,_ZTv0_n44_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C9D0Ev,_ZTv0_n44_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20567C103v27Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v34Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn208_N8S20567C9D1Ev,_ZThn128_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn208_N8S20567C9D0Ev,_ZThn128_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C6__8S20567C98S20567C2__8S20567C1[] = {
  0,
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S20567C9D1Ev,_ZTv0_n32_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S20567C9D1Ev,_ZThn36_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20567C9D0Ev,_ZTv0_n32_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn72_N8S20567C9D0Ev,_ZThn36_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C3__8S20567C98S20567C2__8S20567C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-36),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C9D1Ev,_ZTv0_n32_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C9D0Ev,_ZTv0_n32_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
};
extern void ABISELECT(_ZTvn16_n64_N8S20567C9D1Ev,_ZTvn8_n32_N8S20567C9D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20567C9D0Ev,_ZTvn8_n32_N8S20567C9D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt8S20567C3__8S20567C98S20567C2__8S20567C1[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C9D1Ev,_ZTvn8_n32_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C9D0Ev,_ZTvn8_n32_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N8S20567C9D1Ev,_ZTvn12_n32_N8S20567C9D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20567C9D0Ev,_ZTvn12_n32_N8S20567C9D0Ev)();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C68S20567C3__A1__8S20567C98S20567C2__8S20567C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C9D1Ev,_ZTvn12_n32_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C9D0Ev,_ZTvn12_n32_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt__A1__8S20567C98S20567C2__8S20567C1[] = {
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20567C9D1Ev,_ZTv0_n16_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn216_N8S20567C9D1Ev,_ZThn132_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20567C9D0Ev,_ZTv0_n16_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn216_N8S20567C9D0Ev,_ZThn132_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C8__8S20567C98S20567C2__8S20567C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  ABISELECT(-48,-24),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C9D1Ev,_ZTv0_n16_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C9D0Ev,_ZTv0_n16_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__A2__8S20567C98S20567C2__8S20567C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20567C9D1Ev,_ZTv0_n24_N8S20567C9D1Ev)();
extern void ABISELECT(_ZThn104_N8S20567C9D1Ev,_ZThn52_N8S20567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20567C9D0Ev,_ZTv0_n24_N8S20567C9D0Ev)();
extern void ABISELECT(_ZThn104_N8S20567C9D0Ev,_ZThn52_N8S20567C9D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C73v21Ev();
extern void _ZN8S20567C73v22Ev();
extern void _ZN8S20567C73v23Ev();
extern void _ZN8S20567C73v24Ev();
extern void _ZN8S20567C73v25Ev();
extern void _ZN8S20567C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C7__8S20567C98S20567C2__8S20567C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  ABISELECT(-32,-16),
  ABISELECT(-152,-84),
  ABISELECT(64,56),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C9D1Ev,_ZTv0_n24_N8S20567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C9D0Ev,_ZTv0_n24_N8S20567C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v26Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S20567C2D1Ev,_ZTv0_n32_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn88_N8S20567C2D1Ev,_ZThn44_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20567C2D0Ev,_ZTv0_n32_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn88_N8S20567C2D0Ev,_ZThn44_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN8S20567C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C3__8S20567C2__8S20567C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C2D1Ev,_ZTv0_n32_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C2D0Ev,_ZTv0_n32_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
};
extern void ABISELECT(_ZTvn16_n64_N8S20567C2D1Ev,_ZTvn8_n32_N8S20567C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20567C2D0Ev,_ZTvn8_n32_N8S20567C2D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt8S20567C3__8S20567C2__8S20567C1[] = {
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C2D1Ev,_ZTvn8_n32_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C2D0Ev,_ZTvn8_n32_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N8S20567C2D1Ev,_ZTvn12_n32_N8S20567C2D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20567C2D0Ev,_ZTvn12_n32_N8S20567C2D0Ev)();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C68S20567C3__8S20567C2__8S20567C1[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C2D1Ev,_ZTvn12_n32_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C2D0Ev,_ZTvn12_n32_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20567C2D1Ev,_ZTv0_n24_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S20567C2D1Ev,_ZThn60_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20567C2D0Ev,_ZTv0_n24_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S20567C2D0Ev,_ZThn60_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C73v21Ev();
extern void _ZN8S20567C73v22Ev();
extern void _ZN8S20567C73v23Ev();
extern void _ZN8S20567C73v24Ev();
extern void _ZN8S20567C73v25Ev();
extern void _ZN8S20567C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C7__8S20567C2__8S20567C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  ABISELECT(-152,-84),
  ABISELECT(64,56),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C2D1Ev,_ZTv0_n24_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20567C2D0Ev,_ZTv0_n24_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20567C2D1Ev,_ZTv0_n12_N8S20567C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20567C2D0Ev,_ZTv0_n12_N8S20567C2D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt__A1__8S20567C2__8S20567C1[] = {
  0,
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C2D1Ev,_ZTv0_n12_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C2D0Ev,_ZTv0_n12_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__A2__8S20567C2__8S20567C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern void ABISELECT(_ZThn16_N8S20567C2D1Ev,_ZThn8_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20567C2D0Ev,_ZThn8_N8S20567C2D0Ev)();
extern void _ZN8S20567C63v15Ev();
extern void _ZN8S20567C93v35Ev();
extern void _ZN8S20567C93v36Ev();
extern void _ZN8S20567C93v37Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C9__8S20567C2__8S20567C1[] = {
  ABISELECT(104,52),
  ABISELECT(168,108),
  ABISELECT(216,132),
  ABISELECT(-48,-32),
  ABISELECT(72,36),
  ABISELECT(208,128),
  ABISELECT(184,116),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20567C2D1Ev,_ZThn8_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20567C2D0Ev,_ZThn8_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20567C93v37Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n88_N8S20567C2D1Ev,_ZTv0_n44_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S20567C2D1Ev,_ZThn124_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20567C2D0Ev,_ZTv0_n44_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S20567C2D0Ev,_ZThn124_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN9S20567C103v27Ev();
extern void _ZN9S20567C103v28Ev();
extern void _ZN9S20567C103v29Ev();
extern void _ZN9S20567C103v30Ev();
extern void _ZN9S20567C103v31Ev();
extern void _ZN9S20567C103v32Ev();
extern void _ZN9S20567C103v33Ev();
extern void _ZN9S20567C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20567C10__8S20567C2__8S20567C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-200,-124),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-148),
  ABISELECT(-112,-80),
  ABISELECT(24,12),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C2D1Ev,_ZTv0_n44_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20567C2D0Ev,_ZTv0_n44_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20567C103v27Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v34Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20567C2D1Ev,_ZTv0_n12_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S20567C2D1Ev,_ZThn136_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20567C2D0Ev,_ZTv0_n12_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S20567C2D0Ev,_ZThn136_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C6__A1__8S20567C2__8S20567C1[] = {
  0,
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C2D1Ev,_ZTv0_n12_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C2D0Ev,_ZTv0_n12_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20567C2D1Ev,_ZTv0_n16_N8S20567C2D1Ev)();
extern void ABISELECT(_ZThn232_N8S20567C2D1Ev,_ZThn140_N8S20567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20567C2D0Ev,_ZTv0_n16_N8S20567C2D0Ev)();
extern void ABISELECT(_ZThn232_N8S20567C2D0Ev,_ZThn140_N8S20567C2D0Ev)() __attribute__((weak));
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C8__A1__8S20567C2__8S20567C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-48,-24),
  ABISELECT(-232,-140),
  (VTBL_ENTRY)&(_ZTI8S20567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C2D1Ev,_ZTv0_n16_N8S20567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20567C2D0Ev,_ZTv0_n16_N8S20567C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern void _ZN8S20567C7D1Ev();
extern void _ZN8S20567C7D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
extern void _ZN8S20567C73v21Ev();
extern void _ZN8S20567C73v22Ev();
extern void _ZN8S20567C73v23Ev();
extern void _ZN8S20567C73v24Ev();
extern void _ZN8S20567C73v25Ev();
extern void _ZN8S20567C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C7__8S20567C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-152,-84),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20567C73v26Ev,
};
extern void _ZN8S20567C8D1Ev();
extern void _ZN8S20567C8D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C88S20567C7__8S20567C1[] = {
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__8S20567C88S20567C7__8S20567C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20567C7D1Ev,_ZTv0_n12_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20567C7D0Ev,_ZTv0_n12_N8S20567C7D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt__8S20567C7__8S20567C1[] = {
  0,
  ABISELECT(152,84),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C7D1Ev,_ZTv0_n12_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20567C7D0Ev,_ZTv0_n12_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S20567C7D1Ev,_ZTv0_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S20567C7D0Ev,_ZTv0_n32_N8S20567C7D0Ev)();
extern void _ZN8S20567C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C3__8S20567C7__8S20567C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C7D1Ev,_ZTv0_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20567C7D0Ev,_ZTv0_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
};
extern void ABISELECT(_ZTvn16_n64_N8S20567C7D1Ev,_ZTvn8_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20567C7D0Ev,_ZTvn8_n32_N8S20567C7D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt8S20567C3__A1__8S20567C7__8S20567C1[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C7D1Ev,_ZTvn8_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20567C7D0Ev,_ZTvn8_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N8S20567C7D1Ev,_ZTvn12_n32_N8S20567C7D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20567C7D0Ev,_ZTvn12_n32_N8S20567C7D0Ev)();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C68S20567C3__8S20567C7__8S20567C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C7D1Ev,_ZTvn12_n32_N8S20567C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20567C7D0Ev,_ZTvn12_n32_N8S20567C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__A1__8S20567C7__8S20567C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S20567C7[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void _ZN9S20567C10D1Ev();
extern void _ZN9S20567C10D0Ev();
extern void _ZN9S20567C103v27Ev();
extern void _ZN9S20567C103v28Ev();
extern void _ZN9S20567C103v29Ev();
extern void _ZN9S20567C103v30Ev();
extern void _ZN9S20567C103v31Ev();
extern void _ZN9S20567C103v32Ev();
extern void _ZN9S20567C103v33Ev();
extern void _ZN9S20567C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20567C10__8S20567C1[] = {
  ABISELECT(-232,-148),
  ABISELECT(-112,-80),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&_ZN9S20567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20567C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v27Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20567C103v34Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S20567C10D1Ev,_ZThn12_N9S20567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S20567C10D0Ev,_ZThn12_N9S20567C10D0Ev)() __attribute__((weak));
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C6__9S20567C10__8S20567C1[] = {
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
extern void ABISELECT(_ZTv0_n64_N9S20567C10D1Ev,_ZTv0_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S20567C10D0Ev,_ZTv0_n32_N9S20567C10D0Ev)();
extern void _ZN8S20567C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C3__9S20567C10__8S20567C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(112,80),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,80),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20567C10D1Ev,_ZTv0_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20567C10D0Ev,_ZTv0_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C33v16Ev,
};
extern void ABISELECT(_ZTvn16_n64_N9S20567C10D1Ev,_ZTvn8_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N9S20567C10D0Ev,_ZTvn8_n32_N9S20567C10D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt8S20567C3__9S20567C10__8S20567C1[] = {
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S20567C10D1Ev,_ZTvn8_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S20567C10D0Ev,_ZTvn8_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N9S20567C10D1Ev,_ZTvn12_n32_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20567C10D0Ev,_ZTvn12_n32_N9S20567C10D0Ev)();
extern void _ZN8S20567C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C68S20567C3__A1__9S20567C10__8S20567C1[] = {
  ABISELECT(88,68),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20567C10D1Ev,_ZTvn12_n32_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20567C10D0Ev,_ZTvn12_n32_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20567C63v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev)();
extern void _ZN11S20567C5_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20567C5_nt__A1__9S20567C10__8S20567C1[] = {
  0,
  ABISELECT(232,148),
  ABISELECT(232,148),
  (VTBL_ENTRY)&(_ZTI9S20567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev),
  (VTBL_ENTRY)&_ZN11S20567C5_nt3v14Ev,
};
extern void _ZN8S20567C8D1Ev();
extern void _ZN8S20567C8D0Ev();
extern void _ZN8S20567C83v17Ev();
extern void _ZN8S20567C83v18Ev();
extern void _ZN8S20567C83v19Ev();
extern void _ZN8S20567C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C8__A1__8S20567C1[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20567C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20567C83v20Ev,
};
extern void _ZN8S20567C42v9Ev();
extern void _ZN8S20567C43v10Ev();
extern void _ZN8S20567C43v11Ev();
extern void _ZN8S20567C43v12Ev();
extern void _ZN8S20567C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20567C4__8S20567C8__A1__8S20567C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20567C8[0]),
  (VTBL_ENTRY)&_ZN8S20567C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20567C43v13Ev,
};
static  VTT_ENTRY vtt_S20567C1[] = {
  {&(_ZTV8S20567C1[12]),  12,198},
  {&(_ZTV8S20567C1[47]),  47,198},
  {&(_ZTV8S20567C1[85]),  85,198},
  {&(_ZTV8S20567C1[95]),  95,198},
  {&(_ZTV8S20567C1[100]),  100,198},
  {&(_ZTV8S20567C1[119]),  119,198},
  {&(_ZTV8S20567C1[12]),  12,198},
  {&(_ZTV8S20567C1[138]),  138,198},
  {&(_ZTV8S20567C1[68]),  68,198},
  {&(_ZTV8S20567C1[162]),  162,198},
  {&(_ZTV8S20567C1[181]),  181,198},
  {&(_ZTV8S20567C1[192]),  192,198},
  {&(_tg__ZTV8S20567C2__8S20567C1[9]),  9,21},
  {&(_tg__ZTV8S20567C98S20567C2__8S20567C1[9]),  9,15},
  {&(_tg__ZTV9S20567C10__8S20567C98S20567C2__8S20567C1[19]),  19,34},
  {&(_tg__ZTV8S20567C6__8S20567C98S20567C2__8S20567C1[4]),  4,7},
  {&(_tg__ZTV8S20567C3__8S20567C98S20567C2__8S20567C1[11]),  11,19},
  {&(_tg__ZTV11S20567C5_nt8S20567C3__8S20567C98S20567C2__8S20567C1[2]),  2,5},
  {&(_tg__ZTV8S20567C68S20567C3__A1__8S20567C98S20567C2__8S20567C1[2]),  2,5},
  {&(_tg__ZTV11S20567C5_nt__A1__8S20567C98S20567C2__8S20567C1[4]),  4,7},
  {&(_tg__ZTV8S20567C8__8S20567C98S20567C2__8S20567C1[8]),  8,14},
  {&(_tg__ZTV8S20567C4__A2__8S20567C98S20567C2__8S20567C1[7]),  7,12},
  {&(_tg__ZTV8S20567C7__8S20567C98S20567C2__8S20567C1[16]),  16,28},
  {&(_tg__ZTV8S20567C3__8S20567C2__8S20567C1[11]),  11,19},
  {&(_tg__ZTV11S20567C5_nt8S20567C3__8S20567C2__8S20567C1[2]),  2,5},
  {&(_tg__ZTV8S20567C68S20567C3__8S20567C2__8S20567C1[2]),  2,5},
  {&(_tg__ZTV8S20567C7__8S20567C2__8S20567C1[16]),  16,28},
  {&(_tg__ZTV11S20567C5_nt__A1__8S20567C2__8S20567C1[4]),  4,7},
  {&(_tg__ZTV8S20567C4__A2__8S20567C2__8S20567C1[7]),  7,12},
  {&(_tg__ZTV8S20567C9__8S20567C2__8S20567C1[9]),  9,15},
  {&(_tg__ZTV9S20567C10__8S20567C2__8S20567C1[19]),  19,34},
  {&(_tg__ZTV8S20567C6__A1__8S20567C2__8S20567C1[4]),  4,7},
  {&(_tg__ZTV8S20567C8__A1__8S20567C2__8S20567C1[8]),  8,14},
  {&(_tg__ZTV8S20567C7__8S20567C1[5]),  5,17},
  {&(_tg__ZTV8S20567C88S20567C7__8S20567C1[3]),  3,9},
  {&(_tg__ZTV8S20567C4__8S20567C88S20567C7__8S20567C1[7]),  7,12},
  {&(_tg__ZTV11S20567C5_nt__8S20567C7__8S20567C1[4]),  4,7},
  {&(_tg__ZTV8S20567C3__8S20567C7__8S20567C1[11]),  11,19},
  {&(_tg__ZTV11S20567C5_nt8S20567C3__A1__8S20567C7__8S20567C1[2]),  2,5},
  {&(_tg__ZTV8S20567C68S20567C3__8S20567C7__8S20567C1[2]),  2,5},
  {&(_tg__ZTV8S20567C4__A1__8S20567C7__8S20567C1[7]),  7,12},
  {&(_tg__ZTV9S20567C10__8S20567C1[5]),  5,20},
  {&(_tg__ZTV8S20567C6__9S20567C10__8S20567C1[4]),  4,7},
  {&(_tg__ZTV8S20567C3__9S20567C10__8S20567C1[11]),  11,19},
  {&(_tg__ZTV11S20567C5_nt8S20567C3__9S20567C10__8S20567C1[2]),  2,5},
  {&(_tg__ZTV8S20567C68S20567C3__A1__9S20567C10__8S20567C1[2]),  2,5},
  {&(_tg__ZTV11S20567C5_nt__A1__9S20567C10__8S20567C1[4]),  4,7},
  {&(_tg__ZTV8S20567C8__A1__8S20567C1[3]),  3,9},
  {&(_tg__ZTV8S20567C4__8S20567C8__A1__8S20567C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20567C1[];
extern  VTBL_ENTRY _ZTV8S20567C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20567C1[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20567C10D0Ev,_ZTv0_n12_N9S20567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20567C10D0Ev,_ZThn12_N9S20567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20567C10D1Ev,_ZTv0_n12_N9S20567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20567C10D1Ev,_ZThn12_N9S20567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C2D0Ev,_ZTv0_n16_N8S20567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20567C2D0Ev,_ZThn140_N8S20567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C2D1Ev,_ZTv0_n16_N8S20567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20567C2D1Ev,_ZThn140_N8S20567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C2D0Ev,_ZTv0_n12_N8S20567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20567C2D0Ev,_ZThn136_N8S20567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C2D1Ev,_ZTv0_n12_N8S20567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20567C2D1Ev,_ZThn136_N8S20567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C2D0Ev,_ZTv0_n44_N8S20567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20567C2D0Ev,_ZThn124_N8S20567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C2D1Ev,_ZTv0_n44_N8S20567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20567C2D1Ev,_ZThn124_N8S20567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C2D0Ev,_ZTv0_n24_N8S20567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20567C2D0Ev,_ZThn60_N8S20567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C2D1Ev,_ZTv0_n24_N8S20567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20567C2D1Ev,_ZThn60_N8S20567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C2D0Ev,_ZTv0_n32_N8S20567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20567C2D0Ev,_ZThn44_N8S20567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C2D1Ev,_ZTv0_n32_N8S20567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20567C2D1Ev,_ZThn44_N8S20567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C9D0Ev,_ZTv0_n24_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20567C9D0Ev,_ZThn52_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C9D1Ev,_ZTv0_n24_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20567C9D1Ev,_ZThn52_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C9D0Ev,_ZTv0_n16_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20567C9D0Ev,_ZThn132_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C9D1Ev,_ZTv0_n16_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20567C9D1Ev,_ZThn132_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C9D0Ev,_ZTv0_n32_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20567C9D0Ev,_ZThn36_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C9D1Ev,_ZTv0_n32_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20567C9D1Ev,_ZThn36_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C9D0Ev,_ZTv0_n12_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20567C9D0Ev,_ZThn128_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C9D1Ev,_ZTv0_n12_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20567C9D1Ev,_ZThn128_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C9D0Ev,_ZTv0_n44_N8S20567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20567C9D0Ev,_ZThn116_N8S20567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C9D1Ev,_ZTv0_n44_N8S20567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20567C9D1Ev,_ZThn116_N8S20567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C1D0Ev,_ZTv0_n16_N8S20567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S20567C1D0Ev,_ZThn164_N8S20567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20567C1D1Ev,_ZTv0_n16_N8S20567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S20567C1D1Ev,_ZThn164_N8S20567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C1D0Ev,_ZTv0_n44_N8S20567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20567C1D0Ev,_ZThn148_N8S20567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20567C1D1Ev,_ZTv0_n44_N8S20567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20567C1D1Ev,_ZThn148_N8S20567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C1D0Ev,_ZTv0_n24_N8S20567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20567C1D0Ev,_ZThn84_N8S20567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20567C1D1Ev,_ZTv0_n24_N8S20567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20567C1D1Ev,_ZThn84_N8S20567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C1D0Ev,_ZTv0_n32_N8S20567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20567C1D0Ev,_ZThn68_N8S20567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20567C1D1Ev,_ZTv0_n32_N8S20567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20567C1D1Ev,_ZThn68_N8S20567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20567C1D0Ev,_ZTv0_n60_N8S20567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20567C1D0Ev,_ZThn24_N8S20567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20567C1D1Ev,_ZTv0_n60_N8S20567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20567C1D1Ev,_ZThn24_N8S20567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C1D0Ev,_ZTv0_n12_N8S20567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20567C1D0Ev,_ZThn160_N8S20567C1D0Ev),
  (VTBL_ENTRY)_ZN8S20567C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20567C1D1Ev,_ZTv0_n12_N8S20567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20567C1D1Ev,_ZThn160_N8S20567C1D1Ev),
  (VTBL_ENTRY)_ZN8S20567C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20567C1 = {  "S20567C1", // class name
  bases_S20567C1, 16,
  &(vtc_S20567C1[0]), // expected_vtbl_contents
  &(vtt_S20567C1[0]), // expected_vtt_contents
  ABISELECT(280,172), // object size
  NSPAIRA(_ZTI8S20567C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20567C1),198, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20567C1),49, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7177C2  {
  short s7177c2f0[5];
  virtual void  v9(); // _ZN7S7177C22v9Ev
  virtual void  v10(); // _ZN7S7177C23v10Ev
  virtual void  v11(); // _ZN7S7177C23v11Ev
  virtual void  v12(); // _ZN7S7177C23v12Ev
  virtual void  v13(); // _ZN7S7177C23v13Ev
  ~S7177C2(); // tgen
  S7177C2(); // tgen
};
//SIG(-1 S7177C2) C1{ v1 v2 v3 v4 v5 Fs[5]}


void  S7177C2 ::v9(){vfunc_called(this, "_ZN7S7177C22v9Ev");}
void  S7177C2 ::v10(){vfunc_called(this, "_ZN7S7177C23v10Ev");}
void  S7177C2 ::v11(){vfunc_called(this, "_ZN7S7177C23v11Ev");}
void  S7177C2 ::v12(){vfunc_called(this, "_ZN7S7177C23v12Ev");}
void  S7177C2 ::v13(){vfunc_called(this, "_ZN7S7177C23v13Ev");}
S7177C2 ::~S7177C2(){ note_dtor("S7177C2", this);} // tgen
S7177C2 ::S7177C2(){ note_ctor("S7177C2", this);} // tgen

static void Test_S7177C2()
{
  extern Class_Descriptor cd_S7177C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7177C2, buf);
    S7177C2 *dp, &lv = *(dp=new (buf) S7177C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7177C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7177C2)");
    check_field_offset(lv, s7177c2f0, ABISELECT(8,4), "S7177C2.s7177c2f0");
    test_class_info(&lv, &cd_S7177C2);
    dp->~S7177C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C2(Test_S7177C2, "S7177C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7177C2C1Ev();
extern void _ZN7S7177C2D1Ev();
Name_Map name_map_S7177C2[] = {
  NSPAIR(_ZN7S7177C2C1Ev),
  NSPAIR(_ZN7S7177C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7177C2[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY vtc_S7177C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C2[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
Class_Descriptor cd_S7177C2 = {  "S7177C2", // class name
  0,0,//no base classes
  &(vtc_S7177C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7177C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7177C2),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  S7177C4  : virtual S7177C2 {
  virtual void  v14(); // _ZN7S7177C43v14Ev
  virtual void  v15(); // _ZN7S7177C43v15Ev
  ~S7177C4(); // tgen
  S7177C4(); // tgen
};
//SIG(-1 S7177C4) C1{ VBC2{ v3 v4 v5 v6 v7 Fs[5]} v1 v2}


void  S7177C4 ::v14(){vfunc_called(this, "_ZN7S7177C43v14Ev");}
void  S7177C4 ::v15(){vfunc_called(this, "_ZN7S7177C43v15Ev");}
S7177C4 ::~S7177C4(){ note_dtor("S7177C4", this);} // tgen
S7177C4 ::S7177C4(){ note_ctor("S7177C4", this);} // tgen

static void Test_S7177C4()
{
  extern Class_Descriptor cd_S7177C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7177C4, buf);
    S7177C4 *dp, &lv = *(dp=new (buf) S7177C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7177C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7177C4)");
    check_base_class_offset(lv, (S7177C2*), ABISELECT(8,4), "S7177C4");
    test_class_info(&lv, &cd_S7177C4);
    dp->~S7177C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C4(Test_S7177C4, "S7177C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7177C4C1Ev();
extern void _ZN7S7177C4D1Ev();
Name_Map name_map_S7177C4[] = {
  NSPAIR(_ZN7S7177C4C1Ev),
  NSPAIR(_ZN7S7177C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
static Base_Class bases_S7177C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7177C2,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7177C4[];
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY vtc_S7177C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern VTBL_ENTRY _ZTV7S7177C4[];
static  VTT_ENTRY vtt_S7177C4[] = {
  {&(_ZTV7S7177C4[3]),  3,17},
  {&(_ZTV7S7177C4[12]),  12,17},
};
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
Class_Descriptor cd_S7177C4 = {  "S7177C4", // class name
  bases_S7177C4, 1,
  &(vtc_S7177C4[0]), // expected_vtbl_contents
  &(vtt_S7177C4[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7177C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7177C4),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7177C4),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  S7177C5  : S7177C2 , virtual S7177C4 {
  int s7177c5f0[2];
  virtual void  v16(); // _ZN7S7177C53v16Ev
  ~S7177C5(); // tgen
  S7177C5(); // tgen
};
//SIG(-1 S7177C5) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} v1 Fi[2]}


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

static void Test_S7177C5()
{
  extern Class_Descriptor cd_S7177C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S7177C5, buf);
    S7177C5 *dp, &lv = *(dp=new (buf) S7177C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S7177C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7177C5)");
    /*is_ambiguous_... S7177C5::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*), 0, "S7177C5");
    check_base_class_offset(lv, (S7177C2*)(S7177C4*), ABISELECT(40,28), "S7177C5");
    check_base_class_offset(lv, (S7177C4*), ABISELECT(32,24), "S7177C5");
    check_field_offset(lv, s7177c5f0, ABISELECT(20,16), "S7177C5.s7177c5f0");
    test_class_info(&lv, &cd_S7177C5);
    dp->~S7177C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C5(Test_S7177C5, "S7177C5", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S7177C5C1Ev();
extern void _ZN7S7177C5D1Ev();
Name_Map name_map_S7177C5[] = {
  NSPAIR(_ZN7S7177C5C1Ev),
  NSPAIR(_ZN7S7177C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
static Base_Class bases_S7177C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7177C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7177C2,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7177C4,    ABISELECT(32,24), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7177C5[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY vtc_S7177C5[] = {
  ABISELECT(40,28),
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern VTBL_ENTRY _ZTV7S7177C5[];
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C4__7S7177C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
static  VTT_ENTRY vtt_S7177C5[] = {
  {&(_ZTV7S7177C5[4]),  4,29},
  {&(_ZTV7S7177C5[15]),  15,29},
  {&(_ZTV7S7177C5[24]),  24,29},
  {&(_tg__ZTV7S7177C4__7S7177C5[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C4__7S7177C5[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
Class_Descriptor cd_S7177C5 = {  "S7177C5", // class name
  bases_S7177C5, 3,
  &(vtc_S7177C5[0]), // expected_vtbl_contents
  &(vtt_S7177C5[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S7177C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7177C5),29, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7177C5),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  S7177C3  : virtual S7177C4 , S7177C5 {
  int s7177c3f0[3];
  void *s7177c3f1;
  virtual void  v17(); // _ZN7S7177C33v17Ev
  virtual void  v18(); // _ZN7S7177C33v18Ev
  virtual void  v19(); // _ZN7S7177C33v19Ev
  virtual void  v20(); // _ZN7S7177C33v20Ev
  ~S7177C3(); // tgen
  S7177C3(); // tgen
};
//SIG(-1 S7177C3) C1{ VBC2{ VBC3{ v5 v6 v7 v8 v9 Fs[5]} v10 v11} BC4{ BC3 VBC2 v12 Fi[2]} v1 v2 v3 v4 Fi[3] Fp}


void  S7177C3 ::v17(){vfunc_called(this, "_ZN7S7177C33v17Ev");}
void  S7177C3 ::v18(){vfunc_called(this, "_ZN7S7177C33v18Ev");}
void  S7177C3 ::v19(){vfunc_called(this, "_ZN7S7177C33v19Ev");}
void  S7177C3 ::v20(){vfunc_called(this, "_ZN7S7177C33v20Ev");}
S7177C3 ::~S7177C3(){ note_dtor("S7177C3", this);} // tgen
S7177C3 ::S7177C3(){ note_ctor("S7177C3", this);} // tgen

static void Test_S7177C3()
{
  extern Class_Descriptor cd_S7177C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S7177C3, buf);
    S7177C3 *dp, &lv = *(dp=new (buf) S7177C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S7177C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7177C3)");
    check_base_class_offset(lv, (S7177C2*)(S7177C4*), ABISELECT(56,44), "S7177C3");
    check_base_class_offset(lv, (S7177C4*), ABISELECT(48,40), "S7177C3");
    check_base_class_offset(lv, (S7177C4*)(S7177C5*), ABISELECT(48,40), "S7177C3");
    /*is_ambiguous_... S7177C5::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*), 0, "S7177C3");
    check_base_class_offset(lv, (S7177C5*), 0, "S7177C3");
    check_field_offset(lv, s7177c3f0, ABISELECT(28,24), "S7177C3.s7177c3f0");
    check_field_offset(lv, s7177c3f1, ABISELECT(40,36), "S7177C3.s7177c3f1");
    test_class_info(&lv, &cd_S7177C3);
    dp->~S7177C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C3(Test_S7177C3, "S7177C3", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN7S7177C3C1Ev();
extern void _ZN7S7177C3D1Ev();
Name_Map name_map_S7177C3[] = {
  NSPAIR(_ZN7S7177C3C1Ev),
  NSPAIR(_ZN7S7177C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
static Base_Class bases_S7177C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7177C2,    ABISELECT(56,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7177C4,    ABISELECT(48,40), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7177C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7177C5,    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 _ZTI7S7177C3[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY vtc_S7177C3[] = {
  ABISELECT(56,44),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern VTBL_ENTRY _ZTV7S7177C3[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C3[] = {
  ABISELECT(56,44),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C5__7S7177C3[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C5__7S7177C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C4__7S7177C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
static  VTT_ENTRY vtt_S7177C3[] = {
  {&(_ZTV7S7177C3[4]),  4,33},
  {&(_tg__ZTV7S7177C5__7S7177C3[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C5__7S7177C3[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C5__7S7177C3[7]),  7,12},
  {&(_ZTV7S7177C3[19]),  19,33},
  {&(_ZTV7S7177C3[28]),  28,33},
  {&(_tg__ZTV7S7177C4__7S7177C3[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C4__7S7177C3[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7177C3[];
extern  VTBL_ENTRY _ZTV7S7177C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C3[];
Class_Descriptor cd_S7177C3 = {  "S7177C3", // class name
  bases_S7177C3, 4,
  &(vtc_S7177C3[0]), // expected_vtbl_contents
  &(vtt_S7177C3[0]), // expected_vtt_contents
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI7S7177C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7177C3),33, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7177C3),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7177C8  : S7177C2 , virtual S7177C4 , S7177C5 {
  int s7177c8f0;
  virtual void  v21(); // _ZN7S7177C83v21Ev
  ~S7177C8(); // tgen
  S7177C8(); // tgen
};
//SIG(-1 S7177C8) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} BC4{ BC2 VBC3 v9 Fi[2]} v1 Fi}


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

static void Test_S7177C8()
{
  extern Class_Descriptor cd_S7177C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S7177C8, buf);
    S7177C8 *dp, &lv = *(dp=new (buf) S7177C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S7177C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7177C8)");
    /*is_ambiguous_... S7177C8::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*), 0, "S7177C8");
    check_base_class_offset(lv, (S7177C2*)(S7177C4*), ABISELECT(64,48), "S7177C8");
    check_base_class_offset(lv, (S7177C4*), ABISELECT(56,44), "S7177C8");
    check_base_class_offset(lv, (S7177C4*)(S7177C5*), ABISELECT(56,44), "S7177C8");
    /*is_ambiguous_... S7177C5::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*), ABISELECT(24,16), "S7177C8");
    check_base_class_offset(lv, (S7177C5*), ABISELECT(24,16), "S7177C8");
    check_field_offset(lv, s7177c8f0, ABISELECT(52,40), "S7177C8.s7177c8f0");
    test_class_info(&lv, &cd_S7177C8);
    dp->~S7177C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C8(Test_S7177C8, "S7177C8", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S7177C8C1Ev();
extern void _ZN7S7177C8D1Ev();
Name_Map name_map_S7177C8[] = {
  NSPAIR(_ZN7S7177C8C1Ev),
  NSPAIR(_ZN7S7177C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
static Base_Class bases_S7177C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7177C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7177C2,    ABISELECT(64,48), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7177C4,    ABISELECT(56,44), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7177C2,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7177C8[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY vtc_S7177C8[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern VTBL_ENTRY _ZTV7S7177C8[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C8[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C5__7S7177C8[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C5__7S7177C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C4__7S7177C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
static  VTT_ENTRY vtt_S7177C8[] = {
  {&(_ZTV7S7177C8[4]),  4,39},
  {&(_tg__ZTV7S7177C5__7S7177C8[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C5__7S7177C8[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C5__7S7177C8[7]),  7,12},
  {&(_ZTV7S7177C8[25]),  25,39},
  {&(_ZTV7S7177C8[34]),  34,39},
  {&(_ZTV7S7177C8[14]),  14,39},
  {&(_tg__ZTV7S7177C4__7S7177C8[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C4__7S7177C8[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
Class_Descriptor cd_S7177C8 = {  "S7177C8", // class name
  bases_S7177C8, 5,
  &(vtc_S7177C8[0]), // expected_vtbl_contents
  &(vtt_S7177C8[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S7177C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7177C8),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7177C8),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7177C7  : S7177C8 , S7177C3 , S7177C5 {
  char s7177c7f0[4];
  __tsi64 s7177c7f1;
  ::S7656C10 s7177c7f2;
  void *s7177c7f3;
  virtual void  v30(); // _ZN7S7177C73v30Ev
  virtual void  v31(); // _ZN7S7177C73v31Ev
  virtual void  v32(); // _ZN7S7177C73v32Ev
  ~S7177C7(); // tgen
  S7177C7(); // tgen
};
//SIG(-1 S7177C7) C1{ BC2{ BC3{ v4 v5 v6 v7 v8 Fs[5]} VBC4{ VBC3 v9 v10} BC5{ BC3 VBC4 v11 Fi[2]} v12 Fi} BC6{ VBC4 BC5 v13 v14 v15 v16 Fi[3] Fp} BC5 v1 v2 v3 Fc[4] FL FC7{ BC8{ BC9{ v19 v20 v21 v22 v23 Fs[5]} VBC10{ VBC9 v24 v25} v26 Fi[2]} VBC11{ BC9 VBC10 BC8 v27 Fi} VBC12{ VBC11 BC9 BC10 v28 v29 v30 v31 v32 Fc Fp} v17 v18 Fp} Fp}


void  S7177C7 ::v30(){vfunc_called(this, "_ZN7S7177C73v30Ev");}
void  S7177C7 ::v31(){vfunc_called(this, "_ZN7S7177C73v31Ev");}
void  S7177C7 ::v32(){vfunc_called(this, "_ZN7S7177C73v32Ev");}
S7177C7 ::~S7177C7(){ note_dtor("S7177C7", this);} // tgen
S7177C7 ::S7177C7(){ note_ctor("S7177C7", this);} // tgen

static void Test_S7177C7()
{
  extern Class_Descriptor cd_S7177C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(46,67)];
    init_test(&cd_S7177C7, buf);
    S7177C7 *dp, &lv = *(dp=new (buf) S7177C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(360,264), "sizeof(S7177C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7177C7)");
    /*is_ambiguous_... S7177C8::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*), 0, "S7177C7");
    check_base_class_offset(lv, (S7177C2*)(S7177C4*), ABISELECT(336,248), "S7177C7");
    check_base_class_offset(lv, (S7177C4*)(S7177C8*), ABISELECT(328,244), "S7177C7");
    check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*), ABISELECT(328,244), "S7177C7");
    check_base_class_offset(lv, (S7177C4*)(S7177C3*), ABISELECT(328,244), "S7177C7");
    check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C3*), ABISELECT(328,244), "S7177C7");
    /*is_ambiguous_... S7177C7::S7177C5 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*), ABISELECT(328,244), "S7177C7");
    /*is_ambiguous_... S7177C5::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*), ABISELECT(24,16), "S7177C7");
    check_base_class_offset(lv, (S7177C5*)(S7177C8*), ABISELECT(24,16), "S7177C7");
    check_base_class_offset(lv, (S7177C8*), 0, "S7177C7");
    /*is_ambiguous_... S7177C5::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C3*), ABISELECT(56,44), "S7177C7");
    check_base_class_offset(lv, (S7177C5*)(S7177C3*), ABISELECT(56,44), "S7177C7");
    check_base_class_offset(lv, (S7177C3*), ABISELECT(56,44), "S7177C7");
    /*is_ambiguous_... S7177C7::S7177C5 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*), ABISELECT(104,84), "S7177C7");
    /*is_ambiguous_... S7177C7::S7177C5 */ AMB_check_base_class_offset(lv, (S7177C5*), ABISELECT(104,84), "S7177C7");
    check_field_offset(lv, s7177c7f0, ABISELECT(132,108), "S7177C7.s7177c7f0");
    check_field_offset(lv, s7177c7f1, ABISELECT(136,112), "S7177C7.s7177c7f1");
    check_field_offset(lv, s7177c7f2, ABISELECT(144,120), "S7177C7.s7177c7f2");
    check_field_offset(lv, s7177c7f3, ABISELECT(320,240), "S7177C7.s7177c7f3");
    test_class_info(&lv, &cd_S7177C7);
    dp->~S7177C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C7(Test_S7177C7, "S7177C7", ABISELECT(360,264));

#else // __cplusplus

extern void _ZN7S7177C7C1Ev();
extern void _ZN7S7177C7D1Ev();
Name_Map name_map_S7177C7[] = {
  NSPAIR(_ZN7S7177C7C1Ev),
  NSPAIR(_ZN7S7177C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C3;
extern VTBL_ENTRY _ZTI7S7177C3[];
extern  VTBL_ENTRY _ZTV7S7177C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C3[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
static Base_Class bases_S7177C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7177C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7177C2,    ABISELECT(336,248), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7177C4,    ABISELECT(328,244), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7177C2,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7177C8,    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_S7177C2,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7177C3,    ABISELECT(56,44), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7177C2,    ABISELECT(104,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
    10, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(104,84), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7177C7[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY vtc_S7177C7[] = {
  ABISELECT(336,248),
  ABISELECT(328,244),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
  ABISELECT(312,232),
  ABISELECT(304,228),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  ABISELECT(280,204),
  ABISELECT(272,200),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
  ABISELECT(232,164),
  ABISELECT(224,160),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern VTBL_ENTRY _ZTV7S7177C7[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__7S7177C7[] = {
  ABISELECT(336,248),
  ABISELECT(328,244),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__7S7177C7[] = {
  ABISELECT(312,232),
  ABISELECT(304,228),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C8__7S7177C7[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-304,-228),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C8__7S7177C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-232),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C8__7S7177C7[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C8__7S7177C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C8__7S7177C7[] = {
  ABISELECT(312,232),
  ABISELECT(304,228),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C3__7S7177C7[] = {
  ABISELECT(280,204),
  ABISELECT(272,200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C3__A1__7S7177C7[] = {
  ABISELECT(280,204),
  ABISELECT(272,200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C3__A1__7S7177C7[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C3__A1__7S7177C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-204),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C3__7S7177C7[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C3__7S7177C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-204),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__A2__7S7177C7[] = {
  ABISELECT(232,164),
  ABISELECT(224,160),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C5__A2__7S7177C7[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C5__A2__7S7177C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C4__7S7177C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
static  VTT_ENTRY vtt_S7177C7[] = {
  {&(_ZTV7S7177C7[4]),  4,66},
  {&(_tg__ZTV7S7177C8__7S7177C7[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C8__7S7177C7[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C8__7S7177C7[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C8__7S7177C7[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C8__7S7177C7[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C8__7S7177C7[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C8__7S7177C7[4]),  4,10},
  {&(_tg__ZTV7S7177C3__7S7177C7[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C3__A1__7S7177C7[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C3__A1__7S7177C7[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C3__A1__7S7177C7[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C3__7S7177C7[5]),  5,7},
  {&(_tg__ZTV7S7177C2__7S7177C3__7S7177C7[7]),  7,12},
  {&(_tg__ZTV7S7177C5__A2__7S7177C7[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C5__A2__7S7177C7[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C5__A2__7S7177C7[7]),  7,12},
  {&(_ZTV7S7177C7[52]),  52,66},
  {&(_ZTV7S7177C7[61]),  61,66},
  {&(_ZTV7S7177C7[17]),  17,66},
  {&(_ZTV7S7177C7[27]),  27,66},
  {&(_ZTV7S7177C7[41]),  41,66},
  {&(_tg__ZTV7S7177C4__7S7177C7[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C4__7S7177C7[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7177C7[];
extern  VTBL_ENTRY _ZTV7S7177C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C7[];
Class_Descriptor cd_S7177C7 = {  "S7177C7", // class name
  bases_S7177C7, 11,
  &(vtc_S7177C7[0]), // expected_vtbl_contents
  &(vtt_S7177C7[0]), // expected_vtt_contents
  ABISELECT(360,264), // object size
  NSPAIRA(_ZTI7S7177C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7177C7),66, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7177C7),24, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7177C6  : virtual S7177C7 {
  long double s7177c6f0;
  virtual void  v33(); // _ZN7S7177C63v33Ev
  virtual void  v34(); // _ZN7S7177C63v34Ev
  virtual void  v35(); // _ZN7S7177C63v35Ev
  virtual void  v36(); // _ZN7S7177C63v36Ev
  virtual void  v37(); // _ZN7S7177C63v37Ev
  ~S7177C6(); // tgen
  S7177C6(); // tgen
};
//SIG(-1 S7177C6) C1{ VBC2{ BC3{ BC4{ v6 v7 v8 v9 v10 Fs[5]} VBC5{ VBC4 v11 v12} BC6{ BC4 VBC5 v13 Fi[2]} v14 Fi} BC7{ VBC5 BC6 v15 v16 v17 v18 Fi[3] Fp} BC6 v19 v20 v21 Fc[4] FL FC8{ BC9{ BC10{ v24 v25 v26 v27 v28 Fs[5]} VBC11{ VBC10 v29 v30} v31 Fi[2]} VBC12{ BC10 VBC11 BC9 v32 Fi} VBC13{ VBC12 BC10 BC11 v33 v34 v35 v36 v37 Fc Fp} v22 v23 Fp} Fp} v1 v2 v3 v4 v5 FD}


void  S7177C6 ::v33(){vfunc_called(this, "_ZN7S7177C63v33Ev");}
void  S7177C6 ::v34(){vfunc_called(this, "_ZN7S7177C63v34Ev");}
void  S7177C6 ::v35(){vfunc_called(this, "_ZN7S7177C63v35Ev");}
void  S7177C6 ::v36(){vfunc_called(this, "_ZN7S7177C63v36Ev");}
void  S7177C6 ::v37(){vfunc_called(this, "_ZN7S7177C63v37Ev");}
S7177C6 ::~S7177C6(){ note_dtor("S7177C6", this);} // tgen
S7177C6 ::S7177C6(){ note_ctor("S7177C6", this);} // tgen

static void Test_S7177C6()
{
  extern Class_Descriptor cd_S7177C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,70)];
    init_test(&cd_S7177C6, buf);
    S7177C6 *dp, &lv = *(dp=new (buf) S7177C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,276), "sizeof(S7177C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7177C6)");
    /*is_ambiguous_... S7177C8::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*)(S7177C7*), ABISELECT(32,16), "S7177C6");
    check_base_class_offset(lv, (S7177C2*)(S7177C4*), ABISELECT(360,260), "S7177C6");
    check_base_class_offset(lv, (S7177C4*)(S7177C8*)(S7177C7*), 0, "S7177C6");
    check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*)(S7177C7*), 0, "S7177C6");
    check_base_class_offset(lv, (S7177C4*)(S7177C3*)(S7177C7*), 0, "S7177C6");
    check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C3*)(S7177C7*), 0, "S7177C6");
    /*is_ambiguous_... S7177C7::S7177C5 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C7*), 0, "S7177C6");
    /*is_ambiguous_... S7177C5::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(56,32), "S7177C6");
    check_base_class_offset(lv, (S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(56,32), "S7177C6");
    check_base_class_offset(lv, (S7177C8*)(S7177C7*), ABISELECT(32,16), "S7177C6");
    /*is_ambiguous_... S7177C5::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(88,60), "S7177C6");
    check_base_class_offset(lv, (S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(88,60), "S7177C6");
    check_base_class_offset(lv, (S7177C3*)(S7177C7*), ABISELECT(88,60), "S7177C6");
    /*is_ambiguous_... S7177C7::S7177C5 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C7*), ABISELECT(136,100), "S7177C6");
    /*is_ambiguous_... S7177C7::S7177C5 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C7*), ABISELECT(136,100), "S7177C6");
    check_base_class_offset(lv, (S7177C7*), ABISELECT(32,16), "S7177C6");
    check_field_offset(lv, s7177c6f0, ABISELECT(16,4), "S7177C6.s7177c6f0");
    test_class_info(&lv, &cd_S7177C6);
    dp->~S7177C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C6(Test_S7177C6, "S7177C6", ABISELECT(384,276));

#else // __cplusplus

extern void _ZN7S7177C6C1Ev();
extern void _ZN7S7177C6D1Ev();
Name_Map name_map_S7177C6[] = {
  NSPAIR(_ZN7S7177C6C1Ev),
  NSPAIR(_ZN7S7177C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C3;
extern VTBL_ENTRY _ZTI7S7177C3[];
extern  VTBL_ENTRY _ZTV7S7177C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C3[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C7;
extern VTBL_ENTRY _ZTI7S7177C7[];
extern  VTBL_ENTRY _ZTV7S7177C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C7[];
static Base_Class bases_S7177C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7177C2,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(360,260), //bcp->offset
    75, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7177C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7177C2,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(56,32), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7177C2,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(88,60), //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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7177C3,    ABISELECT(88,60), //bcp->offset
    51, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7177C2,    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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(136,100), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7177C7,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7177C6[];
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C63v33Ev();
extern void _ZN7S7177C63v34Ev();
extern void _ZN7S7177C63v35Ev();
extern void _ZN7S7177C63v36Ev();
extern void _ZN7S7177C63v37Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY vtc_S7177C6[] = {
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(360,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v33Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v37Ev,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern VTBL_ENTRY _ZTV7S7177C6[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C7__7S7177C6[] = {
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C87S7177C7__7S7177C6[] = {
  ABISELECT(328,244),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C87S7177C7__7S7177C6[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C87S7177C7__7S7177C6[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C87S7177C7__7S7177C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-228),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C87S7177C7__7S7177C6[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C87S7177C7__7S7177C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C87S7177C7__7S7177C6[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C37S7177C7__7S7177C6[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C37S7177C7__A1__7S7177C6[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C37S7177C7__A1__7S7177C6[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C37S7177C7__A1__7S7177C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C37S7177C7__7S7177C6[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C37S7177C7__7S7177C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C7__A2__7S7177C6[] = {
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C7__A2__7S7177C6[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(136,100),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C7__A2__7S7177C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C7__7S7177C6[] = {
  0,
  0,
  ABISELECT(360,260),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C7__7S7177C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__7S7177C7__7S7177C6[] = {
  ABISELECT(304,228),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C3__7S7177C7__7S7177C6[] = {
  ABISELECT(272,200),
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__A2__7S7177C7__7S7177C6[] = {
  ABISELECT(224,160),
  ABISELECT(-136,-100),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C6[] = {
  ABISELECT(360,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C4__7S7177C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
static  VTT_ENTRY vtt_S7177C6[] = {
  {&(_ZTV7S7177C6[7]),  7,87},
  {&(_ZTV7S7177C6[32]),  32,87},
  {&(_ZTV7S7177C6[7]),  7,87},
  {&(_ZTV7S7177C6[82]),  82,87},
  {&(_ZTV7S7177C6[45]),  45,87},
  {&(_ZTV7S7177C6[55]),  55,87},
  {&(_ZTV7S7177C6[69]),  69,87},
  {&(_tg__ZTV7S7177C7__7S7177C6[4]),  4,13},
  {&(_tg__ZTV7S7177C87S7177C7__7S7177C6[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C87S7177C7__7S7177C6[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C87S7177C7__7S7177C6[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C87S7177C7__7S7177C6[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C87S7177C7__7S7177C6[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C87S7177C7__7S7177C6[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C87S7177C7__7S7177C6[4]),  4,10},
  {&(_tg__ZTV7S7177C37S7177C7__7S7177C6[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C37S7177C7__A1__7S7177C6[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C37S7177C7__A1__7S7177C6[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C37S7177C7__A1__7S7177C6[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C37S7177C7__7S7177C6[5]),  5,7},
  {&(_tg__ZTV7S7177C2__7S7177C37S7177C7__7S7177C6[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C7__A2__7S7177C6[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C7__A2__7S7177C6[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C7__A2__7S7177C6[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C7__7S7177C6[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C7__7S7177C6[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__7S7177C7__7S7177C6[4]),  4,10},
  {&(_tg__ZTV7S7177C3__7S7177C7__7S7177C6[4]),  4,14},
  {&(_tg__ZTV7S7177C5__A2__7S7177C7__7S7177C6[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C6[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C4__7S7177C6[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7177C6[];
extern  VTBL_ENTRY _ZTV7S7177C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C6[];
Class_Descriptor cd_S7177C6 = {  "S7177C6", // class name
  bases_S7177C6, 12,
  &(vtc_S7177C6[0]), // expected_vtbl_contents
  &(vtt_S7177C6[0]), // expected_vtt_contents
  ABISELECT(384,276), // object size
  NSPAIRA(_ZTI7S7177C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7177C6),87, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7177C6),31, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7177C10  : virtual S7177C8 , S7177C2 , S7177C4 {
  char s7177c10f0;
  void *s7177c10f1;
  virtual void  v22(); // _ZN8S7177C103v22Ev
  virtual void  v23(); // _ZN8S7177C103v23Ev
  virtual void  v24(); // _ZN8S7177C103v24Ev
  virtual void  v25(); // _ZN8S7177C103v25Ev
  virtual void  v26(); // _ZN8S7177C103v26Ev
  ~S7177C10(); // tgen
  S7177C10(); // tgen
};
//SIG(-1 S7177C10) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 Fs[5]} VBC4{ VBC3 v11 v12} BC5{ BC3 VBC4 v13 Fi[2]} v14 Fi} BC3 BC4 v1 v2 v3 v4 v5 Fc Fp}


void  S7177C10 ::v22(){vfunc_called(this, "_ZN8S7177C103v22Ev");}
void  S7177C10 ::v23(){vfunc_called(this, "_ZN8S7177C103v23Ev");}
void  S7177C10 ::v24(){vfunc_called(this, "_ZN8S7177C103v24Ev");}
void  S7177C10 ::v25(){vfunc_called(this, "_ZN8S7177C103v25Ev");}
void  S7177C10 ::v26(){vfunc_called(this, "_ZN8S7177C103v26Ev");}
S7177C10 ::~S7177C10(){ note_dtor("S7177C10", this);} // tgen
S7177C10 ::S7177C10(){ note_ctor("S7177C10", this);} // tgen

static void Test_S7177C10()
{
  extern Class_Descriptor cd_S7177C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S7177C10, buf);
    S7177C10 *dp, &lv = *(dp=new (buf) S7177C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S7177C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7177C10)");
    /*is_ambiguous_... S7177C8::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*), ABISELECT(48,28), "S7177C10");
    /*is_ambiguous_... S7177C10::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C4*), ABISELECT(112,76), "S7177C10");
    /*is_ambiguous_... S7177C10::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C4*), ABISELECT(112,76), "S7177C10");
    check_base_class_offset(lv, (S7177C4*)(S7177C8*), ABISELECT(104,72), "S7177C10");
    check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*), ABISELECT(104,72), "S7177C10");
    /*is_ambiguous_... S7177C5::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*), ABISELECT(72,44), "S7177C10");
    check_base_class_offset(lv, (S7177C5*)(S7177C8*), ABISELECT(72,44), "S7177C10");
    check_base_class_offset(lv, (S7177C8*), ABISELECT(48,28), "S7177C10");
    /*is_ambiguous_... S7177C10::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*), 0, "S7177C10");
    /*is_ambiguous_... S7177C10::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C4*), ABISELECT(24,16), "S7177C10");
    check_field_offset(lv, s7177c10f0, ABISELECT(32,20), "S7177C10.s7177c10f0");
    check_field_offset(lv, s7177c10f1, ABISELECT(40,24), "S7177C10.s7177c10f1");
    test_class_info(&lv, &cd_S7177C10);
    dp->~S7177C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C10(Test_S7177C10, "S7177C10", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S7177C10C1Ev();
extern void _ZN8S7177C10D1Ev();
Name_Map name_map_S7177C10[] = {
  NSPAIR(_ZN8S7177C10C1Ev),
  NSPAIR(_ZN8S7177C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
static Base_Class bases_S7177C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7177C2,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(112,76), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7177C4,    ABISELECT(104,72), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7177C2,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(72,44), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(48,28), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7177C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7177C4,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7177C10[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY vtc_S7177C10[] = {
  ABISELECT(112,76),
  ABISELECT(104,72),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,48),
  ABISELECT(56,44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern VTBL_ENTRY _ZTV8S7177C10[];
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__A__8S7177C10[] = {
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C4__A__8S7177C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C10[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C10[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C8__8S7177C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C8__8S7177C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C8__8S7177C10[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C8__8S7177C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C8__8S7177C10[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__8S7177C10[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C4__8S7177C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
static  VTT_ENTRY vtt_S7177C10[] = {
  {&(_ZTV8S7177C10[5]),  5,66},
  {&(_tg__ZTV7S7177C4__A__8S7177C10[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C4__A__8S7177C10[7]),  7,12},
  {&(_ZTV8S7177C10[31]),  31,66},
  {&(_ZTV8S7177C10[52]),  52,66},
  {&(_ZTV8S7177C10[61]),  61,66},
  {&(_ZTV8S7177C10[41]),  41,66},
  {&(_ZTV8S7177C10[18]),  18,66},
  {&(_tg__ZTV7S7177C8__8S7177C10[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C10[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C8__8S7177C10[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C8__8S7177C10[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C8__8S7177C10[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C8__8S7177C10[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C8__8S7177C10[4]),  4,10},
  {&(_tg__ZTV7S7177C4__8S7177C10[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C4__8S7177C10[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S7177C10[];
extern  VTBL_ENTRY _ZTV8S7177C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C10[];
Class_Descriptor cd_S7177C10 = {  "S7177C10", // class name
  bases_S7177C10, 8,
  &(vtc_S7177C10[0]), // expected_vtbl_contents
  &(vtt_S7177C10[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S7177C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7177C10),66, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7177C10),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7177C12  : virtual S7177C2 , S7177C10 {
  virtual void  v27(); // _ZN8S7177C123v27Ev
  virtual void  v28(); // _ZN8S7177C123v28Ev
  virtual void  v29(); // _ZN8S7177C123v29Ev
  ~S7177C12(); // tgen
  S7177C12(); // tgen
};
//SIG(-1 S7177C12) C1{ VBC2{ v4 v5 v6 v7 v8 Fs[5]} BC3{ VBC4{ BC2 VBC5{ VBC2 v9 v10} BC6{ BC2 VBC5 v11 Fi[2]} v12 Fi} BC2 BC5 v13 v14 v15 v16 v17 Fc Fp} v1 v2 v3}


void  S7177C12 ::v27(){vfunc_called(this, "_ZN8S7177C123v27Ev");}
void  S7177C12 ::v28(){vfunc_called(this, "_ZN8S7177C123v28Ev");}
void  S7177C12 ::v29(){vfunc_called(this, "_ZN8S7177C123v29Ev");}
S7177C12 ::~S7177C12(){ note_dtor("S7177C12", this);} // tgen
S7177C12 ::S7177C12(){ note_ctor("S7177C12", this);} // tgen

static void Test_S7177C12()
{
  extern Class_Descriptor cd_S7177C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S7177C12, buf);
    S7177C12 *dp, &lv = *(dp=new (buf) S7177C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S7177C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7177C12)");
    /*is_ambiguous_... S7177C12::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*), ABISELECT(48,28), "S7177C12");
    /*is_ambiguous_... S7177C12::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C4*), ABISELECT(48,28), "S7177C12");
    /*is_ambiguous_... S7177C10::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C4*)(S7177C10*), ABISELECT(48,28), "S7177C12");
    /*is_ambiguous_... S7177C8::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*), ABISELECT(72,44), "S7177C12");
    check_base_class_offset(lv, (S7177C4*)(S7177C8*), ABISELECT(128,88), "S7177C12");
    check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*), ABISELECT(128,88), "S7177C12");
    /*is_ambiguous_... S7177C5::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*), ABISELECT(96,60), "S7177C12");
    check_base_class_offset(lv, (S7177C5*)(S7177C8*), ABISELECT(96,60), "S7177C12");
    check_base_class_offset(lv, (S7177C8*)(S7177C10*), ABISELECT(72,44), "S7177C12");
    /*is_ambiguous_... S7177C10::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C10*), 0, "S7177C12");
    /*is_ambiguous_... S7177C10::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C10*), ABISELECT(24,16), "S7177C12");
    check_base_class_offset(lv, (S7177C10*), 0, "S7177C12");
    test_class_info(&lv, &cd_S7177C12);
    dp->~S7177C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C12(Test_S7177C12, "S7177C12", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S7177C12C1Ev();
extern void _ZN8S7177C12D1Ev();
Name_Map name_map_S7177C12[] = {
  NSPAIR(_ZN8S7177C12C1Ev),
  NSPAIR(_ZN8S7177C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C10;
extern VTBL_ENTRY _ZTI8S7177C10[];
extern  VTBL_ENTRY _ZTV8S7177C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C10[];
static Base_Class bases_S7177C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7177C2,    ABISELECT(48,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7177C2,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7177C4,    ABISELECT(128,88), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7177C2,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(96,60), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(72,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7177C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7177C4,    ABISELECT(24,16), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7177C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7177C12[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
extern void _ZN8S7177C123v27Ev();
extern void _ZN8S7177C123v28Ev();
extern void _ZN8S7177C123v29Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY vtc_S7177C12[] = {
  ABISELECT(48,28),
  ABISELECT(128,88),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v29Ev,
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern VTBL_ENTRY _ZTV8S7177C12[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7177C10__8S7177C12[] = {
  ABISELECT(48,28),
  ABISELECT(128,88),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C48S7177C10__A1__8S7177C12[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C48S7177C10__A1__8S7177C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C10__8S7177C12[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__8S7177C10__8S7177C12[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__8S7177C10__8S7177C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C10__8S7177C12[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__A__8S7177C10__8S7177C12[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C12[] = {
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C12[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C8__8S7177C12[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C8__8S7177C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C8__8S7177C12[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C8__8S7177C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C8__8S7177C12[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__8S7177C12[] = {
  ABISELECT(-80,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C4__8S7177C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
static  VTT_ENTRY vtt_S7177C12[] = {
  {&(_ZTV8S7177C12[5]),  5,69},
  {&(_tg__ZTV8S7177C10__8S7177C12[5]),  5,15},
  {&(_tg__ZTV7S7177C48S7177C10__A1__8S7177C12[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C48S7177C10__A1__8S7177C12[7]),  7,12},
  {&(_tg__ZTV7S7177C8__8S7177C10__8S7177C12[11]),  11,17},
  {&(_tg__ZTV7S7177C4__8S7177C10__8S7177C12[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__8S7177C10__8S7177C12[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C10__8S7177C12[4]),  4,10},
  {&(_tg__ZTV7S7177C4__A__8S7177C10__8S7177C12[3]),  3,5},
  {&(_ZTV8S7177C12[30]),  30,69},
  {&(_ZTV8S7177C12[46]),  46,69},
  {&(_ZTV8S7177C12[67]),  67,69},
  {&(_ZTV8S7177C12[56]),  56,69},
  {&(_ZTV8S7177C12[21]),  21,69},
  {&(_tg__ZTV7S7177C8__8S7177C12[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C12[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C8__8S7177C12[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C8__8S7177C12[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C8__8S7177C12[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C8__8S7177C12[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C8__8S7177C12[4]),  4,10},
  {&(_tg__ZTV7S7177C4__8S7177C12[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C4__8S7177C12[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S7177C12[];
extern  VTBL_ENTRY _ZTV8S7177C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C12[];
Class_Descriptor cd_S7177C12 = {  "S7177C12", // class name
  bases_S7177C12, 9,
  &(vtc_S7177C12[0]), // expected_vtbl_contents
  &(vtt_S7177C12[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S7177C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7177C12),69, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7177C12),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7177C11  : S7177C10 , S7177C8 , S7177C12 , S7177C7 , virtual S7177C6 {
  virtual void  v38(); // _ZN8S7177C113v38Ev
  virtual void  v39(); // _ZN8S7177C113v39Ev
  virtual void  v40(); // _ZN8S7177C113v40Ev
  ~S7177C11(); // tgen
  S7177C11(); // tgen
};
//SIG(-1 S7177C11) C1{ BC2{ VBC3{ BC4{ v4 v5 v6 v7 v8 Fs[5]} VBC5{ VBC4 v9 v10} BC6{ BC4 VBC5 v11 Fi[2]} v12 Fi} BC4 BC5 v13 v14 v15 v16 v17 Fc Fp} BC3 BC7{ VBC4 BC2 v18 v19 v20} BC8{ BC3 BC9{ VBC5 BC6 v21 v22 v23 v24 Fi[3] Fp} BC6 v25 v26 v27 Fc[4] FL FC10{ BC11{ BC12{ v35 v36 v37 v38 v39 Fs[5]} VBC13{ VBC12 v40 v41} v42 Fi[2]} VBC14{ BC12 VBC13 BC11 v43 Fi} VBC15{ VBC14 BC12 BC13 v44 v45 v46 v47 v48 Fc Fp} v33 v34 Fp} Fp} VBC16{ VBC8 v28 v29 v30 v31 v32 FD} v1 v2 v3}


void  S7177C11 ::v38(){vfunc_called(this, "_ZN8S7177C113v38Ev");}
void  S7177C11 ::v39(){vfunc_called(this, "_ZN8S7177C113v39Ev");}
void  S7177C11 ::v40(){vfunc_called(this, "_ZN8S7177C113v40Ev");}
S7177C11 ::~S7177C11(){ note_dtor("S7177C11", this);} // tgen
S7177C11 ::S7177C11(){ note_ctor("S7177C11", this);} // tgen

static void Test_S7177C11()
{
  extern Class_Descriptor cd_S7177C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,167)];
    init_test(&cd_S7177C11, buf);
    S7177C11 *dp, &lv = *(dp=new (buf) S7177C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,664), "sizeof(S7177C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7177C11)");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*), ABISELECT(480,344), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C4*), ABISELECT(536,388), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C10 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C4*)(S7177C10*), ABISELECT(536,388), "S7177C11");
    /*is_ambiguous_... S7177C12::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C12*), ABISELECT(536,388), "S7177C11");
    /*is_ambiguous_... S7177C10::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C4*)(S7177C10*)(S7177C12*), ABISELECT(536,388), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C8*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C8*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C8*)(S7177C7*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C3*)(S7177C7*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C7*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C8*)(S7177C7*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C3*)(S7177C7*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C7*), ABISELECT(560,404), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*), ABISELECT(504,360), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C8*), ABISELECT(504,360), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C10 */ AMB_check_base_class_offset(lv, (S7177C8*)(S7177C10*), ABISELECT(480,344), "S7177C11");
    check_base_class_offset(lv, (S7177C8*)(S7177C10*)(S7177C12*), ABISELECT(480,344), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C10 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C10*), 0, "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C10 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C10*), ABISELECT(24,16), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C10 */ AMB_check_base_class_offset(lv, (S7177C10*), 0, "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*), ABISELECT(48,28), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*), ABISELECT(72,44), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C8*), ABISELECT(72,44), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C8*), ABISELECT(48,28), "S7177C11");
    /*is_ambiguous_... S7177C10::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C10*)(S7177C12*), ABISELECT(104,72), "S7177C11");
    /*is_ambiguous_... S7177C10::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C10*)(S7177C12*), ABISELECT(128,88), "S7177C11");
    check_base_class_offset(lv, (S7177C10*)(S7177C12*), ABISELECT(104,72), "S7177C11");
    check_base_class_offset(lv, (S7177C12*), ABISELECT(104,72), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*)(S7177C7*), ABISELECT(152,100), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(176,116), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(176,116), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C8*)(S7177C7*), ABISELECT(152,100), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(208,144), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(208,144), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C3*)(S7177C7*), ABISELECT(208,144), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C7*), ABISELECT(256,184), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C7*), ABISELECT(256,184), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C7*), ABISELECT(152,100), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*)(S7177C7*), ABISELECT(592,420), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(616,436), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(616,436), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C8*)(S7177C7*), ABISELECT(592,420), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(648,464), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(648,464), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C3*)(S7177C7*), ABISELECT(648,464), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C7*), ABISELECT(696,504), "S7177C11");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C7*), ABISELECT(696,504), "S7177C11");
    check_base_class_offset(lv, (S7177C7*)(S7177C6*), ABISELECT(592,420), "S7177C11");
    check_base_class_offset(lv, (S7177C6*), ABISELECT(560,404), "S7177C11");
    test_class_info(&lv, &cd_S7177C11);
    dp->~S7177C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C11(Test_S7177C11, "S7177C11", ABISELECT(928,664));

#else // __cplusplus

extern void _ZN8S7177C11C1Ev();
extern void _ZN8S7177C11D1Ev();
Name_Map name_map_S7177C11[] = {
  NSPAIR(_ZN8S7177C11C1Ev),
  NSPAIR(_ZN8S7177C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C10;
extern VTBL_ENTRY _ZTI8S7177C10[];
extern  VTBL_ENTRY _ZTV8S7177C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C10[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C10;
extern VTBL_ENTRY _ZTI8S7177C10[];
extern  VTBL_ENTRY _ZTV8S7177C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C10[];
extern Class_Descriptor cd_S7177C12;
extern VTBL_ENTRY _ZTI8S7177C12[];
extern  VTBL_ENTRY _ZTV8S7177C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C12[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C3;
extern VTBL_ENTRY _ZTI7S7177C3[];
extern  VTBL_ENTRY _ZTV7S7177C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C3[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C7;
extern VTBL_ENTRY _ZTI7S7177C7[];
extern  VTBL_ENTRY _ZTV7S7177C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C7[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C3;
extern VTBL_ENTRY _ZTI7S7177C3[];
extern  VTBL_ENTRY _ZTV7S7177C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C3[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C7;
extern VTBL_ENTRY _ZTI7S7177C7[];
extern  VTBL_ENTRY _ZTV7S7177C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C7[];
extern Class_Descriptor cd_S7177C6;
extern VTBL_ENTRY _ZTI7S7177C6[];
extern  VTBL_ENTRY _ZTV7S7177C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C6[];
static Base_Class bases_S7177C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7177C2,    ABISELECT(480,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(536,388), //bcp->offset
    142, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7177C4,    ABISELECT(560,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7177C2,    ABISELECT(504,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(504,360), //bcp->offset
    132, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(480,344), //bcp->offset
    115, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7177C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S7177C4,    ABISELECT(24,16), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7177C10,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7177C2,    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
    21, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7177C2,    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
    22, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(72,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(48,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7177C2,    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
    25, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7177C4,    ABISELECT(128,88), //bcp->offset
    63, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7177C10,    ABISELECT(104,72), //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
    27, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7177C12,    ABISELECT(104,72), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7177C2,    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
    29, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7177C2,    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
    30, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(176,116), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(152,100), //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
    26, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7177C3,    ABISELECT(208,144), //bcp->offset
    91, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(256,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
    36, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(256,184), //bcp->offset
    105, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7177C7,    ABISELECT(152,100), //bcp->offset
    68, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7177C2,    ABISELECT(592,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(616,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
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(616,436), //bcp->offset
    200, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(592,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(648,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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(648,464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7177C3,    ABISELECT(648,464), //bcp->offset
    210, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(696,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(696,504), //bcp->offset
    224, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7177C7,    ABISELECT(592,420), //bcp->offset
    173, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7177C6,    ABISELECT(560,404), //bcp->offset
    154, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7177C11[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
extern void _ZN8S7177C113v38Ev();
extern void _ZN8S7177C113v39Ev();
extern void _ZN8S7177C113v40Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
extern void _ZN8S7177C123v27Ev();
extern void _ZN8S7177C123v28Ev();
extern void _ZN8S7177C123v29Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C63v33Ev();
extern void _ZN7S7177C63v34Ev();
extern void _ZN7S7177C63v35Ev();
extern void _ZN7S7177C63v36Ev();
extern void _ZN7S7177C63v37Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY vtc_S7177C11[] = {
  ABISELECT(592,420),
  ABISELECT(560,404),
  ABISELECT(536,388),
  ABISELECT(560,404),
  ABISELECT(480,344),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
  (VTBL_ENTRY)&_ZN8S7177C113v38Ev,
  (VTBL_ENTRY)&_ZN8S7177C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7177C113v40Ev,
  ABISELECT(512,372),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  ABISELECT(488,360),
  ABISELECT(512,376),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  ABISELECT(464,344),
  ABISELECT(488,360),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  ABISELECT(432,316),
  ABISELECT(456,332),
  ABISELECT(376,272),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v29Ev,
  ABISELECT(408,300),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  ABISELECT(384,288),
  ABISELECT(408,304),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
  ABISELECT(360,272),
  ABISELECT(384,288),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  ABISELECT(328,244),
  ABISELECT(352,260),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
  ABISELECT(280,204),
  ABISELECT(304,220),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,44),
  ABISELECT(80,60),
  ABISELECT(-480,-344),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  ABISELECT(32,28),
  ABISELECT(56,44),
  ABISELECT(-504,-360),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-536,-388),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-560,-404),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v33Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v37Ev,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  ABISELECT(-592,-420),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-616,-436),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  ABISELECT(-648,-464),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  ABISELECT(-696,-504),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern VTBL_ENTRY _ZTV8S7177C11[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7177C10__8S7177C11[] = {
  ABISELECT(536,388),
  ABISELECT(560,404),
  ABISELECT(480,344),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C48S7177C10__A1__8S7177C11[] = {
  ABISELECT(512,372),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C48S7177C10__A1__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C10__8S7177C11[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,44),
  ABISELECT(80,60),
  ABISELECT(-480,-344),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__8S7177C10__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-560,-404),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__8S7177C10__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-536,-388),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C10__8S7177C11[] = {
  ABISELECT(32,28),
  ABISELECT(56,44),
  ABISELECT(-504,-360),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__A__8S7177C10__8S7177C11[] = {
  ABISELECT(512,372),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__A__8S7177C11[] = {
  ABISELECT(488,360),
  ABISELECT(512,376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__A1__8S7177C11[] = {
  ABISELECT(464,344),
  ABISELECT(488,360),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C8__A1__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-488,-360),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C8__A1__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-464,-344),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C8__A__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-512,-376),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C8__A__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-488,-360),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C8__A__8S7177C11[] = {
  ABISELECT(464,344),
  ABISELECT(488,360),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
extern void _ZN8S7177C123v27Ev();
extern void _ZN8S7177C123v28Ev();
extern void _ZN8S7177C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S7177C12__8S7177C11[] = {
  ABISELECT(432,316),
  ABISELECT(456,332),
  ABISELECT(376,272),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v29Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7177C108S7177C12__A1__8S7177C11[] = {
  ABISELECT(432,316),
  ABISELECT(456,332),
  ABISELECT(376,272),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C48S7177C108S7177C12__A2__8S7177C11[] = {
  ABISELECT(408,300),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C48S7177C108S7177C12__A2__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-408,-300),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C108S7177C12__A1__8S7177C11[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,44),
  ABISELECT(80,60),
  ABISELECT(-376,-272),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__8S7177C108S7177C12__A1__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-456,-332),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__8S7177C108S7177C12__A1__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C108S7177C12__A1__8S7177C11[] = {
  ABISELECT(32,28),
  ABISELECT(56,44),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__A__8S7177C108S7177C12__A1__8S7177C11[] = {
  ABISELECT(408,300),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__8S7177C12__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-316),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C12__8S7177C11[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,44),
  ABISELECT(80,60),
  ABISELECT(-376,-272),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__8S7177C12__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-456,-332),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C12__8S7177C11[] = {
  ABISELECT(32,28),
  ABISELECT(56,44),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C48S7177C10__A1__8S7177C12__8S7177C11[] = {
  ABISELECT(408,300),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C7__A__8S7177C11[] = {
  ABISELECT(384,288),
  ABISELECT(408,304),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C87S7177C7__A2__8S7177C11[] = {
  ABISELECT(384,288),
  ABISELECT(408,304),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C87S7177C7__A2__8S7177C11[] = {
  ABISELECT(360,272),
  ABISELECT(384,288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C87S7177C7__A2__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C87S7177C7__A2__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C87S7177C7__A2__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-408,-304),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C87S7177C7__A2__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C87S7177C7__A2__8S7177C11[] = {
  ABISELECT(360,272),
  ABISELECT(384,288),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C37S7177C7__8S7177C11[] = {
  ABISELECT(328,244),
  ABISELECT(352,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C37S7177C7__A3__8S7177C11[] = {
  ABISELECT(328,244),
  ABISELECT(352,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C37S7177C7__A3__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-352,-260),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C37S7177C7__A3__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C37S7177C7__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-352,-260),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C37S7177C7__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C7__A4__8S7177C11[] = {
  ABISELECT(280,204),
  ABISELECT(304,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C7__A4__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-304,-220),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C7__A4__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-204),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C7__A__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-408,-304),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C7__A__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__7S7177C7__A__8S7177C11[] = {
  ABISELECT(360,272),
  ABISELECT(384,288),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C3__7S7177C7__A__8S7177C11[] = {
  ABISELECT(328,244),
  ABISELECT(352,260),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__A2__7S7177C7__A__8S7177C11[] = {
  ABISELECT(280,204),
  ABISELECT(304,220),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C11[] = {
  ABISELECT(56,44),
  ABISELECT(80,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C11[] = {
  ABISELECT(32,28),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C8__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C8__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C8__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C8__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C8__8S7177C11[] = {
  ABISELECT(32,28),
  ABISELECT(56,44),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__8S7177C11[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C4__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C63v33Ev();
extern void _ZN7S7177C63v34Ev();
extern void _ZN7S7177C63v35Ev();
extern void _ZN7S7177C63v36Ev();
extern void _ZN7S7177C63v37Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C6__8S7177C11[] = {
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v33Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v37Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C7__7S7177C6__8S7177C11[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C6__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C87S7177C7__7S7177C6__8S7177C11[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C37S7177C7__7S7177C6__8S7177C11[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C7__A2__7S7177C6__8S7177C11[] = {
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C7__A1__8S7177C11[] = {
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C87S7177C7__A3__8S7177C11[] = {
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C87S7177C7__A5__8S7177C11[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C87S7177C7__A5__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C87S7177C7__A5__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C87S7177C7__A3__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C87S7177C7__A3__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C87S7177C7__A3__8S7177C11[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C37S7177C7__A1__8S7177C11[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C37S7177C7__A6__8S7177C11[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C37S7177C7__A6__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C37S7177C7__A6__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C37S7177C7__A1__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C37S7177C7__A1__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C7__A7__8S7177C11[] = {
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C7__A7__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(136,100),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C7__A7__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,116),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C7__A1__8S7177C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C7__A1__8S7177C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__7S7177C7__A1__8S7177C11[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C3__7S7177C7__A1__8S7177C11[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__A2__7S7177C7__A1__8S7177C11[] = {
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
static  VTT_ENTRY vtt_S7177C11[] = {
  {&(_ZTV8S7177C11[7]),  7,234},
  {&(_tg__ZTV8S7177C10__8S7177C11[5]),  5,15},
  {&(_tg__ZTV7S7177C48S7177C10__A1__8S7177C11[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C48S7177C10__A1__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C8__8S7177C10__8S7177C11[11]),  11,17},
  {&(_tg__ZTV7S7177C4__8S7177C10__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__8S7177C10__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C10__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__A__8S7177C10__8S7177C11[3]),  3,5},
  {&(_tg__ZTV7S7177C8__A__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C8__A1__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C8__A1__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C8__A1__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C8__A__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C8__A__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C8__A__8S7177C11[4]),  4,10},
  {&(_tg__ZTV8S7177C12__8S7177C11[5]),  5,18},
  {&(_tg__ZTV8S7177C108S7177C12__A1__8S7177C11[5]),  5,15},
  {&(_tg__ZTV7S7177C48S7177C108S7177C12__A2__8S7177C11[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C48S7177C108S7177C12__A2__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C8__8S7177C108S7177C12__A1__8S7177C11[11]),  11,17},
  {&(_tg__ZTV7S7177C4__8S7177C108S7177C12__A1__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__8S7177C108S7177C12__A1__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C108S7177C12__A1__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__A__8S7177C108S7177C12__A1__8S7177C11[3]),  3,5},
  {&(_tg__ZTV7S7177C2__8S7177C12__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C8__8S7177C12__8S7177C11[11]),  11,17},
  {&(_tg__ZTV7S7177C4__8S7177C12__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C12__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C48S7177C10__A1__8S7177C12__8S7177C11[3]),  3,5},
  {&(_tg__ZTV7S7177C7__A__8S7177C11[4]),  4,13},
  {&(_tg__ZTV7S7177C87S7177C7__A2__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C87S7177C7__A2__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C87S7177C7__A2__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C87S7177C7__A2__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C87S7177C7__A2__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C87S7177C7__A2__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C87S7177C7__A2__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C37S7177C7__8S7177C11[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C37S7177C7__A3__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C37S7177C7__A3__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C37S7177C7__A3__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C37S7177C7__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__7S7177C37S7177C7__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C7__A4__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C7__A4__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C7__A4__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C7__A__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C7__A__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__7S7177C7__A__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C3__7S7177C7__A__8S7177C11[4]),  4,14},
  {&(_tg__ZTV7S7177C5__A2__7S7177C7__A__8S7177C11[4]),  4,10},
  {&(_ZTV8S7177C11[126]),  126,234},
  {&(_ZTV8S7177C11[166]),  166,234},
  {&(_ZTV8S7177C11[149]),  149,234},
  {&(_ZTV8S7177C11[136]),  136,234},
  {&(_ZTV8S7177C11[23]),  23,234},
  {&(_ZTV8S7177C11[29]),  29,234},
  {&(_ZTV8S7177C11[39]),  39,234},
  {&(_ZTV8S7177C11[50]),  50,234},
  {&(_ZTV8S7177C11[66]),  66,234},
  {&(_ZTV8S7177C11[72]),  72,234},
  {&(_ZTV8S7177C11[85]),  85,234},
  {&(_ZTV8S7177C11[95]),  95,234},
  {&(_ZTV8S7177C11[109]),  109,234},
  {&(_ZTV8S7177C11[166]),  166,234},
  {&(_ZTV8S7177C11[191]),  191,234},
  {&(_ZTV8S7177C11[204]),  204,234},
  {&(_ZTV8S7177C11[214]),  214,234},
  {&(_ZTV8S7177C11[228]),  228,234},
  {&(_tg__ZTV7S7177C8__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C8__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C8__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C8__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C8__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C8__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__8S7177C11[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C4__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C6__8S7177C11[7]),  7,14},
  {&(_tg__ZTV7S7177C7__7S7177C6__8S7177C11[18]),  18,27},
  {&(_tg__ZTV7S7177C6__8S7177C11[7]),  7,14},
  {&(_tg__ZTV7S7177C2__A1__7S7177C6__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C87S7177C7__7S7177C6__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C37S7177C7__7S7177C6__8S7177C11[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C7__A2__7S7177C6__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C7__A1__8S7177C11[4]),  4,13},
  {&(_tg__ZTV7S7177C87S7177C7__A3__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C87S7177C7__A5__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C87S7177C7__A5__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C87S7177C7__A5__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C87S7177C7__A3__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C87S7177C7__A3__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C87S7177C7__A3__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C37S7177C7__A1__8S7177C11[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C37S7177C7__A6__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C37S7177C7__A6__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C37S7177C7__A6__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C37S7177C7__A1__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__7S7177C37S7177C7__A1__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C7__A7__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C7__A7__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C7__A7__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C7__A1__8S7177C11[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C7__A1__8S7177C11[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__7S7177C7__A1__8S7177C11[4]),  4,10},
  {&(_tg__ZTV7S7177C3__7S7177C7__A1__8S7177C11[4]),  4,14},
  {&(_tg__ZTV7S7177C5__A2__7S7177C7__A1__8S7177C11[4]),  4,10},
};
extern VTBL_ENTRY _ZTI8S7177C11[];
extern  VTBL_ENTRY _ZTV8S7177C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C11[];
Class_Descriptor cd_S7177C11 = {  "S7177C11", // class name
  bases_S7177C11, 38,
  &(vtc_S7177C11[0]), // expected_vtbl_contents
  &(vtt_S7177C11[0]), // expected_vtt_contents
  ABISELECT(928,664), // object size
  NSPAIRA(_ZTI8S7177C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7177C11),234, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7177C11),108, //virtual table table var
  38, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7177C1  : S7177C2 , virtual S7177C3 , virtual S7177C6 , S7177C11 {
  int s7177c1f0[5];
  void *s7177c1f1;
  virtual void  v1(); // _ZN7S7177C12v1Ev
  virtual void  v2(); // _ZN7S7177C12v2Ev
  virtual void  v3(); // _ZN7S7177C12v3Ev
  virtual void  v4(); // _ZN7S7177C12v4Ev
  virtual void  v5(); // _ZN7S7177C12v5Ev
  virtual void  v6(); // _ZN7S7177C12v6Ev
  virtual void  v7(); // _ZN7S7177C12v7Ev
  virtual void  v8(); // _ZN7S7177C12v8Ev
  ~S7177C1(); // tgen
  S7177C1(); // tgen
};
//SIG(1 S7177C1) C1{ BC2{ v9 v10 v11 v12 v13 Fs[5]} VBC3{ VBC4{ VBC2 v14 v15} BC5{ BC2 VBC4 v16 Fi[2]} v17 v18 v19 v20 Fi[3] Fp} VBC6{ VBC7{ BC8{ BC2 VBC4 BC5 v21 Fi} BC3 BC5 v22 v23 v24 Fc[4] FL FC9{ BC10{ BC11{ v43 v44 v45 v46 v47 Fs[5]} VBC12{ VBC11 v48 v49} v50 Fi[2]} VBC13{ BC11 VBC12 BC10 v51 Fi} VBC14{ VBC13 BC11 BC12 v52 v53 v54 v55 v56 Fc Fp} v41 v42 Fp} Fp} v25 v26 v27 v28 v29 FD} BC15{ BC16{ VBC8 BC2 BC4 v30 v31 v32 v33 v34 Fc Fp} BC8 BC17{ VBC2 BC16 v35 v36 v37} BC7 VBC6 v38 v39 v40} v1 v2 v3 v4 v5 v6 v7 v8 Fi[5] Fp}


void  S7177C1 ::v1(){vfunc_called(this, "_ZN7S7177C12v1Ev");}
void  S7177C1 ::v2(){vfunc_called(this, "_ZN7S7177C12v2Ev");}
void  S7177C1 ::v3(){vfunc_called(this, "_ZN7S7177C12v3Ev");}
void  S7177C1 ::v4(){vfunc_called(this, "_ZN7S7177C12v4Ev");}
void  S7177C1 ::v5(){vfunc_called(this, "_ZN7S7177C12v5Ev");}
void  S7177C1 ::v6(){vfunc_called(this, "_ZN7S7177C12v6Ev");}
void  S7177C1 ::v7(){vfunc_called(this, "_ZN7S7177C12v7Ev");}
void  S7177C1 ::v8(){vfunc_called(this, "_ZN7S7177C12v8Ev");}
S7177C1 ::~S7177C1(){ note_dtor("S7177C1", this);} // tgen
S7177C1 ::S7177C1(){ note_ctor("S7177C1", this);} // tgen

static void Test_S7177C1()
{
  extern Class_Descriptor cd_S7177C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(65,187)];
    init_test(&cd_S7177C1, buf);
    S7177C1 *dp, &lv = *(dp=new (buf) S7177C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1024,744), "sizeof(S7177C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7177C1)");
    /*is_ambiguous_... S7177C1::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*), 0, "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C4*), ABISELECT(584,424), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C10 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C4*)(S7177C10*)(S7177C11*), ABISELECT(584,424), "S7177C1");
    /*is_ambiguous_... S7177C12::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C12*)(S7177C11*), ABISELECT(584,424), "S7177C1");
    /*is_ambiguous_... S7177C10::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C4*)(S7177C10*)(S7177C12*)(S7177C11*), ABISELECT(584,424), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C3 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C3*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C3 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C3*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C8*)(S7177C7*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C3*)(S7177C7*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C7*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C8*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C8*)(S7177C11*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*)(S7177C11*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C8*)(S7177C7*)(S7177C11*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C8*)(S7177C7*)(S7177C11*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C3*)(S7177C7*)(S7177C11*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C3*)(S7177C7*)(S7177C11*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C5*)(S7177C7*)(S7177C11*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C3 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C3*), ABISELECT(536,384), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C3 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C3*), ABISELECT(536,384), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C3 */ AMB_check_base_class_offset(lv, (S7177C3*), ABISELECT(536,384), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*)(S7177C7*), ABISELECT(640,456), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(664,472), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C8*)(S7177C7*), ABISELECT(664,472), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C8*)(S7177C7*), ABISELECT(640,456), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(696,500), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C3*)(S7177C7*), ABISELECT(696,500), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C3*)(S7177C7*), ABISELECT(696,500), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C7*), ABISELECT(744,540), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C7*), ABISELECT(744,540), "S7177C1");
    check_base_class_offset(lv, (S7177C7*)(S7177C6*), ABISELECT(640,456), "S7177C1");
    check_base_class_offset(lv, (S7177C6*), ABISELECT(608,440), "S7177C1");
    check_base_class_offset(lv, (S7177C6*)(S7177C11*), ABISELECT(608,440), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*), ABISELECT(968,700), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*), ABISELECT(992,716), "S7177C1");
    /*is_ambiguous_... S7177C1::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C8*), ABISELECT(992,716), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C10 */ AMB_check_base_class_offset(lv, (S7177C8*)(S7177C10*)(S7177C11*), ABISELECT(968,700), "S7177C1");
    check_base_class_offset(lv, (S7177C8*)(S7177C10*)(S7177C12*)(S7177C11*), ABISELECT(968,700), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C10 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C10*)(S7177C11*), ABISELECT(24,16), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C10 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C10*)(S7177C11*), ABISELECT(48,32), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C10 */ AMB_check_base_class_offset(lv, (S7177C10*)(S7177C11*), ABISELECT(24,16), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*)(S7177C11*), ABISELECT(72,44), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*)(S7177C11*), ABISELECT(96,60), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C8*)(S7177C11*), ABISELECT(96,60), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C8 */ AMB_check_base_class_offset(lv, (S7177C8*)(S7177C11*), ABISELECT(72,44), "S7177C1");
    /*is_ambiguous_... S7177C10::S7177C2 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C10*)(S7177C12*)(S7177C11*), ABISELECT(128,88), "S7177C1");
    /*is_ambiguous_... S7177C10::S7177C4 */ AMB_check_base_class_offset(lv, (S7177C4*)(S7177C10*)(S7177C12*)(S7177C11*), ABISELECT(152,104), "S7177C1");
    check_base_class_offset(lv, (S7177C10*)(S7177C12*)(S7177C11*), ABISELECT(128,88), "S7177C1");
    check_base_class_offset(lv, (S7177C12*)(S7177C11*), ABISELECT(128,88), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C8*)(S7177C7*)(S7177C11*), ABISELECT(176,116), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C8*)(S7177C7*)(S7177C11*), ABISELECT(200,132), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C8*)(S7177C7*)(S7177C11*), ABISELECT(200,132), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C8*)(S7177C7*)(S7177C11*), ABISELECT(176,116), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C3*)(S7177C7*)(S7177C11*), ABISELECT(232,160), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C3*)(S7177C7*)(S7177C11*), ABISELECT(232,160), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C3*)(S7177C7*)(S7177C11*), ABISELECT(232,160), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C2*)(S7177C5*)(S7177C7*)(S7177C11*), ABISELECT(280,200), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C5*)(S7177C7*)(S7177C11*), ABISELECT(280,200), "S7177C1");
    /*is_ambiguous_... S7177C11::S7177C7 */ AMB_check_base_class_offset(lv, (S7177C7*)(S7177C11*), ABISELECT(176,116), "S7177C1");
    check_base_class_offset(lv, (S7177C11*), ABISELECT(24,16), "S7177C1");
    check_field_offset(lv, s7177c1f0, ABISELECT(504,360), "S7177C1.s7177c1f0");
    check_field_offset(lv, s7177c1f1, ABISELECT(528,380), "S7177C1.s7177c1f1");
    test_class_info(&lv, &cd_S7177C1);
    dp->~S7177C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7177C1(Test_S7177C1, "S7177C1", ABISELECT(1024,744));

#else // __cplusplus

extern void _ZN7S7177C1C1Ev();
extern void _ZN7S7177C1D1Ev();
Name_Map name_map_S7177C1[] = {
  NSPAIR(_ZN7S7177C1C1Ev),
  NSPAIR(_ZN7S7177C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C3;
extern VTBL_ENTRY _ZTI7S7177C3[];
extern  VTBL_ENTRY _ZTV7S7177C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C3[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C3;
extern VTBL_ENTRY _ZTI7S7177C3[];
extern  VTBL_ENTRY _ZTV7S7177C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C3[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C7;
extern VTBL_ENTRY _ZTI7S7177C7[];
extern  VTBL_ENTRY _ZTV7S7177C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C7[];
extern Class_Descriptor cd_S7177C6;
extern VTBL_ENTRY _ZTI7S7177C6[];
extern  VTBL_ENTRY _ZTV7S7177C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C6[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C10;
extern VTBL_ENTRY _ZTI8S7177C10[];
extern  VTBL_ENTRY _ZTV8S7177C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C10[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C4;
extern VTBL_ENTRY _ZTI7S7177C4[];
extern  VTBL_ENTRY _ZTV7S7177C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C4[];
extern Class_Descriptor cd_S7177C10;
extern VTBL_ENTRY _ZTI8S7177C10[];
extern  VTBL_ENTRY _ZTV8S7177C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C10[];
extern Class_Descriptor cd_S7177C12;
extern VTBL_ENTRY _ZTI8S7177C12[];
extern  VTBL_ENTRY _ZTV8S7177C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C12[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C8;
extern VTBL_ENTRY _ZTI7S7177C8[];
extern  VTBL_ENTRY _ZTV7S7177C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C8[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C3;
extern VTBL_ENTRY _ZTI7S7177C3[];
extern  VTBL_ENTRY _ZTV7S7177C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C3[];
extern Class_Descriptor cd_S7177C2;
extern VTBL_ENTRY _ZTI7S7177C2[];
extern  VTBL_ENTRY _ZTV7S7177C2[];
extern Class_Descriptor cd_S7177C5;
extern VTBL_ENTRY _ZTI7S7177C5[];
extern  VTBL_ENTRY _ZTV7S7177C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C5[];
extern Class_Descriptor cd_S7177C7;
extern VTBL_ENTRY _ZTI7S7177C7[];
extern  VTBL_ENTRY _ZTV7S7177C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C7[];
extern Class_Descriptor cd_S7177C11;
extern VTBL_ENTRY _ZTI8S7177C11[];
extern  VTBL_ENTRY _ZTV8S7177C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7177C11[];
static Base_Class bases_S7177C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7177C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7177C2,    ABISELECT(584,424), //bcp->offset
    160, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7177C4,    ABISELECT(608,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7177C2,    ABISELECT(536,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(536,384), //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
    5, //immediately_derived
  0, 0},
  {&cd_S7177C3,    ABISELECT(536,384), //bcp->offset
    136, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7177C2,    ABISELECT(640,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(664,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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(664,472), //bcp->offset
    218, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(640,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(696,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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(696,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7177C3,    ABISELECT(696,500), //bcp->offset
    228, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(744,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
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(744,540), //bcp->offset
    242, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7177C7,    ABISELECT(640,456), //bcp->offset
    191, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7177C6,    ABISELECT(608,440), //bcp->offset
    172, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7177C2,    ABISELECT(968,700), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7177C2,    ABISELECT(992,716), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(992,716), //bcp->offset
    269, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(968,700), //bcp->offset
    252, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7177C2,    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
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7177C4,    ABISELECT(48,32), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7177C10,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7177C2,    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
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7177C2,    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
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(96,60), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(72,44), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7177C2,    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
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7177C4,    ABISELECT(152,104), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7177C10,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7177C12,    ABISELECT(128,88), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7177C2,    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
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7177C2,    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
    34, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(200,132), //bcp->offset
    102, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7177C8,    ABISELECT(176,116), //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
    36, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(232,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
    37, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(232,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7177C3,    ABISELECT(232,160), //bcp->offset
    112, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7177C2,    ABISELECT(280,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7177C5,    ABISELECT(280,200), //bcp->offset
    126, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7177C7,    ABISELECT(176,116), //bcp->offset
    89, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7177C11,    ABISELECT(24,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7177C1[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C12v1Ev();
extern void _ZN7S7177C12v2Ev();
extern void _ZN7S7177C12v3Ev();
extern void _ZN7S7177C12v4Ev();
extern void _ZN7S7177C12v5Ev();
extern void _ZN7S7177C12v6Ev();
extern void _ZN7S7177C12v7Ev();
extern void _ZN7S7177C12v8Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
extern void _ZN8S7177C113v38Ev();
extern void _ZN8S7177C113v39Ev();
extern void _ZN8S7177C113v40Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
extern void _ZN8S7177C123v27Ev();
extern void _ZN8S7177C123v28Ev();
extern void _ZN8S7177C123v29Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C63v33Ev();
extern void _ZN7S7177C63v34Ev();
extern void _ZN7S7177C63v35Ev();
extern void _ZN7S7177C63v36Ev();
extern void _ZN7S7177C63v37Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY vtc_S7177C1[] = {
  ABISELECT(968,700),
  ABISELECT(640,456),
  ABISELECT(608,440),
  ABISELECT(584,424),
  ABISELECT(608,440),
  ABISELECT(536,384),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7177C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7177C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7177C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7177C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7177C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7177C12v7Ev,
  (VTBL_ENTRY)&_ZN7S7177C12v8Ev,
  ABISELECT(616,440),
  ABISELECT(584,424),
  ABISELECT(560,408),
  ABISELECT(584,424),
  ABISELECT(944,684),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
  (VTBL_ENTRY)&_ZN8S7177C113v38Ev,
  (VTBL_ENTRY)&_ZN8S7177C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7177C113v40Ev,
  ABISELECT(536,392),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  ABISELECT(512,380),
  ABISELECT(536,396),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  ABISELECT(488,364),
  ABISELECT(512,380),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  ABISELECT(456,336),
  ABISELECT(480,352),
  ABISELECT(840,612),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v29Ev,
  ABISELECT(432,320),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  ABISELECT(408,308),
  ABISELECT(432,324),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
  ABISELECT(384,292),
  ABISELECT(408,308),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  ABISELECT(352,264),
  ABISELECT(376,280),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
  ABISELECT(304,224),
  ABISELECT(328,240),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,40),
  ABISELECT(72,56),
  ABISELECT(-536,-384),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-424),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-608,-440),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v33Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v37Ev,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  ABISELECT(-640,-456),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-664,-472),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  ABISELECT(-696,-500),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  ABISELECT(-744,-540),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-276),
  ABISELECT(-360,-260),
  ABISELECT(-968,-700),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  ABISELECT(-408,-292),
  ABISELECT(-384,-276),
  ABISELECT(-992,-716),
  (VTBL_ENTRY)&(_ZTI7S7177C1[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern VTBL_ENTRY _ZTV7S7177C1[];
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
extern void _ZN8S7177C113v38Ev();
extern void _ZN8S7177C113v39Ev();
extern void _ZN8S7177C113v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7177C11__7S7177C1[] = {
  ABISELECT(616,440),
  ABISELECT(584,424),
  ABISELECT(560,408),
  ABISELECT(584,424),
  ABISELECT(944,684),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
  (VTBL_ENTRY)&_ZN8S7177C113v38Ev,
  (VTBL_ENTRY)&_ZN8S7177C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7177C113v40Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7177C108S7177C11__7S7177C1[] = {
  ABISELECT(560,408),
  ABISELECT(584,424),
  ABISELECT(944,684),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C48S7177C108S7177C11__A1__7S7177C1[] = {
  ABISELECT(536,392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C48S7177C108S7177C11__A1__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-536,-392),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C108S7177C11__7S7177C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-276),
  ABISELECT(-360,-260),
  ABISELECT(-944,-684),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__8S7177C108S7177C11__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-584,-424),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__8S7177C108S7177C11__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-408),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C108S7177C11__7S7177C1[] = {
  ABISELECT(-408,-292),
  ABISELECT(-384,-276),
  ABISELECT(-968,-700),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__A__8S7177C108S7177C11__7S7177C1[] = {
  ABISELECT(536,392),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C88S7177C11__A2__7S7177C1[] = {
  ABISELECT(512,380),
  ABISELECT(536,396),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C88S7177C11__A5__7S7177C1[] = {
  ABISELECT(488,364),
  ABISELECT(512,380),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C88S7177C11__A5__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-512,-380),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C88S7177C11__A5__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-488,-364),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C88S7177C11__A2__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-536,-396),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C88S7177C11__A2__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-380),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C88S7177C11__A2__7S7177C1[] = {
  ABISELECT(488,364),
  ABISELECT(512,380),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
extern void _ZN8S7177C123v27Ev();
extern void _ZN8S7177C123v28Ev();
extern void _ZN8S7177C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S7177C128S7177C11__7S7177C1[] = {
  ABISELECT(456,336),
  ABISELECT(480,352),
  ABISELECT(840,612),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v29Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7177C108S7177C128S7177C11__A1__7S7177C1[] = {
  ABISELECT(456,336),
  ABISELECT(480,352),
  ABISELECT(840,612),
  0,
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C48S7177C108S7177C128S7177C11__A2__7S7177C1[] = {
  ABISELECT(432,320),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C48S7177C108S7177C128S7177C11__A2__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-320),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C108S7177C128S7177C11__A1__7S7177C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-276),
  ABISELECT(-360,-260),
  ABISELECT(-840,-612),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__8S7177C108S7177C128S7177C11__A1__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-480,-352),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__8S7177C108S7177C128S7177C11__A1__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-456,-336),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C108S7177C128S7177C11__A1__7S7177C1[] = {
  ABISELECT(-408,-292),
  ABISELECT(-384,-276),
  ABISELECT(-864,-628),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__A__8S7177C108S7177C128S7177C11__A1__7S7177C1[] = {
  ABISELECT(432,320),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C10[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__8S7177C128S7177C11__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-456,-336),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C128S7177C11__7S7177C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-276),
  ABISELECT(-360,-260),
  ABISELECT(-840,-612),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__8S7177C128S7177C11__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-480,-352),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C128S7177C11__7S7177C1[] = {
  ABISELECT(-408,-292),
  ABISELECT(-384,-276),
  ABISELECT(-864,-628),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C48S7177C10__A1__8S7177C128S7177C11__7S7177C1[] = {
  ABISELECT(432,320),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C12[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C78S7177C11__A1__7S7177C1[] = {
  ABISELECT(408,308),
  ABISELECT(432,324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C87S7177C78S7177C11__A3__7S7177C1[] = {
  ABISELECT(408,308),
  ABISELECT(432,324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C87S7177C78S7177C11__A6__7S7177C1[] = {
  ABISELECT(384,292),
  ABISELECT(408,308),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C87S7177C78S7177C11__A6__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-408,-308),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C87S7177C78S7177C11__A6__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-292),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C87S7177C78S7177C11__A3__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-432,-324),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C87S7177C78S7177C11__A3__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-408,-308),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C87S7177C78S7177C11__A3__7S7177C1[] = {
  ABISELECT(384,292),
  ABISELECT(408,308),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C37S7177C78S7177C11__A2__7S7177C1[] = {
  ABISELECT(352,264),
  ABISELECT(376,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C37S7177C78S7177C11__A7__7S7177C1[] = {
  ABISELECT(352,264),
  ABISELECT(376,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C37S7177C78S7177C11__A7__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-376,-280),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C37S7177C78S7177C11__A7__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-264),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C37S7177C78S7177C11__A2__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-376,-280),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C37S7177C78S7177C11__A2__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-264),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C78S7177C11__A8__7S7177C1[] = {
  ABISELECT(304,224),
  ABISELECT(328,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C78S7177C11__A8__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-328,-240),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C78S7177C11__A8__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-224),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C78S7177C11__A1__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-432,-324),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C78S7177C11__A1__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-408,-308),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__7S7177C78S7177C11__A1__7S7177C1[] = {
  ABISELECT(384,292),
  ABISELECT(408,308),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C3__7S7177C78S7177C11__A1__7S7177C1[] = {
  ABISELECT(352,264),
  ABISELECT(376,280),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__A2__7S7177C78S7177C11__A1__7S7177C1[] = {
  ABISELECT(304,224),
  ABISELECT(328,240),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__8S7177C11__7S7177C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-276),
  ABISELECT(-360,-260),
  ABISELECT(-944,-684),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C63v33Ev();
extern void _ZN7S7177C63v34Ev();
extern void _ZN7S7177C63v35Ev();
extern void _ZN7S7177C63v36Ev();
extern void _ZN7S7177C63v37Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C6__8S7177C11__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-584,-424),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v33Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v37Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__8S7177C11__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-408),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__8S7177C11__7S7177C1[] = {
  ABISELECT(-408,-292),
  ABISELECT(-384,-276),
  ABISELECT(-968,-700),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C48S7177C10__A1__8S7177C11__7S7177C1[] = {
  ABISELECT(536,392),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__A__8S7177C11__7S7177C1[] = {
  ABISELECT(512,380),
  ABISELECT(536,396),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__A1__8S7177C11__7S7177C1[] = {
  ABISELECT(488,364),
  ABISELECT(512,380),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN8S7177C103v22Ev();
extern void _ZN8S7177C103v23Ev();
extern void _ZN8S7177C103v24Ev();
extern void _ZN8S7177C103v25Ev();
extern void _ZN8S7177C103v26Ev();
extern void _ZN8S7177C123v27Ev();
extern void _ZN8S7177C123v28Ev();
extern void _ZN8S7177C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S7177C12__8S7177C11__7S7177C1[] = {
  ABISELECT(456,336),
  ABISELECT(480,352),
  ABISELECT(840,612),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v22Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v23Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v24Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v25Ev,
  (VTBL_ENTRY)&_ZN8S7177C103v26Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7177C123v29Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C48S7177C108S7177C12__A2__8S7177C11__7S7177C1[] = {
  ABISELECT(432,320),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C7__A__8S7177C11__7S7177C1[] = {
  ABISELECT(408,308),
  ABISELECT(432,324),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C87S7177C7__A2__8S7177C11__7S7177C1[] = {
  ABISELECT(384,292),
  ABISELECT(408,308),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C37S7177C7__8S7177C11__7S7177C1[] = {
  ABISELECT(352,264),
  ABISELECT(376,280),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C7__A4__8S7177C11__7S7177C1[] = {
  ABISELECT(304,224),
  ABISELECT(328,240),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C7__A1__8S7177C11__7S7177C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  ABISELECT(-616,-440),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C87S7177C7__A5__8S7177C11__7S7177C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-640,-456),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C37S7177C7__A1__8S7177C11__7S7177C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  ABISELECT(-672,-484),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C7__A7__8S7177C11__7S7177C1[] = {
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  ABISELECT(-720,-524),
  (VTBL_ENTRY)&(_ZTI8S7177C11[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C3__7S7177C1[] = {
  ABISELECT(48,40),
  ABISELECT(72,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C3__7S7177C1[] = {
  ABISELECT(48,40),
  ABISELECT(72,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C3__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C3__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C3__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C3__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C4__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7177C4[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
extern void _ZN7S7177C63v33Ev();
extern void _ZN7S7177C63v34Ev();
extern void _ZN7S7177C63v35Ev();
extern void _ZN7S7177C63v36Ev();
extern void _ZN7S7177C63v37Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C6__7S7177C1[] = {
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v33Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7177C63v37Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C7__7S7177C6__7S7177C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C6__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C87S7177C7__7S7177C6__7S7177C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C37S7177C7__7S7177C6__7S7177C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C7__A2__7S7177C6__7S7177C1[] = {
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S7177C6[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
extern void _ZN7S7177C73v30Ev();
extern void _ZN7S7177C73v31Ev();
extern void _ZN7S7177C73v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C7__7S7177C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7177C73v32Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C87S7177C7__7S7177C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C87S7177C7__A1__7S7177C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C87S7177C7__A1__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C87S7177C7__A1__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C87S7177C7__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C87S7177C7__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C87S7177C7__7S7177C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C37S7177C7__A1__7S7177C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C37S7177C7__A2__7S7177C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C37S7177C7__A2__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C37S7177C7__A2__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C37S7177C7__A1__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__7S7177C37S7177C7__A1__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI7S7177C3[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C7__A3__7S7177C1[] = {
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C7__A3__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(136,100),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C7__A3__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,116),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C7__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C7__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__7S7177C7__7S7177C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
extern void _ZN7S7177C33v17Ev();
extern void _ZN7S7177C33v18Ev();
extern void _ZN7S7177C33v19Ev();
extern void _ZN7S7177C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C3__7S7177C7__7S7177C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7177C33v20Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__A2__7S7177C7__7S7177C1[] = {
  ABISELECT(-160,-116),
  ABISELECT(-136,-100),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI7S7177C7[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C8__A1__7S7177C1[] = {
  ABISELECT(-384,-276),
  ABISELECT(-360,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C83v21Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C57S7177C8__A4__7S7177C1[] = {
  ABISELECT(-408,-292),
  ABISELECT(-384,-276),
  0,
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C57S7177C8__A4__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(384,276),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C57S7177C8__A4__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(408,292),
  (VTBL_ENTRY)&(_ZTI7S7177C5[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C43v14Ev();
extern void _ZN7S7177C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C4__7S7177C8__A1__7S7177C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(360,260),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7177C43v15Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C2__A1__7S7177C8__A1__7S7177C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(384,276),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
};
extern void _ZN7S7177C22v9Ev();
extern void _ZN7S7177C23v10Ev();
extern void _ZN7S7177C23v11Ev();
extern void _ZN7S7177C23v12Ev();
extern void _ZN7S7177C23v13Ev();
extern void _ZN7S7177C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7177C5__7S7177C8__A1__7S7177C1[] = {
  ABISELECT(-408,-292),
  ABISELECT(-384,-276),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7177C8[0]),
  (VTBL_ENTRY)&_ZN7S7177C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7177C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7177C53v16Ev,
};
static  VTT_ENTRY vtt_S7177C1[] = {
  {&(_ZTV7S7177C1[8]),  8,279},
  {&(_tg__ZTV8S7177C11__7S7177C1[7]),  7,20},
  {&(_tg__ZTV8S7177C108S7177C11__7S7177C1[5]),  5,15},
  {&(_tg__ZTV7S7177C48S7177C108S7177C11__A1__7S7177C1[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C48S7177C108S7177C11__A1__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C8__8S7177C108S7177C11__7S7177C1[11]),  11,17},
  {&(_tg__ZTV7S7177C4__8S7177C108S7177C11__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__8S7177C108S7177C11__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C108S7177C11__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__A__8S7177C108S7177C11__7S7177C1[3]),  3,5},
  {&(_tg__ZTV7S7177C88S7177C11__A2__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C88S7177C11__A5__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C88S7177C11__A5__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C88S7177C11__A5__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C88S7177C11__A2__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C88S7177C11__A2__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C88S7177C11__A2__7S7177C1[4]),  4,10},
  {&(_tg__ZTV8S7177C128S7177C11__7S7177C1[5]),  5,18},
  {&(_tg__ZTV8S7177C108S7177C128S7177C11__A1__7S7177C1[5]),  5,15},
  {&(_tg__ZTV7S7177C48S7177C108S7177C128S7177C11__A2__7S7177C1[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C48S7177C108S7177C128S7177C11__A2__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C8__8S7177C108S7177C128S7177C11__A1__7S7177C1[11]),  11,17},
  {&(_tg__ZTV7S7177C4__8S7177C108S7177C128S7177C11__A1__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__8S7177C108S7177C128S7177C11__A1__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C108S7177C128S7177C11__A1__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__A__8S7177C108S7177C128S7177C11__A1__7S7177C1[3]),  3,5},
  {&(_tg__ZTV7S7177C2__8S7177C128S7177C11__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C8__8S7177C128S7177C11__7S7177C1[11]),  11,17},
  {&(_tg__ZTV7S7177C4__8S7177C128S7177C11__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C128S7177C11__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C48S7177C10__A1__8S7177C128S7177C11__7S7177C1[3]),  3,5},
  {&(_tg__ZTV7S7177C78S7177C11__A1__7S7177C1[4]),  4,13},
  {&(_tg__ZTV7S7177C87S7177C78S7177C11__A3__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C87S7177C78S7177C11__A6__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C87S7177C78S7177C11__A6__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C87S7177C78S7177C11__A6__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C87S7177C78S7177C11__A3__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C87S7177C78S7177C11__A3__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C87S7177C78S7177C11__A3__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C37S7177C78S7177C11__A2__7S7177C1[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C37S7177C78S7177C11__A7__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C37S7177C78S7177C11__A7__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C37S7177C78S7177C11__A7__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C37S7177C78S7177C11__A2__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__7S7177C37S7177C78S7177C11__A2__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C78S7177C11__A8__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C78S7177C11__A8__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C78S7177C11__A8__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C78S7177C11__A1__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C78S7177C11__A1__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__7S7177C78S7177C11__A1__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C3__7S7177C78S7177C11__A1__7S7177C1[4]),  4,14},
  {&(_tg__ZTV7S7177C5__A2__7S7177C78S7177C11__A1__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C8__8S7177C11__7S7177C1[11]),  11,17},
  {&(_tg__ZTV7S7177C6__8S7177C11__7S7177C1[12]),  12,19},
  {&(_tg__ZTV7S7177C2__A1__8S7177C11__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__8S7177C11__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C48S7177C10__A1__8S7177C11__7S7177C1[3]),  3,5},
  {&(_tg__ZTV7S7177C8__A__8S7177C11__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C8__A1__8S7177C11__7S7177C1[4]),  4,10},
  {&(_tg__ZTV8S7177C12__8S7177C11__7S7177C1[5]),  5,18},
  {&(_tg__ZTV7S7177C48S7177C108S7177C12__A2__8S7177C11__7S7177C1[3]),  3,5},
  {&(_tg__ZTV7S7177C7__A__8S7177C11__7S7177C1[4]),  4,13},
  {&(_tg__ZTV7S7177C57S7177C87S7177C7__A2__8S7177C11__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C37S7177C7__8S7177C11__7S7177C1[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C7__A4__8S7177C11__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C6__8S7177C11__7S7177C1[12]),  12,19},
  {&(_tg__ZTV7S7177C7__A1__8S7177C11__7S7177C1[18]),  18,27},
  {&(_tg__ZTV7S7177C57S7177C87S7177C7__A5__8S7177C11__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C37S7177C7__A1__8S7177C11__7S7177C1[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C7__A7__8S7177C11__7S7177C1[4]),  4,10},
  {&(_ZTV7S7177C1[150]),  150,279},
  {&(_ZTV7S7177C1[184]),  184,279},
  {&(_ZTV7S7177C1[167]),  167,279},
  {&(_ZTV7S7177C1[184]),  184,279},
  {&(_ZTV7S7177C1[209]),  209,279},
  {&(_ZTV7S7177C1[222]),  222,279},
  {&(_ZTV7S7177C1[232]),  232,279},
  {&(_ZTV7S7177C1[246]),  246,279},
  {&(_ZTV7S7177C1[28]),  28,279},
  {&(_ZTV7S7177C1[263]),  263,279},
  {&(_ZTV7S7177C1[273]),  273,279},
  {&(_ZTV7S7177C1[44]),  44,279},
  {&(_ZTV7S7177C1[50]),  50,279},
  {&(_ZTV7S7177C1[60]),  60,279},
  {&(_ZTV7S7177C1[71]),  71,279},
  {&(_ZTV7S7177C1[87]),  87,279},
  {&(_ZTV7S7177C1[93]),  93,279},
  {&(_ZTV7S7177C1[106]),  106,279},
  {&(_ZTV7S7177C1[116]),  116,279},
  {&(_ZTV7S7177C1[130]),  130,279},
  {&(_tg__ZTV7S7177C3__7S7177C1[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C3__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C3__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C3__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C3__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__7S7177C3__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C1[3]),  3,5},
  {&(_tg__ZTV7S7177C2__7S7177C4__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C6__7S7177C1[7]),  7,14},
  {&(_tg__ZTV7S7177C7__7S7177C6__7S7177C1[18]),  18,27},
  {&(_tg__ZTV7S7177C6__7S7177C1[7]),  7,14},
  {&(_tg__ZTV7S7177C2__A1__7S7177C6__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C87S7177C7__7S7177C6__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C37S7177C7__7S7177C6__7S7177C1[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C7__A2__7S7177C6__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C7__7S7177C1[4]),  4,13},
  {&(_tg__ZTV7S7177C87S7177C7__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C87S7177C7__A1__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C87S7177C7__A1__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C87S7177C7__A1__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C87S7177C7__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C87S7177C7__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C87S7177C7__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C37S7177C7__A1__7S7177C1[4]),  4,14},
  {&(_tg__ZTV7S7177C57S7177C37S7177C7__A2__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C37S7177C7__A2__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C37S7177C7__A2__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C37S7177C7__A1__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__7S7177C37S7177C7__A1__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C7__A3__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C7__A3__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C7__A3__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C7__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C7__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C57S7177C8__7S7177C7__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C3__7S7177C7__7S7177C1[4]),  4,14},
  {&(_tg__ZTV7S7177C5__A2__7S7177C7__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C8__A1__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C57S7177C8__A4__7S7177C1[4]),  4,10},
  {&(_tg__ZTV7S7177C4__7S7177C57S7177C8__A4__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C57S7177C8__A4__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C4__7S7177C8__A1__7S7177C1[5]),  5,7},
  {&(_tg__ZTV7S7177C2__A1__7S7177C8__A1__7S7177C1[7]),  7,12},
  {&(_tg__ZTV7S7177C5__7S7177C8__A1__7S7177C1[4]),  4,10},
};
extern VTBL_ENTRY _ZTI7S7177C1[];
extern  VTBL_ENTRY _ZTV7S7177C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7177C1[];
Class_Descriptor cd_S7177C1 = {  "S7177C1", // class name
  bases_S7177C1, 43,
  &(vtc_S7177C1[0]), // expected_vtbl_contents
  &(vtt_S7177C1[0]), // expected_vtt_contents
  ABISELECT(1024,744), // object size
  NSPAIRA(_ZTI7S7177C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7177C1),279, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7177C1),135, //virtual table table var
  43, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21160C2  : virtual S19674C5 {
  virtual void  v1(); // _ZN8S21160C22v1Ev
  ~S21160C2(); // tgen
  S21160C2(); // tgen
};
//SIG(-1 S21160C2) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1}


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

static void Test_S21160C2()
{
  extern Class_Descriptor cd_S21160C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S21160C2, buf);
    S21160C2 *dp, &lv = *(dp=new (buf) S21160C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S21160C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21160C2)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(8,4), "S21160C2");
    test_class_info(&lv, &cd_S21160C2);
    dp->~S21160C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21160C2(Test_S21160C2, "S21160C2", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S21160C2C1Ev();
extern void _ZN8S21160C2D1Ev();
Name_Map name_map_S21160C2[] = {
  NSPAIR(_ZN8S21160C2C1Ev),
  NSPAIR(_ZN8S21160C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21160C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21160C2[];
extern void _ZN8S21160C22v1Ev();
extern void _ZN8S21160C2D1Ev();
extern void _ZN8S21160C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21160C2D1Ev,_ZTv0_n12_N8S21160C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21160C2D1Ev,_ZThn4_N8S21160C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C2D0Ev,_ZTv0_n12_N8S21160C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21160C2D0Ev,_ZThn4_N8S21160C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21160C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C2[0]),
  (VTBL_ENTRY)&_ZN8S21160C22v1Ev,
  (VTBL_ENTRY)&_ZN8S21160C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21160C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C2D1Ev,_ZTv0_n12_N8S21160C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C2D0Ev,_ZTv0_n12_N8S21160C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21160C2[];
static  VTT_ENTRY vtt_S21160C2[] = {
  {&(_ZTV8S21160C2[3]),  3,11},
  {&(_ZTV8S21160C2[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21160C2[];
extern  VTBL_ENTRY _ZTV8S21160C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C2[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C2D0Ev,_ZTv0_n12_N8S21160C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21160C2D0Ev,_ZThn4_N8S21160C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C2D1Ev,_ZTv0_n12_N8S21160C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21160C2D1Ev,_ZThn4_N8S21160C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21160C2 = {  "S21160C2", // class name
  bases_S21160C2, 1,
  &(vtc_S21160C2[0]), // expected_vtbl_contents
  &(vtt_S21160C2[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S21160C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21160C2),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21160C2),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  S21160C8  : virtual S19674C5 , S19674C7 {
  short s21160c8f0[6];
  __tsi64 s21160c8f1[3];
  ::S19674C9 s21160c8f2;
  ~S21160C8(); // tgen
  S21160C8(); // tgen
};
//SIG(-1 S21160C8) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ m Fp[14]} Fs[6] FL[3] FU4{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}}


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

static void Test_S21160C8()
{
  extern Class_Descriptor cd_S21160C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,51)];
    init_test(&cd_S21160C8, buf);
    S21160C8 *dp, &lv = *(dp=new (buf) S21160C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,200), "sizeof(S21160C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21160C8)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(192,112), "S21160C8");
    check_base_class_offset(lv, (S19674C7*), ABISELECT(8,4), "S21160C8");
    check_field_offset(lv, s21160c8f0, ABISELECT(120,60), "S21160C8.s21160c8f0");
    check_field_offset(lv, s21160c8f1, ABISELECT(136,72), "S21160C8.s21160c8f1");
    check_field_offset(lv, s21160c8f2, ABISELECT(160,96), "S21160C8.s21160c8f2");
    test_class_info(&lv, &cd_S21160C8);
    dp->~S21160C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21160C8(Test_S21160C8, "S21160C8", ABISELECT(312,200));

#else // __cplusplus

extern void _ZN8S21160C8C1Ev();
extern void _ZN8S21160C8D1Ev();
Name_Map name_map_S21160C8[] = {
  NSPAIR(_ZN8S21160C8C1Ev),
  NSPAIR(_ZN8S21160C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
static Base_Class bases_S21160C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(192,112), //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},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21160C8[];
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn192_N8S21160C8D1Ev,_ZThn112_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn192_N8S21160C8D0Ev,_ZThn112_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21160C8[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21160C8[];
static  VTT_ENTRY vtt_S21160C8[] = {
  {&(_ZTV8S21160C8[3]),  3,10},
  {&(_ZTV8S21160C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21160C8D0Ev,_ZThn112_N8S21160C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21160C8D1Ev,_ZThn112_N8S21160C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21160C8 = {  "S21160C8", // class name
  bases_S21160C8, 2,
  &(vtc_S21160C8[0]), // expected_vtbl_contents
  &(vtt_S21160C8[0]), // expected_vtt_contents
  ABISELECT(312,200), // object size
  NSPAIRA(_ZTI8S21160C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21160C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21160C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21160C7  : virtual S19674C5 , virtual S19674C7 , S21160C8 {
  ::S21160C8 s21160c7f0;
  long double s21160c7f1[7];
  ::S21160C8 s21160c7f2;
  __tsi64 s21160c7f3;
  void *s21160c7f4[5];
  virtual void  v2(); // _ZN8S21160C72v2Ev
  virtual void  v3(); // _ZN8S21160C72v3Ev
  ~S21160C7(); // tgen
  S21160C7(); // tgen
};
//SIG(-1 S21160C7) C1{ VBC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC3{ m Fp[14]} BC4{ VBC2 BC3 Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC4 FD[7] FC4 FL Fp[5]}


void  S21160C7 ::v2(){vfunc_called(this, "_ZN8S21160C72v2Ev");}
void  S21160C7 ::v3(){vfunc_called(this, "_ZN8S21160C72v3Ev");}
S21160C7 ::~S21160C7(){ note_dtor("S21160C7", this);} // tgen
S21160C7 ::S21160C7(){ note_ctor("S21160C7", this);} // tgen

static void Test_S21160C7()
{
  extern Class_Descriptor cd_S21160C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,193)];
    init_test(&cd_S21160C7, buf);
    S21160C7 *dp, &lv = *(dp=new (buf) S21160C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,768), "sizeof(S21160C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21160C7)");
    check_base_class_offset(lv, (S19674C5*), ABISELECT(984,624), "S21160C7");
    check_base_class_offset(lv, (S19674C5*)(S21160C8*), ABISELECT(984,624), "S21160C7");
    /*is_ambiguous_... S21160C7::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(1104,712), "S21160C7");
    check_base_class_offset(lv, (S19674C7*)(S21160C8*), ABISELECT(8,4), "S21160C7");
    check_base_class_offset(lv, (S21160C8*), 0, "S21160C7");
    check_field_offset(lv, s21160c7f0, ABISELECT(192,112), "S21160C7.s21160c7f0");
    check_field_offset(lv, s21160c7f1, ABISELECT(512,312), "S21160C7.s21160c7f1");
    check_field_offset(lv, s21160c7f2, ABISELECT(624,396), "S21160C7.s21160c7f2");
    check_field_offset(lv, s21160c7f3, ABISELECT(936,596), "S21160C7.s21160c7f3");
    check_field_offset(lv, s21160c7f4, ABISELECT(944,604), "S21160C7.s21160c7f4");
    test_class_info(&lv, &cd_S21160C7);
    dp->~S21160C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21160C7(Test_S21160C7, "S21160C7", ABISELECT(1216,768));

#else // __cplusplus

extern void _ZN8S21160C7C1Ev();
extern void _ZN8S21160C7D1Ev();
Name_Map name_map_S21160C7[] = {
  NSPAIR(_ZN8S21160C7C1Ev),
  NSPAIR(_ZN8S21160C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
static Base_Class bases_S21160C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(984,624), //bcp->offset
    8, //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_S19674C7,    ABISELECT(1104,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21160C8,    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 _ZTI8S21160C7[];
extern void _ZN8S21160C7D1Ev();
extern void _ZN8S21160C7D0Ev();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
extern void ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev)();
extern void ABISELECT(_ZThn984_N8S21160C7D1Ev,_ZThn624_N8S21160C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev)();
extern void ABISELECT(_ZThn984_N8S21160C7D0Ev,_ZThn624_N8S21160C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21160C7[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&_ZN8S21160C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S21160C7[];
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C8__8S21160C7[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S21160C8D1Ev,_ZThn624_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S21160C8D0Ev,_ZThn624_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C8__8S21160C7[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
static  VTT_ENTRY vtt_S21160C7[] = {
  {&(_ZTV8S21160C7[4]),  4,13},
  {&(_tg__ZTV8S21160C8__8S21160C7[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C8__8S21160C7[3]),  3,5},
  {&(_ZTV8S21160C7[11]),  11,13},
};
extern VTBL_ENTRY _ZTI8S21160C7[];
extern  VTBL_ENTRY _ZTV8S21160C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C7[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C8D0Ev,_ZThn624_N8S21160C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C8D1Ev,_ZThn624_N8S21160C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C7D0Ev,_ZThn624_N8S21160C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C7D1Ev,_ZThn624_N8S21160C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21160C7 = {  "S21160C7", // class name
  bases_S21160C7, 4,
  &(vtc_S21160C7[0]), // expected_vtbl_contents
  &(vtt_S21160C7[0]), // expected_vtt_contents
  ABISELECT(1216,768), // object size
  NSPAIRA(_ZTI8S21160C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21160C7),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21160C7),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21160C6  : virtual S21160C7 , S19674C7 , S21160C8 {
  int s21160c6f0;
  int s21160c6f1;
  int s21160c6f2:28;
  int s21160c6f3;
  long s21160c6f4;
  ~S21160C6(); // tgen
  S21160C6(); // tgen
};
//SIG(-1 S21160C6) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC4{ m Fp[14]} BC5{ VBC3 BC4 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC5 FD[7] FC5 FL Fp[5]} BC4 BC5 Fi Fi Fi:28 Fi Fl}


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

static void Test_S21160C6()
{
  extern Class_Descriptor cd_S21160C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,240)];
    init_test(&cd_S21160C6, buf);
    S21160C6 *dp, &lv = *(dp=new (buf) S21160C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,956), "sizeof(S21160C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21160C6)");
    check_base_class_offset(lv, (S19674C5*)(S21160C7*), ABISELECT(1320,812), "S21160C6");
    check_base_class_offset(lv, (S19674C5*)(S21160C8*)(S21160C7*), ABISELECT(1320,812), "S21160C6");
    /*is_ambiguous_... S21160C6::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*), ABISELECT(1320,812), "S21160C6");
    /*is_ambiguous_... S21160C7::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C7*), ABISELECT(1440,900), "S21160C6");
    check_base_class_offset(lv, (S19674C7*)(S21160C8*)(S21160C7*), ABISELECT(344,192), "S21160C6");
    check_base_class_offset(lv, (S21160C8*)(S21160C7*), ABISELECT(336,188), "S21160C6");
    check_base_class_offset(lv, (S21160C7*), ABISELECT(336,188), "S21160C6");
    /*is_ambiguous_... S21160C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(192,112), "S21160C6");
    /*is_ambiguous_... S21160C6::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*), ABISELECT(8,4), "S21160C6");
    /*is_ambiguous_... S21160C6::S21160C8 */ AMB_check_base_class_offset(lv, (S21160C8*), 0, "S21160C6");
    check_field_offset(lv, s21160c6f0, ABISELECT(304,168), "S21160C6.s21160c6f0");
    check_field_offset(lv, s21160c6f1, ABISELECT(308,172), "S21160C6.s21160c6f1");
    set_bf_and_test(lv, s21160c6f2, ABISELECT(312,176), 0, 28, 1, "S21160C6");
    set_bf_and_test(lv, s21160c6f2, ABISELECT(312,176), 0, 28, hide_sll(1LL<<27), "S21160C6");
    check_field_offset(lv, s21160c6f3, ABISELECT(316,180), "S21160C6.s21160c6f3");
    check_field_offset(lv, s21160c6f4, ABISELECT(320,184), "S21160C6.s21160c6f4");
    test_class_info(&lv, &cd_S21160C6);
    dp->~S21160C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21160C6(Test_S21160C6, "S21160C6", ABISELECT(1552,956));

#else // __cplusplus

extern void _ZN8S21160C6C1Ev();
extern void _ZN8S21160C6D1Ev();
Name_Map name_map_S21160C6[] = {
  NSPAIR(_ZN8S21160C6C1Ev),
  NSPAIR(_ZN8S21160C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S21160C7;
extern VTBL_ENTRY _ZTI8S21160C7[];
extern  VTBL_ENTRY _ZTV8S21160C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
static Base_Class bases_S21160C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(1320,812), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1440,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(344,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
    3, //immediately_derived
  0, 0},
  {&cd_S21160C8,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21160C7,    ABISELECT(336,188), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21160C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21160C6[];
extern void _ZN8S21160C6D1Ev();
extern void _ZN8S21160C6D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S21160C6D1Ev,_ZTv0_n20_N8S21160C6D1Ev)();
extern void ABISELECT(_ZThn336_N8S21160C6D1Ev,_ZThn188_N8S21160C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21160C6D0Ev,_ZTv0_n20_N8S21160C6D0Ev)();
extern void ABISELECT(_ZThn336_N8S21160C6D0Ev,_ZThn188_N8S21160C6D0Ev)() __attribute__((weak));
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
extern void ABISELECT(_ZTv0_n24_N8S21160C6D1Ev,_ZTv0_n12_N8S21160C6D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21160C6D1Ev,_ZThn812_N8S21160C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C6D0Ev,_ZTv0_n12_N8S21160C6D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21160C6D0Ev,_ZThn812_N8S21160C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21160C6[] = {
  ABISELECT(1440,900),
  ABISELECT(336,188),
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C6[0]),
  (VTBL_ENTRY)&_ZN8S21160C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C6D0Ev,
  0,
  0,
  ABISELECT(-336,-188),
  ABISELECT(1104,712),
  ABISELECT(984,624),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21160C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C6D1Ev,_ZTv0_n20_N8S21160C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C6D0Ev,_ZTv0_n20_N8S21160C6D0Ev),
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21160C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C6D1Ev,_ZTv0_n12_N8S21160C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C6D0Ev,_ZTv0_n12_N8S21160C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21160C6[];
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C8__A1__8S21160C6[] = {
  ABISELECT(1320,812),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn1320_N8S21160C8D1Ev,_ZThn812_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn1320_N8S21160C8D0Ev,_ZThn812_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C8__A1__8S21160C6[] = {
  ABISELECT(-1320,-812),
  ABISELECT(-1320,-812),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void _ZN8S21160C7D1Ev();
extern void _ZN8S21160C7D0Ev();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C7__8S21160C6[] = {
  ABISELECT(1104,712),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&_ZN8S21160C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C88S21160C7__8S21160C6[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S21160C8D1Ev,_ZThn624_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S21160C8D0Ev,_ZThn624_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C88S21160C7__8S21160C6[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev)();
extern void ABISELECT(_ZThn984_N8S21160C7D1Ev,_ZThn624_N8S21160C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev)();
extern void ABISELECT(_ZThn984_N8S21160C7D0Ev,_ZThn624_N8S21160C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C7__8S21160C6[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev),
};
static  VTT_ENTRY vtt_S21160C6[] = {
  {&(_ZTV8S21160C6[5]),  5,23},
  {&(_tg__ZTV8S21160C8__A1__8S21160C6[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C8__A1__8S21160C6[3]),  3,5},
  {&(_ZTV8S21160C6[14]),  14,23},
  {&(_ZTV8S21160C6[21]),  21,23},
  {&(_tg__ZTV8S21160C7__8S21160C6[4]),  4,8},
  {&(_tg__ZTV8S21160C88S21160C7__8S21160C6[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C88S21160C7__8S21160C6[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C7__8S21160C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21160C6[];
extern  VTBL_ENTRY _ZTV8S21160C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C6[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C7D0Ev,_ZThn624_N8S21160C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C7D1Ev,_ZThn624_N8S21160C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C8D0Ev,_ZThn624_N8S21160C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21160C8D0Ev,_ZThn812_N8S21160C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C8D1Ev,_ZThn624_N8S21160C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21160C8D1Ev,_ZThn812_N8S21160C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C6D0Ev,_ZTv0_n12_N8S21160C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21160C6D0Ev,_ZThn812_N8S21160C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C6D1Ev,_ZTv0_n12_N8S21160C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1320_N8S21160C6D1Ev,_ZThn812_N8S21160C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C6D0Ev,_ZTv0_n20_N8S21160C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21160C6D0Ev,_ZThn188_N8S21160C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C6D1Ev,_ZTv0_n20_N8S21160C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21160C6D1Ev,_ZThn188_N8S21160C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21160C6 = {  "S21160C6", // class name
  bases_S21160C6, 8,
  &(vtc_S21160C6[0]), // expected_vtbl_contents
  &(vtt_S21160C6[0]), // expected_vtt_contents
  ABISELECT(1552,956), // object size
  NSPAIRA(_ZTI8S21160C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21160C6),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21160C6),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21160C4  : virtual S19674C7 , S21160C6 , S21160C7 , virtual S21160C8 , virtual S21160C2 {
  int s21160c4f0;
  int s21160c4f1;
  int s21160c4f2;
  long double s21160c4f3;
  void *s21160c4f4;
  void *s21160c4f5;
  ::S21160C8 s21160c4f6;
  void *s21160c4f7;
  ::S21160C7 s21160c4f8;
  int s21160c4f9;
  void *s21160c4f10;
  int s21160c4f11;
  ::S19674C5 s21160c4f12[8];
  virtual  ~S21160C4(); // _ZN8S21160C4D2Ev
  S21160C4(); // tgen
};
//SIG(-1 S21160C4) C1{ VBC2{ m Fp[14]} BC3{ VBC4{ VBC5{ vd m FL[7] Fs Fp[3] Fi Fl Fp} VBC2 BC6{ VBC5 BC2 Fs[6] FL[3] FU7{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v1 v2 FC6 FD[7] FC6 FL Fp[5]} BC2 BC6 Fi Fi Fi:28 Fi Fl} BC4 VBC6 VBC8{ VBC5 v3} vd Fi Fi Fi FD Fp Fp FC6 Fp FC4 Fi Fp Fi FC5[8]}


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

static void Test_S21160C4()
{
  extern Class_Descriptor cd_S21160C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(334,855)];
    init_test(&cd_S21160C4, buf);
    S21160C4 *dp, &lv = *(dp=new (buf) S21160C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5328,3416), "sizeof(S21160C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21160C4)");
    /*is_ambiguous_... S21160C4::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(3896,2532), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C7*), ABISELECT(3896,2532), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C7*), ABISELECT(3896,2532), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C7*), ABISELECT(5000,3212), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*)(S21160C7*), ABISELECT(5000,3212), "S21160C4");
    /*is_ambiguous_... S21160C6::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*)(S21160C6*), ABISELECT(5000,3212), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C7*), ABISELECT(5000,3212), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*)(S21160C7*), ABISELECT(5000,3212), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*), ABISELECT(5000,3212), "S21160C4");
    check_base_class_offset(lv, (S19674C5*)(S21160C2*), ABISELECT(5000,3212), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*)(S21160C7*), ABISELECT(4024,2592), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S21160C8*)(S21160C7*), ABISELECT(4016,2588), "S21160C4");
    check_base_class_offset(lv, (S21160C7*)(S21160C6*), ABISELECT(4016,2588), "S21160C4");
    /*is_ambiguous_... S21160C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C6*), ABISELECT(192,112), "S21160C4");
    /*is_ambiguous_... S21160C6::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*)(S21160C6*), ABISELECT(8,4), "S21160C4");
    /*is_ambiguous_... S21160C6::S21160C8 */ AMB_check_base_class_offset(lv, (S21160C8*)(S21160C6*), 0, "S21160C4");
    check_base_class_offset(lv, (S21160C6*), 0, "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*)(S21160C7*), ABISELECT(344,192), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S21160C8*)(S21160C7*), ABISELECT(336,188), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S21160C7*), ABISELECT(336,188), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*), ABISELECT(5128,3304), "S21160C4");
    /*is_ambiguous_... S21160C4::S21160C8 */ AMB_check_base_class_offset(lv, (S21160C8*), ABISELECT(5120,3300), "S21160C4");
    check_base_class_offset(lv, (S21160C2*), ABISELECT(5312,3412), "S21160C4");
    check_field_offset(lv, s21160c4f0, ABISELECT(1320,812), "S21160C4.s21160c4f0");
    check_field_offset(lv, s21160c4f1, ABISELECT(1324,816), "S21160C4.s21160c4f1");
    check_field_offset(lv, s21160c4f2, ABISELECT(1328,820), "S21160C4.s21160c4f2");
    check_field_offset(lv, s21160c4f3, ABISELECT(1344,824), "S21160C4.s21160c4f3");
    check_field_offset(lv, s21160c4f4, ABISELECT(1360,836), "S21160C4.s21160c4f4");
    check_field_offset(lv, s21160c4f5, ABISELECT(1368,840), "S21160C4.s21160c4f5");
    check_field_offset(lv, s21160c4f6, ABISELECT(1376,844), "S21160C4.s21160c4f6");
    check_field_offset(lv, s21160c4f7, ABISELECT(1688,1044), "S21160C4.s21160c4f7");
    check_field_offset(lv, s21160c4f8, ABISELECT(1696,1048), "S21160C4.s21160c4f8");
    check_field_offset(lv, s21160c4f9, ABISELECT(2912,1816), "S21160C4.s21160c4f9");
    check_field_offset(lv, s21160c4f10, ABISELECT(2920,1820), "S21160C4.s21160c4f10");
    check_field_offset(lv, s21160c4f11, ABISELECT(2928,1824), "S21160C4.s21160c4f11");
    check_field_offset(lv, s21160c4f12, ABISELECT(2936,1828), "S21160C4.s21160c4f12");
    test_class_info(&lv, &cd_S21160C4);
    dp->~S21160C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21160C4(Test_S21160C4, "S21160C4", ABISELECT(5328,3416));

#else // __cplusplus

extern void _ZN8S21160C4C1Ev();
extern void _ZN8S21160C4D2Ev();
Name_Map name_map_S21160C4[] = {
  NSPAIR(_ZN8S21160C4C1Ev),
  NSPAIR(_ZN8S21160C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S21160C7;
extern VTBL_ENTRY _ZTI8S21160C7[];
extern  VTBL_ENTRY _ZTV8S21160C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S21160C6;
extern VTBL_ENTRY _ZTI8S21160C6[];
extern  VTBL_ENTRY _ZTV8S21160C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S21160C7;
extern VTBL_ENTRY _ZTI8S21160C7[];
extern  VTBL_ENTRY _ZTV8S21160C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S21160C2;
extern VTBL_ENTRY _ZTI8S21160C2[];
extern  VTBL_ENTRY _ZTV8S21160C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C2[];
static Base_Class bases_S21160C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C7,    ABISELECT(3896,2532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    ABISELECT(5000,3212), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(4024,2592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21160C8,    ABISELECT(4016,2588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21160C7,    ABISELECT(4016,2588), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(192,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
    8, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21160C8,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21160C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(344,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21160C8,    ABISELECT(336,188), //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
    11, //immediately_derived
  0, 0},
  {&cd_S21160C7,    ABISELECT(336,188), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(5128,3304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21160C8,    ABISELECT(5120,3300), //bcp->offset
    33, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21160C2,    ABISELECT(5312,3412), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21160C4[];
extern void _ZN8S21160C4D1Ev();
extern void _ZN8S21160C4D0Ev();
extern void ABISELECT(_ZThn336_N8S21160C4D1Ev,_ZThn188_N8S21160C4D1Ev)();
extern void ABISELECT(_ZThn336_N8S21160C4D0Ev,_ZThn188_N8S21160C4D0Ev)();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21160C4D1Ev,_ZTv0_n20_N8S21160C4D1Ev)();
extern void ABISELECT(_ZThn4016_N8S21160C4D1Ev,_ZThn2588_N8S21160C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21160C4D0Ev,_ZTv0_n20_N8S21160C4D0Ev)();
extern void ABISELECT(_ZThn4016_N8S21160C4D0Ev,_ZThn2588_N8S21160C4D0Ev)() __attribute__((weak));
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
extern void ABISELECT(_ZTv0_n24_N8S21160C4D1Ev,_ZTv0_n12_N8S21160C4D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21160C4D1Ev,_ZThn3212_N8S21160C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C4D0Ev,_ZTv0_n12_N8S21160C4D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21160C4D0Ev,_ZThn3212_N8S21160C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21160C4D1Ev,_ZTv0_n16_N8S21160C4D1Ev)();
extern void ABISELECT(_ZThn5120_N8S21160C4D1Ev,_ZThn3300_N8S21160C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21160C4D0Ev,_ZTv0_n16_N8S21160C4D0Ev)();
extern void ABISELECT(_ZThn5120_N8S21160C4D0Ev,_ZThn3300_N8S21160C4D0Ev)() __attribute__((weak));
extern void _ZN8S21160C22v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S21160C4D1Ev,_ZTv0_n20_N8S21160C4D1Ev)();
extern void ABISELECT(_ZThn5312_N8S21160C4D1Ev,_ZThn3412_N8S21160C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21160C4D0Ev,_ZTv0_n20_N8S21160C4D0Ev)();
extern void ABISELECT(_ZThn5312_N8S21160C4D0Ev,_ZThn3412_N8S21160C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21160C4[] = {
  ABISELECT(5312,3412),
  ABISELECT(5120,3300),
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&_ZN8S21160C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C4D0Ev,
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21160C4D1Ev,_ZThn188_N8S21160C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21160C4D0Ev,_ZThn188_N8S21160C4D0Ev),
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C4D1Ev,_ZTv0_n20_N8S21160C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C4D0Ev,_ZTv0_n20_N8S21160C4D0Ev),
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C4D1Ev,_ZTv0_n12_N8S21160C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C4D0Ev,_ZTv0_n12_N8S21160C4D0Ev),
  ABISELECT(-5120,-3300),
  ABISELECT(-120,-88),
  ABISELECT(-5120,-3300),
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21160C4D1Ev,_ZTv0_n16_N8S21160C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21160C4D0Ev,_ZTv0_n16_N8S21160C4D0Ev),
  ABISELECT(-5312,-3412),
  0,
  ABISELECT(-312,-200),
  ABISELECT(-5312,-3412),
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&_ZN8S21160C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C4D1Ev,_ZTv0_n20_N8S21160C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C4D0Ev,_ZTv0_n20_N8S21160C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21160C4[];
extern void _ZN8S21160C6D1Ev();
extern void _ZN8S21160C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C6__8S21160C4[] = {
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C6[0]),
  (VTBL_ENTRY)&_ZN8S21160C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C6D0Ev,
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C88S21160C6__A1__8S21160C4[] = {
  ABISELECT(5000,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21160C8D1Ev,_ZThn3212_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21160C8D0Ev,_ZThn3212_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C88S21160C6__A1__8S21160C4[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21160C6D1Ev,_ZTv0_n20_N8S21160C6D1Ev)();
extern void ABISELECT(_ZThn4016_N8S21160C6D1Ev,_ZThn2588_N8S21160C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21160C6D0Ev,_ZTv0_n20_N8S21160C6D0Ev)();
extern void ABISELECT(_ZThn4016_N8S21160C6D0Ev,_ZThn2588_N8S21160C6D0Ev)() __attribute__((weak));
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C7__8S21160C6__8S21160C4[] = {
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI8S21160C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C6D1Ev,_ZTv0_n20_N8S21160C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C6D0Ev,_ZTv0_n20_N8S21160C6D0Ev),
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C6D1Ev,_ZTv0_n12_N8S21160C6D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21160C6D1Ev,_ZThn3212_N8S21160C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C6D0Ev,_ZTv0_n12_N8S21160C6D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21160C6D0Ev,_ZThn3212_N8S21160C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C6__8S21160C4[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21160C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C6D1Ev,_ZTv0_n12_N8S21160C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C6D0Ev,_ZTv0_n12_N8S21160C6D0Ev),
};
extern void _ZN8S21160C7D1Ev();
extern void _ZN8S21160C7D0Ev();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C7__A__8S21160C4[] = {
  ABISELECT(3560,2344),
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&_ZN8S21160C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C88S21160C7__A2__8S21160C4[] = {
  ABISELECT(4664,3024),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn4664_N8S21160C8D1Ev,_ZThn3024_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn4664_N8S21160C8D0Ev,_ZThn3024_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C88S21160C7__A2__8S21160C4[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev)();
extern void ABISELECT(_ZThn4664_N8S21160C7D1Ev,_ZThn3024_N8S21160C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev)();
extern void ABISELECT(_ZThn4664_N8S21160C7D0Ev,_ZThn3024_N8S21160C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C7__A__8S21160C4[] = {
  ABISELECT(-4664,-3024),
  ABISELECT(-4664,-3024),
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev),
};
extern void _ZN8S21160C7D1Ev();
extern void _ZN8S21160C7D0Ev();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C7__8S21160C4[] = {
  ABISELECT(-120,-56),
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&_ZN8S21160C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C88S21160C7__8S21160C4[] = {
  ABISELECT(984,624),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn984_N8S21160C8D1Ev,_ZThn624_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn984_N8S21160C8D0Ev,_ZThn624_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C88S21160C7__8S21160C4[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev)();
extern void ABISELECT(_ZThn984_N8S21160C7D1Ev,_ZThn624_N8S21160C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev)();
extern void ABISELECT(_ZThn984_N8S21160C7D0Ev,_ZThn624_N8S21160C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C7__8S21160C4[] = {
  ABISELECT(-984,-624),
  ABISELECT(-984,-624),
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev),
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C8__A3__8S21160C4[] = {
  ABISELECT(-120,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C8__A3__8S21160C4[] = {
  ABISELECT(120,88),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void _ZN8S21160C22v1Ev();
extern void _ZN8S21160C2D1Ev();
extern void _ZN8S21160C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C2__8S21160C4[] = {
  ABISELECT(-312,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C2[0]),
  (VTBL_ENTRY)&_ZN8S21160C22v1Ev,
  (VTBL_ENTRY)&_ZN8S21160C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C2D1Ev,_ZTv0_n12_N8S21160C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21160C2D0Ev,_ZTv0_n12_N8S21160C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C2__8S21160C4[] = {
  ABISELECT(312,200),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI8S21160C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C2D1Ev,_ZTv0_n12_N8S21160C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C2D0Ev,_ZTv0_n12_N8S21160C2D0Ev),
};
static  VTT_ENTRY vtt_S21160C4[] = {
  {&(_ZTV8S21160C4[7]),  7,47},
  {&(_tg__ZTV8S21160C6__8S21160C4[5]),  5,7},
  {&(_tg__ZTV8S21160C88S21160C6__A1__8S21160C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C88S21160C6__A1__8S21160C4[3]),  3,5},
  {&(_tg__ZTV8S21160C7__8S21160C6__8S21160C4[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21160C6__8S21160C4[3]),  3,5},
  {&(_tg__ZTV8S21160C7__A__8S21160C4[4]),  4,8},
  {&(_tg__ZTV8S21160C88S21160C7__A2__8S21160C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C88S21160C7__A2__8S21160C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C7__A__8S21160C4[3]),  3,5},
  {&(_ZTV8S21160C4[24]),  24,47},
  {&(_ZTV8S21160C4[31]),  31,47},
  {&(_ZTV8S21160C4[13]),  13,47},
  {&(_ZTV8S21160C4[37]),  37,47},
  {&(_ZTV8S21160C4[44]),  44,47},
  {&(_tg__ZTV8S21160C7__8S21160C4[4]),  4,8},
  {&(_tg__ZTV8S21160C88S21160C7__8S21160C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C88S21160C7__8S21160C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C7__8S21160C4[3]),  3,5},
  {&(_tg__ZTV8S21160C8__A3__8S21160C4[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C8__A3__8S21160C4[3]),  3,5},
  {&(_tg__ZTV8S21160C2__8S21160C4[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21160C2__8S21160C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21160C4[];
extern  VTBL_ENTRY _ZTV8S21160C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C4[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C7D0Ev,_ZThn624_N8S21160C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21160C7D0Ev,_ZThn3024_N8S21160C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C7D1Ev,_ZThn624_N8S21160C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21160C7D1Ev,_ZThn3024_N8S21160C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C6D0Ev,_ZTv0_n12_N8S21160C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21160C6D0Ev,_ZThn3212_N8S21160C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C6D1Ev,_ZTv0_n12_N8S21160C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21160C6D1Ev,_ZThn3212_N8S21160C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C6D0Ev,_ZTv0_n20_N8S21160C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21160C6D0Ev,_ZThn2588_N8S21160C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C6D1Ev,_ZTv0_n20_N8S21160C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21160C6D1Ev,_ZThn2588_N8S21160C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C8D0Ev,_ZThn624_N8S21160C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21160C8D0Ev,_ZThn3024_N8S21160C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21160C8D0Ev,_ZThn3212_N8S21160C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N8S21160C8D1Ev,_ZThn624_N8S21160C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4664_N8S21160C8D1Ev,_ZThn3024_N8S21160C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21160C8D1Ev,_ZThn3212_N8S21160C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21160C4D0Ev,_ZTv0_n16_N8S21160C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N8S21160C4D0Ev,_ZThn3300_N8S21160C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21160C4D1Ev,_ZTv0_n16_N8S21160C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5120_N8S21160C4D1Ev,_ZThn3300_N8S21160C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C4D0Ev,_ZTv0_n12_N8S21160C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21160C4D0Ev,_ZThn3212_N8S21160C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C4D1Ev,_ZTv0_n12_N8S21160C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21160C4D1Ev,_ZThn3212_N8S21160C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C4D0Ev,_ZTv0_n20_N8S21160C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N8S21160C4D0Ev,_ZThn3412_N8S21160C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21160C4D0Ev,_ZThn2588_N8S21160C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C4D1Ev,_ZTv0_n20_N8S21160C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5312_N8S21160C4D1Ev,_ZThn3412_N8S21160C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21160C4D1Ev,_ZThn2588_N8S21160C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21160C4 = {  "S21160C4", // class name
  bases_S21160C4, 15,
  &(vtc_S21160C4[0]), // expected_vtbl_contents
  &(vtt_S21160C4[0]), // expected_vtt_contents
  ABISELECT(5328,3416), // object size
  NSPAIRA(_ZTI8S21160C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21160C4),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21160C4),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21160C11  : virtual S21160C8 , S19674C5 {
  char s21160c11f0:6;
  char s21160c11f1[8];
  long double s21160c11f2;
  ::S19674C7 s21160c11f3;
  ::S19674C7 s21160c11f4;
  ~S21160C11(); // tgen
  S21160C11(); // tgen
};
//SIG(-1 S21160C11) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC4{ m Fp[14]} Fs[6] FL[3] FU5{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC3 Fc:6 Fc[8] FD FC4 FC4}


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

static void Test_S21160C11()
{
  extern Class_Descriptor cd_S21160C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,107)];
    init_test(&cd_S21160C11, buf);
    S21160C11 *dp, &lv = *(dp=new (buf) S21160C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,424), "sizeof(S21160C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21160C11)");
    check_base_class_offset(lv, (S19674C5*)(S21160C8*), ABISELECT(576,336), "S21160C11");
    check_base_class_offset(lv, (S19674C7*)(S21160C8*), ABISELECT(392,228), "S21160C11");
    check_base_class_offset(lv, (S21160C8*), ABISELECT(384,224), "S21160C11");
    /*is_ambiguous_... S21160C11::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), 0, "S21160C11");
    set_bf_and_test(lv, s21160c11f0, ABISELECT(120,88), 0, 6, 1, "S21160C11");
    set_bf_and_test(lv, s21160c11f0, ABISELECT(120,88), 0, 6, hide_sll(1LL<<5), "S21160C11");
    check_field_offset(lv, s21160c11f1, ABISELECT(121,89), "S21160C11.s21160c11f1");
    check_field_offset(lv, s21160c11f2, ABISELECT(144,100), "S21160C11.s21160c11f2");
    check_field_offset(lv, s21160c11f3, ABISELECT(160,112), "S21160C11.s21160c11f3");
    check_field_offset(lv, s21160c11f4, ABISELECT(272,168), "S21160C11.s21160c11f4");
    test_class_info(&lv, &cd_S21160C11);
    dp->~S21160C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21160C11(Test_S21160C11, "S21160C11", ABISELECT(704,424));

#else // __cplusplus

extern void _ZN9S21160C11C1Ev();
extern void _ZN9S21160C11D1Ev();
Name_Map name_map_S21160C11[] = {
  NSPAIR(_ZN9S21160C11C1Ev),
  NSPAIR(_ZN9S21160C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S21160C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(576,336), //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(392,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
    2, //immediately_derived
  0, 0},
  {&cd_S21160C8,    ABISELECT(384,224), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S21160C11[];
extern void _ZN9S21160C11D1Ev();
extern void _ZN9S21160C11D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S21160C11D1Ev,_ZTv0_n16_N9S21160C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S21160C11D1Ev,_ZThn224_N9S21160C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21160C11D0Ev,_ZTv0_n16_N9S21160C11D0Ev)();
extern void ABISELECT(_ZThn384_N9S21160C11D0Ev,_ZThn224_N9S21160C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21160C11D1Ev,_ZTv0_n12_N9S21160C11D1Ev)();
extern void ABISELECT(_ZThn576_N9S21160C11D1Ev,_ZThn336_N9S21160C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21160C11D0Ev,_ZTv0_n12_N9S21160C11D0Ev)();
extern void ABISELECT(_ZThn576_N9S21160C11D0Ev,_ZThn336_N9S21160C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21160C11[] = {
  ABISELECT(576,336),
  ABISELECT(384,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S21160C11[0]),
  (VTBL_ENTRY)&_ZN9S21160C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21160C11D0Ev,
  ABISELECT(-384,-224),
  ABISELECT(192,112),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21160C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21160C11D1Ev,_ZTv0_n16_N9S21160C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21160C11D0Ev,_ZTv0_n16_N9S21160C11D0Ev),
  ABISELECT(-576,-336),
  ABISELECT(-576,-336),
  (VTBL_ENTRY)&(_ZTI9S21160C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21160C11D1Ev,_ZTv0_n12_N9S21160C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21160C11D0Ev,_ZTv0_n12_N9S21160C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21160C11[];
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C8__9S21160C11[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn192_N8S21160C8D1Ev,_ZThn112_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn192_N8S21160C8D0Ev,_ZThn112_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C8__9S21160C11[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
static  VTT_ENTRY vtt_S21160C11[] = {
  {&(_ZTV9S21160C11[4]),  4,17},
  {&(_ZTV9S21160C11[10]),  10,17},
  {&(_ZTV9S21160C11[15]),  15,17},
  {&(_tg__ZTV8S21160C8__9S21160C11[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C8__9S21160C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21160C11[];
extern  VTBL_ENTRY _ZTV9S21160C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21160C11[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21160C8D0Ev,_ZThn112_N8S21160C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21160C8D1Ev,_ZThn112_N8S21160C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21160C11D0Ev,_ZTv0_n12_N9S21160C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21160C11D0Ev,_ZThn336_N9S21160C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21160C11D1Ev,_ZTv0_n12_N9S21160C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N9S21160C11D1Ev,_ZThn336_N9S21160C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21160C11D0Ev,_ZTv0_n16_N9S21160C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21160C11D0Ev,_ZThn224_N9S21160C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21160C11D1Ev,_ZTv0_n16_N9S21160C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21160C11D1Ev,_ZThn224_N9S21160C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21160C11 = {  "S21160C11", // class name
  bases_S21160C11, 4,
  &(vtc_S21160C11[0]), // expected_vtbl_contents
  &(vtt_S21160C11[0]), // expected_vtt_contents
  ABISELECT(704,424), // object size
  NSPAIRA(_ZTI9S21160C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21160C11),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21160C11),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21160C10  : S19674C5 , S19674C7 , S21160C11 {
  ::S19674C7 s21160c10f0;
  void *s21160c10f1;
  char s21160c10f2;
  char s21160c10f3;
  int s21160c10f4;
  ::S19674C7 s21160c10f5;
  void *s21160c10f6[4];
  ::S21160C2 s21160c10f7;
  int s21160c10f8;
  ~S21160C10(); // tgen
  S21160C10(); // tgen
};
//SIG(-1 S21160C10) C1{ BC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} BC3{ m Fp[14]} BC4{ VBC5{ VBC2 BC3 Fs[6] FL[3] FU6{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} BC2 Fc:6 Fc[8] FD FC3 FC3} FC3 Fp Fc Fc Fi FC3 Fp[4] FC7{ VBC2 v1} Fi}


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

static void Test_S21160C10()
{
  extern Class_Descriptor cd_S21160C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(85,202)];
    init_test(&cd_S21160C10, buf);
    S21160C10 *dp, &lv = *(dp=new (buf) S21160C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1344,804), "sizeof(S21160C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21160C10)");
    /*is_ambiguous_... S21160C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*), 0, "S21160C10");
    /*is_ambiguous_... S21160C10::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*), ABISELECT(120,88), "S21160C10");
    check_base_class_offset(lv, (S19674C5*)(S21160C8*), ABISELECT(1224,716), "S21160C10");
    check_base_class_offset(lv, (S19674C7*)(S21160C8*), ABISELECT(1040,608), "S21160C10");
    check_base_class_offset(lv, (S21160C8*)(S21160C11*), ABISELECT(1032,604), "S21160C10");
    /*is_ambiguous_... S21160C11::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C11*), ABISELECT(240,144), "S21160C10");
    check_base_class_offset(lv, (S21160C11*), ABISELECT(240,144), "S21160C10");
    check_field_offset(lv, s21160c10f0, ABISELECT(624,368), "S21160C10.s21160c10f0");
    check_field_offset(lv, s21160c10f1, ABISELECT(736,424), "S21160C10.s21160c10f1");
    check_field_offset(lv, s21160c10f2, ABISELECT(744,428), "S21160C10.s21160c10f2");
    check_field_offset(lv, s21160c10f3, ABISELECT(745,429), "S21160C10.s21160c10f3");
    check_field_offset(lv, s21160c10f4, ABISELECT(748,432), "S21160C10.s21160c10f4");
    check_field_offset(lv, s21160c10f5, ABISELECT(752,436), "S21160C10.s21160c10f5");
    check_field_offset(lv, s21160c10f6, ABISELECT(864,492), "S21160C10.s21160c10f6");
    check_field_offset(lv, s21160c10f7, ABISELECT(896,508), "S21160C10.s21160c10f7");
    check_field_offset(lv, s21160c10f8, ABISELECT(1024,600), "S21160C10.s21160c10f8");
    test_class_info(&lv, &cd_S21160C10);
    dp->~S21160C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21160C10(Test_S21160C10, "S21160C10", ABISELECT(1344,804));

#else // __cplusplus

extern void _ZN9S21160C10C1Ev();
extern void _ZN9S21160C10D1Ev();
Name_Map name_map_S21160C10[] = {
  NSPAIR(_ZN9S21160C10C1Ev),
  NSPAIR(_ZN9S21160C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21160C11;
extern VTBL_ENTRY _ZTI9S21160C11[];
extern  VTBL_ENTRY _ZTV9S21160C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21160C11[];
static Base_Class bases_S21160C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19674C7,    ABISELECT(120,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C5,    ABISELECT(1224,716), //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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(1040,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
    4, //immediately_derived
  0, 0},
  {&cd_S21160C8,    ABISELECT(1032,604), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19674C5,    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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21160C11,    ABISELECT(240,144), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21160C10[];
extern void _ZN9S21160C10D1Ev();
extern void _ZN9S21160C10D0Ev();
extern void ABISELECT(_ZThn240_N9S21160C10D1Ev,_ZThn144_N9S21160C10D1Ev)();
extern void ABISELECT(_ZThn240_N9S21160C10D0Ev,_ZThn144_N9S21160C10D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21160C10D1Ev,_ZTv0_n16_N9S21160C10D1Ev)();
extern void ABISELECT(_ZThn1032_N9S21160C10D1Ev,_ZThn604_N9S21160C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21160C10D0Ev,_ZTv0_n16_N9S21160C10D0Ev)();
extern void ABISELECT(_ZThn1032_N9S21160C10D0Ev,_ZThn604_N9S21160C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21160C10D1Ev,_ZTv0_n12_N9S21160C10D1Ev)();
extern void ABISELECT(_ZThn1224_N9S21160C10D1Ev,_ZThn716_N9S21160C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21160C10D0Ev,_ZTv0_n12_N9S21160C10D0Ev)();
extern void ABISELECT(_ZThn1224_N9S21160C10D0Ev,_ZThn716_N9S21160C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21160C10[] = {
  ABISELECT(1224,716),
  ABISELECT(1032,604),
  0,
  (VTBL_ENTRY)&(_ZTI9S21160C10[0]),
  (VTBL_ENTRY)&_ZN9S21160C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21160C10D0Ev,
  ABISELECT(984,572),
  ABISELECT(792,460),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI9S21160C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S21160C10D1Ev,_ZThn144_N9S21160C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S21160C10D0Ev,_ZThn144_N9S21160C10D0Ev),
  ABISELECT(-1032,-604),
  ABISELECT(192,112),
  ABISELECT(-1032,-604),
  (VTBL_ENTRY)&(_ZTI9S21160C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21160C10D1Ev,_ZTv0_n16_N9S21160C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21160C10D0Ev,_ZTv0_n16_N9S21160C10D0Ev),
  ABISELECT(-1224,-716),
  ABISELECT(-1224,-716),
  (VTBL_ENTRY)&(_ZTI9S21160C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21160C10D1Ev,_ZTv0_n12_N9S21160C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21160C10D0Ev,_ZTv0_n12_N9S21160C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S21160C10[];
extern void _ZN9S21160C11D1Ev();
extern void _ZN9S21160C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21160C11__9S21160C10[] = {
  ABISELECT(984,572),
  ABISELECT(792,460),
  0,
  (VTBL_ENTRY)&(_ZTI9S21160C11[0]),
  (VTBL_ENTRY)&_ZN9S21160C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21160C11D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21160C11D1Ev,_ZTv0_n16_N9S21160C11D1Ev)();
extern void ABISELECT(_ZThn792_N9S21160C11D1Ev,_ZThn460_N9S21160C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21160C11D0Ev,_ZTv0_n16_N9S21160C11D0Ev)();
extern void ABISELECT(_ZThn792_N9S21160C11D0Ev,_ZThn460_N9S21160C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21160C8__9S21160C11__9S21160C10[] = {
  ABISELECT(-792,-460),
  ABISELECT(192,112),
  ABISELECT(-792,-460),
  (VTBL_ENTRY)&(_ZTI9S21160C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21160C11D1Ev,_ZTv0_n16_N9S21160C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21160C11D0Ev,_ZTv0_n16_N9S21160C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21160C11D1Ev,_ZTv0_n12_N9S21160C11D1Ev)();
extern void ABISELECT(_ZThn984_N9S21160C11D1Ev,_ZThn572_N9S21160C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21160C11D0Ev,_ZTv0_n12_N9S21160C11D0Ev)();
extern void ABISELECT(_ZThn984_N9S21160C11D0Ev,_ZThn572_N9S21160C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21160C11__9S21160C10[] = {
  ABISELECT(-984,-572),
  ABISELECT(-984,-572),
  (VTBL_ENTRY)&(_ZTI9S21160C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21160C11D1Ev,_ZTv0_n12_N9S21160C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21160C11D0Ev,_ZTv0_n12_N9S21160C11D0Ev),
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C8__9S21160C10[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn192_N8S21160C8D1Ev,_ZThn112_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn192_N8S21160C8D0Ev,_ZThn112_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C8__9S21160C10[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
static  VTT_ENTRY vtt_S21160C10[] = {
  {&(_ZTV9S21160C10[4]),  4,23},
  {&(_tg__ZTV9S21160C11__9S21160C10[4]),  4,6},
  {&(_tg__ZTV8S21160C8__9S21160C11__9S21160C10[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21160C11__9S21160C10[3]),  3,5},
  {&(_ZTV9S21160C10[10]),  10,23},
  {&(_ZTV9S21160C10[16]),  16,23},
  {&(_ZTV9S21160C10[21]),  21,23},
  {&(_tg__ZTV8S21160C8__9S21160C10[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C8__9S21160C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21160C10[];
extern  VTBL_ENTRY _ZTV9S21160C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21160C10[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21160C8D0Ev,_ZThn112_N8S21160C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21160C8D1Ev,_ZThn112_N8S21160C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21160C11D0Ev,_ZTv0_n12_N9S21160C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21160C11D0Ev,_ZThn572_N9S21160C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21160C11D1Ev,_ZTv0_n12_N9S21160C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn984_N9S21160C11D1Ev,_ZThn572_N9S21160C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21160C11D0Ev,_ZTv0_n16_N9S21160C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21160C11D0Ev,_ZThn460_N9S21160C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21160C11D1Ev,_ZTv0_n16_N9S21160C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S21160C11D1Ev,_ZThn460_N9S21160C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21160C10D0Ev,_ZTv0_n12_N9S21160C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1224_N9S21160C10D0Ev,_ZThn716_N9S21160C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21160C10D1Ev,_ZTv0_n12_N9S21160C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1224_N9S21160C10D1Ev,_ZThn716_N9S21160C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21160C10D0Ev,_ZTv0_n16_N9S21160C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N9S21160C10D0Ev,_ZThn604_N9S21160C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21160C10D1Ev,_ZTv0_n16_N9S21160C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N9S21160C10D1Ev,_ZThn604_N9S21160C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21160C10 = {  "S21160C10", // class name
  bases_S21160C10, 7,
  &(vtc_S21160C10[0]), // expected_vtbl_contents
  &(vtt_S21160C10[0]), // expected_vtt_contents
  ABISELECT(1344,804), // object size
  NSPAIRA(_ZTI9S21160C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21160C10),23, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21160C10),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21160C1  : virtual S21160C2 , virtual S21160C4 , S21160C10 , S21160C8 , S21160C7 {
  virtual  ~S21160C1(); // _ZN8S21160C1D2Ev
  S21160C1(); // tgen
};
//SIG(1 S21160C1) C1{ VBC2{ VBC3{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1} VBC4{ VBC5{ m Fp[14]} BC6{ VBC7{ VBC3 VBC5 BC8{ VBC3 BC5 Fs[6] FL[3] FU9{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v2 v3 FC8 FD[7] FC8 FL Fp[5]} BC5 BC8 Fi Fi Fi:28 Fi Fl} BC7 VBC8 VBC2 vd Fi Fi Fi FD Fp Fp FC8 Fp FC7 Fi Fp Fi FC3[8]} BC10{ BC3 BC5 BC11{ VBC8 BC3 Fc:6 Fc[8] FD FC5 FC5} FC5 Fp Fc Fc Fi FC5 Fp[4] FC2 Fi} BC8 BC7 vd}


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

static void Test_S21160C1()
{
  extern Class_Descriptor cd_S21160C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(473,1190)];
    init_test(&cd_S21160C1, buf);
    S21160C1 *dp, &lv = *(dp=new (buf) S21160C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7552,4756), "sizeof(S21160C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21160C1)");
    check_base_class_offset(lv, (S19674C5*)(S21160C2*), ABISELECT(2224,1344), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C7*), ABISELECT(2224,1344), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*)(S21160C7*), ABISELECT(2224,1344), "S21160C1");
    /*is_ambiguous_... S21160C6::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*)(S21160C6*)(S21160C4*), ABISELECT(2224,1344), "S21160C1");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C7*)(S21160C4*), ABISELECT(2224,1344), "S21160C1");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*)(S21160C7*)(S21160C4*), ABISELECT(2224,1344), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*), ABISELECT(2224,1344), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*), ABISELECT(2224,1344), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C7*), ABISELECT(2224,1344), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C8*)(S21160C7*), ABISELECT(2224,1344), "S21160C1");
    check_base_class_offset(lv, (S21160C2*), ABISELECT(2216,1340), "S21160C1");
    check_base_class_offset(lv, (S21160C2*)(S21160C4*), ABISELECT(2216,1340), "S21160C1");
    /*is_ambiguous_... S21160C4::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C4*), ABISELECT(6248,3964), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C7*), ABISELECT(6248,3964), "S21160C1");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C7*)(S21160C4*), ABISELECT(6248,3964), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C7*), ABISELECT(6248,3964), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*)(S21160C7*), ABISELECT(6376,4024), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S21160C8*)(S21160C7*), ABISELECT(6368,4020), "S21160C1");
    check_base_class_offset(lv, (S21160C7*)(S21160C6*)(S21160C4*), ABISELECT(6368,4020), "S21160C1");
    /*is_ambiguous_... S21160C6::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C6*)(S21160C4*), ABISELECT(2544,1544), "S21160C1");
    /*is_ambiguous_... S21160C6::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*)(S21160C6*)(S21160C4*), ABISELECT(2360,1436), "S21160C1");
    /*is_ambiguous_... S21160C6::S21160C8 */ AMB_check_base_class_offset(lv, (S21160C8*)(S21160C6*)(S21160C4*), ABISELECT(2352,1432), "S21160C1");
    check_base_class_offset(lv, (S21160C6*)(S21160C4*), ABISELECT(2352,1432), "S21160C1");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*)(S21160C7*)(S21160C4*), ABISELECT(2696,1624), "S21160C1");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S21160C8*)(S21160C7*)(S21160C4*), ABISELECT(2688,1620), "S21160C1");
    /*is_ambiguous_... S21160C4::S21160C7 */ AMB_check_base_class_offset(lv, (S21160C7*)(S21160C4*), ABISELECT(2688,1620), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*), ABISELECT(7360,4648), "S21160C1");
    /*is_ambiguous_... S21160C4::S21160C8 */ AMB_check_base_class_offset(lv, (S21160C8*)(S21160C4*), ABISELECT(7352,4644), "S21160C1");
    check_base_class_offset(lv, (S21160C8*)(S21160C11*)(S21160C10*), ABISELECT(7352,4644), "S21160C1");
    check_base_class_offset(lv, (S21160C4*), ABISELECT(2352,1432), "S21160C1");
    /*is_ambiguous_... S21160C10::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C10*), 0, "S21160C1");
    /*is_ambiguous_... S21160C10::S19674C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C10*), ABISELECT(120,88), "S21160C1");
    /*is_ambiguous_... S21160C11::S19674C5 */ AMB_check_base_class_offset(lv, (S19674C5*)(S21160C11*)(S21160C10*), ABISELECT(240,144), "S21160C1");
    check_base_class_offset(lv, (S21160C11*)(S21160C10*), ABISELECT(240,144), "S21160C1");
    check_base_class_offset(lv, (S21160C10*), 0, "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C8 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*), ABISELECT(1040,608), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C8 */ AMB_check_base_class_offset(lv, (S21160C8*), ABISELECT(1032,604), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S19674C7*)(S21160C8*)(S21160C7*), ABISELECT(1240,720), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S21160C8*)(S21160C7*), ABISELECT(1232,716), "S21160C1");
    /*is_ambiguous_... S21160C1::S21160C7 */ AMB_check_base_class_offset(lv, (S21160C7*), ABISELECT(1232,716), "S21160C1");
    test_class_info(&lv, &cd_S21160C1);
    dp->~S21160C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21160C1(Test_S21160C1, "S21160C1", ABISELECT(7552,4756));

#else // __cplusplus

extern void _ZN8S21160C1C1Ev();
extern void _ZN8S21160C1D2Ev();
Name_Map name_map_S21160C1[] = {
  NSPAIR(_ZN8S21160C1C1Ev),
  NSPAIR(_ZN8S21160C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21160C2;
extern VTBL_ENTRY _ZTI8S21160C2[];
extern  VTBL_ENTRY _ZTV8S21160C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C2[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S21160C7;
extern VTBL_ENTRY _ZTI8S21160C7[];
extern  VTBL_ENTRY _ZTV8S21160C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S21160C6;
extern VTBL_ENTRY _ZTI8S21160C6[];
extern  VTBL_ENTRY _ZTV8S21160C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C6[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S21160C7;
extern VTBL_ENTRY _ZTI8S21160C7[];
extern  VTBL_ENTRY _ZTV8S21160C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C7[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S21160C4;
extern VTBL_ENTRY _ZTI8S21160C4[];
extern  VTBL_ENTRY _ZTV8S21160C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C4[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
extern Class_Descriptor cd_S21160C11;
extern VTBL_ENTRY _ZTI9S21160C11[];
extern  VTBL_ENTRY _ZTV9S21160C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21160C11[];
extern Class_Descriptor cd_S21160C10;
extern VTBL_ENTRY _ZTI9S21160C10[];
extern  VTBL_ENTRY _ZTV9S21160C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21160C10[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S19674C7;
extern VTBL_ENTRY _ZTI8S19674C7[];
extern Class_Descriptor cd_S21160C8;
extern VTBL_ENTRY _ZTI8S21160C8[];
extern  VTBL_ENTRY _ZTV8S21160C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C8[];
extern Class_Descriptor cd_S21160C7;
extern VTBL_ENTRY _ZTI8S21160C7[];
extern  VTBL_ENTRY _ZTV8S21160C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C7[];
static Base_Class bases_S21160C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    ABISELECT(2224,1344), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21160C2,    ABISELECT(2216,1340), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C7,    ABISELECT(6248,3964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(6376,4024), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21160C8,    ABISELECT(6368,4020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21160C7,    ABISELECT(6368,4020), //bcp->offset
    62, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19674C7,    ABISELECT(2544,1544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19674C7,    ABISELECT(2360,1436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21160C8,    ABISELECT(2352,1432), //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
    9, //immediately_derived
  0, 0},
  {&cd_S21160C6,    ABISELECT(2352,1432), //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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(2696,1624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21160C8,    ABISELECT(2688,1620), //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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21160C7,    ABISELECT(2688,1620), //bcp->offset
    54, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(7360,4648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21160C8,    ABISELECT(7352,4644), //bcp->offset
    73, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S21160C4,    ABISELECT(2352,1432), //bcp->offset
    42, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19674C7,    ABISELECT(120,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
    20, //immediately_derived
  0, 0},
  {&cd_S19674C5,    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
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21160C11,    ABISELECT(240,144), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21160C10,    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_S19674C7,    ABISELECT(1040,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
    22, //immediately_derived
  0, 0},
  {&cd_S21160C8,    ABISELECT(1032,604), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19674C7,    ABISELECT(1240,720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21160C8,    ABISELECT(1232,716), //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
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21160C7,    ABISELECT(1232,716), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21160C1[];
extern void _ZN8S21160C1D1Ev();
extern void _ZN8S21160C1D0Ev();
extern void ABISELECT(_ZThn240_N8S21160C1D1Ev,_ZThn144_N8S21160C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S21160C1D0Ev,_ZThn144_N8S21160C1D0Ev)();
extern void ABISELECT(_ZThn1032_N8S21160C1D1Ev,_ZThn604_N8S21160C1D1Ev)();
extern void ABISELECT(_ZThn1032_N8S21160C1D0Ev,_ZThn604_N8S21160C1D0Ev)();
extern void ABISELECT(_ZThn1232_N8S21160C1D1Ev,_ZThn716_N8S21160C1D1Ev)();
extern void ABISELECT(_ZThn1232_N8S21160C1D0Ev,_ZThn716_N8S21160C1D0Ev)();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
extern void _ZN8S21160C22v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S21160C1D1Ev,_ZTv0_n20_N8S21160C1D1Ev)();
extern void ABISELECT(_ZThn2216_N8S21160C1D1Ev,_ZThn1340_N8S21160C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21160C1D0Ev,_ZTv0_n20_N8S21160C1D0Ev)();
extern void ABISELECT(_ZThn2216_N8S21160C1D0Ev,_ZThn1340_N8S21160C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C1D1Ev,_ZTv0_n12_N8S21160C1D1Ev)();
extern void ABISELECT(_ZThn2224_N8S21160C1D1Ev,_ZThn1344_N8S21160C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C1D0Ev,_ZTv0_n12_N8S21160C1D0Ev)();
extern void ABISELECT(_ZThn2224_N8S21160C1D0Ev,_ZThn1344_N8S21160C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21160C1D1Ev,_ZTv0_n32_N8S21160C1D1Ev)();
extern void ABISELECT(_ZThn2352_N8S21160C1D1Ev,_ZThn1432_N8S21160C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21160C1D0Ev,_ZTv0_n32_N8S21160C1D0Ev)();
extern void ABISELECT(_ZThn2352_N8S21160C1D0Ev,_ZThn1432_N8S21160C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn336_n64_N8S21160C1D1Ev,_ZTvn188_n32_N8S21160C1D1Ev)();
extern void ABISELECT(_ZTvn336_n64_N8S21160C1D0Ev,_ZTvn188_n32_N8S21160C1D0Ev)();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S21160C1D1Ev,_ZTv0_n20_N8S21160C1D1Ev)();
extern void ABISELECT(_ZThn6368_N8S21160C1D1Ev,_ZThn4020_N8S21160C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21160C1D0Ev,_ZTv0_n20_N8S21160C1D0Ev)();
extern void ABISELECT(_ZThn6368_N8S21160C1D0Ev,_ZThn4020_N8S21160C1D0Ev)() __attribute__((weak));
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S21160C1D1Ev,_ZTv0_n16_N8S21160C1D1Ev)();
extern void ABISELECT(_ZThn7352_N8S21160C1D1Ev,_ZThn4644_N8S21160C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21160C1D0Ev,_ZTv0_n16_N8S21160C1D0Ev)();
extern void ABISELECT(_ZThn7352_N8S21160C1D0Ev,_ZThn4644_N8S21160C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21160C1[] = {
  ABISELECT(6368,4020),
  ABISELECT(6248,3964),
  ABISELECT(2352,1432),
  ABISELECT(2216,1340),
  ABISELECT(2224,1344),
  ABISELECT(7352,4644),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C1[0]),
  (VTBL_ENTRY)&_ZN8S21160C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C1D0Ev,
  ABISELECT(1984,1200),
  ABISELECT(7112,4500),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S21160C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S21160C1D1Ev,_ZThn144_N8S21160C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S21160C1D0Ev,_ZThn144_N8S21160C1D0Ev),
  ABISELECT(1192,740),
  ABISELECT(-1032,-604),
  (VTBL_ENTRY)&(_ZTI8S21160C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1032_N8S21160C1D1Ev,_ZThn604_N8S21160C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1032_N8S21160C1D0Ev,_ZThn604_N8S21160C1D0Ev),
  ABISELECT(5016,3248),
  ABISELECT(992,628),
  ABISELECT(-1232,-716),
  (VTBL_ENTRY)&(_ZTI8S21160C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S21160C1D1Ev,_ZThn716_N8S21160C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S21160C1D0Ev,_ZThn716_N8S21160C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
  ABISELECT(-2216,-1340),
  0,
  ABISELECT(8,4),
  ABISELECT(-2216,-1340),
  (VTBL_ENTRY)&(_ZTI8S21160C1[0]),
  (VTBL_ENTRY)&_ZN8S21160C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C1D1Ev,_ZTv0_n20_N8S21160C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C1D0Ev,_ZTv0_n20_N8S21160C1D0Ev),
  ABISELECT(-2224,-1344),
  ABISELECT(-2224,-1344),
  (VTBL_ENTRY)&(_ZTI8S21160C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C1D1Ev,_ZTv0_n12_N8S21160C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C1D0Ev,_ZTv0_n12_N8S21160C1D0Ev),
  ABISELECT(336,188),
  ABISELECT(336,188),
  ABISELECT(-2352,-1432),
  ABISELECT(-136,-92),
  ABISELECT(5000,3212),
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(-128,-88),
  ABISELECT(-2352,-1432),
  (VTBL_ENTRY)&(_ZTI8S21160C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21160C1D1Ev,_ZTv0_n32_N8S21160C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21160C1D0Ev,_ZTv0_n32_N8S21160C1D0Ev),
  ABISELECT(3560,2344),
  ABISELECT(-464,-276),
  ABISELECT(-2688,-1620),
  (VTBL_ENTRY)&(_ZTI8S21160C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21160C1D1Ev,_ZTvn188_n32_N8S21160C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn336_n64_N8S21160C1D0Ev,_ZTvn188_n32_N8S21160C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
  0,
  0,
  ABISELECT(-6368,-4020),
  ABISELECT(-120,-56),
  ABISELECT(-4144,-2676),
  ABISELECT(-6368,-4020),
  (VTBL_ENTRY)&(_ZTI8S21160C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C1D1Ev,_ZTv0_n20_N8S21160C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C1D0Ev,_ZTv0_n20_N8S21160C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
  ABISELECT(-7352,-4644),
  ABISELECT(-5128,-3300),
  ABISELECT(-7352,-4644),
  (VTBL_ENTRY)&(_ZTI8S21160C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21160C1D1Ev,_ZTv0_n16_N8S21160C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21160C1D0Ev,_ZTv0_n16_N8S21160C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21160C1[];
extern void _ZN9S21160C10D1Ev();
extern void _ZN9S21160C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21160C10__8S21160C1[] = {
  ABISELECT(2224,1344),
  ABISELECT(7352,4644),
  0,
  (VTBL_ENTRY)&(_ZTI9S21160C10[0]),
  (VTBL_ENTRY)&_ZN9S21160C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21160C10D0Ev,
};
extern void _ZN9S21160C11D1Ev();
extern void _ZN9S21160C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21160C119S21160C10__8S21160C1[] = {
  ABISELECT(1984,1200),
  ABISELECT(7112,4500),
  0,
  (VTBL_ENTRY)&(_ZTI9S21160C11[0]),
  (VTBL_ENTRY)&_ZN9S21160C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21160C11D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21160C11D1Ev,_ZTv0_n16_N9S21160C11D1Ev)();
extern void ABISELECT(_ZThn7112_N9S21160C11D1Ev,_ZThn4500_N9S21160C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21160C11D0Ev,_ZTv0_n16_N9S21160C11D0Ev)();
extern void ABISELECT(_ZThn7112_N9S21160C11D0Ev,_ZThn4500_N9S21160C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21160C8__9S21160C119S21160C10__8S21160C1[] = {
  ABISELECT(-7112,-4500),
  ABISELECT(-5128,-3300),
  ABISELECT(-7112,-4500),
  (VTBL_ENTRY)&(_ZTI9S21160C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21160C11D1Ev,_ZTv0_n16_N9S21160C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21160C11D0Ev,_ZTv0_n16_N9S21160C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21160C11D1Ev,_ZTv0_n12_N9S21160C11D1Ev)();
extern void ABISELECT(_ZThn1984_N9S21160C11D1Ev,_ZThn1200_N9S21160C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21160C11D0Ev,_ZTv0_n12_N9S21160C11D0Ev)();
extern void ABISELECT(_ZThn1984_N9S21160C11D0Ev,_ZThn1200_N9S21160C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__9S21160C119S21160C10__8S21160C1[] = {
  ABISELECT(-1984,-1200),
  ABISELECT(-1984,-1200),
  (VTBL_ENTRY)&(_ZTI9S21160C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21160C11D1Ev,_ZTv0_n12_N9S21160C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21160C11D0Ev,_ZTv0_n12_N9S21160C11D0Ev),
};
extern void ABISELECT(_ZThn240_N9S21160C10D1Ev,_ZThn144_N9S21160C10D1Ev)();
extern void ABISELECT(_ZThn240_N9S21160C10D0Ev,_ZThn144_N9S21160C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21160C11__9S21160C10__8S21160C1[] = {
  ABISELECT(1984,1200),
  ABISELECT(7112,4500),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI9S21160C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S21160C10D1Ev,_ZThn144_N9S21160C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S21160C10D0Ev,_ZThn144_N9S21160C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21160C10D1Ev,_ZTv0_n16_N9S21160C10D1Ev)();
extern void ABISELECT(_ZThn7352_N9S21160C10D1Ev,_ZThn4644_N9S21160C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21160C10D0Ev,_ZTv0_n16_N9S21160C10D0Ev)();
extern void ABISELECT(_ZThn7352_N9S21160C10D0Ev,_ZThn4644_N9S21160C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21160C8__9S21160C10__8S21160C1[] = {
  ABISELECT(-7352,-4644),
  ABISELECT(-5128,-3300),
  ABISELECT(-7352,-4644),
  (VTBL_ENTRY)&(_ZTI9S21160C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21160C10D1Ev,_ZTv0_n16_N9S21160C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21160C10D0Ev,_ZTv0_n16_N9S21160C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21160C10D1Ev,_ZTv0_n12_N9S21160C10D1Ev)();
extern void ABISELECT(_ZThn2224_N9S21160C10D1Ev,_ZThn1344_N9S21160C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21160C10D0Ev,_ZTv0_n12_N9S21160C10D0Ev)();
extern void ABISELECT(_ZThn2224_N9S21160C10D0Ev,_ZThn1344_N9S21160C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__A1__9S21160C10__8S21160C1[] = {
  ABISELECT(-2224,-1344),
  ABISELECT(-2224,-1344),
  (VTBL_ENTRY)&(_ZTI9S21160C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21160C10D1Ev,_ZTv0_n12_N9S21160C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21160C10D0Ev,_ZTv0_n12_N9S21160C10D0Ev),
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C8__A__8S21160C1[] = {
  ABISELECT(1192,740),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn1192_N8S21160C8D1Ev,_ZThn740_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn1192_N8S21160C8D0Ev,_ZThn740_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C8__A__8S21160C1[] = {
  ABISELECT(-1192,-740),
  ABISELECT(-1192,-740),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void _ZN8S21160C7D1Ev();
extern void _ZN8S21160C7D0Ev();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C7__A__8S21160C1[] = {
  ABISELECT(5016,3248),
  ABISELECT(992,628),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&_ZN8S21160C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C88S21160C7__A5__8S21160C1[] = {
  ABISELECT(992,628),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZThn992_N8S21160C8D1Ev,_ZThn628_N8S21160C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
extern void ABISELECT(_ZThn992_N8S21160C8D0Ev,_ZThn628_N8S21160C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C88S21160C7__A5__8S21160C1[] = {
  ABISELECT(-992,-628),
  ABISELECT(-992,-628),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev)();
extern void ABISELECT(_ZThn992_N8S21160C7D1Ev,_ZThn628_N8S21160C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev)();
extern void ABISELECT(_ZThn992_N8S21160C7D0Ev,_ZThn628_N8S21160C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C7__A__8S21160C1[] = {
  ABISELECT(-992,-628),
  ABISELECT(-992,-628),
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev),
};
extern void _ZN8S21160C22v1Ev();
extern void _ZN8S21160C2D1Ev();
extern void _ZN8S21160C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C2__8S21160C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C2[0]),
  (VTBL_ENTRY)&_ZN8S21160C22v1Ev,
  (VTBL_ENTRY)&_ZN8S21160C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C2D1Ev,_ZTv0_n12_N8S21160C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21160C2D1Ev,_ZThn4_N8S21160C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21160C2D0Ev,_ZTv0_n12_N8S21160C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21160C2D0Ev,_ZThn4_N8S21160C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C2__8S21160C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21160C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C2D1Ev,_ZTv0_n12_N8S21160C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C2D0Ev,_ZTv0_n12_N8S21160C2D0Ev),
};
extern void _ZN8S21160C4D1Ev();
extern void _ZN8S21160C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C4__8S21160C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(5000,3212),
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&_ZN8S21160C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C4D0Ev,
};
extern void _ZN8S21160C6D1Ev();
extern void _ZN8S21160C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C68S21160C4__8S21160C1[] = {
  ABISELECT(3896,2532),
  ABISELECT(4016,2588),
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C6[0]),
  (VTBL_ENTRY)&_ZN8S21160C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C6D0Ev,
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C88S21160C68S21160C4__A1__8S21160C1[] = {
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C88S21160C68S21160C4__A1__8S21160C1[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21160C6D1Ev,_ZTv0_n20_N8S21160C6D1Ev)();
extern void ABISELECT(_ZThn4016_N8S21160C6D1Ev,_ZThn2588_N8S21160C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21160C6D0Ev,_ZTv0_n20_N8S21160C6D0Ev)();
extern void ABISELECT(_ZThn4016_N8S21160C6D0Ev,_ZThn2588_N8S21160C6D0Ev)() __attribute__((weak));
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C7__8S21160C68S21160C4__8S21160C1[] = {
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(-4144,-2676),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI8S21160C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C6D1Ev,_ZTv0_n20_N8S21160C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C6D0Ev,_ZTv0_n20_N8S21160C6D0Ev),
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C6D1Ev,_ZTv0_n12_N8S21160C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21160C6D0Ev,_ZTv0_n12_N8S21160C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C68S21160C4__8S21160C1[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S21160C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C6D1Ev,_ZTv0_n12_N8S21160C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C6D0Ev,_ZTv0_n12_N8S21160C6D0Ev),
};
extern void _ZN8S21160C7D1Ev();
extern void _ZN8S21160C7D0Ev();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C78S21160C4__A1__8S21160C1[] = {
  ABISELECT(3560,2344),
  ABISELECT(-464,-276),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&_ZN8S21160C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C88S21160C78S21160C4__A2__8S21160C1[] = {
  ABISELECT(-464,-276),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C88S21160C78S21160C4__A2__8S21160C1[] = {
  ABISELECT(464,276),
  ABISELECT(464,276),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C78S21160C4__A1__8S21160C1[] = {
  ABISELECT(464,276),
  ABISELECT(464,276),
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21160C4D1Ev,_ZTv0_n20_N8S21160C4D1Ev)();
extern void ABISELECT(_ZThn4016_N8S21160C4D1Ev,_ZThn2588_N8S21160C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21160C4D0Ev,_ZTv0_n20_N8S21160C4D0Ev)();
extern void ABISELECT(_ZThn4016_N8S21160C4D0Ev,_ZThn2588_N8S21160C4D0Ev)() __attribute__((weak));
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C7__8S21160C4__8S21160C1[] = {
  0,
  0,
  ABISELECT(-4016,-2588),
  ABISELECT(-120,-56),
  ABISELECT(-4144,-2676),
  ABISELECT(-4016,-2588),
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C4D1Ev,_ZTv0_n20_N8S21160C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C4D0Ev,_ZTv0_n20_N8S21160C4D0Ev),
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C4D1Ev,_ZTv0_n12_N8S21160C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21160C4D0Ev,_ZTv0_n12_N8S21160C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C4__8S21160C1[] = {
  ABISELECT(128,88),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C4D1Ev,_ZTv0_n12_N8S21160C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C4D0Ev,_ZTv0_n12_N8S21160C4D0Ev),
};
extern void ABISELECT(_ZThn336_N8S21160C4D1Ev,_ZThn188_N8S21160C4D1Ev)();
extern void ABISELECT(_ZThn336_N8S21160C4D0Ev,_ZThn188_N8S21160C4D0Ev)();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C7__A__8S21160C4__8S21160C1[] = {
  ABISELECT(3560,2344),
  ABISELECT(-464,-276),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21160C4D1Ev,_ZThn188_N8S21160C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S21160C4D0Ev,_ZThn188_N8S21160C4D0Ev),
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21160C4D1Ev,_ZTv0_n16_N8S21160C4D1Ev)();
extern void ABISELECT(_ZThn5000_N8S21160C4D1Ev,_ZThn3212_N8S21160C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21160C4D0Ev,_ZTv0_n16_N8S21160C4D0Ev)();
extern void ABISELECT(_ZThn5000_N8S21160C4D0Ev,_ZThn3212_N8S21160C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21160C8__A3__8S21160C4__8S21160C1[] = {
  ABISELECT(-5000,-3212),
  ABISELECT(-5128,-3300),
  ABISELECT(-5000,-3212),
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21160C4D1Ev,_ZTv0_n16_N8S21160C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21160C4D0Ev,_ZTv0_n16_N8S21160C4D0Ev),
};
extern void _ZN8S21160C22v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S21160C4D1Ev,_ZTv0_n20_N8S21160C4D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21160C4D0Ev,_ZTv0_n20_N8S21160C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21160C2__8S21160C4__8S21160C1[] = {
  ABISELECT(136,92),
  0,
  ABISELECT(8,4),
  ABISELECT(136,92),
  (VTBL_ENTRY)&(_ZTI8S21160C4[0]),
  (VTBL_ENTRY)&_ZN8S21160C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C4D1Ev,_ZTv0_n20_N8S21160C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21160C4D0Ev,_ZTv0_n20_N8S21160C4D0Ev),
};
extern void _ZN8S21160C7D1Ev();
extern void _ZN8S21160C7D0Ev();
extern void _ZN8S21160C72v2Ev();
extern void _ZN8S21160C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C7__8S21160C1[] = {
  ABISELECT(-120,-56),
  ABISELECT(-4144,-2676),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&_ZN8S21160C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v2Ev,
  (VTBL_ENTRY)&_ZN8S21160C72v3Ev,
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C88S21160C7__8S21160C1[] = {
  ABISELECT(-4144,-2676),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C88S21160C7__8S21160C1[] = {
  ABISELECT(4144,2676),
  ABISELECT(4144,2676),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C7__8S21160C1[] = {
  ABISELECT(4144,2676),
  ABISELECT(4144,2676),
  (VTBL_ENTRY)&(_ZTI8S21160C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev),
};
extern void _ZN8S21160C8D1Ev();
extern void _ZN8S21160C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21160C8__A3__8S21160C1[] = {
  ABISELECT(-5128,-3300),
  0,
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&_ZN8S21160C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21160C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19674C5__8S21160C8__A3__8S21160C1[] = {
  ABISELECT(5128,3300),
  ABISELECT(5128,3300),
  (VTBL_ENTRY)&(_ZTI8S21160C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev),
};
static  VTT_ENTRY vtt_S21160C1[] = {
  {&(_ZTV8S21160C1[8]),  8,79},
  {&(_tg__ZTV9S21160C10__8S21160C1[4]),  4,6},
  {&(_tg__ZTV9S21160C119S21160C10__8S21160C1[4]),  4,6},
  {&(_tg__ZTV8S21160C8__9S21160C119S21160C10__8S21160C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__9S21160C119S21160C10__8S21160C1[3]),  3,5},
  {&(_tg__ZTV9S21160C11__9S21160C10__8S21160C1[4]),  4,6},
  {&(_tg__ZTV8S21160C8__9S21160C10__8S21160C1[4]),  4,6},
  {&(_tg__ZTV8S19674C5__A1__9S21160C10__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S21160C8__A__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C8__A__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S21160C7__A__8S21160C1[4]),  4,8},
  {&(_tg__ZTV8S21160C88S21160C7__A5__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C88S21160C7__A5__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C7__A__8S21160C1[3]),  3,5},
  {&(_ZTV8S21160C1[34]),  34,79},
  {&(_ZTV8S21160C1[40]),  40,79},
  {&(_ZTV8S21160C1[52]),  52,79},
  {&(_ZTV8S21160C1[69]),  69,79},
  {&(_ZTV8S21160C1[58]),  58,79},
  {&(_ZTV8S21160C1[77]),  77,79},
  {&(_ZTV8S21160C1[14]),  14,79},
  {&(_ZTV8S21160C1[19]),  19,79},
  {&(_ZTV8S21160C1[25]),  25,79},
  {&(_tg__ZTV8S21160C2__8S21160C1[3]),  3,6},
  {&(_tg__ZTV8S19674C5__8S21160C2__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S21160C4__8S21160C1[7]),  7,9},
  {&(_tg__ZTV8S21160C68S21160C4__8S21160C1[5]),  5,7},
  {&(_tg__ZTV8S21160C88S21160C68S21160C4__A1__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C88S21160C68S21160C4__A1__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S21160C7__8S21160C68S21160C4__8S21160C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21160C68S21160C4__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S21160C78S21160C4__A1__8S21160C1[4]),  4,8},
  {&(_tg__ZTV8S21160C88S21160C78S21160C4__A2__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C88S21160C78S21160C4__A2__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C78S21160C4__A1__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S21160C7__8S21160C4__8S21160C1[7]),  7,11},
  {&(_tg__ZTV8S19674C5__8S21160C4__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S21160C7__A__8S21160C4__8S21160C1[4]),  4,8},
  {&(_tg__ZTV8S21160C8__A3__8S21160C4__8S21160C1[4]),  4,6},
  {&(_tg__ZTV8S21160C2__8S21160C4__8S21160C1[5]),  5,8},
  {&(_tg__ZTV8S21160C7__8S21160C1[4]),  4,8},
  {&(_tg__ZTV8S21160C88S21160C7__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C88S21160C7__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C7__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S21160C8__A3__8S21160C1[3]),  3,5},
  {&(_tg__ZTV8S19674C5__8S21160C8__A3__8S21160C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21160C1[];
extern  VTBL_ENTRY _ZTV8S21160C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21160C1[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21160C4D0Ev,_ZTv0_n16_N8S21160C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21160C4D0Ev,_ZThn3212_N8S21160C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21160C4D1Ev,_ZTv0_n16_N8S21160C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5000_N8S21160C4D1Ev,_ZThn3212_N8S21160C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C4D0Ev,_ZTv0_n20_N8S21160C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21160C4D0Ev,_ZThn2588_N8S21160C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C4D1Ev,_ZTv0_n20_N8S21160C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21160C4D1Ev,_ZThn2588_N8S21160C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C6D0Ev,_ZTv0_n20_N8S21160C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21160C6D0Ev,_ZThn2588_N8S21160C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C6D1Ev,_ZTv0_n20_N8S21160C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4016_N8S21160C6D1Ev,_ZThn2588_N8S21160C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C2D0Ev,_ZTv0_n12_N8S21160C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21160C2D0Ev,_ZThn4_N8S21160C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C2D1Ev,_ZTv0_n12_N8S21160C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21160C2D1Ev,_ZThn4_N8S21160C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C7D0Ev,_ZTv0_n12_N8S21160C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S21160C7D0Ev,_ZThn628_N8S21160C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C7D1Ev,_ZTv0_n12_N8S21160C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S21160C7D1Ev,_ZThn628_N8S21160C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D0Ev,_ZTv0_n12_N8S21160C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S21160C8D0Ev,_ZThn628_N8S21160C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S21160C8D0Ev,_ZThn740_N8S21160C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C8D1Ev,_ZTv0_n12_N8S21160C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S21160C8D1Ev,_ZThn628_N8S21160C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S21160C8D1Ev,_ZThn740_N8S21160C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21160C10D0Ev,_ZTv0_n12_N9S21160C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N9S21160C10D0Ev,_ZThn1344_N9S21160C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21160C10D1Ev,_ZTv0_n12_N9S21160C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N9S21160C10D1Ev,_ZThn1344_N9S21160C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21160C10D0Ev,_ZTv0_n16_N9S21160C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7352_N9S21160C10D0Ev,_ZThn4644_N9S21160C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21160C10D1Ev,_ZTv0_n16_N9S21160C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7352_N9S21160C10D1Ev,_ZThn4644_N9S21160C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21160C11D0Ev,_ZTv0_n12_N9S21160C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1984_N9S21160C11D0Ev,_ZThn1200_N9S21160C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21160C11D1Ev,_ZTv0_n12_N9S21160C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1984_N9S21160C11D1Ev,_ZThn1200_N9S21160C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21160C11D0Ev,_ZTv0_n16_N9S21160C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7112_N9S21160C11D0Ev,_ZThn4500_N9S21160C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21160C11D1Ev,_ZTv0_n16_N9S21160C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7112_N9S21160C11D1Ev,_ZThn4500_N9S21160C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21160C1D0Ev,_ZTv0_n16_N8S21160C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7352_N8S21160C1D0Ev,_ZThn4644_N8S21160C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21160C1D1Ev,_ZTv0_n16_N8S21160C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7352_N8S21160C1D1Ev,_ZThn4644_N8S21160C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21160C1D0Ev,_ZTv0_n32_N8S21160C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N8S21160C1D0Ev,_ZThn1432_N8S21160C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21160C1D1Ev,_ZTv0_n32_N8S21160C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N8S21160C1D1Ev,_ZThn1432_N8S21160C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C1D0Ev,_ZTv0_n12_N8S21160C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S21160C1D0Ev,_ZThn1344_N8S21160C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21160C1D1Ev,_ZTv0_n12_N8S21160C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S21160C1D1Ev,_ZThn1344_N8S21160C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C1D0Ev,_ZTv0_n20_N8S21160C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6368_N8S21160C1D0Ev,_ZThn4020_N8S21160C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2216_N8S21160C1D0Ev,_ZThn1340_N8S21160C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21160C1D1Ev,_ZTv0_n20_N8S21160C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6368_N8S21160C1D1Ev,_ZThn4020_N8S21160C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2216_N8S21160C1D1Ev,_ZThn1340_N8S21160C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21160C1 = {  "S21160C1", // class name
  bases_S21160C1, 26,
  &(vtc_S21160C1[0]), // expected_vtbl_contents
  &(vtt_S21160C1[0]), // expected_vtt_contents
  ABISELECT(7552,4756), // object size
  NSPAIRA(_ZTI8S21160C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21160C1),79, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21160C1),46, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20526C4  {
  char s20526c4f0[2];
  __tsi64 s20526c4f1;
  void *s20526c4f2;
  ::S3164C31_nt s20526c4f3;
  virtual void  v3(); // _ZN8S20526C42v3Ev
  ~S20526C4(); // tgen
  S20526C4(); // tgen
};
//SIG(-1 S20526C4) C1{ v1 Fc[2] FL Fp FC2{ m}}


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

static void Test_S20526C4()
{
  extern Class_Descriptor cd_S20526C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20526C4, buf);
    S20526C4 *dp, &lv = *(dp=new (buf) S20526C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20526C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C4)");
    check_field_offset(lv, s20526c4f0, ABISELECT(8,4), "S20526C4.s20526c4f0");
    check_field_offset(lv, s20526c4f1, ABISELECT(16,8), "S20526C4.s20526c4f1");
    check_field_offset(lv, s20526c4f2, ABISELECT(24,16), "S20526C4.s20526c4f2");
    check_field_offset(lv, s20526c4f3, ABISELECT(32,20), "S20526C4.s20526c4f3");
    test_class_info(&lv, &cd_S20526C4);
    dp->~S20526C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20526C4(Test_S20526C4, "S20526C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20526C4C1Ev();
extern void _ZN8S20526C4D1Ev();
Name_Map name_map_S20526C4[] = {
  NSPAIR(_ZN8S20526C4C1Ev),
  NSPAIR(_ZN8S20526C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20526C4[];
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY vtc_S20526C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C4[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
Class_Descriptor cd_S20526C4 = {  "S20526C4", // class name
  0,0,//no base classes
  &(vtc_S20526C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20526C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20526C4),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  S20526C3  : S20526C4 {
  ~S20526C3(); // tgen
  S20526C3(); // tgen
};
//SIG(-1 S20526C3) C1{ BC2{ v1 Fc[2] FL Fp FC3{ m}}}


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

static void Test_S20526C3()
{
  extern Class_Descriptor cd_S20526C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20526C3, buf);
    S20526C3 *dp, &lv = *(dp=new (buf) S20526C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20526C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C3)");
    check_base_class_offset(lv, (S20526C4*), 0, "S20526C3");
    test_class_info(&lv, &cd_S20526C3);
    dp->~S20526C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20526C3(Test_S20526C3, "S20526C3", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20526C3C1Ev();
extern void _ZN8S20526C3D1Ev();
Name_Map name_map_S20526C3[] = {
  NSPAIR(_ZN8S20526C3C1Ev),
  NSPAIR(_ZN8S20526C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
static Base_Class bases_S20526C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20526C4,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20526C3[];
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY vtc_S20526C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C3[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S20526C3[];
extern  VTBL_ENTRY _ZTV8S20526C3[];
Class_Descriptor cd_S20526C3 = {  "S20526C3", // class name
  bases_S20526C3, 1,
  &(vtc_S20526C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20526C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20526C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20526C8  {
  ::S20526C4 s20526c8f0;
  __tsi64 s20526c8f1;
  int s20526c8f2[3];
  void  mf20526c8(); // _ZN8S20526C89mf20526c8Ev
};
//SIG(-1 S20526C8) C1{ m FC2{ v1 Fc[2] FL Fp FC3{ m}} FL Fi[3]}


void  S20526C8 ::mf20526c8(){}

static void Test_S20526C8()
{
  {
    init_simple_test("S20526C8");
    S20526C8 lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S20526C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C8)");
    check_field_offset(lv, s20526c8f0, 0, "S20526C8.s20526c8f0");
    check_field_offset(lv, s20526c8f1, ABISELECT(40,24), "S20526C8.s20526c8f1");
    check_field_offset(lv, s20526c8f2, ABISELECT(48,32), "S20526C8.s20526c8f2");
  }
}
static Arrange_To_Call_Me vS20526C8(Test_S20526C8, "S20526C8", ABISELECT(64,44));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S20526C8[];
VTBL_ENTRY *P__ZTI8S20526C8 = _ZTI8S20526C8; 
Class_Descriptor cd_S20526C8 = {  "S20526C8", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI8S20526C8),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  S20526C7  : virtual S20526C4 , virtual S3164C31_nt , S20526C8 {
  __tsi64 s20526c7f0[2];
  void *s20526c7f1[4];
  virtual void  v4(); // _ZN8S20526C72v4Ev
  virtual void  v5(); // _ZN8S20526C72v5Ev
  ~S20526C7(); // tgen
  S20526C7(); // tgen
};
//SIG(-1 S20526C7) C1{ VBC2{ v3 Fc[2] FL Fp FC3{ m}} VBC3 BC4{ m FC2 FL Fi[3]} v1 v2 FL[2] Fp[4]}


void  S20526C7 ::v4(){vfunc_called(this, "_ZN8S20526C72v4Ev");}
void  S20526C7 ::v5(){vfunc_called(this, "_ZN8S20526C72v5Ev");}
S20526C7 ::~S20526C7(){ note_dtor("S20526C7", this);} // tgen
S20526C7 ::S20526C7(){ note_ctor("S20526C7", this);} // tgen

static void Test_S20526C7()
{
  extern Class_Descriptor cd_S20526C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,27)];
    init_test(&cd_S20526C7, buf);
    S20526C7 *dp, &lv = *(dp=new (buf) S20526C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,104), "sizeof(S20526C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C7)");
    check_base_class_offset(lv, (S20526C4*), ABISELECT(120,80), "S20526C7");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S20526C7");
    check_base_class_offset(lv, (S20526C8*), ABISELECT(8,4), "S20526C7");
    check_field_offset(lv, s20526c7f0, ABISELECT(72,48), "S20526C7.s20526c7f0");
    check_field_offset(lv, s20526c7f1, ABISELECT(88,64), "S20526C7.s20526c7f1");
    test_class_info(&lv, &cd_S20526C7);
    dp->~S20526C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20526C7(Test_S20526C7, "S20526C7", ABISELECT(160,104));

#else // __cplusplus

extern void _ZN8S20526C7C1Ev();
extern void _ZN8S20526C7D1Ev();
Name_Map name_map_S20526C7[] = {
  NSPAIR(_ZN8S20526C7C1Ev),
  NSPAIR(_ZN8S20526C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
static Base_Class bases_S20526C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20526C4,    ABISELECT(120,80), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20526C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20526C7[];
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY vtc_S20526C7[] = {
  0,
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  0,
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S20526C7[];
static  VTT_ENTRY vtt_S20526C7[] = {
  {&(_ZTV8S20526C7[4]),  4,10},
  {&(_ZTV8S20526C7[9]),  9,10},
};
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
Class_Descriptor cd_S20526C7 = {  "S20526C7", // class name
  bases_S20526C7, 3,
  &(vtc_S20526C7[0]), // expected_vtbl_contents
  &(vtt_S20526C7[0]), // expected_vtt_contents
  ABISELECT(160,104), // object size
  NSPAIRA(_ZTI8S20526C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20526C7),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20526C7),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  S20526C6  : S3164C31_nt , virtual S20526C7 {
  int s20526c6f0[2];
  virtual  ~S20526C6(); // _ZN8S20526C6D2Ev
  S20526C6(); // tgen
};
//SIG(-1 S20526C6) C1{ BC2{ m} VBC3{ VBC4{ v1 Fc[2] FL Fp FC2} VBC2 BC5{ m FC4 FL Fi[3]} v2 v3 FL[2] Fp[4]} vd Fi[2]}


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

static void Test_S20526C6()
{
  extern Class_Descriptor cd_S20526C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,30)];
    init_test(&cd_S20526C6, buf);
    S20526C6 *dp, &lv = *(dp=new (buf) S20526C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,116), "sizeof(S20526C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C6)");
    /*is_ambiguous_... S20526C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20526C6");
    check_base_class_offset(lv, (S20526C4*)(S20526C7*), ABISELECT(136,92), "S20526C6");
    check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*), ABISELECT(169,113), "S20526C6");
    check_base_class_offset(lv, (S20526C8*)(S20526C7*), ABISELECT(24,16), "S20526C6");
    check_base_class_offset(lv, (S20526C7*), ABISELECT(16,12), "S20526C6");
    check_field_offset(lv, s20526c6f0, ABISELECT(8,4), "S20526C6.s20526c6f0");
    test_class_info(&lv, &cd_S20526C6);
    dp->~S20526C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20526C6(Test_S20526C6, "S20526C6", ABISELECT(176,116));

#else // __cplusplus

extern void _ZN8S20526C6C1Ev();
extern void _ZN8S20526C6D2Ev();
Name_Map name_map_S20526C6[] = {
  NSPAIR(_ZN8S20526C6C1Ev),
  NSPAIR(_ZN8S20526C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
static Base_Class bases_S20526C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20526C4,    ABISELECT(136,92), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(169,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
    4, //immediately_derived
  0, 1},
  {&cd_S20526C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20526C7,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20526C6[];
extern void _ZN8S20526C6D1Ev();
extern void _ZN8S20526C6D0Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY vtc_S20526C6[] = {
  ABISELECT(169,113),
  ABISELECT(136,92),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20526C6D0Ev,
  0,
  0,
  ABISELECT(153,101),
  ABISELECT(120,80),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  0,
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S20526C6[];
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__8S20526C6[] = {
  ABISELECT(153,101),
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C7__8S20526C6[] = {
  0,
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
static  VTT_ENTRY vtt_S20526C6[] = {
  {&(_ZTV8S20526C6[5]),  5,19},
  {&(_ZTV8S20526C6[13]),  13,19},
  {&(_ZTV8S20526C6[18]),  18,19},
  {&(_tg__ZTV8S20526C7__8S20526C6[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C7__8S20526C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20526C6[];
extern  VTBL_ENTRY _ZTV8S20526C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C6[];
Class_Descriptor cd_S20526C6 = {  "S20526C6", // class name
  bases_S20526C6, 5,
  &(vtc_S20526C6[0]), // expected_vtbl_contents
  &(vtt_S20526C6[0]), // expected_vtt_contents
  ABISELECT(176,116), // object size
  NSPAIRA(_ZTI8S20526C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20526C6),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20526C6),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20526C2  : virtual S20526C3 , S20526C6 {
  __tsi64 s20526c2f0;
  int s20526c2f1[6];
  void *s20526c2f2;
  short s20526c2f3;
  ::S20526C3 s20526c2f4;
  virtual  ~S20526C2(); // _ZN8S20526C2D2Ev
  S20526C2(); // tgen
};
//SIG(-1 S20526C2) C1{ VBC2{ BC3{ v1 Fc[2] FL Fp FC4{ m}}} BC5{ BC4 VBC6{ VBC3 VBC4 BC7{ m FC3 FL Fi[3]} v2 v3 FL[2] Fp[4]} vd Fi[2]} vd FL Fi[6] Fp Fs FC2}


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

static void Test_S20526C2()
{
  extern Class_Descriptor cd_S20526C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,52)];
    init_test(&cd_S20526C2, buf);
    S20526C2 *dp, &lv = *(dp=new (buf) S20526C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,204), "sizeof(S20526C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C2)");
    check_base_class_offset(lv, (S20526C4*)(S20526C3*), ABISELECT(104,76), "S20526C2");
    check_base_class_offset(lv, (S20526C3*), ABISELECT(104,76), "S20526C2");
    /*is_ambiguous_... S20526C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C6*), 0, "S20526C2");
    check_base_class_offset(lv, (S20526C4*)(S20526C7*), ABISELECT(264,180), "S20526C2");
    check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*), ABISELECT(297,201), "S20526C2");
    check_base_class_offset(lv, (S20526C8*)(S20526C7*), ABISELECT(152,104), "S20526C2");
    check_base_class_offset(lv, (S20526C7*)(S20526C6*), ABISELECT(144,100), "S20526C2");
    check_base_class_offset(lv, (S20526C6*), 0, "S20526C2");
    check_field_offset(lv, s20526c2f0, ABISELECT(16,12), "S20526C2.s20526c2f0");
    check_field_offset(lv, s20526c2f1, ABISELECT(24,20), "S20526C2.s20526c2f1");
    check_field_offset(lv, s20526c2f2, ABISELECT(48,44), "S20526C2.s20526c2f2");
    check_field_offset(lv, s20526c2f3, ABISELECT(56,48), "S20526C2.s20526c2f3");
    check_field_offset(lv, s20526c2f4, ABISELECT(64,52), "S20526C2.s20526c2f4");
    test_class_info(&lv, &cd_S20526C2);
    dp->~S20526C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20526C2(Test_S20526C2, "S20526C2", ABISELECT(304,204));

#else // __cplusplus

extern void _ZN8S20526C2C1Ev();
extern void _ZN8S20526C2D2Ev();
Name_Map name_map_S20526C2[] = {
  NSPAIR(_ZN8S20526C2C1Ev),
  NSPAIR(_ZN8S20526C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S20526C3;
extern VTBL_ENTRY _ZTI8S20526C3[];
extern  VTBL_ENTRY _ZTV8S20526C3[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
extern Class_Descriptor cd_S20526C6;
extern VTBL_ENTRY _ZTI8S20526C6[];
extern  VTBL_ENTRY _ZTV8S20526C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C6[];
static Base_Class bases_S20526C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20526C4,    ABISELECT(104,76), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20526C3,    ABISELECT(104,76), //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
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20526C4,    ABISELECT(264,180), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(297,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
    6, //immediately_derived
  0, 1},
  {&cd_S20526C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20526C7,    ABISELECT(144,100), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20526C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20526C2[];
extern void _ZN8S20526C2D1Ev();
extern void _ZN8S20526C2D0Ev();
extern void _ZN8S20526C42v3Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY vtc_S20526C2[] = {
  ABISELECT(104,76),
  ABISELECT(297,201),
  ABISELECT(264,180),
  ABISELECT(144,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C2[0]),
  (VTBL_ENTRY)&_ZN8S20526C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20526C2D0Ev,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S20526C2[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  0,
  0,
  ABISELECT(153,101),
  ABISELECT(120,80),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S20526C2[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  0,
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S20526C2[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S20526C2[];
extern void _ZN8S20526C6D1Ev();
extern void _ZN8S20526C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C6__8S20526C2[] = {
  ABISELECT(297,201),
  ABISELECT(264,180),
  ABISELECT(144,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20526C6D0Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__8S20526C6__8S20526C2[] = {
  0,
  0,
  ABISELECT(153,101),
  ABISELECT(120,80),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C6__8S20526C2[] = {
  0,
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__8S20526C2[] = {
  ABISELECT(153,101),
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C7__8S20526C2[] = {
  0,
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
static  VTT_ENTRY vtt_S20526C2[] = {
  {&(_ZTV8S20526C2[6]),  6,24},
  {&(_tg__ZTV8S20526C6__8S20526C2[5]),  5,7},
  {&(_tg__ZTV8S20526C7__8S20526C6__8S20526C2[6]),  6,8},
  {&(_tg__ZTV8S20526C4__8S20526C6__8S20526C2[3]),  3,4},
  {&(_ZTV8S20526C2[11]),  11,24},
  {&(_ZTV8S20526C2[18]),  18,24},
  {&(_ZTV8S20526C2[23]),  23,24},
  {&(_tg__ZTV8S20526C7__8S20526C2[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C7__8S20526C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20526C2[];
extern  VTBL_ENTRY _ZTV8S20526C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C2[];
Class_Descriptor cd_S20526C2 = {  "S20526C2", // class name
  bases_S20526C2, 8,
  &(vtc_S20526C2[0]), // expected_vtbl_contents
  &(vtt_S20526C2[0]), // expected_vtt_contents
  ABISELECT(304,204), // object size
  NSPAIRA(_ZTI8S20526C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20526C2),24, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20526C2),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20526C10  : S20526C4 , S3164C31_nt , S20526C8 , S20526C7 {
  void *s20526c10f0[10];
  int s20526c10f1;
  __tsi64 s20526c10f2;
  void *s20526c10f3;
  ::S20526C7 s20526c10f4;
  virtual void  v6(); // _ZN9S20526C102v6Ev
  ~S20526C10(); // tgen
  S20526C10(); // tgen
};
//SIG(-1 S20526C10) C1{ BC2{ v2 Fc[2] FL Fp FC3{ m}} BC3 BC4{ m FC2 FL Fi[3]} BC5{ VBC2 VBC3 BC4 v3 v4 FL[2] Fp[4]} v1 Fp[10] Fi FL Fp FC5}


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

static void Test_S20526C10()
{
  extern Class_Descriptor cd_S20526C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,84)];
    init_test(&cd_S20526C10, buf);
    S20526C10 *dp, &lv = *(dp=new (buf) S20526C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,332), "sizeof(S20526C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C10)");
    /*is_ambiguous_... S20526C10::S20526C4 */ AMB_check_base_class_offset(lv, (S20526C4*), 0, "S20526C10");
    /*is_ambiguous_... S20526C10::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20526C10");
    /*is_ambiguous_... S20526C10::S20526C8 */ AMB_check_base_class_offset(lv, (S20526C8*), ABISELECT(40,24), "S20526C10");
    check_base_class_offset(lv, (S20526C4*)(S20526C7*), ABISELECT(488,308), "S20526C10");
    check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*), ABISELECT(521,329), "S20526C10");
    check_base_class_offset(lv, (S20526C8*)(S20526C7*), ABISELECT(112,72), "S20526C10");
    check_base_class_offset(lv, (S20526C7*), ABISELECT(104,68), "S20526C10");
    check_field_offset(lv, s20526c10f0, ABISELECT(224,148), "S20526C10.s20526c10f0");
    check_field_offset(lv, s20526c10f1, ABISELECT(304,188), "S20526C10.s20526c10f1");
    check_field_offset(lv, s20526c10f2, ABISELECT(312,192), "S20526C10.s20526c10f2");
    check_field_offset(lv, s20526c10f3, ABISELECT(320,200), "S20526C10.s20526c10f3");
    check_field_offset(lv, s20526c10f4, ABISELECT(328,204), "S20526C10.s20526c10f4");
    test_class_info(&lv, &cd_S20526C10);
    dp->~S20526C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20526C10(Test_S20526C10, "S20526C10", ABISELECT(528,332));

#else // __cplusplus

extern void _ZN9S20526C10C1Ev();
extern void _ZN9S20526C10D1Ev();
Name_Map name_map_S20526C10[] = {
  NSPAIR(_ZN9S20526C10C1Ev),
  NSPAIR(_ZN9S20526C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
static Base_Class bases_S20526C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20526C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20526C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20526C4,    ABISELECT(488,308), //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
    6, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(521,329), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20526C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20526C7,    ABISELECT(104,68), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20526C10[];
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY vtc_S20526C10[] = {
  ABISELECT(521,329),
  ABISELECT(488,308),
  0,
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
  ABISELECT(417,261),
  ABISELECT(384,240),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  0,
  ABISELECT(-488,-308),
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S20526C10[];
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__9S20526C10[] = {
  ABISELECT(417,261),
  ABISELECT(384,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C7__9S20526C10[] = {
  0,
  ABISELECT(-384,-240),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
static  VTT_ENTRY vtt_S20526C10[] = {
  {&(_ZTV9S20526C10[4]),  4,16},
  {&(_tg__ZTV8S20526C7__9S20526C10[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C7__9S20526C10[3]),  3,4},
  {&(_ZTV9S20526C10[10]),  10,16},
  {&(_ZTV9S20526C10[15]),  15,16},
};
extern VTBL_ENTRY _ZTI9S20526C10[];
extern  VTBL_ENTRY _ZTV9S20526C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20526C10[];
Class_Descriptor cd_S20526C10 = {  "S20526C10", // class name
  bases_S20526C10, 7,
  &(vtc_S20526C10[0]), // expected_vtbl_contents
  &(vtt_S20526C10[0]), // expected_vtt_contents
  ABISELECT(528,332), // object size
  NSPAIRA(_ZTI9S20526C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20526C10),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20526C10),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20526C9  : S20526C8 , virtual S20526C10 , S20526C6 , S20526C4 , virtual S20526C3 {
  ::S20526C4 s20526c9f0[4];
  ::S19553C10_nt s20526c9f1;
  void *s20526c9f2;
  int s20526c9f3;
  void *s20526c9f4[9];
  virtual  ~S20526C9(); // _ZN8S20526C9D2Ev
  virtual void  v7(); // _ZN8S20526C92v7Ev
  virtual void  v8(); // _ZN8S20526C92v8Ev
  virtual void  v9(); // _ZN8S20526C92v9Ev
  S20526C9(); // tgen
};
//SIG(-1 S20526C9) C1{ BC2{ m FC3{ v4 Fc[2] FL Fp FC4{ m}} FL Fi[3]} VBC5{ BC3 BC4 BC2 BC6{ VBC3 VBC4 BC2 v5 v6 FL[2] Fp[4]} v7 Fp[10] Fi FL Fp FC6} BC7{ BC4 VBC6 vd Fi[2]} BC3 VBC8{ BC3} vd v1 v2 v3 FC3[4] FC9{} Fp Fi Fp[9]}


 S20526C9 ::~S20526C9(){ note_dtor("S20526C9", this);}
void  S20526C9 ::v7(){vfunc_called(this, "_ZN8S20526C92v7Ev");}
void  S20526C9 ::v8(){vfunc_called(this, "_ZN8S20526C92v8Ev");}
void  S20526C9 ::v9(){vfunc_called(this, "_ZN8S20526C92v9Ev");}
S20526C9 ::S20526C9(){ note_ctor("S20526C9", this);} // tgen

static void Test_S20526C9()
{
  extern Class_Descriptor cd_S20526C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(134,166)];
    init_test(&cd_S20526C9, buf);
    S20526C9 *dp, &lv = *(dp=new (buf) S20526C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1064,660), "sizeof(S20526C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C9)");
    /*is_ambiguous_... S20526C9::S20526C8 */ AMB_check_base_class_offset(lv, (S20526C8*), ABISELECT(16,12), "S20526C9");
    /*is_ambiguous_... S20526C10::S20526C4 */ AMB_check_base_class_offset(lv, (S20526C4*)(S20526C10*), ABISELECT(376,224), "S20526C9");
    /*is_ambiguous_... S20526C10::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C10*), ABISELECT(376,224), "S20526C9");
    /*is_ambiguous_... S20526C10::S20526C8 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C10*), ABISELECT(416,248), "S20526C9");
    check_base_class_offset(lv, (S20526C4*)(S20526C7*)(S20526C10*), ABISELECT(864,532), "S20526C9");
    /*is_ambiguous_... S20526C9::S20526C7 */ AMB_check_base_class_offset(lv, (S20526C4*)(S20526C7*), ABISELECT(864,532), "S20526C9");
    check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*)(S20526C10*), ABISELECT(897,553), "S20526C9");
    /*is_ambiguous_... S20526C9::S20526C7 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*), ABISELECT(897,553), "S20526C9");
    check_base_class_offset(lv, (S20526C8*)(S20526C7*)(S20526C10*), ABISELECT(488,296), "S20526C9");
    check_base_class_offset(lv, (S20526C7*)(S20526C10*), ABISELECT(480,292), "S20526C9");
    check_base_class_offset(lv, (S20526C10*), ABISELECT(376,224), "S20526C9");
    /*is_ambiguous_... S20526C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C6*), 0, "S20526C9");
    /*is_ambiguous_... S20526C9::S20526C7 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C7*), ABISELECT(912,560), "S20526C9");
    check_base_class_offset(lv, (S20526C7*)(S20526C6*), ABISELECT(904,556), "S20526C9");
    check_base_class_offset(lv, (S20526C6*), 0, "S20526C9");
    /*is_ambiguous_... S20526C9::S20526C4 */ AMB_check_base_class_offset(lv, (S20526C4*), ABISELECT(80,56), "S20526C9");
    check_base_class_offset(lv, (S20526C4*)(S20526C3*), ABISELECT(1024,636), "S20526C9");
    check_base_class_offset(lv, (S20526C3*), ABISELECT(1024,636), "S20526C9");
    check_field_offset(lv, s20526c9f0, ABISELECT(120,80), "S20526C9.s20526c9f0");
    check_field_offset(lv, s20526c9f1, ABISELECT(280,176), "S20526C9.s20526c9f1");
    check_field_offset(lv, s20526c9f2, ABISELECT(288,180), "S20526C9.s20526c9f2");
    check_field_offset(lv, s20526c9f3, ABISELECT(296,184), "S20526C9.s20526c9f3");
    check_field_offset(lv, s20526c9f4, ABISELECT(304,188), "S20526C9.s20526c9f4");
    test_class_info(&lv, &cd_S20526C9);
    dp->~S20526C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20526C9(Test_S20526C9, "S20526C9", ABISELECT(1064,660));

#else // __cplusplus

extern void _ZN8S20526C9C1Ev();
extern void _ZN8S20526C9D2Ev();
Name_Map name_map_S20526C9[] = {
  NSPAIR(_ZN8S20526C9C1Ev),
  NSPAIR(_ZN8S20526C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
extern Class_Descriptor cd_S20526C10;
extern VTBL_ENTRY _ZTI9S20526C10[];
extern  VTBL_ENTRY _ZTV9S20526C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20526C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
extern Class_Descriptor cd_S20526C6;
extern VTBL_ENTRY _ZTI8S20526C6[];
extern  VTBL_ENTRY _ZTV8S20526C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C6[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S20526C3;
extern VTBL_ENTRY _ZTI8S20526C3[];
extern  VTBL_ENTRY _ZTV8S20526C3[];
static Base_Class bases_S20526C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20526C8,    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_S20526C4,    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
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3164C31_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
    8, //immediately_derived
  0, 0},
  {&cd_S20526C8,    ABISELECT(416,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20526C4,    ABISELECT(864,532), //bcp->offset
    31, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(897,553), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20526C8,    ABISELECT(488,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
    7, //immediately_derived
  0, 0},
  {&cd_S20526C7,    ABISELECT(480,292), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20526C10,    ABISELECT(376,224), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20526C8,    ABISELECT(912,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
    11, //immediately_derived
  0, 0},
  {&cd_S20526C7,    ABISELECT(904,556), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20526C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20526C4,    ABISELECT(80,56), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20526C4,    ABISELECT(1024,636), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20526C3,    ABISELECT(1024,636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20526C9[];
extern void _ZN8S20526C9D1Ev();
extern void _ZN8S20526C9D0Ev();
extern void _ZN8S20526C92v7Ev();
extern void _ZN8S20526C92v8Ev();
extern void _ZN8S20526C92v9Ev();
extern void _ZN8S20526C42v3Ev();
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C42v3Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY vtc_S20526C9[] = {
  ABISELECT(1024,636),
  ABISELECT(376,224),
  ABISELECT(897,553),
  ABISELECT(864,532),
  ABISELECT(904,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20526C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20526C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20526C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20526C92v9Ev,
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  ABISELECT(104,68),
  ABISELECT(104,68),
  0,
  0,
  ABISELECT(521,329),
  ABISELECT(488,308),
  ABISELECT(-376,-224),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
  ABISELECT(417,261),
  ABISELECT(384,240),
  ABISELECT(-480,-292),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  0,
  ABISELECT(-864,-532),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  0,
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-24),
  ABISELECT(-904,-556),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  0,
  ABISELECT(-1024,-636),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S20526C9[];
extern void _ZN8S20526C6D1Ev();
extern void _ZN8S20526C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C6__8S20526C9[] = {
  ABISELECT(897,553),
  ABISELECT(864,532),
  ABISELECT(904,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20526C6D0Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__8S20526C6__8S20526C9[] = {
  0,
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-24),
  ABISELECT(-904,-556),
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C6__8S20526C9[] = {
  0,
  ABISELECT(-864,-532),
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20526C10__8S20526C9[] = {
  ABISELECT(521,329),
  ABISELECT(488,308),
  0,
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C79S20526C10__8S20526C9[] = {
  ABISELECT(417,261),
  ABISELECT(384,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C79S20526C10__8S20526C9[] = {
  0,
  ABISELECT(-384,-240),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__9S20526C10__8S20526C9[] = {
  ABISELECT(417,261),
  ABISELECT(384,240),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__A1__9S20526C10__8S20526C9[] = {
  0,
  ABISELECT(-488,-308),
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__A1__8S20526C9[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C7__A1__8S20526C9[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
static  VTT_ENTRY vtt_S20526C9[] = {
  {&(_ZTV8S20526C9[7]),  7,47},
  {&(_tg__ZTV8S20526C6__8S20526C9[5]),  5,7},
  {&(_tg__ZTV8S20526C7__8S20526C6__8S20526C9[6]),  6,8},
  {&(_tg__ZTV8S20526C4__8S20526C6__8S20526C9[3]),  3,4},
  {&(_ZTV8S20526C9[23]),  23,47},
  {&(_ZTV8S20526C9[29]),  29,47},
  {&(_ZTV8S20526C9[34]),  34,47},
  {&(_ZTV8S20526C9[41]),  41,47},
  {&(_ZTV8S20526C9[46]),  46,47},
  {&(_tg__ZTV9S20526C10__8S20526C9[4]),  4,6},
  {&(_tg__ZTV8S20526C79S20526C10__8S20526C9[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C79S20526C10__8S20526C9[3]),  3,4},
  {&(_tg__ZTV8S20526C7__9S20526C10__8S20526C9[4]),  4,6},
  {&(_tg__ZTV8S20526C4__A1__9S20526C10__8S20526C9[3]),  3,4},
  {&(_tg__ZTV8S20526C7__A1__8S20526C9[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C7__A1__8S20526C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20526C9[];
extern  VTBL_ENTRY _ZTV8S20526C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C9[];
Class_Descriptor cd_S20526C9 = {  "S20526C9", // class name
  bases_S20526C9, 16,
  &(vtc_S20526C9[0]), // expected_vtbl_contents
  &(vtt_S20526C9[0]), // expected_vtt_contents
  ABISELECT(1064,660), // object size
  NSPAIRA(_ZTI8S20526C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20526C9),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20526C9),16, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20526C12  : S20526C10 , S20526C8 , S3164C31_nt , virtual S20526C3 , S20526C7 {
  __tsi64 s20526c12f0[7];
  __tsi64  :0;
  virtual  ~S20526C12(); // _ZN9S20526C12D2Ev
  virtual void  v10(); // _ZN9S20526C123v10Ev
  virtual void  v11(); // _ZN9S20526C123v11Ev
  virtual void  v12(); // _ZN9S20526C123v12Ev
  S20526C12(); // tgen
};
//SIG(-1 S20526C12) C1{ BC2{ BC3{ v4 Fc[2] FL Fp FC4{ m}} BC4 BC5{ m FC3 FL Fi[3]} BC6{ VBC3 VBC4 BC5 v5 v6 FL[2] Fp[4]} v7 Fp[10] Fi FL Fp FC6} BC5 BC4 VBC7{ BC3} BC6 vd v1 v2 v3 FL[7] FL:0}


 S20526C12 ::~S20526C12(){ note_dtor("S20526C12", this);}
void  S20526C12 ::v10(){vfunc_called(this, "_ZN9S20526C123v10Ev");}
void  S20526C12 ::v11(){vfunc_called(this, "_ZN9S20526C123v11Ev");}
void  S20526C12 ::v12(){vfunc_called(this, "_ZN9S20526C123v12Ev");}
S20526C12 ::S20526C12(){ note_ctor("S20526C12", this);} // tgen

static void Test_S20526C12()
{
  extern Class_Descriptor cd_S20526C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(102,135)];
    init_test(&cd_S20526C12, buf);
    S20526C12 *dp, &lv = *(dp=new (buf) S20526C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(808,536), "sizeof(S20526C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C12)");
    /*is_ambiguous_... S20526C10::S20526C4 */ AMB_check_base_class_offset(lv, (S20526C4*)(S20526C10*), 0, "S20526C12");
    /*is_ambiguous_... S20526C10::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C10*), 0, "S20526C12");
    /*is_ambiguous_... S20526C10::S20526C8 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C10*), ABISELECT(40,24), "S20526C12");
    check_base_class_offset(lv, (S20526C4*)(S20526C7*)(S20526C10*), ABISELECT(728,488), "S20526C12");
    /*is_ambiguous_... S20526C12::S20526C7 */ AMB_check_base_class_offset(lv, (S20526C4*)(S20526C7*), ABISELECT(728,488), "S20526C12");
    check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*)(S20526C10*), ABISELECT(761,509), "S20526C12");
    /*is_ambiguous_... S20526C12::S20526C7 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*), ABISELECT(761,509), "S20526C12");
    check_base_class_offset(lv, (S20526C8*)(S20526C7*)(S20526C10*), ABISELECT(112,72), "S20526C12");
    check_base_class_offset(lv, (S20526C7*)(S20526C10*), ABISELECT(104,68), "S20526C12");
    check_base_class_offset(lv, (S20526C10*), 0, "S20526C12");
    /*is_ambiguous_... S20526C12::S20526C8 */ AMB_check_base_class_offset(lv, (S20526C8*), ABISELECT(488,308), "S20526C12");
    /*is_ambiguous_... S20526C12::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), ABISELECT(548,352), "S20526C12");
    check_base_class_offset(lv, (S20526C4*)(S20526C3*), ABISELECT(768,512), "S20526C12");
    check_base_class_offset(lv, (S20526C3*), ABISELECT(768,512), "S20526C12");
    /*is_ambiguous_... S20526C12::S20526C7 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C7*), ABISELECT(560,356), "S20526C12");
    /*is_ambiguous_... S20526C12::S20526C7 */ AMB_check_base_class_offset(lv, (S20526C7*), ABISELECT(552,352), "S20526C12");
    check_field_offset(lv, s20526c12f0, ABISELECT(672,432), "S20526C12.s20526c12f0");
    test_class_info(&lv, &cd_S20526C12);
    dp->~S20526C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20526C12(Test_S20526C12, "S20526C12", ABISELECT(808,536));

#else // __cplusplus

extern void _ZN9S20526C12C1Ev();
extern void _ZN9S20526C12D2Ev();
Name_Map name_map_S20526C12[] = {
  NSPAIR(_ZN9S20526C12C1Ev),
  NSPAIR(_ZN9S20526C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
extern Class_Descriptor cd_S20526C10;
extern VTBL_ENTRY _ZTI9S20526C10[];
extern  VTBL_ENTRY _ZTV9S20526C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20526C10[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S20526C3;
extern VTBL_ENTRY _ZTI8S20526C3[];
extern  VTBL_ENTRY _ZTV8S20526C3[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
static Base_Class bases_S20526C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20526C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20526C8,    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_S20526C4,    ABISELECT(728,488), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(761,509), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20526C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20526C7,    ABISELECT(104,68), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20526C10,    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_S20526C8,    ABISELECT(488,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
    -1, //immediately_derived
  1, 0},
  {&cd_S3164C31_nt,    ABISELECT(548,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20526C4,    ABISELECT(768,512), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20526C3,    ABISELECT(768,512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20526C8,    ABISELECT(560,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
    13, //immediately_derived
  0, 0},
  {&cd_S20526C7,    ABISELECT(552,352), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20526C12[];
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
extern void _ZN9S20526C12D1Ev();
extern void _ZN9S20526C12D0Ev();
extern void _ZN9S20526C123v10Ev();
extern void _ZN9S20526C123v11Ev();
extern void _ZN9S20526C123v12Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C42v3Ev();
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY vtc_S20526C12[] = {
  ABISELECT(768,512),
  ABISELECT(761,509),
  ABISELECT(728,488),
  0,
  (VTBL_ENTRY)&(_ZTI9S20526C12[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
  (VTBL_ENTRY)&_ZN9S20526C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20526C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20526C123v10Ev,
  (VTBL_ENTRY)&_ZN9S20526C123v11Ev,
  (VTBL_ENTRY)&_ZN9S20526C123v12Ev,
  ABISELECT(657,441),
  ABISELECT(624,420),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20526C12[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  ABISELECT(209,157),
  ABISELECT(176,136),
  ABISELECT(-552,-352),
  (VTBL_ENTRY)&(_ZTI9S20526C12[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  0,
  ABISELECT(-728,-488),
  (VTBL_ENTRY)&(_ZTI9S20526C12[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  0,
  ABISELECT(-768,-512),
  (VTBL_ENTRY)&(_ZTI9S20526C12[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S20526C12[];
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20526C10__9S20526C12[] = {
  ABISELECT(761,509),
  ABISELECT(728,488),
  0,
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C79S20526C10__9S20526C12[] = {
  ABISELECT(657,441),
  ABISELECT(624,420),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C79S20526C10__9S20526C12[] = {
  0,
  ABISELECT(-624,-420),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__9S20526C10__9S20526C12[] = {
  ABISELECT(657,441),
  ABISELECT(624,420),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__A1__9S20526C10__9S20526C12[] = {
  0,
  ABISELECT(-728,-488),
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__A1__9S20526C12[] = {
  ABISELECT(209,157),
  ABISELECT(176,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C7__A1__9S20526C12[] = {
  0,
  ABISELECT(-176,-136),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
static  VTT_ENTRY vtt_S20526C12[] = {
  {&(_ZTV9S20526C12[5]),  5,32},
  {&(_tg__ZTV9S20526C10__9S20526C12[4]),  4,6},
  {&(_tg__ZTV8S20526C79S20526C10__9S20526C12[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C79S20526C10__9S20526C12[3]),  3,4},
  {&(_tg__ZTV8S20526C7__9S20526C10__9S20526C12[4]),  4,6},
  {&(_tg__ZTV8S20526C4__A1__9S20526C10__9S20526C12[3]),  3,4},
  {&(_tg__ZTV8S20526C7__A1__9S20526C12[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C7__A1__9S20526C12[3]),  3,4},
  {&(_ZTV9S20526C12[16]),  16,32},
  {&(_ZTV9S20526C12[27]),  27,32},
  {&(_ZTV9S20526C12[31]),  31,32},
  {&(_ZTV9S20526C12[22]),  22,32},
};
extern VTBL_ENTRY _ZTI9S20526C12[];
extern  VTBL_ENTRY _ZTV9S20526C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20526C12[];
Class_Descriptor cd_S20526C12 = {  "S20526C12", // class name
  bases_S20526C12, 14,
  &(vtc_S20526C12[0]), // expected_vtbl_contents
  &(vtt_S20526C12[0]), // expected_vtt_contents
  ABISELECT(808,536), // object size
  NSPAIRA(_ZTI9S20526C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20526C12),32, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20526C12),12, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20526C13  : S3164C31_nt , S20526C7 {
  ::S20526C4 s20526c13f0;
  char s20526c13f1;
  virtual void  v13(); // _ZN9S20526C133v13Ev
  virtual void  v14(); // _ZN9S20526C133v14Ev
  ~S20526C13(); // tgen
  S20526C13(); // tgen
};
//SIG(-1 S20526C13) C1{ BC2{ m} BC3{ VBC4{ v3 Fc[2] FL Fp FC2} VBC2 BC5{ m FC4 FL Fi[3]} v4 v5 FL[2] Fp[4]} v1 v2 FC4 Fc}


void  S20526C13 ::v13(){vfunc_called(this, "_ZN9S20526C133v13Ev");}
void  S20526C13 ::v14(){vfunc_called(this, "_ZN9S20526C133v14Ev");}
S20526C13 ::~S20526C13(){ note_dtor("S20526C13", this);} // tgen
S20526C13 ::S20526C13(){ note_ctor("S20526C13", this);} // tgen

static void Test_S20526C13()
{
  extern Class_Descriptor cd_S20526C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,34)];
    init_test(&cd_S20526C13, buf);
    S20526C13 *dp, &lv = *(dp=new (buf) S20526C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,132), "sizeof(S20526C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C13)");
    /*is_ambiguous_... S20526C13::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20526C13");
    check_base_class_offset(lv, (S20526C4*)(S20526C7*), ABISELECT(168,108), "S20526C13");
    check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*), ABISELECT(201,129), "S20526C13");
    check_base_class_offset(lv, (S20526C8*)(S20526C7*), ABISELECT(8,4), "S20526C13");
    check_base_class_offset(lv, (S20526C7*), 0, "S20526C13");
    check_field_offset(lv, s20526c13f0, ABISELECT(120,80), "S20526C13.s20526c13f0");
    check_field_offset(lv, s20526c13f1, ABISELECT(160,104), "S20526C13.s20526c13f1");
    test_class_info(&lv, &cd_S20526C13);
    dp->~S20526C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20526C13(Test_S20526C13, "S20526C13", ABISELECT(208,132));

#else // __cplusplus

extern void _ZN9S20526C13C1Ev();
extern void _ZN9S20526C13D1Ev();
Name_Map name_map_S20526C13[] = {
  NSPAIR(_ZN9S20526C13C1Ev),
  NSPAIR(_ZN9S20526C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
static Base_Class bases_S20526C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20526C4,    ABISELECT(168,108), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(201,129), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20526C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20526C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20526C13[];
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN9S20526C133v13Ev();
extern void _ZN9S20526C133v14Ev();
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY vtc_S20526C13[] = {
  ABISELECT(201,129),
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20526C13[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20526C133v13Ev,
  (VTBL_ENTRY)&_ZN9S20526C133v14Ev,
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI9S20526C13[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S20526C13[];
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__9S20526C13[] = {
  ABISELECT(201,129),
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C7__9S20526C13[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
static  VTT_ENTRY vtt_S20526C13[] = {
  {&(_ZTV9S20526C13[4]),  4,12},
  {&(_tg__ZTV8S20526C7__9S20526C13[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C7__9S20526C13[3]),  3,4},
  {&(_ZTV9S20526C13[11]),  11,12},
};
extern VTBL_ENTRY _ZTI9S20526C13[];
extern  VTBL_ENTRY _ZTV9S20526C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20526C13[];
Class_Descriptor cd_S20526C13 = {  "S20526C13", // class name
  bases_S20526C13, 5,
  &(vtc_S20526C13[0]), // expected_vtbl_contents
  &(vtt_S20526C13[0]), // expected_vtt_contents
  ABISELECT(208,132), // object size
  NSPAIRA(_ZTI9S20526C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20526C13),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20526C13),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20526C1  : virtual S20526C2 , virtual S20526C9 , virtual S20526C12 , virtual S20526C13 {
  __tsi64 s20526c1f0;
  int s20526c1f1;
  virtual  ~S20526C1(); // _ZN8S20526C1D2Ev
  virtual void  v1(); // _ZN8S20526C12v1Ev
  virtual void  v2(); // _ZN8S20526C12v2Ev
  S20526C1(); // tgen
};
//SIG(1 S20526C1) C1{ VBC2{ VBC3{ BC4{ v3 Fc[2] FL Fp FC5{ m}}} BC6{ BC5 VBC7{ VBC4 VBC5 BC8{ m FC4 FL Fi[3]} v4 v5 FL[2] Fp[4]} vd Fi[2]} vd FL Fi[6] Fp Fs FC3} VBC9{ BC8 VBC10{ BC4 BC5 BC8 BC7 v6 Fp[10] Fi FL Fp FC7} BC6 BC4 VBC3 vd v7 v8 v9 FC4[4] FC11{} Fp Fi Fp[9]} VBC12{ BC10 BC8 BC5 VBC3 BC7 vd v10 v11 v12 FL[7] FL:0} VBC13{ BC5 BC7 v13 v14 FC4 Fc} vd v1 v2 FL Fi}


 S20526C1 ::~S20526C1(){ note_dtor("S20526C1", this);}
void  S20526C1 ::v1(){vfunc_called(this, "_ZN8S20526C12v1Ev");}
void  S20526C1 ::v2(){vfunc_called(this, "_ZN8S20526C12v2Ev");}
S20526C1 ::S20526C1(){ note_ctor("S20526C1", this);} // tgen

static void Test_S20526C1()
{
  extern Class_Descriptor cd_S20526C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(262,338)];
    init_test(&cd_S20526C1, buf);
    S20526C1 *dp, &lv = *(dp=new (buf) S20526C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2088,1348), "sizeof(S20526C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20526C1)");
    check_base_class_offset(lv, (S20526C4*)(S20526C3*), ABISELECT(128,92), "S20526C1");
    check_base_class_offset(lv, (S20526C3*)(S20526C2*), ABISELECT(128,92), "S20526C1");
    check_base_class_offset(lv, (S20526C3*)(S20526C9*), ABISELECT(128,92), "S20526C1");
    check_base_class_offset(lv, (S20526C3*)(S20526C12*), ABISELECT(128,92), "S20526C1");
    /*is_ambiguous_... S20526C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C6*)(S20526C2*), ABISELECT(24,16), "S20526C1");
    /*is_ambiguous_... S20526C1::S20526C7 */ AMB_check_base_class_offset(lv, (S20526C4*)(S20526C7*), ABISELECT(288,196), "S20526C1");
    /*is_ambiguous_... S20526C1::S20526C10 */ AMB_check_base_class_offset(lv, (S20526C4*)(S20526C7*)(S20526C10*), ABISELECT(288,196), "S20526C1");
    check_base_class_offset(lv, (S20526C4*)(S20526C7*)(S20526C10*)(S20526C12*), ABISELECT(288,196), "S20526C1");
    /*is_ambiguous_... S20526C12::S20526C7 */ AMB_check_base_class_offset(lv, (S20526C4*)(S20526C7*)(S20526C12*), ABISELECT(288,196), "S20526C1");
    check_base_class_offset(lv, (S20526C4*)(S20526C7*)(S20526C13*), ABISELECT(288,196), "S20526C1");
    /*is_ambiguous_... S20526C1::S20526C7 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*), 0, "S20526C1");
    /*is_ambiguous_... S20526C1::S20526C10 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*)(S20526C10*), 0, "S20526C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*)(S20526C10*)(S20526C12*), 0, "S20526C1");
    /*is_ambiguous_... S20526C12::S20526C7 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*)(S20526C12*), 0, "S20526C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S20526C7*)(S20526C13*), 0, "S20526C1");
    /*is_ambiguous_... S20526C1::S20526C7 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C7*), ABISELECT(176,120), "S20526C1");
    check_base_class_offset(lv, (S20526C7*)(S20526C6*)(S20526C2*), ABISELECT(168,116), "S20526C1");
    check_base_class_offset(lv, (S20526C7*)(S20526C6*)(S20526C9*), ABISELECT(168,116), "S20526C1");
    check_base_class_offset(lv, (S20526C6*)(S20526C2*), ABISELECT(24,16), "S20526C1");
    check_base_class_offset(lv, (S20526C2*), ABISELECT(24,16), "S20526C1");
    /*is_ambiguous_... S20526C9::S20526C8 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C9*), ABISELECT(344,232), "S20526C1");
    /*is_ambiguous_... S20526C1::S20526C10 */ AMB_check_base_class_offset(lv, (S20526C4*)(S20526C10*), ABISELECT(704,444), "S20526C1");
    /*is_ambiguous_... S20526C1::S20526C10 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C10*), ABISELECT(704,444), "S20526C1");
    /*is_ambiguous_... S20526C1::S20526C10 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C10*), ABISELECT(744,468), "S20526C1");
    /*is_ambiguous_... S20526C1::S20526C10 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C7*)(S20526C10*), ABISELECT(816,516), "S20526C1");
    /*is_ambiguous_... S20526C1::S20526C10 */ AMB_check_base_class_offset(lv, (S20526C7*)(S20526C10*), ABISELECT(808,512), "S20526C1");
    check_base_class_offset(lv, (S20526C10*)(S20526C9*), ABISELECT(704,444), "S20526C1");
    /*is_ambiguous_... S20526C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C6*)(S20526C9*), ABISELECT(328,220), "S20526C1");
    check_base_class_offset(lv, (S20526C6*)(S20526C9*), ABISELECT(328,220), "S20526C1");
    /*is_ambiguous_... S20526C9::S20526C4 */ AMB_check_base_class_offset(lv, (S20526C4*)(S20526C9*), ABISELECT(408,276), "S20526C1");
    check_base_class_offset(lv, (S20526C9*), ABISELECT(328,220), "S20526C1");
    /*is_ambiguous_... S20526C10::S20526C4 */ AMB_check_base_class_offset(lv, (S20526C4*)(S20526C10*)(S20526C12*), ABISELECT(1192,752), "S20526C1");
    /*is_ambiguous_... S20526C10::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C10*)(S20526C12*), ABISELECT(1192,752), "S20526C1");
    /*is_ambiguous_... S20526C10::S20526C8 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C10*)(S20526C12*), ABISELECT(1232,776), "S20526C1");
    check_base_class_offset(lv, (S20526C8*)(S20526C7*)(S20526C10*)(S20526C12*), ABISELECT(1304,824), "S20526C1");
    check_base_class_offset(lv, (S20526C7*)(S20526C10*)(S20526C12*), ABISELECT(1296,820), "S20526C1");
    check_base_class_offset(lv, (S20526C10*)(S20526C12*), ABISELECT(1192,752), "S20526C1");
    /*is_ambiguous_... S20526C12::S20526C8 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C12*), ABISELECT(1680,1060), "S20526C1");
    /*is_ambiguous_... S20526C12::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C12*), ABISELECT(1740,1104), "S20526C1");
    /*is_ambiguous_... S20526C12::S20526C7 */ AMB_check_base_class_offset(lv, (S20526C8*)(S20526C7*)(S20526C12*), ABISELECT(1752,1108), "S20526C1");
    /*is_ambiguous_... S20526C12::S20526C7 */ AMB_check_base_class_offset(lv, (S20526C7*)(S20526C12*), ABISELECT(1744,1104), "S20526C1");
    check_base_class_offset(lv, (S20526C12*), ABISELECT(1192,752), "S20526C1");
    /*is_ambiguous_... S20526C13::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20526C13*), ABISELECT(1920,1240), "S20526C1");
    check_base_class_offset(lv, (S20526C8*)(S20526C7*)(S20526C13*), ABISELECT(1928,1244), "S20526C1");
    check_base_class_offset(lv, (S20526C7*)(S20526C13*), ABISELECT(1920,1240), "S20526C1");
    check_base_class_offset(lv, (S20526C13*), ABISELECT(1920,1240), "S20526C1");
    check_field_offset(lv, s20526c1f0, ABISELECT(8,4), "S20526C1.s20526c1f0");
    check_field_offset(lv, s20526c1f1, ABISELECT(16,12), "S20526C1.s20526c1f1");
    test_class_info(&lv, &cd_S20526C1);
    dp->~S20526C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20526C1(Test_S20526C1, "S20526C1", ABISELECT(2088,1348));

#else // __cplusplus

extern void _ZN8S20526C1C1Ev();
extern void _ZN8S20526C1D2Ev();
Name_Map name_map_S20526C1[] = {
  NSPAIR(_ZN8S20526C1C1Ev),
  NSPAIR(_ZN8S20526C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S20526C3;
extern VTBL_ENTRY _ZTI8S20526C3[];
extern  VTBL_ENTRY _ZTV8S20526C3[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
extern Class_Descriptor cd_S20526C6;
extern VTBL_ENTRY _ZTI8S20526C6[];
extern  VTBL_ENTRY _ZTV8S20526C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C6[];
extern Class_Descriptor cd_S20526C2;
extern VTBL_ENTRY _ZTI8S20526C2[];
extern  VTBL_ENTRY _ZTV8S20526C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C2[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
extern Class_Descriptor cd_S20526C10;
extern VTBL_ENTRY _ZTI9S20526C10[];
extern  VTBL_ENTRY _ZTV9S20526C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20526C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C6;
extern VTBL_ENTRY _ZTI8S20526C6[];
extern  VTBL_ENTRY _ZTV8S20526C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C6[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S20526C9;
extern VTBL_ENTRY _ZTI8S20526C9[];
extern  VTBL_ENTRY _ZTV8S20526C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C9[];
extern Class_Descriptor cd_S20526C4;
extern VTBL_ENTRY _ZTI8S20526C4[];
extern  VTBL_ENTRY _ZTV8S20526C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
extern Class_Descriptor cd_S20526C10;
extern VTBL_ENTRY _ZTI9S20526C10[];
extern  VTBL_ENTRY _ZTV9S20526C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20526C10[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
extern Class_Descriptor cd_S20526C12;
extern VTBL_ENTRY _ZTI9S20526C12[];
extern  VTBL_ENTRY _ZTV9S20526C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20526C12[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S20526C7;
extern VTBL_ENTRY _ZTI8S20526C7[];
extern  VTBL_ENTRY _ZTV8S20526C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C7[];
extern Class_Descriptor cd_S20526C13;
extern VTBL_ENTRY _ZTI9S20526C13[];
extern  VTBL_ENTRY _ZTV9S20526C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20526C13[];
static Base_Class bases_S20526C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20526C4,    ABISELECT(128,92), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20526C3,    ABISELECT(128,92), //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
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20526C4,    ABISELECT(288,196), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20526C8,    ABISELECT(176,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20526C7,    ABISELECT(168,116), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20526C6,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20526C2,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20526C8,    ABISELECT(344,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
    19, //immediately_derived
  0, 0},
  {&cd_S20526C4,    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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3164C31_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
    15, //immediately_derived
  0, 0},
  {&cd_S20526C8,    ABISELECT(744,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
    15, //immediately_derived
  0, 0},
  {&cd_S20526C8,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20526C7,    ABISELECT(808,512), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20526C10,    ABISELECT(704,444), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(328,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
    17, //immediately_derived
  0, 0},
  {&cd_S20526C6,    ABISELECT(328,220), //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
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20526C4,    ABISELECT(408,276), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20526C9,    ABISELECT(328,220), //bcp->offset
    40, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20526C4,    ABISELECT(1192,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3164C31_nt,    ABISELECT(1192,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20526C8,    ABISELECT(1232,776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20526C8,    ABISELECT(1304,824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20526C7,    ABISELECT(1296,820), //bcp->offset
    96, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20526C10,    ABISELECT(1192,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20526C8,    ABISELECT(1680,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3164C31_nt,    ABISELECT(1740,1104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20526C8,    ABISELECT(1752,1108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20526C7,    ABISELECT(1744,1104), //bcp->offset
    102, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20526C12,    ABISELECT(1192,752), //bcp->offset
    76, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    ABISELECT(1920,1240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20526C8,    ABISELECT(1928,1244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20526C7,    ABISELECT(1920,1240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20526C13,    ABISELECT(1920,1240), //bcp->offset
    108, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20526C1[];
extern void _ZN8S20526C1D1Ev();
extern void _ZN8S20526C1D0Ev();
extern void _ZN8S20526C12v1Ev();
extern void _ZN8S20526C12v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20526C1D1Ev,_ZTv0_n28_N8S20526C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S20526C1D1Ev,_ZThn16_N8S20526C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20526C1D0Ev,_ZTv0_n28_N8S20526C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S20526C1D0Ev,_ZThn16_N8S20526C1D0Ev)() __attribute__((weak));
extern void _ZN8S20526C42v3Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C42v3Ev();
extern void ABISELECT(_ZTv0_n64_N8S20526C1D1Ev,_ZTv0_n32_N8S20526C1D1Ev)();
extern void ABISELECT(_ZThn328_N8S20526C1D1Ev,_ZThn220_N8S20526C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20526C1D0Ev,_ZTv0_n32_N8S20526C1D0Ev)();
extern void ABISELECT(_ZThn328_N8S20526C1D0Ev,_ZThn220_N8S20526C1D0Ev)() __attribute__((weak));
extern void _ZN8S20526C92v7Ev();
extern void _ZN8S20526C92v8Ev();
extern void _ZN8S20526C92v9Ev();
extern void _ZN8S20526C42v3Ev();
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
extern void ABISELECT(_ZTv0_n80_N8S20526C1D1Ev,_ZTv0_n40_N8S20526C1D1Ev)();
extern void ABISELECT(_ZThn1192_N8S20526C1D1Ev,_ZThn752_N8S20526C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20526C1D0Ev,_ZTv0_n40_N8S20526C1D0Ev)();
extern void ABISELECT(_ZThn1192_N8S20526C1D0Ev,_ZThn752_N8S20526C1D0Ev)() __attribute__((weak));
extern void _ZN9S20526C123v10Ev();
extern void _ZN9S20526C123v11Ev();
extern void _ZN9S20526C123v12Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN9S20526C133v13Ev();
extern void _ZN9S20526C133v14Ev();
static  VTBL_ENTRY vtc_S20526C1[] = {
  ABISELECT(1920,1240),
  ABISELECT(1192,752),
  ABISELECT(704,444),
  ABISELECT(328,220),
  0,
  ABISELECT(288,196),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20526C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20526C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20526C12v2Ev,
  ABISELECT(-24,-16),
  ABISELECT(104,76),
  ABISELECT(-24,-16),
  ABISELECT(264,180),
  ABISELECT(144,100),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20526C1D1Ev,_ZTv0_n28_N8S20526C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20526C1D0Ev,_ZTv0_n28_N8S20526C1D0Ev),
  0,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  0,
  0,
  ABISELECT(-168,-116),
  ABISELECT(120,80),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  0,
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  ABISELECT(80,56),
  0,
  0,
  0,
  ABISELECT(-328,-220),
  ABISELECT(-200,-128),
  ABISELECT(376,224),
  ABISELECT(-328,-220),
  ABISELECT(-40,-24),
  ABISELECT(-160,-104),
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20526C1D1Ev,_ZTv0_n32_N8S20526C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20526C1D0Ev,_ZTv0_n32_N8S20526C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20526C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20526C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20526C92v9Ev,
  ABISELECT(-408,-276),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  ABISELECT(104,68),
  ABISELECT(104,68),
  0,
  0,
  ABISELECT(-704,-444),
  ABISELECT(-416,-248),
  ABISELECT(-704,-444),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
  ABISELECT(-808,-512),
  ABISELECT(-520,-316),
  ABISELECT(-808,-512),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  0,
  0,
  0,
  ABISELECT(-1192,-752),
  ABISELECT(104,68),
  ABISELECT(104,68),
  0,
  0,
  ABISELECT(-1064,-660),
  ABISELECT(-1192,-752),
  ABISELECT(-904,-556),
  ABISELECT(-1192,-752),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20526C1D1Ev,_ZTv0_n40_N8S20526C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20526C1D0Ev,_ZTv0_n40_N8S20526C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20526C123v10Ev,
  (VTBL_ENTRY)&_ZN9S20526C123v11Ev,
  (VTBL_ENTRY)&_ZN9S20526C123v12Ev,
  ABISELECT(-1296,-820),
  ABISELECT(-1008,-624),
  ABISELECT(-1296,-820),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  ABISELECT(-1744,-1104),
  ABISELECT(-1456,-908),
  ABISELECT(-1744,-1104),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1920,-1240),
  ABISELECT(-1632,-1044),
  ABISELECT(-1920,-1240),
  (VTBL_ENTRY)&(_ZTI8S20526C1[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20526C133v13Ev,
  (VTBL_ENTRY)&_ZN9S20526C133v14Ev,
};
extern VTBL_ENTRY _ZTV8S20526C1[];
extern void _ZN8S20526C2D1Ev();
extern void _ZN8S20526C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C2__8S20526C1[] = {
  ABISELECT(104,76),
  ABISELECT(-24,-16),
  ABISELECT(264,180),
  ABISELECT(144,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C2[0]),
  (VTBL_ENTRY)&_ZN8S20526C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20526C2D0Ev,
};
extern void _ZN8S20526C6D1Ev();
extern void _ZN8S20526C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C68S20526C2__8S20526C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(264,180),
  ABISELECT(144,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20526C6D0Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__8S20526C68S20526C2__8S20526C1[] = {
  0,
  0,
  ABISELECT(-168,-116),
  ABISELECT(120,80),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C68S20526C2__8S20526C1[] = {
  0,
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C48S20526C3__8S20526C2__8S20526C1[] = {
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S20526C2[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__8S20526C2__8S20526C1[] = {
  0,
  0,
  ABISELECT(-168,-116),
  ABISELECT(120,80),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S20526C2[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__A1__8S20526C2__8S20526C1[] = {
  0,
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S20526C2[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__8S20526C1[] = {
  ABISELECT(-168,-116),
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C7__8S20526C1[] = {
  0,
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C9D1Ev();
extern void _ZN8S20526C9D0Ev();
extern void _ZN8S20526C92v7Ev();
extern void _ZN8S20526C92v8Ev();
extern void _ZN8S20526C92v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C9__8S20526C1[] = {
  ABISELECT(-200,-128),
  ABISELECT(376,224),
  ABISELECT(-328,-220),
  ABISELECT(-40,-24),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20526C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20526C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20526C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20526C92v9Ev,
};
extern void _ZN8S20526C6D1Ev();
extern void _ZN8S20526C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C68S20526C9__A1__8S20526C1[] = {
  ABISELECT(-328,-220),
  ABISELECT(-40,-24),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20526C6D0Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__8S20526C68S20526C9__A1__8S20526C1[] = {
  0,
  0,
  ABISELECT(-168,-116),
  ABISELECT(120,80),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C68S20526C9__A1__8S20526C1[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20526C6[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20526C10__8S20526C9__8S20526C1[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  0,
  0,
  ABISELECT(-704,-444),
  ABISELECT(-416,-248),
  ABISELECT(-376,-224),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C79S20526C10__8S20526C9__8S20526C1[] = {
  ABISELECT(-808,-512),
  ABISELECT(-520,-316),
  ABISELECT(-480,-292),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__A1__8S20526C9__8S20526C1[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__A1__8S20526C9__8S20526C1[] = {
  0,
  0,
  ABISELECT(-168,-116),
  ABISELECT(120,80),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C48S20526C3__A3__8S20526C9__8S20526C1[] = {
  0,
  ABISELECT(200,128),
  (VTBL_ENTRY)&(_ZTI8S20526C9[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20526C10__8S20526C1[] = {
  ABISELECT(-704,-444),
  ABISELECT(-416,-248),
  0,
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C79S20526C10__A1__8S20526C1[] = {
  ABISELECT(-808,-512),
  ABISELECT(-520,-316),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C79S20526C10__A1__8S20526C1[] = {
  0,
  ABISELECT(520,316),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__9S20526C10__8S20526C1[] = {
  ABISELECT(-808,-512),
  ABISELECT(-520,-316),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__A1__9S20526C10__8S20526C1[] = {
  0,
  ABISELECT(416,248),
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
extern void _ZN9S20526C12D1Ev();
extern void _ZN9S20526C12D0Ev();
extern void _ZN9S20526C123v10Ev();
extern void _ZN9S20526C123v11Ev();
extern void _ZN9S20526C123v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20526C12__8S20526C1[] = {
  ABISELECT(-1064,-660),
  ABISELECT(-1192,-752),
  ABISELECT(-904,-556),
  0,
  (VTBL_ENTRY)&(_ZTI9S20526C12[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
  (VTBL_ENTRY)&_ZN9S20526C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20526C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20526C123v10Ev,
  (VTBL_ENTRY)&_ZN9S20526C123v11Ev,
  (VTBL_ENTRY)&_ZN9S20526C123v12Ev,
};
extern void _ZN8S20526C42v3Ev();
extern void _ZN9S20526C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20526C109S20526C12__A1__8S20526C1[] = {
  ABISELECT(-1192,-752),
  ABISELECT(-904,-556),
  0,
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20526C102v6Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C79S20526C109S20526C12__A2__8S20526C1[] = {
  ABISELECT(-1296,-820),
  ABISELECT(-1008,-624),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C79S20526C109S20526C12__A2__8S20526C1[] = {
  0,
  ABISELECT(1008,624),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__9S20526C109S20526C12__A1__8S20526C1[] = {
  ABISELECT(-1296,-820),
  ABISELECT(-1008,-624),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__A1__9S20526C109S20526C12__A1__8S20526C1[] = {
  0,
  ABISELECT(904,556),
  (VTBL_ENTRY)&(_ZTI9S20526C10[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C79S20526C12__A3__8S20526C1[] = {
  ABISELECT(-1744,-1104),
  ABISELECT(-1456,-908),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C79S20526C12__A3__8S20526C1[] = {
  0,
  ABISELECT(1456,908),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C79S20526C10__9S20526C12__8S20526C1[] = {
  ABISELECT(-1296,-820),
  ABISELECT(-1008,-624),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20526C12[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__A1__9S20526C12__8S20526C1[] = {
  0,
  ABISELECT(904,556),
  (VTBL_ENTRY)&(_ZTI9S20526C12[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C48S20526C3__A2__9S20526C12__8S20526C1[] = {
  0,
  ABISELECT(1064,660),
  (VTBL_ENTRY)&(_ZTI9S20526C12[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C7__A1__9S20526C12__8S20526C1[] = {
  ABISELECT(-1744,-1104),
  ABISELECT(-1456,-908),
  ABISELECT(-552,-352),
  (VTBL_ENTRY)&(_ZTI9S20526C12[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
extern void _ZN9S20526C133v13Ev();
extern void _ZN9S20526C133v14Ev();
static  VTBL_ENTRY _tg__ZTV9S20526C13__8S20526C1[] = {
  ABISELECT(-1920,-1240),
  ABISELECT(-1632,-1044),
  0,
  (VTBL_ENTRY)&(_ZTI9S20526C13[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20526C133v13Ev,
  (VTBL_ENTRY)&_ZN9S20526C133v14Ev,
};
extern void _ZN8S20526C72v4Ev();
extern void _ZN8S20526C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C79S20526C13__A4__8S20526C1[] = {
  ABISELECT(-1920,-1240),
  ABISELECT(-1632,-1044),
  0,
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20526C72v5Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__8S20526C79S20526C13__A4__8S20526C1[] = {
  0,
  ABISELECT(1632,1044),
  (VTBL_ENTRY)&(_ZTI8S20526C7[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
extern void _ZN8S20526C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20526C4__9S20526C13__8S20526C1[] = {
  0,
  ABISELECT(1632,1044),
  (VTBL_ENTRY)&(_ZTI9S20526C13[0]),
  (VTBL_ENTRY)&_ZN8S20526C42v3Ev,
};
static  VTT_ENTRY vtt_S20526C1[] = {
  {&(_ZTV8S20526C1[11]),  11,120},
  {&(_ZTV8S20526C1[22]),  22,120},
  {&(_ZTV8S20526C1[27]),  27,120},
  {&(_ZTV8S20526C1[34]),  34,120},
  {&(_ZTV8S20526C1[39]),  39,120},
  {&(_ZTV8S20526C1[52]),  52,120},
  {&(_ZTV8S20526C1[68]),  68,120},
  {&(_ZTV8S20526C1[74]),  74,120},
  {&(_ZTV8S20526C1[59]),  59,120},
  {&(_ZTV8S20526C1[89]),  89,120},
  {&(_ZTV8S20526C1[100]),  100,120},
  {&(_ZTV8S20526C1[106]),  106,120},
  {&(_ZTV8S20526C1[116]),  116,120},
  {&(_tg__ZTV8S20526C2__8S20526C1[6]),  6,8},
  {&(_tg__ZTV8S20526C68S20526C2__8S20526C1[5]),  5,7},
  {&(_tg__ZTV8S20526C7__8S20526C68S20526C2__8S20526C1[6]),  6,8},
  {&(_tg__ZTV8S20526C4__8S20526C68S20526C2__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C48S20526C3__8S20526C2__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C7__8S20526C2__8S20526C1[6]),  6,8},
  {&(_tg__ZTV8S20526C4__A1__8S20526C2__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C7__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C7__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C9__8S20526C1[7]),  7,12},
  {&(_tg__ZTV8S20526C68S20526C9__A1__8S20526C1[5]),  5,7},
  {&(_tg__ZTV8S20526C7__8S20526C68S20526C9__A1__8S20526C1[6]),  6,8},
  {&(_tg__ZTV8S20526C4__8S20526C68S20526C9__A1__8S20526C1[3]),  3,4},
  {&(_tg__ZTV9S20526C10__8S20526C9__8S20526C1[8]),  8,10},
  {&(_tg__ZTV8S20526C79S20526C10__8S20526C9__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C4__A1__8S20526C9__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C7__A1__8S20526C9__8S20526C1[6]),  6,8},
  {&(_tg__ZTV8S20526C48S20526C3__A3__8S20526C9__8S20526C1[3]),  3,4},
  {&(_tg__ZTV9S20526C10__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C79S20526C10__A1__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C79S20526C10__A1__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C7__9S20526C10__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C4__A1__9S20526C10__8S20526C1[3]),  3,4},
  {&(_tg__ZTV9S20526C12__8S20526C1[5]),  5,12},
  {&(_tg__ZTV9S20526C109S20526C12__A1__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C79S20526C109S20526C12__A2__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C79S20526C109S20526C12__A2__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C7__9S20526C109S20526C12__A1__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C4__A1__9S20526C109S20526C12__A1__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C79S20526C12__A3__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C79S20526C12__A3__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C79S20526C10__9S20526C12__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C4__A1__9S20526C12__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C48S20526C3__A2__9S20526C12__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C7__A1__9S20526C12__8S20526C1[4]),  4,6},
  {&(_tg__ZTV9S20526C13__8S20526C1[4]),  4,8},
  {&(_tg__ZTV8S20526C79S20526C13__A4__8S20526C1[4]),  4,6},
  {&(_tg__ZTV8S20526C4__8S20526C79S20526C13__A4__8S20526C1[3]),  3,4},
  {&(_tg__ZTV8S20526C4__9S20526C13__8S20526C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20526C1[];
extern  VTBL_ENTRY _ZTV8S20526C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20526C1[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20526C1D0Ev,_ZTv0_n40_N8S20526C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S20526C1D0Ev,_ZThn752_N8S20526C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20526C1D1Ev,_ZTv0_n40_N8S20526C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S20526C1D1Ev,_ZThn752_N8S20526C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20526C1D0Ev,_ZTv0_n32_N8S20526C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S20526C1D0Ev,_ZThn220_N8S20526C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20526C1D1Ev,_ZTv0_n32_N8S20526C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S20526C1D1Ev,_ZThn220_N8S20526C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20526C1D0Ev,_ZTv0_n28_N8S20526C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20526C1D0Ev,_ZThn16_N8S20526C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20526C1D1Ev,_ZTv0_n28_N8S20526C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20526C1D1Ev,_ZThn16_N8S20526C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20526C1 = {  "S20526C1", // class name
  bases_S20526C1, 35,
  &(vtc_S20526C1[0]), // expected_vtbl_contents
  &(vtt_S20526C1[0]), // expected_vtt_contents
  ABISELECT(2088,1348), // object size
  NSPAIRA(_ZTI8S20526C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20526C1),120, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20526C1),52, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20525C4  {
  char s20525c4f0[2];
  __tsi64 s20525c4f1;
  void *s20525c4f2;
  ::S3164C31_nt s20525c4f3;
  virtual void  v3(); // _ZN8S20525C42v3Ev
  ~S20525C4(); // tgen
  S20525C4(); // tgen
};
//SIG(-1 S20525C4) C1{ v1 Fc[2] FL Fp FC2{ m}}


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

static void Test_S20525C4()
{
  extern Class_Descriptor cd_S20525C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20525C4, buf);
    S20525C4 *dp, &lv = *(dp=new (buf) S20525C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20525C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C4)");
    check_field_offset(lv, s20525c4f0, ABISELECT(8,4), "S20525C4.s20525c4f0");
    check_field_offset(lv, s20525c4f1, ABISELECT(16,8), "S20525C4.s20525c4f1");
    check_field_offset(lv, s20525c4f2, ABISELECT(24,16), "S20525C4.s20525c4f2");
    check_field_offset(lv, s20525c4f3, ABISELECT(32,20), "S20525C4.s20525c4f3");
    test_class_info(&lv, &cd_S20525C4);
    dp->~S20525C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20525C4(Test_S20525C4, "S20525C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20525C4C1Ev();
extern void _ZN8S20525C4D1Ev();
Name_Map name_map_S20525C4[] = {
  NSPAIR(_ZN8S20525C4C1Ev),
  NSPAIR(_ZN8S20525C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20525C4[];
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY vtc_S20525C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C4[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
Class_Descriptor cd_S20525C4 = {  "S20525C4", // class name
  0,0,//no base classes
  &(vtc_S20525C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20525C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20525C4),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  S20525C3  : S20525C4 {
  ~S20525C3(); // tgen
  S20525C3(); // tgen
};
//SIG(-1 S20525C3) C1{ BC2{ v1 Fc[2] FL Fp FC3{ m}}}


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

static void Test_S20525C3()
{
  extern Class_Descriptor cd_S20525C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20525C3, buf);
    S20525C3 *dp, &lv = *(dp=new (buf) S20525C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20525C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C3)");
    check_base_class_offset(lv, (S20525C4*), 0, "S20525C3");
    test_class_info(&lv, &cd_S20525C3);
    dp->~S20525C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20525C3(Test_S20525C3, "S20525C3", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20525C3C1Ev();
extern void _ZN8S20525C3D1Ev();
Name_Map name_map_S20525C3[] = {
  NSPAIR(_ZN8S20525C3C1Ev),
  NSPAIR(_ZN8S20525C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
static Base_Class bases_S20525C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20525C4,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20525C3[];
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY vtc_S20525C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C3[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S20525C3[];
extern  VTBL_ENTRY _ZTV8S20525C3[];
Class_Descriptor cd_S20525C3 = {  "S20525C3", // class name
  bases_S20525C3, 1,
  &(vtc_S20525C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20525C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20525C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20525C8  {
  ::S20525C4 s20525c8f0;
  long s20525c8f1;
  int s20525c8f2[3];
  void  mf20525c8(); // _ZN8S20525C89mf20525c8Ev
};
//SIG(-1 S20525C8) C1{ m FC2{ v1 Fc[2] FL Fp FC3{ m}} Fl Fi[3]}


void  S20525C8 ::mf20525c8(){}

static void Test_S20525C8()
{
  {
    init_simple_test("S20525C8");
    S20525C8 lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S20525C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C8)");
    check_field_offset(lv, s20525c8f0, 0, "S20525C8.s20525c8f0");
    check_field_offset(lv, s20525c8f1, ABISELECT(40,24), "S20525C8.s20525c8f1");
    check_field_offset(lv, s20525c8f2, ABISELECT(48,28), "S20525C8.s20525c8f2");
  }
}
static Arrange_To_Call_Me vS20525C8(Test_S20525C8, "S20525C8", ABISELECT(64,40));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S20525C8[];
VTBL_ENTRY *P__ZTI8S20525C8 = _ZTI8S20525C8; 
Class_Descriptor cd_S20525C8 = {  "S20525C8", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S20525C8),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  S20525C7  : virtual S20525C4 , virtual S3164C31_nt , S20525C8 {
  __tsi64 s20525c7f0;
  long s20525c7f1;
  void *s20525c7f2[4];
  virtual void  v4(); // _ZN8S20525C72v4Ev
  virtual void  v5(); // _ZN8S20525C72v5Ev
  ~S20525C7(); // tgen
  S20525C7(); // tgen
};
//SIG(-1 S20525C7) C1{ VBC2{ v3 Fc[2] FL Fp FC3{ m}} VBC3 BC4{ m FC2 Fl Fi[3]} v1 v2 FL Fl Fp[4]}


void  S20525C7 ::v4(){vfunc_called(this, "_ZN8S20525C72v4Ev");}
void  S20525C7 ::v5(){vfunc_called(this, "_ZN8S20525C72v5Ev");}
S20525C7 ::~S20525C7(){ note_dtor("S20525C7", this);} // tgen
S20525C7 ::S20525C7(){ note_ctor("S20525C7", this);} // tgen

static void Test_S20525C7()
{
  extern Class_Descriptor cd_S20525C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,25)];
    init_test(&cd_S20525C7, buf);
    S20525C7 *dp, &lv = *(dp=new (buf) S20525C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,96), "sizeof(S20525C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C7)");
    check_base_class_offset(lv, (S20525C4*), ABISELECT(120,72), "S20525C7");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S20525C7");
    check_base_class_offset(lv, (S20525C8*), ABISELECT(8,4), "S20525C7");
    check_field_offset(lv, s20525c7f0, ABISELECT(72,44), "S20525C7.s20525c7f0");
    check_field_offset(lv, s20525c7f1, ABISELECT(80,52), "S20525C7.s20525c7f1");
    check_field_offset(lv, s20525c7f2, ABISELECT(88,56), "S20525C7.s20525c7f2");
    test_class_info(&lv, &cd_S20525C7);
    dp->~S20525C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20525C7(Test_S20525C7, "S20525C7", ABISELECT(160,96));

#else // __cplusplus

extern void _ZN8S20525C7C1Ev();
extern void _ZN8S20525C7D1Ev();
Name_Map name_map_S20525C7[] = {
  NSPAIR(_ZN8S20525C7C1Ev),
  NSPAIR(_ZN8S20525C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
static Base_Class bases_S20525C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20525C4,    ABISELECT(120,72), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20525C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20525C7[];
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY vtc_S20525C7[] = {
  0,
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  0,
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S20525C7[];
static  VTT_ENTRY vtt_S20525C7[] = {
  {&(_ZTV8S20525C7[4]),  4,10},
  {&(_ZTV8S20525C7[9]),  9,10},
};
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
Class_Descriptor cd_S20525C7 = {  "S20525C7", // class name
  bases_S20525C7, 3,
  &(vtc_S20525C7[0]), // expected_vtbl_contents
  &(vtt_S20525C7[0]), // expected_vtt_contents
  ABISELECT(160,96), // object size
  NSPAIRA(_ZTI8S20525C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20525C7),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20525C7),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  S20525C6  : S3164C31_nt , virtual S20525C7 {
  int s20525c6f0[2];
  virtual  ~S20525C6(); // _ZN8S20525C6D2Ev
  S20525C6(); // tgen
};
//SIG(-1 S20525C6) C1{ BC2{ m} VBC3{ VBC4{ v1 Fc[2] FL Fp FC2} VBC2 BC5{ m FC4 Fl Fi[3]} v2 v3 FL Fl Fp[4]} vd Fi[2]}


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

static void Test_S20525C6()
{
  extern Class_Descriptor cd_S20525C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S20525C6, buf);
    S20525C6 *dp, &lv = *(dp=new (buf) S20525C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S20525C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C6)");
    /*is_ambiguous_... S20525C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20525C6");
    check_base_class_offset(lv, (S20525C4*)(S20525C7*), ABISELECT(136,84), "S20525C6");
    check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*), ABISELECT(169,105), "S20525C6");
    check_base_class_offset(lv, (S20525C8*)(S20525C7*), ABISELECT(24,16), "S20525C6");
    check_base_class_offset(lv, (S20525C7*), ABISELECT(16,12), "S20525C6");
    check_field_offset(lv, s20525c6f0, ABISELECT(8,4), "S20525C6.s20525c6f0");
    test_class_info(&lv, &cd_S20525C6);
    dp->~S20525C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20525C6(Test_S20525C6, "S20525C6", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN8S20525C6C1Ev();
extern void _ZN8S20525C6D2Ev();
Name_Map name_map_S20525C6[] = {
  NSPAIR(_ZN8S20525C6C1Ev),
  NSPAIR(_ZN8S20525C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
static Base_Class bases_S20525C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20525C4,    ABISELECT(136,84), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(169,105), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20525C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20525C7,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20525C6[];
extern void _ZN8S20525C6D1Ev();
extern void _ZN8S20525C6D0Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY vtc_S20525C6[] = {
  ABISELECT(169,105),
  ABISELECT(136,84),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20525C6D0Ev,
  0,
  0,
  ABISELECT(153,93),
  ABISELECT(120,72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  0,
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S20525C6[];
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__8S20525C6[] = {
  ABISELECT(153,93),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C7__8S20525C6[] = {
  0,
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
static  VTT_ENTRY vtt_S20525C6[] = {
  {&(_ZTV8S20525C6[5]),  5,19},
  {&(_ZTV8S20525C6[13]),  13,19},
  {&(_ZTV8S20525C6[18]),  18,19},
  {&(_tg__ZTV8S20525C7__8S20525C6[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C7__8S20525C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20525C6[];
extern  VTBL_ENTRY _ZTV8S20525C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C6[];
Class_Descriptor cd_S20525C6 = {  "S20525C6", // class name
  bases_S20525C6, 5,
  &(vtc_S20525C6[0]), // expected_vtbl_contents
  &(vtt_S20525C6[0]), // expected_vtt_contents
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI8S20525C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20525C6),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20525C6),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20525C2  : virtual S20525C3 , S20525C6 {
  long s20525c2f0;
  int s20525c2f1[6];
  void *s20525c2f2;
  short s20525c2f3;
  ::S20525C3 s20525c2f4;
  virtual  ~S20525C2(); // _ZN8S20525C2D2Ev
  S20525C2(); // tgen
};
//SIG(-1 S20525C2) C1{ VBC2{ BC3{ v1 Fc[2] FL Fp FC4{ m}}} BC5{ BC4 VBC6{ VBC3 VBC4 BC7{ m FC3 Fl Fi[3]} v2 v3 FL Fl Fp[4]} vd Fi[2]} vd Fl Fi[6] Fp Fs FC2}


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

static void Test_S20525C2()
{
  extern Class_Descriptor cd_S20525C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,49)];
    init_test(&cd_S20525C2, buf);
    S20525C2 *dp, &lv = *(dp=new (buf) S20525C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,192), "sizeof(S20525C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C2)");
    check_base_class_offset(lv, (S20525C4*)(S20525C3*), ABISELECT(104,72), "S20525C2");
    check_base_class_offset(lv, (S20525C3*), ABISELECT(104,72), "S20525C2");
    /*is_ambiguous_... S20525C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C6*), 0, "S20525C2");
    check_base_class_offset(lv, (S20525C4*)(S20525C7*), ABISELECT(264,168), "S20525C2");
    check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*), ABISELECT(297,189), "S20525C2");
    check_base_class_offset(lv, (S20525C8*)(S20525C7*), ABISELECT(152,100), "S20525C2");
    check_base_class_offset(lv, (S20525C7*)(S20525C6*), ABISELECT(144,96), "S20525C2");
    check_base_class_offset(lv, (S20525C6*), 0, "S20525C2");
    check_field_offset(lv, s20525c2f0, ABISELECT(16,12), "S20525C2.s20525c2f0");
    check_field_offset(lv, s20525c2f1, ABISELECT(24,16), "S20525C2.s20525c2f1");
    check_field_offset(lv, s20525c2f2, ABISELECT(48,40), "S20525C2.s20525c2f2");
    check_field_offset(lv, s20525c2f3, ABISELECT(56,44), "S20525C2.s20525c2f3");
    check_field_offset(lv, s20525c2f4, ABISELECT(64,48), "S20525C2.s20525c2f4");
    test_class_info(&lv, &cd_S20525C2);
    dp->~S20525C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20525C2(Test_S20525C2, "S20525C2", ABISELECT(304,192));

#else // __cplusplus

extern void _ZN8S20525C2C1Ev();
extern void _ZN8S20525C2D2Ev();
Name_Map name_map_S20525C2[] = {
  NSPAIR(_ZN8S20525C2C1Ev),
  NSPAIR(_ZN8S20525C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S20525C3;
extern VTBL_ENTRY _ZTI8S20525C3[];
extern  VTBL_ENTRY _ZTV8S20525C3[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
extern Class_Descriptor cd_S20525C6;
extern VTBL_ENTRY _ZTI8S20525C6[];
extern  VTBL_ENTRY _ZTV8S20525C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C6[];
static Base_Class bases_S20525C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20525C4,    ABISELECT(104,72), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20525C3,    ABISELECT(104,72), //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
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20525C4,    ABISELECT(264,168), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(297,189), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20525C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20525C7,    ABISELECT(144,96), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20525C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20525C2[];
extern void _ZN8S20525C2D1Ev();
extern void _ZN8S20525C2D0Ev();
extern void _ZN8S20525C42v3Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY vtc_S20525C2[] = {
  ABISELECT(104,72),
  ABISELECT(297,189),
  ABISELECT(264,168),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C2[0]),
  (VTBL_ENTRY)&_ZN8S20525C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20525C2D0Ev,
  0,
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S20525C2[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  0,
  0,
  ABISELECT(153,93),
  ABISELECT(120,72),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S20525C2[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  0,
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI8S20525C2[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S20525C2[];
extern void _ZN8S20525C6D1Ev();
extern void _ZN8S20525C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C6__8S20525C2[] = {
  ABISELECT(297,189),
  ABISELECT(264,168),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20525C6D0Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__8S20525C6__8S20525C2[] = {
  0,
  0,
  ABISELECT(153,93),
  ABISELECT(120,72),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C6__8S20525C2[] = {
  0,
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__8S20525C2[] = {
  ABISELECT(153,93),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C7__8S20525C2[] = {
  0,
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
static  VTT_ENTRY vtt_S20525C2[] = {
  {&(_ZTV8S20525C2[6]),  6,24},
  {&(_tg__ZTV8S20525C6__8S20525C2[5]),  5,7},
  {&(_tg__ZTV8S20525C7__8S20525C6__8S20525C2[6]),  6,8},
  {&(_tg__ZTV8S20525C4__8S20525C6__8S20525C2[3]),  3,4},
  {&(_ZTV8S20525C2[11]),  11,24},
  {&(_ZTV8S20525C2[18]),  18,24},
  {&(_ZTV8S20525C2[23]),  23,24},
  {&(_tg__ZTV8S20525C7__8S20525C2[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C7__8S20525C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20525C2[];
extern  VTBL_ENTRY _ZTV8S20525C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C2[];
Class_Descriptor cd_S20525C2 = {  "S20525C2", // class name
  bases_S20525C2, 8,
  &(vtc_S20525C2[0]), // expected_vtbl_contents
  &(vtt_S20525C2[0]), // expected_vtt_contents
  ABISELECT(304,192), // object size
  NSPAIRA(_ZTI8S20525C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20525C2),24, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20525C2),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20525C10  : S20525C4 , S3164C31_nt , S20525C8 , S20525C7 {
  void *s20525c10f0[10];
  int s20525c10f1;
  long s20525c10f2;
  void *s20525c10f3;
  ::S20525C7 s20525c10f4;
  virtual void  v6(); // _ZN9S20525C102v6Ev
  ~S20525C10(); // tgen
  S20525C10(); // tgen
};
//SIG(-1 S20525C10) C1{ BC2{ v2 Fc[2] FL Fp FC3{ m}} BC3 BC4{ m FC2 Fl Fi[3]} BC5{ VBC2 VBC3 BC4 v3 v4 FL Fl Fp[4]} v1 Fp[10] Fi Fl Fp FC5}


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

static void Test_S20525C10()
{
  extern Class_Descriptor cd_S20525C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,78)];
    init_test(&cd_S20525C10, buf);
    S20525C10 *dp, &lv = *(dp=new (buf) S20525C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,308), "sizeof(S20525C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C10)");
    /*is_ambiguous_... S20525C10::S20525C4 */ AMB_check_base_class_offset(lv, (S20525C4*), 0, "S20525C10");
    /*is_ambiguous_... S20525C10::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20525C10");
    /*is_ambiguous_... S20525C10::S20525C8 */ AMB_check_base_class_offset(lv, (S20525C8*), ABISELECT(40,24), "S20525C10");
    check_base_class_offset(lv, (S20525C4*)(S20525C7*), ABISELECT(488,284), "S20525C10");
    check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*), ABISELECT(521,305), "S20525C10");
    check_base_class_offset(lv, (S20525C8*)(S20525C7*), ABISELECT(112,68), "S20525C10");
    check_base_class_offset(lv, (S20525C7*), ABISELECT(104,64), "S20525C10");
    check_field_offset(lv, s20525c10f0, ABISELECT(224,136), "S20525C10.s20525c10f0");
    check_field_offset(lv, s20525c10f1, ABISELECT(304,176), "S20525C10.s20525c10f1");
    check_field_offset(lv, s20525c10f2, ABISELECT(312,180), "S20525C10.s20525c10f2");
    check_field_offset(lv, s20525c10f3, ABISELECT(320,184), "S20525C10.s20525c10f3");
    check_field_offset(lv, s20525c10f4, ABISELECT(328,188), "S20525C10.s20525c10f4");
    test_class_info(&lv, &cd_S20525C10);
    dp->~S20525C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20525C10(Test_S20525C10, "S20525C10", ABISELECT(528,308));

#else // __cplusplus

extern void _ZN9S20525C10C1Ev();
extern void _ZN9S20525C10D1Ev();
Name_Map name_map_S20525C10[] = {
  NSPAIR(_ZN9S20525C10C1Ev),
  NSPAIR(_ZN9S20525C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
static Base_Class bases_S20525C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20525C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20525C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20525C4,    ABISELECT(488,284), //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
    6, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(521,305), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20525C8,    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_S20525C7,    ABISELECT(104,64), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20525C10[];
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY vtc_S20525C10[] = {
  ABISELECT(521,305),
  ABISELECT(488,284),
  0,
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
  ABISELECT(417,241),
  ABISELECT(384,220),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  0,
  ABISELECT(-488,-284),
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S20525C10[];
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__9S20525C10[] = {
  ABISELECT(417,241),
  ABISELECT(384,220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C7__9S20525C10[] = {
  0,
  ABISELECT(-384,-220),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
static  VTT_ENTRY vtt_S20525C10[] = {
  {&(_ZTV9S20525C10[4]),  4,16},
  {&(_tg__ZTV8S20525C7__9S20525C10[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C7__9S20525C10[3]),  3,4},
  {&(_ZTV9S20525C10[10]),  10,16},
  {&(_ZTV9S20525C10[15]),  15,16},
};
extern VTBL_ENTRY _ZTI9S20525C10[];
extern  VTBL_ENTRY _ZTV9S20525C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20525C10[];
Class_Descriptor cd_S20525C10 = {  "S20525C10", // class name
  bases_S20525C10, 7,
  &(vtc_S20525C10[0]), // expected_vtbl_contents
  &(vtt_S20525C10[0]), // expected_vtt_contents
  ABISELECT(528,308), // object size
  NSPAIRA(_ZTI9S20525C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20525C10),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20525C10),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20525C9  : S20525C8 , virtual S20525C10 , S20525C6 , S20525C4 , virtual S20525C3 {
  ::S20525C4 s20525c9f0[4];
  ::S19553C10_nt s20525c9f1;
  void *s20525c9f2;
  int s20525c9f3;
  void *s20525c9f4[9];
  virtual  ~S20525C9(); // _ZN8S20525C9D2Ev
  virtual void  v7(); // _ZN8S20525C92v7Ev
  virtual void  v8(); // _ZN8S20525C92v8Ev
  virtual void  v9(); // _ZN8S20525C92v9Ev
  S20525C9(); // tgen
};
//SIG(-1 S20525C9) C1{ BC2{ m FC3{ v4 Fc[2] FL Fp FC4{ m}} Fl Fi[3]} VBC5{ BC3 BC4 BC2 BC6{ VBC3 VBC4 BC2 v5 v6 FL Fl Fp[4]} v7 Fp[10] Fi Fl Fp FC6} BC7{ BC4 VBC6 vd Fi[2]} BC3 VBC8{ BC3} vd v1 v2 v3 FC3[4] FC9{} Fp Fi Fp[9]}


 S20525C9 ::~S20525C9(){ note_dtor("S20525C9", this);}
void  S20525C9 ::v7(){vfunc_called(this, "_ZN8S20525C92v7Ev");}
void  S20525C9 ::v8(){vfunc_called(this, "_ZN8S20525C92v8Ev");}
void  S20525C9 ::v9(){vfunc_called(this, "_ZN8S20525C92v9Ev");}
S20525C9 ::S20525C9(){ note_ctor("S20525C9", this);} // tgen

static void Test_S20525C9()
{
  extern Class_Descriptor cd_S20525C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(134,157)];
    init_test(&cd_S20525C9, buf);
    S20525C9 *dp, &lv = *(dp=new (buf) S20525C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1064,624), "sizeof(S20525C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C9)");
    /*is_ambiguous_... S20525C9::S20525C8 */ AMB_check_base_class_offset(lv, (S20525C8*), ABISELECT(16,12), "S20525C9");
    /*is_ambiguous_... S20525C10::S20525C4 */ AMB_check_base_class_offset(lv, (S20525C4*)(S20525C10*), ABISELECT(376,220), "S20525C9");
    /*is_ambiguous_... S20525C10::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C10*), ABISELECT(376,220), "S20525C9");
    /*is_ambiguous_... S20525C10::S20525C8 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C10*), ABISELECT(416,244), "S20525C9");
    check_base_class_offset(lv, (S20525C4*)(S20525C7*)(S20525C10*), ABISELECT(864,504), "S20525C9");
    /*is_ambiguous_... S20525C9::S20525C7 */ AMB_check_base_class_offset(lv, (S20525C4*)(S20525C7*), ABISELECT(864,504), "S20525C9");
    check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*)(S20525C10*), ABISELECT(897,525), "S20525C9");
    /*is_ambiguous_... S20525C9::S20525C7 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*), ABISELECT(897,525), "S20525C9");
    check_base_class_offset(lv, (S20525C8*)(S20525C7*)(S20525C10*), ABISELECT(488,288), "S20525C9");
    check_base_class_offset(lv, (S20525C7*)(S20525C10*), ABISELECT(480,284), "S20525C9");
    check_base_class_offset(lv, (S20525C10*), ABISELECT(376,220), "S20525C9");
    /*is_ambiguous_... S20525C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C6*), 0, "S20525C9");
    /*is_ambiguous_... S20525C9::S20525C7 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C7*), ABISELECT(912,532), "S20525C9");
    check_base_class_offset(lv, (S20525C7*)(S20525C6*), ABISELECT(904,528), "S20525C9");
    check_base_class_offset(lv, (S20525C6*), 0, "S20525C9");
    /*is_ambiguous_... S20525C9::S20525C4 */ AMB_check_base_class_offset(lv, (S20525C4*), ABISELECT(80,52), "S20525C9");
    check_base_class_offset(lv, (S20525C4*)(S20525C3*), ABISELECT(1024,600), "S20525C9");
    check_base_class_offset(lv, (S20525C3*), ABISELECT(1024,600), "S20525C9");
    check_field_offset(lv, s20525c9f0, ABISELECT(120,76), "S20525C9.s20525c9f0");
    check_field_offset(lv, s20525c9f1, ABISELECT(280,172), "S20525C9.s20525c9f1");
    check_field_offset(lv, s20525c9f2, ABISELECT(288,176), "S20525C9.s20525c9f2");
    check_field_offset(lv, s20525c9f3, ABISELECT(296,180), "S20525C9.s20525c9f3");
    check_field_offset(lv, s20525c9f4, ABISELECT(304,184), "S20525C9.s20525c9f4");
    test_class_info(&lv, &cd_S20525C9);
    dp->~S20525C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20525C9(Test_S20525C9, "S20525C9", ABISELECT(1064,624));

#else // __cplusplus

extern void _ZN8S20525C9C1Ev();
extern void _ZN8S20525C9D2Ev();
Name_Map name_map_S20525C9[] = {
  NSPAIR(_ZN8S20525C9C1Ev),
  NSPAIR(_ZN8S20525C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
extern Class_Descriptor cd_S20525C10;
extern VTBL_ENTRY _ZTI9S20525C10[];
extern  VTBL_ENTRY _ZTV9S20525C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20525C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
extern Class_Descriptor cd_S20525C6;
extern VTBL_ENTRY _ZTI8S20525C6[];
extern  VTBL_ENTRY _ZTV8S20525C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C6[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S20525C3;
extern VTBL_ENTRY _ZTI8S20525C3[];
extern  VTBL_ENTRY _ZTV8S20525C3[];
static Base_Class bases_S20525C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20525C8,    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_S20525C4,    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
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3164C31_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
    8, //immediately_derived
  0, 0},
  {&cd_S20525C8,    ABISELECT(416,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
    8, //immediately_derived
  0, 0},
  {&cd_S20525C4,    ABISELECT(864,504), //bcp->offset
    31, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(897,525), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20525C8,    ABISELECT(488,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
    7, //immediately_derived
  0, 0},
  {&cd_S20525C7,    ABISELECT(480,284), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20525C10,    ABISELECT(376,220), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20525C8,    ABISELECT(912,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20525C7,    ABISELECT(904,528), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20525C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20525C4,    ABISELECT(80,52), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20525C4,    ABISELECT(1024,600), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20525C3,    ABISELECT(1024,600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20525C9[];
extern void _ZN8S20525C9D1Ev();
extern void _ZN8S20525C9D0Ev();
extern void _ZN8S20525C92v7Ev();
extern void _ZN8S20525C92v8Ev();
extern void _ZN8S20525C92v9Ev();
extern void _ZN8S20525C42v3Ev();
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C42v3Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY vtc_S20525C9[] = {
  ABISELECT(1024,600),
  ABISELECT(376,220),
  ABISELECT(897,525),
  ABISELECT(864,504),
  ABISELECT(904,528),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20525C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20525C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20525C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20525C92v9Ev,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  ABISELECT(104,64),
  ABISELECT(104,64),
  0,
  0,
  ABISELECT(521,305),
  ABISELECT(488,284),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
  ABISELECT(417,241),
  ABISELECT(384,220),
  ABISELECT(-480,-284),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  0,
  ABISELECT(-864,-504),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  0,
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-24),
  ABISELECT(-904,-528),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  0,
  ABISELECT(-1024,-600),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S20525C9[];
extern void _ZN8S20525C6D1Ev();
extern void _ZN8S20525C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C6__8S20525C9[] = {
  ABISELECT(897,525),
  ABISELECT(864,504),
  ABISELECT(904,528),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20525C6D0Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__8S20525C6__8S20525C9[] = {
  0,
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-24),
  ABISELECT(-904,-528),
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C6__8S20525C9[] = {
  0,
  ABISELECT(-864,-504),
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20525C10__8S20525C9[] = {
  ABISELECT(521,305),
  ABISELECT(488,284),
  0,
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C79S20525C10__8S20525C9[] = {
  ABISELECT(417,241),
  ABISELECT(384,220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C79S20525C10__8S20525C9[] = {
  0,
  ABISELECT(-384,-220),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__9S20525C10__8S20525C9[] = {
  ABISELECT(417,241),
  ABISELECT(384,220),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__A1__9S20525C10__8S20525C9[] = {
  0,
  ABISELECT(-488,-284),
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__A1__8S20525C9[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C7__A1__8S20525C9[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
static  VTT_ENTRY vtt_S20525C9[] = {
  {&(_ZTV8S20525C9[7]),  7,47},
  {&(_tg__ZTV8S20525C6__8S20525C9[5]),  5,7},
  {&(_tg__ZTV8S20525C7__8S20525C6__8S20525C9[6]),  6,8},
  {&(_tg__ZTV8S20525C4__8S20525C6__8S20525C9[3]),  3,4},
  {&(_ZTV8S20525C9[23]),  23,47},
  {&(_ZTV8S20525C9[29]),  29,47},
  {&(_ZTV8S20525C9[34]),  34,47},
  {&(_ZTV8S20525C9[41]),  41,47},
  {&(_ZTV8S20525C9[46]),  46,47},
  {&(_tg__ZTV9S20525C10__8S20525C9[4]),  4,6},
  {&(_tg__ZTV8S20525C79S20525C10__8S20525C9[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C79S20525C10__8S20525C9[3]),  3,4},
  {&(_tg__ZTV8S20525C7__9S20525C10__8S20525C9[4]),  4,6},
  {&(_tg__ZTV8S20525C4__A1__9S20525C10__8S20525C9[3]),  3,4},
  {&(_tg__ZTV8S20525C7__A1__8S20525C9[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C7__A1__8S20525C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20525C9[];
extern  VTBL_ENTRY _ZTV8S20525C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C9[];
Class_Descriptor cd_S20525C9 = {  "S20525C9", // class name
  bases_S20525C9, 16,
  &(vtc_S20525C9[0]), // expected_vtbl_contents
  &(vtt_S20525C9[0]), // expected_vtt_contents
  ABISELECT(1064,624), // object size
  NSPAIRA(_ZTI8S20525C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20525C9),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20525C9),16, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20525C12  : S20525C10 , S20525C8 , S3164C31_nt , virtual S20525C3 , S20525C7 {
  long s20525c12f0[7];
  __tsi64  :0;
  virtual  ~S20525C12(); // _ZN9S20525C12D2Ev
  virtual void  v10(); // _ZN9S20525C123v10Ev
  virtual void  v11(); // _ZN9S20525C123v11Ev
  virtual void  v12(); // _ZN9S20525C123v12Ev
  S20525C12(); // tgen
};
//SIG(-1 S20525C12) C1{ BC2{ BC3{ v4 Fc[2] FL Fp FC4{ m}} BC4 BC5{ m FC3 Fl Fi[3]} BC6{ VBC3 VBC4 BC5 v5 v6 FL Fl Fp[4]} v7 Fp[10] Fi Fl Fp FC6} BC5 BC4 VBC7{ BC3} BC6 vd v1 v2 v3 Fl[7] FL:0}


 S20525C12 ::~S20525C12(){ note_dtor("S20525C12", this);}
void  S20525C12 ::v10(){vfunc_called(this, "_ZN9S20525C123v10Ev");}
void  S20525C12 ::v11(){vfunc_called(this, "_ZN9S20525C123v11Ev");}
void  S20525C12 ::v12(){vfunc_called(this, "_ZN9S20525C123v12Ev");}
S20525C12 ::S20525C12(){ note_ctor("S20525C12", this);} // tgen

static void Test_S20525C12()
{
  extern Class_Descriptor cd_S20525C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(102,119)];
    init_test(&cd_S20525C12, buf);
    S20525C12 *dp, &lv = *(dp=new (buf) S20525C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(808,472), "sizeof(S20525C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C12)");
    /*is_ambiguous_... S20525C10::S20525C4 */ AMB_check_base_class_offset(lv, (S20525C4*)(S20525C10*), 0, "S20525C12");
    /*is_ambiguous_... S20525C10::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C10*), 0, "S20525C12");
    /*is_ambiguous_... S20525C10::S20525C8 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C10*), ABISELECT(40,24), "S20525C12");
    check_base_class_offset(lv, (S20525C4*)(S20525C7*)(S20525C10*), ABISELECT(728,424), "S20525C12");
    /*is_ambiguous_... S20525C12::S20525C7 */ AMB_check_base_class_offset(lv, (S20525C4*)(S20525C7*), ABISELECT(728,424), "S20525C12");
    check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*)(S20525C10*), ABISELECT(761,445), "S20525C12");
    /*is_ambiguous_... S20525C12::S20525C7 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*), ABISELECT(761,445), "S20525C12");
    check_base_class_offset(lv, (S20525C8*)(S20525C7*)(S20525C10*), ABISELECT(112,68), "S20525C12");
    check_base_class_offset(lv, (S20525C7*)(S20525C10*), ABISELECT(104,64), "S20525C12");
    check_base_class_offset(lv, (S20525C10*), 0, "S20525C12");
    /*is_ambiguous_... S20525C12::S20525C8 */ AMB_check_base_class_offset(lv, (S20525C8*), ABISELECT(488,284), "S20525C12");
    /*is_ambiguous_... S20525C12::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), ABISELECT(548,324), "S20525C12");
    check_base_class_offset(lv, (S20525C4*)(S20525C3*), ABISELECT(768,448), "S20525C12");
    check_base_class_offset(lv, (S20525C3*), ABISELECT(768,448), "S20525C12");
    /*is_ambiguous_... S20525C12::S20525C7 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C7*), ABISELECT(560,328), "S20525C12");
    /*is_ambiguous_... S20525C12::S20525C7 */ AMB_check_base_class_offset(lv, (S20525C7*), ABISELECT(552,324), "S20525C12");
    check_field_offset(lv, s20525c12f0, ABISELECT(672,396), "S20525C12.s20525c12f0");
    test_class_info(&lv, &cd_S20525C12);
    dp->~S20525C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20525C12(Test_S20525C12, "S20525C12", ABISELECT(808,472));

#else // __cplusplus

extern void _ZN9S20525C12C1Ev();
extern void _ZN9S20525C12D2Ev();
Name_Map name_map_S20525C12[] = {
  NSPAIR(_ZN9S20525C12C1Ev),
  NSPAIR(_ZN9S20525C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
extern Class_Descriptor cd_S20525C10;
extern VTBL_ENTRY _ZTI9S20525C10[];
extern  VTBL_ENTRY _ZTV9S20525C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20525C10[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S20525C3;
extern VTBL_ENTRY _ZTI8S20525C3[];
extern  VTBL_ENTRY _ZTV8S20525C3[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
static Base_Class bases_S20525C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20525C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20525C8,    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_S20525C4,    ABISELECT(728,424), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(761,445), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20525C8,    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_S20525C7,    ABISELECT(104,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20525C10,    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_S20525C8,    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
    -1, //immediately_derived
  1, 0},
  {&cd_S3164C31_nt,    ABISELECT(548,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
    -1, //immediately_derived
  1, 0},
  {&cd_S20525C4,    ABISELECT(768,448), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20525C3,    ABISELECT(768,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20525C8,    ABISELECT(560,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20525C7,    ABISELECT(552,324), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20525C12[];
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
extern void _ZN9S20525C12D1Ev();
extern void _ZN9S20525C12D0Ev();
extern void _ZN9S20525C123v10Ev();
extern void _ZN9S20525C123v11Ev();
extern void _ZN9S20525C123v12Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C42v3Ev();
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY vtc_S20525C12[] = {
  ABISELECT(768,448),
  ABISELECT(761,445),
  ABISELECT(728,424),
  0,
  (VTBL_ENTRY)&(_ZTI9S20525C12[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
  (VTBL_ENTRY)&_ZN9S20525C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20525C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20525C123v10Ev,
  (VTBL_ENTRY)&_ZN9S20525C123v11Ev,
  (VTBL_ENTRY)&_ZN9S20525C123v12Ev,
  ABISELECT(657,381),
  ABISELECT(624,360),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20525C12[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  ABISELECT(209,121),
  ABISELECT(176,100),
  ABISELECT(-552,-324),
  (VTBL_ENTRY)&(_ZTI9S20525C12[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  0,
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI9S20525C12[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  0,
  ABISELECT(-768,-448),
  (VTBL_ENTRY)&(_ZTI9S20525C12[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S20525C12[];
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20525C10__9S20525C12[] = {
  ABISELECT(761,445),
  ABISELECT(728,424),
  0,
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C79S20525C10__9S20525C12[] = {
  ABISELECT(657,381),
  ABISELECT(624,360),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C79S20525C10__9S20525C12[] = {
  0,
  ABISELECT(-624,-360),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__9S20525C10__9S20525C12[] = {
  ABISELECT(657,381),
  ABISELECT(624,360),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__A1__9S20525C10__9S20525C12[] = {
  0,
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__A1__9S20525C12[] = {
  ABISELECT(209,121),
  ABISELECT(176,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C7__A1__9S20525C12[] = {
  0,
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
static  VTT_ENTRY vtt_S20525C12[] = {
  {&(_ZTV9S20525C12[5]),  5,32},
  {&(_tg__ZTV9S20525C10__9S20525C12[4]),  4,6},
  {&(_tg__ZTV8S20525C79S20525C10__9S20525C12[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C79S20525C10__9S20525C12[3]),  3,4},
  {&(_tg__ZTV8S20525C7__9S20525C10__9S20525C12[4]),  4,6},
  {&(_tg__ZTV8S20525C4__A1__9S20525C10__9S20525C12[3]),  3,4},
  {&(_tg__ZTV8S20525C7__A1__9S20525C12[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C7__A1__9S20525C12[3]),  3,4},
  {&(_ZTV9S20525C12[16]),  16,32},
  {&(_ZTV9S20525C12[27]),  27,32},
  {&(_ZTV9S20525C12[31]),  31,32},
  {&(_ZTV9S20525C12[22]),  22,32},
};
extern VTBL_ENTRY _ZTI9S20525C12[];
extern  VTBL_ENTRY _ZTV9S20525C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20525C12[];
Class_Descriptor cd_S20525C12 = {  "S20525C12", // class name
  bases_S20525C12, 14,
  &(vtc_S20525C12[0]), // expected_vtbl_contents
  &(vtt_S20525C12[0]), // expected_vtt_contents
  ABISELECT(808,472), // object size
  NSPAIRA(_ZTI9S20525C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20525C12),32, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20525C12),12, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20525C13  : S3164C31_nt , S20525C7 {
  ::S20525C4 s20525c13f0;
  char s20525c13f1;
  virtual void  v13(); // _ZN9S20525C133v13Ev
  virtual void  v14(); // _ZN9S20525C133v14Ev
  ~S20525C13(); // tgen
  S20525C13(); // tgen
};
//SIG(-1 S20525C13) C1{ BC2{ m} BC3{ VBC4{ v3 Fc[2] FL Fp FC2} VBC2 BC5{ m FC4 Fl Fi[3]} v4 v5 FL Fl Fp[4]} v1 v2 FC4 Fc}


void  S20525C13 ::v13(){vfunc_called(this, "_ZN9S20525C133v13Ev");}
void  S20525C13 ::v14(){vfunc_called(this, "_ZN9S20525C133v14Ev");}
S20525C13 ::~S20525C13(){ note_dtor("S20525C13", this);} // tgen
S20525C13 ::S20525C13(){ note_ctor("S20525C13", this);} // tgen

static void Test_S20525C13()
{
  extern Class_Descriptor cd_S20525C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,32)];
    init_test(&cd_S20525C13, buf);
    S20525C13 *dp, &lv = *(dp=new (buf) S20525C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,124), "sizeof(S20525C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C13)");
    /*is_ambiguous_... S20525C13::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20525C13");
    check_base_class_offset(lv, (S20525C4*)(S20525C7*), ABISELECT(168,100), "S20525C13");
    check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*), ABISELECT(201,121), "S20525C13");
    check_base_class_offset(lv, (S20525C8*)(S20525C7*), ABISELECT(8,4), "S20525C13");
    check_base_class_offset(lv, (S20525C7*), 0, "S20525C13");
    check_field_offset(lv, s20525c13f0, ABISELECT(120,72), "S20525C13.s20525c13f0");
    check_field_offset(lv, s20525c13f1, ABISELECT(160,96), "S20525C13.s20525c13f1");
    test_class_info(&lv, &cd_S20525C13);
    dp->~S20525C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20525C13(Test_S20525C13, "S20525C13", ABISELECT(208,124));

#else // __cplusplus

extern void _ZN9S20525C13C1Ev();
extern void _ZN9S20525C13D1Ev();
Name_Map name_map_S20525C13[] = {
  NSPAIR(_ZN9S20525C13C1Ev),
  NSPAIR(_ZN9S20525C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
static Base_Class bases_S20525C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20525C4,    ABISELECT(168,100), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(201,121), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20525C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20525C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20525C13[];
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN9S20525C133v13Ev();
extern void _ZN9S20525C133v14Ev();
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY vtc_S20525C13[] = {
  ABISELECT(201,121),
  ABISELECT(168,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S20525C13[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20525C133v13Ev,
  (VTBL_ENTRY)&_ZN9S20525C133v14Ev,
  0,
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI9S20525C13[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S20525C13[];
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__9S20525C13[] = {
  ABISELECT(201,121),
  ABISELECT(168,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C7__9S20525C13[] = {
  0,
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
static  VTT_ENTRY vtt_S20525C13[] = {
  {&(_ZTV9S20525C13[4]),  4,12},
  {&(_tg__ZTV8S20525C7__9S20525C13[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C7__9S20525C13[3]),  3,4},
  {&(_ZTV9S20525C13[11]),  11,12},
};
extern VTBL_ENTRY _ZTI9S20525C13[];
extern  VTBL_ENTRY _ZTV9S20525C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20525C13[];
Class_Descriptor cd_S20525C13 = {  "S20525C13", // class name
  bases_S20525C13, 5,
  &(vtc_S20525C13[0]), // expected_vtbl_contents
  &(vtt_S20525C13[0]), // expected_vtt_contents
  ABISELECT(208,124), // object size
  NSPAIRA(_ZTI9S20525C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20525C13),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20525C13),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20525C1  : virtual S20525C2 , virtual S20525C9 , virtual S20525C12 , virtual S20525C13 {
  __tsi64 s20525c1f0;
  int s20525c1f1;
  virtual  ~S20525C1(); // _ZN8S20525C1D2Ev
  virtual void  v1(); // _ZN8S20525C12v1Ev
  virtual void  v2(); // _ZN8S20525C12v2Ev
  S20525C1(); // tgen
};
//SIG(1 S20525C1) C1{ VBC2{ VBC3{ BC4{ v3 Fc[2] FL Fp FC5{ m}}} BC6{ BC5 VBC7{ VBC4 VBC5 BC8{ m FC4 Fl Fi[3]} v4 v5 FL Fl Fp[4]} vd Fi[2]} vd Fl Fi[6] Fp Fs FC3} VBC9{ BC8 VBC10{ BC4 BC5 BC8 BC7 v6 Fp[10] Fi Fl Fp FC7} BC6 BC4 VBC3 vd v7 v8 v9 FC4[4] FC11{} Fp Fi Fp[9]} VBC12{ BC10 BC8 BC5 VBC3 BC7 vd v10 v11 v12 Fl[7] FL:0} VBC13{ BC5 BC7 v13 v14 FC4 Fc} vd v1 v2 FL Fi}


 S20525C1 ::~S20525C1(){ note_dtor("S20525C1", this);}
void  S20525C1 ::v1(){vfunc_called(this, "_ZN8S20525C12v1Ev");}
void  S20525C1 ::v2(){vfunc_called(this, "_ZN8S20525C12v2Ev");}
S20525C1 ::S20525C1(){ note_ctor("S20525C1", this);} // tgen

static void Test_S20525C1()
{
  extern Class_Descriptor cd_S20525C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(262,310)];
    init_test(&cd_S20525C1, buf);
    S20525C1 *dp, &lv = *(dp=new (buf) S20525C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2088,1236), "sizeof(S20525C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20525C1)");
    check_base_class_offset(lv, (S20525C4*)(S20525C3*), ABISELECT(128,88), "S20525C1");
    check_base_class_offset(lv, (S20525C3*)(S20525C2*), ABISELECT(128,88), "S20525C1");
    check_base_class_offset(lv, (S20525C3*)(S20525C9*), ABISELECT(128,88), "S20525C1");
    check_base_class_offset(lv, (S20525C3*)(S20525C12*), ABISELECT(128,88), "S20525C1");
    /*is_ambiguous_... S20525C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C6*)(S20525C2*), ABISELECT(24,16), "S20525C1");
    /*is_ambiguous_... S20525C1::S20525C7 */ AMB_check_base_class_offset(lv, (S20525C4*)(S20525C7*), ABISELECT(288,184), "S20525C1");
    /*is_ambiguous_... S20525C1::S20525C10 */ AMB_check_base_class_offset(lv, (S20525C4*)(S20525C7*)(S20525C10*), ABISELECT(288,184), "S20525C1");
    check_base_class_offset(lv, (S20525C4*)(S20525C7*)(S20525C10*)(S20525C12*), ABISELECT(288,184), "S20525C1");
    /*is_ambiguous_... S20525C12::S20525C7 */ AMB_check_base_class_offset(lv, (S20525C4*)(S20525C7*)(S20525C12*), ABISELECT(288,184), "S20525C1");
    check_base_class_offset(lv, (S20525C4*)(S20525C7*)(S20525C13*), ABISELECT(288,184), "S20525C1");
    /*is_ambiguous_... S20525C1::S20525C7 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*), 0, "S20525C1");
    /*is_ambiguous_... S20525C1::S20525C10 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*)(S20525C10*), 0, "S20525C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*)(S20525C10*)(S20525C12*), 0, "S20525C1");
    /*is_ambiguous_... S20525C12::S20525C7 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*)(S20525C12*), 0, "S20525C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S20525C7*)(S20525C13*), 0, "S20525C1");
    /*is_ambiguous_... S20525C1::S20525C7 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C7*), ABISELECT(176,116), "S20525C1");
    check_base_class_offset(lv, (S20525C7*)(S20525C6*)(S20525C2*), ABISELECT(168,112), "S20525C1");
    check_base_class_offset(lv, (S20525C7*)(S20525C6*)(S20525C9*), ABISELECT(168,112), "S20525C1");
    check_base_class_offset(lv, (S20525C6*)(S20525C2*), ABISELECT(24,16), "S20525C1");
    check_base_class_offset(lv, (S20525C2*), ABISELECT(24,16), "S20525C1");
    /*is_ambiguous_... S20525C9::S20525C8 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C9*), ABISELECT(344,220), "S20525C1");
    /*is_ambiguous_... S20525C1::S20525C10 */ AMB_check_base_class_offset(lv, (S20525C4*)(S20525C10*), ABISELECT(704,428), "S20525C1");
    /*is_ambiguous_... S20525C1::S20525C10 */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C10*), ABISELECT(704,428), "S20525C1");
    /*is_ambiguous_... S20525C1::S20525C10 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C10*), ABISELECT(744,452), "S20525C1");
    /*is_ambiguous_... S20525C1::S20525C10 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C7*)(S20525C10*), ABISELECT(816,496), "S20525C1");
    /*is_ambiguous_... S20525C1::S20525C10 */ AMB_check_base_class_offset(lv, (S20525C7*)(S20525C10*), ABISELECT(808,492), "S20525C1");
    check_base_class_offset(lv, (S20525C10*)(S20525C9*), ABISELECT(704,428), "S20525C1");
    /*is_ambiguous_... S20525C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C6*)(S20525C9*), ABISELECT(328,208), "S20525C1");
    check_base_class_offset(lv, (S20525C6*)(S20525C9*), ABISELECT(328,208), "S20525C1");
    /*is_ambiguous_... S20525C9::S20525C4 */ AMB_check_base_class_offset(lv, (S20525C4*)(S20525C9*), ABISELECT(408,260), "S20525C1");
    check_base_class_offset(lv, (S20525C9*), ABISELECT(328,208), "S20525C1");
    /*is_ambiguous_... S20525C10::S20525C4 */ AMB_check_base_class_offset(lv, (S20525C4*)(S20525C10*)(S20525C12*), ABISELECT(1192,712), "S20525C1");
    /*is_ambiguous_... S20525C10::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C10*)(S20525C12*), ABISELECT(1192,712), "S20525C1");
    /*is_ambiguous_... S20525C10::S20525C8 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C10*)(S20525C12*), ABISELECT(1232,736), "S20525C1");
    check_base_class_offset(lv, (S20525C8*)(S20525C7*)(S20525C10*)(S20525C12*), ABISELECT(1304,780), "S20525C1");
    check_base_class_offset(lv, (S20525C7*)(S20525C10*)(S20525C12*), ABISELECT(1296,776), "S20525C1");
    check_base_class_offset(lv, (S20525C10*)(S20525C12*), ABISELECT(1192,712), "S20525C1");
    /*is_ambiguous_... S20525C12::S20525C8 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C12*), ABISELECT(1680,996), "S20525C1");
    /*is_ambiguous_... S20525C12::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C12*), ABISELECT(1740,1036), "S20525C1");
    /*is_ambiguous_... S20525C12::S20525C7 */ AMB_check_base_class_offset(lv, (S20525C8*)(S20525C7*)(S20525C12*), ABISELECT(1752,1040), "S20525C1");
    /*is_ambiguous_... S20525C12::S20525C7 */ AMB_check_base_class_offset(lv, (S20525C7*)(S20525C12*), ABISELECT(1744,1036), "S20525C1");
    check_base_class_offset(lv, (S20525C12*), ABISELECT(1192,712), "S20525C1");
    /*is_ambiguous_... S20525C13::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20525C13*), ABISELECT(1920,1136), "S20525C1");
    check_base_class_offset(lv, (S20525C8*)(S20525C7*)(S20525C13*), ABISELECT(1928,1140), "S20525C1");
    check_base_class_offset(lv, (S20525C7*)(S20525C13*), ABISELECT(1920,1136), "S20525C1");
    check_base_class_offset(lv, (S20525C13*), ABISELECT(1920,1136), "S20525C1");
    check_field_offset(lv, s20525c1f0, ABISELECT(8,4), "S20525C1.s20525c1f0");
    check_field_offset(lv, s20525c1f1, ABISELECT(16,12), "S20525C1.s20525c1f1");
    test_class_info(&lv, &cd_S20525C1);
    dp->~S20525C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20525C1(Test_S20525C1, "S20525C1", ABISELECT(2088,1236));

#else // __cplusplus

extern void _ZN8S20525C1C1Ev();
extern void _ZN8S20525C1D2Ev();
Name_Map name_map_S20525C1[] = {
  NSPAIR(_ZN8S20525C1C1Ev),
  NSPAIR(_ZN8S20525C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S20525C3;
extern VTBL_ENTRY _ZTI8S20525C3[];
extern  VTBL_ENTRY _ZTV8S20525C3[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
extern Class_Descriptor cd_S20525C6;
extern VTBL_ENTRY _ZTI8S20525C6[];
extern  VTBL_ENTRY _ZTV8S20525C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C6[];
extern Class_Descriptor cd_S20525C2;
extern VTBL_ENTRY _ZTI8S20525C2[];
extern  VTBL_ENTRY _ZTV8S20525C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C2[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
extern Class_Descriptor cd_S20525C10;
extern VTBL_ENTRY _ZTI9S20525C10[];
extern  VTBL_ENTRY _ZTV9S20525C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20525C10[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C6;
extern VTBL_ENTRY _ZTI8S20525C6[];
extern  VTBL_ENTRY _ZTV8S20525C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C6[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S20525C9;
extern VTBL_ENTRY _ZTI8S20525C9[];
extern  VTBL_ENTRY _ZTV8S20525C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C9[];
extern Class_Descriptor cd_S20525C4;
extern VTBL_ENTRY _ZTI8S20525C4[];
extern  VTBL_ENTRY _ZTV8S20525C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
extern Class_Descriptor cd_S20525C10;
extern VTBL_ENTRY _ZTI9S20525C10[];
extern  VTBL_ENTRY _ZTV9S20525C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20525C10[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
extern Class_Descriptor cd_S20525C12;
extern VTBL_ENTRY _ZTI9S20525C12[];
extern  VTBL_ENTRY _ZTV9S20525C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20525C12[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S20525C7;
extern VTBL_ENTRY _ZTI8S20525C7[];
extern  VTBL_ENTRY _ZTV8S20525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C7[];
extern Class_Descriptor cd_S20525C13;
extern VTBL_ENTRY _ZTI9S20525C13[];
extern  VTBL_ENTRY _ZTV9S20525C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20525C13[];
static Base_Class bases_S20525C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20525C4,    ABISELECT(128,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20525C3,    ABISELECT(128,88), //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
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20525C4,    ABISELECT(288,184), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20525C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20525C7,    ABISELECT(168,112), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20525C6,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20525C2,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20525C8,    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
    19, //immediately_derived
  0, 0},
  {&cd_S20525C4,    ABISELECT(704,428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3164C31_nt,    ABISELECT(704,428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20525C8,    ABISELECT(744,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
    15, //immediately_derived
  0, 0},
  {&cd_S20525C8,    ABISELECT(816,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
    14, //immediately_derived
  0, 0},
  {&cd_S20525C7,    ABISELECT(808,492), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20525C10,    ABISELECT(704,428), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3164C31_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
    17, //immediately_derived
  0, 0},
  {&cd_S20525C6,    ABISELECT(328,208), //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
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20525C4,    ABISELECT(408,260), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20525C9,    ABISELECT(328,208), //bcp->offset
    40, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20525C4,    ABISELECT(1192,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3164C31_nt,    ABISELECT(1192,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20525C8,    ABISELECT(1232,736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20525C8,    ABISELECT(1304,780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20525C7,    ABISELECT(1296,776), //bcp->offset
    96, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20525C10,    ABISELECT(1192,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20525C8,    ABISELECT(1680,996), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3164C31_nt,    ABISELECT(1740,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20525C8,    ABISELECT(1752,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20525C7,    ABISELECT(1744,1036), //bcp->offset
    102, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20525C12,    ABISELECT(1192,712), //bcp->offset
    76, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    ABISELECT(1920,1136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20525C8,    ABISELECT(1928,1140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20525C7,    ABISELECT(1920,1136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20525C13,    ABISELECT(1920,1136), //bcp->offset
    108, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20525C1[];
extern void _ZN8S20525C1D1Ev();
extern void _ZN8S20525C1D0Ev();
extern void _ZN8S20525C12v1Ev();
extern void _ZN8S20525C12v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20525C1D1Ev,_ZTv0_n28_N8S20525C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S20525C1D1Ev,_ZThn16_N8S20525C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20525C1D0Ev,_ZTv0_n28_N8S20525C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S20525C1D0Ev,_ZThn16_N8S20525C1D0Ev)() __attribute__((weak));
extern void _ZN8S20525C42v3Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C42v3Ev();
extern void ABISELECT(_ZTv0_n64_N8S20525C1D1Ev,_ZTv0_n32_N8S20525C1D1Ev)();
extern void ABISELECT(_ZThn328_N8S20525C1D1Ev,_ZThn208_N8S20525C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20525C1D0Ev,_ZTv0_n32_N8S20525C1D0Ev)();
extern void ABISELECT(_ZThn328_N8S20525C1D0Ev,_ZThn208_N8S20525C1D0Ev)() __attribute__((weak));
extern void _ZN8S20525C92v7Ev();
extern void _ZN8S20525C92v8Ev();
extern void _ZN8S20525C92v9Ev();
extern void _ZN8S20525C42v3Ev();
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
extern void ABISELECT(_ZTv0_n80_N8S20525C1D1Ev,_ZTv0_n40_N8S20525C1D1Ev)();
extern void ABISELECT(_ZThn1192_N8S20525C1D1Ev,_ZThn712_N8S20525C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20525C1D0Ev,_ZTv0_n40_N8S20525C1D0Ev)();
extern void ABISELECT(_ZThn1192_N8S20525C1D0Ev,_ZThn712_N8S20525C1D0Ev)() __attribute__((weak));
extern void _ZN9S20525C123v10Ev();
extern void _ZN9S20525C123v11Ev();
extern void _ZN9S20525C123v12Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN9S20525C133v13Ev();
extern void _ZN9S20525C133v14Ev();
static  VTBL_ENTRY vtc_S20525C1[] = {
  ABISELECT(1920,1136),
  ABISELECT(1192,712),
  ABISELECT(704,428),
  ABISELECT(328,208),
  0,
  ABISELECT(288,184),
  ABISELECT(168,112),
  ABISELECT(128,88),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20525C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20525C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20525C12v2Ev,
  ABISELECT(-24,-16),
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(264,168),
  ABISELECT(144,96),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20525C1D1Ev,_ZTv0_n28_N8S20525C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20525C1D0Ev,_ZTv0_n28_N8S20525C1D0Ev),
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  0,
  0,
  ABISELECT(-168,-112),
  ABISELECT(120,72),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  ABISELECT(80,52),
  0,
  0,
  0,
  ABISELECT(-328,-208),
  ABISELECT(-200,-120),
  ABISELECT(376,220),
  ABISELECT(-328,-208),
  ABISELECT(-40,-24),
  ABISELECT(-160,-96),
  ABISELECT(-328,-208),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20525C1D1Ev,_ZTv0_n32_N8S20525C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20525C1D0Ev,_ZTv0_n32_N8S20525C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20525C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20525C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20525C92v9Ev,
  ABISELECT(-408,-260),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  ABISELECT(104,64),
  ABISELECT(104,64),
  0,
  0,
  ABISELECT(-704,-428),
  ABISELECT(-416,-244),
  ABISELECT(-704,-428),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
  ABISELECT(-808,-492),
  ABISELECT(-520,-308),
  ABISELECT(-808,-492),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  0,
  0,
  0,
  ABISELECT(-1192,-712),
  ABISELECT(104,64),
  ABISELECT(104,64),
  0,
  0,
  ABISELECT(-1064,-624),
  ABISELECT(-1192,-712),
  ABISELECT(-904,-528),
  ABISELECT(-1192,-712),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20525C1D1Ev,_ZTv0_n40_N8S20525C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20525C1D0Ev,_ZTv0_n40_N8S20525C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20525C123v10Ev,
  (VTBL_ENTRY)&_ZN9S20525C123v11Ev,
  (VTBL_ENTRY)&_ZN9S20525C123v12Ev,
  ABISELECT(-1296,-776),
  ABISELECT(-1008,-592),
  ABISELECT(-1296,-776),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  ABISELECT(-1744,-1036),
  ABISELECT(-1456,-852),
  ABISELECT(-1744,-1036),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1920,-1136),
  ABISELECT(-1632,-952),
  ABISELECT(-1920,-1136),
  (VTBL_ENTRY)&(_ZTI8S20525C1[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20525C133v13Ev,
  (VTBL_ENTRY)&_ZN9S20525C133v14Ev,
};
extern VTBL_ENTRY _ZTV8S20525C1[];
extern void _ZN8S20525C2D1Ev();
extern void _ZN8S20525C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C2__8S20525C1[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(264,168),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C2[0]),
  (VTBL_ENTRY)&_ZN8S20525C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20525C2D0Ev,
};
extern void _ZN8S20525C6D1Ev();
extern void _ZN8S20525C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C68S20525C2__8S20525C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(264,168),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20525C6D0Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__8S20525C68S20525C2__8S20525C1[] = {
  0,
  0,
  ABISELECT(-168,-112),
  ABISELECT(120,72),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C68S20525C2__8S20525C1[] = {
  0,
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C48S20525C3__8S20525C2__8S20525C1[] = {
  0,
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S20525C2[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__8S20525C2__8S20525C1[] = {
  0,
  0,
  ABISELECT(-168,-112),
  ABISELECT(120,72),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S20525C2[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__A1__8S20525C2__8S20525C1[] = {
  0,
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI8S20525C2[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__8S20525C1[] = {
  ABISELECT(-168,-112),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C7__8S20525C1[] = {
  0,
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C9D1Ev();
extern void _ZN8S20525C9D0Ev();
extern void _ZN8S20525C92v7Ev();
extern void _ZN8S20525C92v8Ev();
extern void _ZN8S20525C92v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C9__8S20525C1[] = {
  ABISELECT(-200,-120),
  ABISELECT(376,220),
  ABISELECT(-328,-208),
  ABISELECT(-40,-24),
  ABISELECT(-160,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20525C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20525C92v7Ev,
  (VTBL_ENTRY)&_ZN8S20525C92v8Ev,
  (VTBL_ENTRY)&_ZN8S20525C92v9Ev,
};
extern void _ZN8S20525C6D1Ev();
extern void _ZN8S20525C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C68S20525C9__A1__8S20525C1[] = {
  ABISELECT(-328,-208),
  ABISELECT(-40,-24),
  ABISELECT(-160,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20525C6D0Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__8S20525C68S20525C9__A1__8S20525C1[] = {
  0,
  0,
  ABISELECT(-168,-112),
  ABISELECT(120,72),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C68S20525C9__A1__8S20525C1[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20525C6[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20525C10__8S20525C9__8S20525C1[] = {
  ABISELECT(104,64),
  ABISELECT(104,64),
  0,
  0,
  ABISELECT(-704,-428),
  ABISELECT(-416,-244),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C79S20525C10__8S20525C9__8S20525C1[] = {
  ABISELECT(-808,-492),
  ABISELECT(-520,-308),
  ABISELECT(-480,-284),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__A1__8S20525C9__8S20525C1[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__A1__8S20525C9__8S20525C1[] = {
  0,
  0,
  ABISELECT(-168,-112),
  ABISELECT(120,72),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C48S20525C3__A3__8S20525C9__8S20525C1[] = {
  0,
  ABISELECT(200,120),
  (VTBL_ENTRY)&(_ZTI8S20525C9[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20525C10__8S20525C1[] = {
  ABISELECT(-704,-428),
  ABISELECT(-416,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C79S20525C10__A1__8S20525C1[] = {
  ABISELECT(-808,-492),
  ABISELECT(-520,-308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C79S20525C10__A1__8S20525C1[] = {
  0,
  ABISELECT(520,308),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__9S20525C10__8S20525C1[] = {
  ABISELECT(-808,-492),
  ABISELECT(-520,-308),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__A1__9S20525C10__8S20525C1[] = {
  0,
  ABISELECT(416,244),
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
extern void _ZN9S20525C12D1Ev();
extern void _ZN9S20525C12D0Ev();
extern void _ZN9S20525C123v10Ev();
extern void _ZN9S20525C123v11Ev();
extern void _ZN9S20525C123v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20525C12__8S20525C1[] = {
  ABISELECT(-1064,-624),
  ABISELECT(-1192,-712),
  ABISELECT(-904,-528),
  0,
  (VTBL_ENTRY)&(_ZTI9S20525C12[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
  (VTBL_ENTRY)&_ZN9S20525C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20525C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20525C123v10Ev,
  (VTBL_ENTRY)&_ZN9S20525C123v11Ev,
  (VTBL_ENTRY)&_ZN9S20525C123v12Ev,
};
extern void _ZN8S20525C42v3Ev();
extern void _ZN9S20525C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20525C109S20525C12__A1__8S20525C1[] = {
  ABISELECT(-1192,-712),
  ABISELECT(-904,-528),
  0,
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
  (VTBL_ENTRY)&_ZN9S20525C102v6Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C79S20525C109S20525C12__A2__8S20525C1[] = {
  ABISELECT(-1296,-776),
  ABISELECT(-1008,-592),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C79S20525C109S20525C12__A2__8S20525C1[] = {
  0,
  ABISELECT(1008,592),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__9S20525C109S20525C12__A1__8S20525C1[] = {
  ABISELECT(-1296,-776),
  ABISELECT(-1008,-592),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__A1__9S20525C109S20525C12__A1__8S20525C1[] = {
  0,
  ABISELECT(904,528),
  (VTBL_ENTRY)&(_ZTI9S20525C10[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C79S20525C12__A3__8S20525C1[] = {
  ABISELECT(-1744,-1036),
  ABISELECT(-1456,-852),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C79S20525C12__A3__8S20525C1[] = {
  0,
  ABISELECT(1456,852),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C79S20525C10__9S20525C12__8S20525C1[] = {
  ABISELECT(-1296,-776),
  ABISELECT(-1008,-592),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20525C12[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__A1__9S20525C12__8S20525C1[] = {
  0,
  ABISELECT(904,528),
  (VTBL_ENTRY)&(_ZTI9S20525C12[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C48S20525C3__A2__9S20525C12__8S20525C1[] = {
  0,
  ABISELECT(1064,624),
  (VTBL_ENTRY)&(_ZTI9S20525C12[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C7__A1__9S20525C12__8S20525C1[] = {
  ABISELECT(-1744,-1036),
  ABISELECT(-1456,-852),
  ABISELECT(-552,-324),
  (VTBL_ENTRY)&(_ZTI9S20525C12[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
extern void _ZN9S20525C133v13Ev();
extern void _ZN9S20525C133v14Ev();
static  VTBL_ENTRY _tg__ZTV9S20525C13__8S20525C1[] = {
  ABISELECT(-1920,-1136),
  ABISELECT(-1632,-952),
  0,
  (VTBL_ENTRY)&(_ZTI9S20525C13[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20525C133v13Ev,
  (VTBL_ENTRY)&_ZN9S20525C133v14Ev,
};
extern void _ZN8S20525C72v4Ev();
extern void _ZN8S20525C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C79S20525C13__A4__8S20525C1[] = {
  ABISELECT(-1920,-1136),
  ABISELECT(-1632,-952),
  0,
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20525C72v5Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__8S20525C79S20525C13__A4__8S20525C1[] = {
  0,
  ABISELECT(1632,952),
  (VTBL_ENTRY)&(_ZTI8S20525C7[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
extern void _ZN8S20525C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20525C4__9S20525C13__8S20525C1[] = {
  0,
  ABISELECT(1632,952),
  (VTBL_ENTRY)&(_ZTI9S20525C13[0]),
  (VTBL_ENTRY)&_ZN8S20525C42v3Ev,
};
static  VTT_ENTRY vtt_S20525C1[] = {
  {&(_ZTV8S20525C1[11]),  11,120},
  {&(_ZTV8S20525C1[22]),  22,120},
  {&(_ZTV8S20525C1[27]),  27,120},
  {&(_ZTV8S20525C1[34]),  34,120},
  {&(_ZTV8S20525C1[39]),  39,120},
  {&(_ZTV8S20525C1[52]),  52,120},
  {&(_ZTV8S20525C1[68]),  68,120},
  {&(_ZTV8S20525C1[74]),  74,120},
  {&(_ZTV8S20525C1[59]),  59,120},
  {&(_ZTV8S20525C1[89]),  89,120},
  {&(_ZTV8S20525C1[100]),  100,120},
  {&(_ZTV8S20525C1[106]),  106,120},
  {&(_ZTV8S20525C1[116]),  116,120},
  {&(_tg__ZTV8S20525C2__8S20525C1[6]),  6,8},
  {&(_tg__ZTV8S20525C68S20525C2__8S20525C1[5]),  5,7},
  {&(_tg__ZTV8S20525C7__8S20525C68S20525C2__8S20525C1[6]),  6,8},
  {&(_tg__ZTV8S20525C4__8S20525C68S20525C2__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C48S20525C3__8S20525C2__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C7__8S20525C2__8S20525C1[6]),  6,8},
  {&(_tg__ZTV8S20525C4__A1__8S20525C2__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C7__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C7__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C9__8S20525C1[7]),  7,12},
  {&(_tg__ZTV8S20525C68S20525C9__A1__8S20525C1[5]),  5,7},
  {&(_tg__ZTV8S20525C7__8S20525C68S20525C9__A1__8S20525C1[6]),  6,8},
  {&(_tg__ZTV8S20525C4__8S20525C68S20525C9__A1__8S20525C1[3]),  3,4},
  {&(_tg__ZTV9S20525C10__8S20525C9__8S20525C1[8]),  8,10},
  {&(_tg__ZTV8S20525C79S20525C10__8S20525C9__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C4__A1__8S20525C9__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C7__A1__8S20525C9__8S20525C1[6]),  6,8},
  {&(_tg__ZTV8S20525C48S20525C3__A3__8S20525C9__8S20525C1[3]),  3,4},
  {&(_tg__ZTV9S20525C10__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C79S20525C10__A1__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C79S20525C10__A1__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C7__9S20525C10__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C4__A1__9S20525C10__8S20525C1[3]),  3,4},
  {&(_tg__ZTV9S20525C12__8S20525C1[5]),  5,12},
  {&(_tg__ZTV9S20525C109S20525C12__A1__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C79S20525C109S20525C12__A2__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C79S20525C109S20525C12__A2__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C7__9S20525C109S20525C12__A1__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C4__A1__9S20525C109S20525C12__A1__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C79S20525C12__A3__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C79S20525C12__A3__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C79S20525C10__9S20525C12__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C4__A1__9S20525C12__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C48S20525C3__A2__9S20525C12__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C7__A1__9S20525C12__8S20525C1[4]),  4,6},
  {&(_tg__ZTV9S20525C13__8S20525C1[4]),  4,8},
  {&(_tg__ZTV8S20525C79S20525C13__A4__8S20525C1[4]),  4,6},
  {&(_tg__ZTV8S20525C4__8S20525C79S20525C13__A4__8S20525C1[3]),  3,4},
  {&(_tg__ZTV8S20525C4__9S20525C13__8S20525C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20525C1[];
extern  VTBL_ENTRY _ZTV8S20525C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20525C1[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20525C1D0Ev,_ZTv0_n40_N8S20525C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S20525C1D0Ev,_ZThn712_N8S20525C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20525C1D1Ev,_ZTv0_n40_N8S20525C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S20525C1D1Ev,_ZThn712_N8S20525C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20525C1D0Ev,_ZTv0_n32_N8S20525C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S20525C1D0Ev,_ZThn208_N8S20525C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20525C1D1Ev,_ZTv0_n32_N8S20525C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S20525C1D1Ev,_ZThn208_N8S20525C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20525C1D0Ev,_ZTv0_n28_N8S20525C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20525C1D0Ev,_ZThn16_N8S20525C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20525C1D1Ev,_ZTv0_n28_N8S20525C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20525C1D1Ev,_ZThn16_N8S20525C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20525C1 = {  "S20525C1", // class name
  bases_S20525C1, 35,
  &(vtc_S20525C1[0]), // expected_vtbl_contents
  &(vtt_S20525C1[0]), // expected_vtt_contents
  ABISELECT(2088,1236), // object size
  NSPAIRA(_ZTI8S20525C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20525C1),120, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20525C1),52, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5714C1  : S19674C2 {
  long s5714c1f0;
  int s5714c1f1;
  long double s5714c1f2[8];
  long double s5714c1f3;
  int s5714c1f4;
  ::S21161C15 s5714c1f5;
};
//SIG(1 S5714C1) C1{ BC2{ m FC3{ VBC4{ VBC5{ vd m FL[7] Fs Fp[3] Fi Fl Fp} v1} VBC6{ VBC5 VBC7{ m Fp[14]} BC8{ VBC5 BC7 Fs[6] FL[3] FU9{ m Fp[4] Fp Fp FL Fi FL Fp Fc FL}} v2 v3 FC8 FD[7] FC8 FL Fp[5]} vd FC10{ VBC8 BC5 Fc:6 Fc[8] FD FC7 FC7}[5] Fl Fi FC6 Fi Fi FC4}[5] Fp} Fl Fi FD[8] FD Fi FC11{ VBC5 VBC12{ VBC5 BC7 Fs[6] FL[3] FU9} VBC13{ VBC12 BC5 Fc:6 Fc[8] FD FC7 FC7} BC7 VBC14{ VBC5 VBC7 BC12 v6 v7 FC12 FD[7] FC12 FL Fp[5]} vd v4 v5 Fi Fi FC7 Fc Fc Fi Fs FL}}



static void Test_S5714C1()
{
  extern Class_Descriptor cd_S5714C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2057,5054)];
    init_test(&cd_S5714C1, buf);
    S5714C1 &lv = *(new (buf) S5714C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32896,20212), "sizeof(S5714C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5714C1)");
    check_base_class_offset(lv, (S19674C2*), 0, "S5714C1");
    check_field_offset(lv, s5714c1f0, ABISELECT(30648,18844), "S5714C1.s5714c1f0");
    check_field_offset(lv, s5714c1f1, ABISELECT(30656,18848), "S5714C1.s5714c1f1");
    check_field_offset(lv, s5714c1f2, ABISELECT(30672,18852), "S5714C1.s5714c1f2");
    check_field_offset(lv, s5714c1f3, ABISELECT(30800,18948), "S5714C1.s5714c1f3");
    check_field_offset(lv, s5714c1f4, ABISELECT(30816,18960), "S5714C1.s5714c1f4");
    check_field_offset(lv, s5714c1f5, ABISELECT(30832,18964), "S5714C1.s5714c1f5");
    test_class_info(&lv, &cd_S5714C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5714C1(Test_S5714C1, "S5714C1", ABISELECT(32896,20212));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S3385C3  {
  long double s3385c3f0;
  char s3385c3f1;
  virtual void  v7(); // _ZN7S3385C32v7Ev
  virtual void  v8(); // _ZN7S3385C32v8Ev
  virtual void  v9(); // _ZN7S3385C32v9Ev
  virtual void  v10(); // _ZN7S3385C33v10Ev
  virtual void  v11(); // _ZN7S3385C33v11Ev
  virtual void  v12(); // _ZN7S3385C33v12Ev
  virtual void  v13(); // _ZN7S3385C33v13Ev
  virtual void  v14(); // _ZN7S3385C33v14Ev
  ~S3385C3(); // tgen
  S3385C3(); // tgen
};
//SIG(-1 S3385C3) C1{ v1 v2 v3 v4 v5 v6 v7 v8 FD Fc}


void  S3385C3 ::v7(){vfunc_called(this, "_ZN7S3385C32v7Ev");}
void  S3385C3 ::v8(){vfunc_called(this, "_ZN7S3385C32v8Ev");}
void  S3385C3 ::v9(){vfunc_called(this, "_ZN7S3385C32v9Ev");}
void  S3385C3 ::v10(){vfunc_called(this, "_ZN7S3385C33v10Ev");}
void  S3385C3 ::v11(){vfunc_called(this, "_ZN7S3385C33v11Ev");}
void  S3385C3 ::v12(){vfunc_called(this, "_ZN7S3385C33v12Ev");}
void  S3385C3 ::v13(){vfunc_called(this, "_ZN7S3385C33v13Ev");}
void  S3385C3 ::v14(){vfunc_called(this, "_ZN7S3385C33v14Ev");}
S3385C3 ::~S3385C3(){ note_dtor("S3385C3", this);} // tgen
S3385C3 ::S3385C3(){ note_ctor("S3385C3", this);} // tgen

static void Test_S3385C3()
{
  extern Class_Descriptor cd_S3385C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S3385C3, buf);
    S3385C3 *dp, &lv = *(dp=new (buf) S3385C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S3385C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3385C3)");
    check_field_offset(lv, s3385c3f0, ABISELECT(16,4), "S3385C3.s3385c3f0");
    check_field_offset(lv, s3385c3f1, ABISELECT(32,16), "S3385C3.s3385c3f1");
    test_class_info(&lv, &cd_S3385C3);
    dp->~S3385C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3385C3(Test_S3385C3, "S3385C3", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN7S3385C3C1Ev();
extern void _ZN7S3385C3D1Ev();
Name_Map name_map_S3385C3[] = {
  NSPAIR(_ZN7S3385C3C1Ev),
  NSPAIR(_ZN7S3385C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3385C3[];
extern void _ZN7S3385C32v7Ev();
extern void _ZN7S3385C32v8Ev();
extern void _ZN7S3385C32v9Ev();
extern void _ZN7S3385C33v10Ev();
extern void _ZN7S3385C33v11Ev();
extern void _ZN7S3385C33v12Ev();
extern void _ZN7S3385C33v13Ev();
extern void _ZN7S3385C33v14Ev();
static  VTBL_ENTRY vtc_S3385C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C3[0]),
  (VTBL_ENTRY)&_ZN7S3385C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S3385C3[];
extern  VTBL_ENTRY _ZTV7S3385C3[];
Class_Descriptor cd_S3385C3 = {  "S3385C3", // class name
  0,0,//no base classes
  &(vtc_S3385C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI7S3385C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3385C3),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3385C6  {
  virtual void  v15(); // _ZN7S3385C63v15Ev
  virtual void  v16(); // _ZN7S3385C63v16Ev
  virtual void  v17(); // _ZN7S3385C63v17Ev
  virtual void  v18(); // _ZN7S3385C63v18Ev
  virtual void  v19(); // _ZN7S3385C63v19Ev
  virtual void  v20(); // _ZN7S3385C63v20Ev
  virtual void  v21(); // _ZN7S3385C63v21Ev
  ~S3385C6(); // tgen
  S3385C6(); // tgen
};
//SIG(-1 S3385C6) C1{ v1 v2 v3 v4 v5 v6 v7}


void  S3385C6 ::v15(){vfunc_called(this, "_ZN7S3385C63v15Ev");}
void  S3385C6 ::v16(){vfunc_called(this, "_ZN7S3385C63v16Ev");}
void  S3385C6 ::v17(){vfunc_called(this, "_ZN7S3385C63v17Ev");}
void  S3385C6 ::v18(){vfunc_called(this, "_ZN7S3385C63v18Ev");}
void  S3385C6 ::v19(){vfunc_called(this, "_ZN7S3385C63v19Ev");}
void  S3385C6 ::v20(){vfunc_called(this, "_ZN7S3385C63v20Ev");}
void  S3385C6 ::v21(){vfunc_called(this, "_ZN7S3385C63v21Ev");}
S3385C6 ::~S3385C6(){ note_dtor("S3385C6", this);} // tgen
S3385C6 ::S3385C6(){ note_ctor("S3385C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3385C6C1Ev();
extern void _ZN7S3385C6D1Ev();
Name_Map name_map_S3385C6[] = {
  NSPAIR(_ZN7S3385C6C1Ev),
  NSPAIR(_ZN7S3385C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3385C6[];
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
static  VTBL_ENTRY vtc_S3385C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C6[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
};
extern VTBL_ENTRY _ZTI7S3385C6[];
extern  VTBL_ENTRY _ZTV7S3385C6[];
Class_Descriptor cd_S3385C6 = {  "S3385C6", // class name
  0,0,//no base classes
  &(vtc_S3385C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3385C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3385C6),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  S3385C5  : virtual S3385C6 {
  virtual void  v22(); // _ZN7S3385C53v22Ev
  virtual void  v23(); // _ZN7S3385C53v23Ev
  virtual void  v24(); // _ZN7S3385C53v24Ev
  ~S3385C5(); // tgen
  S3385C5(); // tgen
};
//SIG(-1 S3385C5) C1{ VBC2{ v4 v5 v6 v7 v8 v9 v10} v1 v2 v3}


void  S3385C5 ::v22(){vfunc_called(this, "_ZN7S3385C53v22Ev");}
void  S3385C5 ::v23(){vfunc_called(this, "_ZN7S3385C53v23Ev");}
void  S3385C5 ::v24(){vfunc_called(this, "_ZN7S3385C53v24Ev");}
S3385C5 ::~S3385C5(){ note_dtor("S3385C5", this);} // tgen
S3385C5 ::S3385C5(){ note_ctor("S3385C5", this);} // tgen

static void Test_S3385C5()
{
  extern Class_Descriptor cd_S3385C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3385C5, buf);
    S3385C5 *dp, &lv = *(dp=new (buf) S3385C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3385C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3385C5)");
    check_base_class_offset(lv, (S3385C6*), 0, "S3385C5");
    test_class_info(&lv, &cd_S3385C5);
    dp->~S3385C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3385C5(Test_S3385C5, "S3385C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3385C5C1Ev();
extern void _ZN7S3385C5D1Ev();
Name_Map name_map_S3385C5[] = {
  NSPAIR(_ZN7S3385C5C1Ev),
  NSPAIR(_ZN7S3385C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3385C6;
extern VTBL_ENTRY _ZTI7S3385C6[];
extern  VTBL_ENTRY _ZTV7S3385C6[];
static Base_Class bases_S3385C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3385C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3385C5[];
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C53v22Ev();
extern void _ZN7S3385C53v23Ev();
extern void _ZN7S3385C53v24Ev();
static  VTBL_ENTRY vtc_S3385C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C5[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v22Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v23Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v24Ev,
};
extern VTBL_ENTRY _ZTV7S3385C5[];
static  VTT_ENTRY vtt_S3385C5[] = {
  {&(_ZTV7S3385C5[10]),  10,20},
  {&(_ZTV7S3385C5[10]),  10,20},
};
extern VTBL_ENTRY _ZTI7S3385C5[];
extern  VTBL_ENTRY _ZTV7S3385C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3385C5[];
Class_Descriptor cd_S3385C5 = {  "S3385C5", // class name
  bases_S3385C5, 1,
  &(vtc_S3385C5[0]), // expected_vtbl_contents
  &(vtt_S3385C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3385C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3385C5),20, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3385C5),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  S3385C8  {
  char s3385c8f0;
  void *s3385c8f1;
  short s3385c8f2:11;
  virtual void  v25(); // _ZN7S3385C83v25Ev
  virtual void  v26(); // _ZN7S3385C83v26Ev
  virtual void  v27(); // _ZN7S3385C83v27Ev
  ~S3385C8(); // tgen
  S3385C8(); // tgen
};
//SIG(-1 S3385C8) C1{ v1 v2 v3 Fc Fp Fs:11}


void  S3385C8 ::v25(){vfunc_called(this, "_ZN7S3385C83v25Ev");}
void  S3385C8 ::v26(){vfunc_called(this, "_ZN7S3385C83v26Ev");}
void  S3385C8 ::v27(){vfunc_called(this, "_ZN7S3385C83v27Ev");}
S3385C8 ::~S3385C8(){ note_dtor("S3385C8", this);} // tgen
S3385C8 ::S3385C8(){ note_ctor("S3385C8", this);} // tgen

static void Test_S3385C8()
{
  extern Class_Descriptor cd_S3385C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S3385C8, buf);
    S3385C8 *dp, &lv = *(dp=new (buf) S3385C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S3385C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3385C8)");
    check_field_offset(lv, s3385c8f0, ABISELECT(8,4), "S3385C8.s3385c8f0");
    check_field_offset(lv, s3385c8f1, ABISELECT(16,8), "S3385C8.s3385c8f1");
    set_bf_and_test(lv, s3385c8f2, ABISELECT(24,12), 0, 11, 1, "S3385C8");
    set_bf_and_test(lv, s3385c8f2, ABISELECT(24,12), 0, 11, hide_sll(1LL<<10), "S3385C8");
    test_class_info(&lv, &cd_S3385C8);
    dp->~S3385C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3385C8(Test_S3385C8, "S3385C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S3385C8C1Ev();
extern void _ZN7S3385C8D1Ev();
Name_Map name_map_S3385C8[] = {
  NSPAIR(_ZN7S3385C8C1Ev),
  NSPAIR(_ZN7S3385C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3385C8[];
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
static  VTBL_ENTRY vtc_S3385C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C8[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
};
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
Class_Descriptor cd_S3385C8 = {  "S3385C8", // class name
  0,0,//no base classes
  &(vtc_S3385C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S3385C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3385C8),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  S3385C7  : S3385C8 {
  virtual void  v28(); // _ZN7S3385C73v28Ev
  ~S3385C7(); // tgen
  S3385C7(); // tgen
};
//SIG(-1 S3385C7) C1{ BC2{ v2 v3 v4 Fc Fp Fs:11} v1}


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

static void Test_S3385C7()
{
  extern Class_Descriptor cd_S3385C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S3385C7, buf);
    S3385C7 *dp, &lv = *(dp=new (buf) S3385C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S3385C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3385C7)");
    check_base_class_offset(lv, (S3385C8*), 0, "S3385C7");
    test_class_info(&lv, &cd_S3385C7);
    dp->~S3385C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3385C7(Test_S3385C7, "S3385C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S3385C7C1Ev();
extern void _ZN7S3385C7D1Ev();
Name_Map name_map_S3385C7[] = {
  NSPAIR(_ZN7S3385C7C1Ev),
  NSPAIR(_ZN7S3385C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
static Base_Class bases_S3385C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3385C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3385C7[];
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C73v28Ev();
static  VTBL_ENTRY vtc_S3385C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C7[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C73v28Ev,
};
extern VTBL_ENTRY _ZTI7S3385C7[];
extern  VTBL_ENTRY _ZTV7S3385C7[];
Class_Descriptor cd_S3385C7 = {  "S3385C7", // class name
  bases_S3385C7, 1,
  &(vtc_S3385C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S3385C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3385C7),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  S3385C9  : S3385C8 {
  virtual void  v29(); // _ZN7S3385C93v29Ev
  virtual void  v30(); // _ZN7S3385C93v30Ev
  virtual void  v31(); // _ZN7S3385C93v31Ev
  ~S3385C9(); // tgen
  S3385C9(); // tgen
};
//SIG(-1 S3385C9) C1{ BC2{ v4 v5 v6 Fc Fp Fs:11} v1 v2 v3}


void  S3385C9 ::v29(){vfunc_called(this, "_ZN7S3385C93v29Ev");}
void  S3385C9 ::v30(){vfunc_called(this, "_ZN7S3385C93v30Ev");}
void  S3385C9 ::v31(){vfunc_called(this, "_ZN7S3385C93v31Ev");}
S3385C9 ::~S3385C9(){ note_dtor("S3385C9", this);} // tgen
S3385C9 ::S3385C9(){ note_ctor("S3385C9", this);} // tgen

static void Test_S3385C9()
{
  extern Class_Descriptor cd_S3385C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S3385C9, buf);
    S3385C9 *dp, &lv = *(dp=new (buf) S3385C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S3385C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3385C9)");
    check_base_class_offset(lv, (S3385C8*), 0, "S3385C9");
    test_class_info(&lv, &cd_S3385C9);
    dp->~S3385C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3385C9(Test_S3385C9, "S3385C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S3385C9C1Ev();
extern void _ZN7S3385C9D1Ev();
Name_Map name_map_S3385C9[] = {
  NSPAIR(_ZN7S3385C9C1Ev),
  NSPAIR(_ZN7S3385C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
static Base_Class bases_S3385C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3385C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3385C9[];
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C93v29Ev();
extern void _ZN7S3385C93v30Ev();
extern void _ZN7S3385C93v31Ev();
static  VTBL_ENTRY vtc_S3385C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C9[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v29Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v30Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v31Ev,
};
extern VTBL_ENTRY _ZTI7S3385C9[];
extern  VTBL_ENTRY _ZTV7S3385C9[];
Class_Descriptor cd_S3385C9 = {  "S3385C9", // class name
  bases_S3385C9, 1,
  &(vtc_S3385C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S3385C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3385C9),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  S3385C4  : S3385C5 , virtual S3385C7 , S3385C9 {
  int s3385c4f0;
  char s3385c4f1[3];
  virtual void  v32(); // _ZN7S3385C43v32Ev
  virtual void  v33(); // _ZN7S3385C43v33Ev
  virtual void  v34(); // _ZN7S3385C43v34Ev
  virtual void  v35(); // _ZN7S3385C43v35Ev
  virtual void  v36(); // _ZN7S3385C43v36Ev
  ~S3385C4(); // tgen
  S3385C4(); // tgen
};
//SIG(-1 S3385C4) C1{ BC2{ VBC3{ v6 v7 v8 v9 v10 v11 v12} v13 v14 v15} VBC4{ BC5{ v16 v17 v18 Fc Fp Fs:11} v19} BC6{ BC5 v20 v21 v22} v1 v2 v3 v4 v5 Fi Fc[3]}


void  S3385C4 ::v32(){vfunc_called(this, "_ZN7S3385C43v32Ev");}
void  S3385C4 ::v33(){vfunc_called(this, "_ZN7S3385C43v33Ev");}
void  S3385C4 ::v34(){vfunc_called(this, "_ZN7S3385C43v34Ev");}
void  S3385C4 ::v35(){vfunc_called(this, "_ZN7S3385C43v35Ev");}
void  S3385C4 ::v36(){vfunc_called(this, "_ZN7S3385C43v36Ev");}
S3385C4 ::~S3385C4(){ note_dtor("S3385C4", this);} // tgen
S3385C4 ::S3385C4(){ note_ctor("S3385C4", this);} // tgen

static void Test_S3385C4()
{
  extern Class_Descriptor cd_S3385C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S3385C4, buf);
    S3385C4 *dp, &lv = *(dp=new (buf) S3385C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S3385C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3385C4)");
    check_base_class_offset(lv, (S3385C6*)(S3385C5*), 0, "S3385C4");
    check_base_class_offset(lv, (S3385C5*), 0, "S3385C4");
    check_base_class_offset(lv, (S3385C8*)(S3385C7*), ABISELECT(48,28), "S3385C4");
    check_base_class_offset(lv, (S3385C7*), ABISELECT(48,28), "S3385C4");
    check_base_class_offset(lv, (S3385C8*)(S3385C9*), ABISELECT(8,4), "S3385C4");
    check_base_class_offset(lv, (S3385C9*), ABISELECT(8,4), "S3385C4");
    check_field_offset(lv, s3385c4f0, ABISELECT(36,20), "S3385C4.s3385c4f0");
    check_field_offset(lv, s3385c4f1, ABISELECT(40,24), "S3385C4.s3385c4f1");
    test_class_info(&lv, &cd_S3385C4);
    dp->~S3385C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3385C4(Test_S3385C4, "S3385C4", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S3385C4C1Ev();
extern void _ZN7S3385C4D1Ev();
Name_Map name_map_S3385C4[] = {
  NSPAIR(_ZN7S3385C4C1Ev),
  NSPAIR(_ZN7S3385C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3385C6;
extern VTBL_ENTRY _ZTI7S3385C6[];
extern  VTBL_ENTRY _ZTV7S3385C6[];
extern Class_Descriptor cd_S3385C5;
extern VTBL_ENTRY _ZTI7S3385C5[];
extern  VTBL_ENTRY _ZTV7S3385C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3385C5[];
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
extern Class_Descriptor cd_S3385C7;
extern VTBL_ENTRY _ZTI7S3385C7[];
extern  VTBL_ENTRY _ZTV7S3385C7[];
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
extern Class_Descriptor cd_S3385C9;
extern VTBL_ENTRY _ZTI7S3385C9[];
extern  VTBL_ENTRY _ZTV7S3385C9[];
static Base_Class bases_S3385C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3385C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3385C5,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3385C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3385C7,    ABISELECT(48,28), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3385C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3385C9,    ABISELECT(8,4), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3385C4[];
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C53v22Ev();
extern void _ZN7S3385C53v23Ev();
extern void _ZN7S3385C53v24Ev();
extern void _ZN7S3385C43v32Ev();
extern void _ZN7S3385C43v33Ev();
extern void _ZN7S3385C43v34Ev();
extern void _ZN7S3385C43v35Ev();
extern void _ZN7S3385C43v36Ev();
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C93v29Ev();
extern void _ZN7S3385C93v30Ev();
extern void _ZN7S3385C93v31Ev();
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C73v28Ev();
static  VTBL_ENTRY vtc_S3385C4[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C4[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v22Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v23Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v24Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v32Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v33Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v34Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v35Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v36Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3385C4[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v29Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v30Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v31Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S3385C4[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C73v28Ev,
};
extern VTBL_ENTRY _ZTV7S3385C4[];
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C53v22Ev();
extern void _ZN7S3385C53v23Ev();
extern void _ZN7S3385C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C5__7S3385C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C5[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v22Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v23Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v24Ev,
};
static  VTT_ENTRY vtt_S3385C4[] = {
  {&(_ZTV7S3385C4[11]),  11,44},
  {&(_tg__ZTV7S3385C5__7S3385C4[10]),  10,20},
  {&(_tg__ZTV7S3385C5__7S3385C4[10]),  10,20},
  {&(_ZTV7S3385C4[11]),  11,44},
  {&(_ZTV7S3385C4[40]),  40,44},
};
extern VTBL_ENTRY _ZTI7S3385C4[];
extern  VTBL_ENTRY _ZTV7S3385C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3385C4[];
Class_Descriptor cd_S3385C4 = {  "S3385C4", // class name
  bases_S3385C4, 6,
  &(vtc_S3385C4[0]), // expected_vtbl_contents
  &(vtt_S3385C4[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S3385C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3385C4),44, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3385C4),5, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3385C2  : S3385C3 , virtual S3385C4 , virtual S3385C9 {
  virtual  ~S3385C2(); // _ZN7S3385C2D2Ev
  virtual void  v37(); // _ZN7S3385C23v37Ev
  virtual void  v38(); // _ZN7S3385C23v38Ev
  virtual void  v39(); // _ZN7S3385C23v39Ev
  virtual void  v40(); // _ZN7S3385C23v40Ev
  virtual void  v41(); // _ZN7S3385C23v41Ev
  virtual void  v42(); // _ZN7S3385C23v42Ev
  virtual void  v43(); // _ZN7S3385C23v43Ev
  virtual void  v44(); // _ZN7S3385C23v44Ev
  S3385C2(); // tgen
};
//SIG(-1 S3385C2) C1{ BC2{ v9 v10 v11 v12 v13 v14 v15 v16 FD Fc} VBC3{ BC4{ VBC5{ v17 v18 v19 v20 v21 v22 v23} v24 v25 v26} VBC6{ BC7{ v27 v28 v29 Fc Fp Fs:11} v30} BC8{ BC7 v31 v32 v33} v34 v35 v36 v37 v38 Fi Fc[3]} VBC8 vd v1 v2 v3 v4 v5 v6 v7 v8}


 S3385C2 ::~S3385C2(){ note_dtor("S3385C2", this);}
void  S3385C2 ::v37(){vfunc_called(this, "_ZN7S3385C23v37Ev");}
void  S3385C2 ::v38(){vfunc_called(this, "_ZN7S3385C23v38Ev");}
void  S3385C2 ::v39(){vfunc_called(this, "_ZN7S3385C23v39Ev");}
void  S3385C2 ::v40(){vfunc_called(this, "_ZN7S3385C23v40Ev");}
void  S3385C2 ::v41(){vfunc_called(this, "_ZN7S3385C23v41Ev");}
void  S3385C2 ::v42(){vfunc_called(this, "_ZN7S3385C23v42Ev");}
void  S3385C2 ::v43(){vfunc_called(this, "_ZN7S3385C23v43Ev");}
void  S3385C2 ::v44(){vfunc_called(this, "_ZN7S3385C23v44Ev");}
S3385C2 ::S3385C2(){ note_ctor("S3385C2", this);} // tgen

static void Test_S3385C2()
{
  extern Class_Descriptor cd_S3385C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,21)];
    init_test(&cd_S3385C2, buf);
    S3385C2 *dp, &lv = *(dp=new (buf) S3385C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S3385C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3385C2)");
    check_base_class_offset(lv, (S3385C3*), 0, "S3385C2");
    check_base_class_offset(lv, (S3385C6*)(S3385C5*)(S3385C4*), ABISELECT(40,20), "S3385C2");
    check_base_class_offset(lv, (S3385C5*)(S3385C4*), ABISELECT(40,20), "S3385C2");
    check_base_class_offset(lv, (S3385C8*)(S3385C7*), ABISELECT(88,48), "S3385C2");
    check_base_class_offset(lv, (S3385C7*)(S3385C4*), ABISELECT(88,48), "S3385C2");
    check_base_class_offset(lv, (S3385C8*)(S3385C9*)(S3385C4*), ABISELECT(48,24), "S3385C2");
    check_base_class_offset(lv, (S3385C9*)(S3385C4*), ABISELECT(48,24), "S3385C2");
    check_base_class_offset(lv, (S3385C4*), ABISELECT(40,20), "S3385C2");
    /*is_ambiguous_... S3385C2::S3385C9 */ AMB_check_base_class_offset(lv, (S3385C8*)(S3385C9*), ABISELECT(120,64), "S3385C2");
    /*is_ambiguous_... S3385C2::S3385C9 */ AMB_check_base_class_offset(lv, (S3385C9*), ABISELECT(120,64), "S3385C2");
    test_class_info(&lv, &cd_S3385C2);
    dp->~S3385C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3385C2(Test_S3385C2, "S3385C2", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN7S3385C2C1Ev();
extern void _ZN7S3385C2D2Ev();
Name_Map name_map_S3385C2[] = {
  NSPAIR(_ZN7S3385C2C1Ev),
  NSPAIR(_ZN7S3385C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3385C3;
extern VTBL_ENTRY _ZTI7S3385C3[];
extern  VTBL_ENTRY _ZTV7S3385C3[];
extern Class_Descriptor cd_S3385C6;
extern VTBL_ENTRY _ZTI7S3385C6[];
extern  VTBL_ENTRY _ZTV7S3385C6[];
extern Class_Descriptor cd_S3385C5;
extern VTBL_ENTRY _ZTI7S3385C5[];
extern  VTBL_ENTRY _ZTV7S3385C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3385C5[];
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
extern Class_Descriptor cd_S3385C7;
extern VTBL_ENTRY _ZTI7S3385C7[];
extern  VTBL_ENTRY _ZTV7S3385C7[];
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
extern Class_Descriptor cd_S3385C9;
extern VTBL_ENTRY _ZTI7S3385C9[];
extern  VTBL_ENTRY _ZTV7S3385C9[];
extern Class_Descriptor cd_S3385C4;
extern VTBL_ENTRY _ZTI7S3385C4[];
extern  VTBL_ENTRY _ZTV7S3385C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3385C4[];
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
extern Class_Descriptor cd_S3385C9;
extern VTBL_ENTRY _ZTI7S3385C9[];
extern  VTBL_ENTRY _ZTV7S3385C9[];
static Base_Class bases_S3385C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3385C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3385C6,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3385C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3385C8,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3385C7,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3385C8,    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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3385C9,    ABISELECT(48,24), //bcp->offset
    64, //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3385C4,    ABISELECT(40,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3385C8,    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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3385C9,    ABISELECT(120,64), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3385C2[];
extern void _ZN7S3385C32v7Ev();
extern void _ZN7S3385C32v8Ev();
extern void _ZN7S3385C32v9Ev();
extern void _ZN7S3385C33v10Ev();
extern void _ZN7S3385C33v11Ev();
extern void _ZN7S3385C33v12Ev();
extern void _ZN7S3385C33v13Ev();
extern void _ZN7S3385C33v14Ev();
extern void _ZN7S3385C2D1Ev();
extern void _ZN7S3385C2D0Ev();
extern void _ZN7S3385C23v37Ev();
extern void _ZN7S3385C23v38Ev();
extern void _ZN7S3385C23v39Ev();
extern void _ZN7S3385C23v40Ev();
extern void _ZN7S3385C23v41Ev();
extern void _ZN7S3385C23v42Ev();
extern void _ZN7S3385C23v43Ev();
extern void _ZN7S3385C23v44Ev();
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C53v22Ev();
extern void _ZN7S3385C53v23Ev();
extern void _ZN7S3385C53v24Ev();
extern void _ZN7S3385C43v32Ev();
extern void _ZN7S3385C43v33Ev();
extern void _ZN7S3385C43v34Ev();
extern void _ZN7S3385C43v35Ev();
extern void _ZN7S3385C43v36Ev();
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C93v29Ev();
extern void _ZN7S3385C93v30Ev();
extern void _ZN7S3385C93v31Ev();
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C73v28Ev();
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C93v29Ev();
extern void _ZN7S3385C93v30Ev();
extern void _ZN7S3385C93v31Ev();
static  VTBL_ENTRY vtc_S3385C2[] = {
  ABISELECT(120,64),
  ABISELECT(88,48),
  ABISELECT(40,20),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C2[0]),
  (VTBL_ENTRY)&_ZN7S3385C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3385C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3385C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v37Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v38Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v39Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v40Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v41Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v42Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v43Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v44Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S3385C2[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v22Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v23Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v24Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v32Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v33Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v34Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v35Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v36Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3385C2[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v29Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v30Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v31Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S3385C2[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C73v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S3385C2[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v29Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v30Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v31Ev,
};
extern VTBL_ENTRY _ZTV7S3385C2[];
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C53v22Ev();
extern void _ZN7S3385C53v23Ev();
extern void _ZN7S3385C53v24Ev();
extern void _ZN7S3385C43v32Ev();
extern void _ZN7S3385C43v33Ev();
extern void _ZN7S3385C43v34Ev();
extern void _ZN7S3385C43v35Ev();
extern void _ZN7S3385C43v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C4__7S3385C2[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C4[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v22Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v23Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v24Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v32Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v33Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v34Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v35Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v36Ev,
};
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C53v22Ev();
extern void _ZN7S3385C53v23Ev();
extern void _ZN7S3385C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C57S3385C4__7S3385C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C5[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v22Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v23Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v24Ev,
};
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C73v28Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C7__7S3385C4__7S3385C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S3385C4[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C73v28Ev,
};
static  VTT_ENTRY vtt_S3385C2[] = {
  {&(_ZTV7S3385C2[6]),  6,96},
  {&(_ZTV7S3385C2[49]),  49,96},
  {&(_ZTV7S3385C2[49]),  49,96},
  {&(_ZTV7S3385C2[78]),  78,96},
  {&(_ZTV7S3385C2[66]),  66,96},
  {&(_ZTV7S3385C2[90]),  90,96},
  {&(_tg__ZTV7S3385C4__7S3385C2[11]),  11,26},
  {&(_tg__ZTV7S3385C57S3385C4__7S3385C2[10]),  10,20},
  {&(_tg__ZTV7S3385C57S3385C4__7S3385C2[10]),  10,20},
  {&(_tg__ZTV7S3385C4__7S3385C2[11]),  11,26},
  {&(_tg__ZTV7S3385C7__7S3385C4__7S3385C2[6]),  6,10},
};
extern VTBL_ENTRY _ZTI7S3385C2[];
extern  VTBL_ENTRY _ZTV7S3385C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3385C2[];
Class_Descriptor cd_S3385C2 = {  "S3385C2", // class name
  bases_S3385C2, 10,
  &(vtc_S3385C2[0]), // expected_vtbl_contents
  &(vtt_S3385C2[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI7S3385C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3385C2),96, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3385C2),11, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3385C11_nt  : S3385C3 {
  long double s3385c11f0;
  long s3385c11f1;
  virtual void  v45(); // _ZN11S3385C11_nt3v45Ev
  virtual void  v46(); // _ZN11S3385C11_nt3v46Ev
  virtual void  v47(); // _ZN11S3385C11_nt3v47Ev
  virtual void  v48(); // _ZN11S3385C11_nt3v48Ev
  ~S3385C11_nt(); // tgen
  S3385C11_nt(); // tgen
};
//SIG(-1 S3385C11_nt) C1{ BC2{ v5 v6 v7 v8 v9 v10 v11 v12 FD Fc} v1 v2 v3 v4 FD Fl}


void  S3385C11_nt ::v45(){vfunc_called(this, "_ZN11S3385C11_nt3v45Ev");}
void  S3385C11_nt ::v46(){vfunc_called(this, "_ZN11S3385C11_nt3v46Ev");}
void  S3385C11_nt ::v47(){vfunc_called(this, "_ZN11S3385C11_nt3v47Ev");}
void  S3385C11_nt ::v48(){vfunc_called(this, "_ZN11S3385C11_nt3v48Ev");}
S3385C11_nt ::~S3385C11_nt(){ note_dtor("S3385C11_nt", this);} // tgen
S3385C11_nt ::S3385C11_nt(){ note_ctor("S3385C11_nt", this);} // tgen

//skip512 S3385C11_nt

#else // __cplusplus

extern void _ZN11S3385C11_ntC1Ev();
extern void _ZN11S3385C11_ntD1Ev();
Name_Map name_map_S3385C11_nt[] = {
  NSPAIR(_ZN11S3385C11_ntC1Ev),
  NSPAIR(_ZN11S3385C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3385C3;
extern VTBL_ENTRY _ZTI7S3385C3[];
extern  VTBL_ENTRY _ZTV7S3385C3[];
static Base_Class bases_S3385C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3385C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S3385C11_nt[];
extern void _ZN7S3385C32v7Ev();
extern void _ZN7S3385C32v8Ev();
extern void _ZN7S3385C32v9Ev();
extern void _ZN7S3385C33v10Ev();
extern void _ZN7S3385C33v11Ev();
extern void _ZN7S3385C33v12Ev();
extern void _ZN7S3385C33v13Ev();
extern void _ZN7S3385C33v14Ev();
extern void _ZN11S3385C11_nt3v45Ev();
extern void _ZN11S3385C11_nt3v46Ev();
extern void _ZN11S3385C11_nt3v47Ev();
extern void _ZN11S3385C11_nt3v48Ev();
static  VTBL_ENTRY vtc_S3385C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S3385C11_nt[0]),
  (VTBL_ENTRY)&_ZN7S3385C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v14Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v48Ev,
};
extern VTBL_ENTRY _ZTI11S3385C11_nt[];
VTBL_ENTRY *P__ZTI11S3385C11_nt = _ZTI11S3385C11_nt; 
extern  VTBL_ENTRY _ZTV11S3385C11_nt[];
Class_Descriptor cd_S3385C11_nt = {  "S3385C11_nt", // class name
  bases_S3385C11_nt, 1,
  &(vtc_S3385C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI11S3385C11_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV11S3385C11_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3385C10  : S3385C6 , S3385C3 , virtual S3385C11_nt {
  virtual  ~S3385C10(); // _ZN8S3385C10D2Ev
  virtual void  v49(); // _ZN8S3385C103v49Ev
  virtual void  v50(); // _ZN8S3385C103v50Ev
  virtual void  v51(); // _ZN8S3385C103v51Ev
  virtual void  v52(); // _ZN8S3385C103v52Ev
  virtual void  v53(); // _ZN8S3385C103v53Ev
  S3385C10(); // tgen
};
//SIG(-1 S3385C10) C1{ BC2{ v6 v7 v8 v9 v10 v11 v12} BC3{ v13 v14 v15 v16 v17 v18 v19 v20 FD Fc} VBC4{ BC3 v21 v22 v23 v24 FD Fl} vd v1 v2 v3 v4 v5}


 S3385C10 ::~S3385C10(){ note_dtor("S3385C10", this);}
void  S3385C10 ::v49(){vfunc_called(this, "_ZN8S3385C103v49Ev");}
void  S3385C10 ::v50(){vfunc_called(this, "_ZN8S3385C103v50Ev");}
void  S3385C10 ::v51(){vfunc_called(this, "_ZN8S3385C103v51Ev");}
void  S3385C10 ::v52(){vfunc_called(this, "_ZN8S3385C103v52Ev");}
void  S3385C10 ::v53(){vfunc_called(this, "_ZN8S3385C103v53Ev");}
S3385C10 ::S3385C10(){ note_ctor("S3385C10", this);} // tgen

static void Test_S3385C10()
{
  extern Class_Descriptor cd_S3385C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,16)];
    init_test(&cd_S3385C10, buf);
    S3385C10 *dp, &lv = *(dp=new (buf) S3385C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,60), "sizeof(S3385C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3385C10)");
    check_base_class_offset(lv, (S3385C6*), 0, "S3385C10");
    /*is_ambiguous_... S3385C10::S3385C3 */ AMB_check_base_class_offset(lv, (S3385C3*), ABISELECT(16,4), "S3385C10");
    check_base_class_offset(lv, (S3385C3*)(S3385C11_nt*), ABISELECT(64,24), "S3385C10");
    check_base_class_offset(lv, (S3385C11_nt*), ABISELECT(64,24), "S3385C10");
    test_class_info(&lv, &cd_S3385C10);
    dp->~S3385C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3385C10(Test_S3385C10, "S3385C10", ABISELECT(144,60));

#else // __cplusplus

extern void _ZN8S3385C10C1Ev();
extern void _ZN8S3385C10D2Ev();
Name_Map name_map_S3385C10[] = {
  NSPAIR(_ZN8S3385C10C1Ev),
  NSPAIR(_ZN8S3385C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3385C6;
extern VTBL_ENTRY _ZTI7S3385C6[];
extern  VTBL_ENTRY _ZTV7S3385C6[];
extern Class_Descriptor cd_S3385C3;
extern VTBL_ENTRY _ZTI7S3385C3[];
extern  VTBL_ENTRY _ZTV7S3385C3[];
extern Class_Descriptor cd_S3385C3;
extern VTBL_ENTRY _ZTI7S3385C3[];
extern  VTBL_ENTRY _ZTV7S3385C3[];
extern Class_Descriptor cd_S3385C11_nt;
extern VTBL_ENTRY _ZTI11S3385C11_nt[];
extern  VTBL_ENTRY _ZTV11S3385C11_nt[];
static Base_Class bases_S3385C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3385C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3385C3,    ABISELECT(16,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3385C3,    ABISELECT(64,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3385C11_nt,    ABISELECT(64,24), //bcp->offset
    27, //bcp->virtual_function_table_offset
    14, //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 _ZTI8S3385C10[];
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN8S3385C10D1Ev();
extern void _ZN8S3385C10D0Ev();
extern void _ZN8S3385C103v49Ev();
extern void _ZN8S3385C103v50Ev();
extern void _ZN8S3385C103v51Ev();
extern void _ZN8S3385C103v52Ev();
extern void _ZN8S3385C103v53Ev();
extern void _ZN7S3385C32v7Ev();
extern void _ZN7S3385C32v8Ev();
extern void _ZN7S3385C32v9Ev();
extern void _ZN7S3385C33v10Ev();
extern void _ZN7S3385C33v11Ev();
extern void _ZN7S3385C33v12Ev();
extern void _ZN7S3385C33v13Ev();
extern void _ZN7S3385C33v14Ev();
extern void _ZN7S3385C32v7Ev();
extern void _ZN7S3385C32v8Ev();
extern void _ZN7S3385C32v9Ev();
extern void _ZN7S3385C33v10Ev();
extern void _ZN7S3385C33v11Ev();
extern void _ZN7S3385C33v12Ev();
extern void _ZN7S3385C33v13Ev();
extern void _ZN7S3385C33v14Ev();
extern void _ZN11S3385C11_nt3v45Ev();
extern void _ZN11S3385C11_nt3v46Ev();
extern void _ZN11S3385C11_nt3v47Ev();
extern void _ZN11S3385C11_nt3v48Ev();
static  VTBL_ENTRY vtc_S3385C10[] = {
  ABISELECT(64,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3385C10[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN8S3385C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3385C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v49Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v50Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v51Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v52Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v53Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S3385C10[0]),
  (VTBL_ENTRY)&_ZN7S3385C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S3385C10[0]),
  (VTBL_ENTRY)&_ZN7S3385C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v14Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v48Ev,
};
extern VTBL_ENTRY _ZTV8S3385C10[];
static  VTT_ENTRY vtt_S3385C10[] = {
  {&(_ZTV8S3385C10[3]),  3,53},
  {&(_ZTV8S3385C10[41]),  41,53},
};
extern VTBL_ENTRY _ZTI8S3385C10[];
extern  VTBL_ENTRY _ZTV8S3385C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3385C10[];
Class_Descriptor cd_S3385C10 = {  "S3385C10", // class name
  bases_S3385C10, 4,
  &(vtc_S3385C10[0]), // expected_vtbl_contents
  &(vtt_S3385C10[0]), // expected_vtt_contents
  ABISELECT(144,60), // object size
  NSPAIRA(_ZTI8S3385C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3385C10),53, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3385C10),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3385C1  : S3385C2 , virtual S3385C10 , S3385C7 , S3385C6 {
  virtual void  v1(); // _ZN7S3385C12v1Ev
  virtual void  v2(); // _ZN7S3385C12v2Ev
  virtual void  v3(); // _ZN7S3385C12v3Ev
  virtual void  v4(); // _ZN7S3385C12v4Ev
  virtual void  v5(); // _ZN7S3385C12v5Ev
  virtual void  v6(); // _ZN7S3385C12v6Ev
  ~S3385C1(); // tgen
  S3385C1(); // tgen
};
//SIG(1 S3385C1) C1{ BC2{ BC3{ v7 v8 v9 v10 v11 v12 v13 v14 FD Fc} VBC4{ BC5{ VBC6{ v15 v16 v17 v18 v19 v20 v21} v22 v23 v24} VBC7{ BC8{ v25 v26 v27 Fc Fp Fs:11} v28} BC9{ BC8 v29 v30 v31} v32 v33 v34 v35 v36 Fi Fc[3]} VBC9 vd v37 v38 v39 v40 v41 v42 v43 v44} VBC10{ BC6 BC3 VBC11{ BC3 v45 v46 v47 v48 FD Fl} vd v49 v50 v51 v52 v53} BC7 BC6 v1 v2 v3 v4 v5 v6}


void  S3385C1 ::v1(){vfunc_called(this, "_ZN7S3385C12v1Ev");}
void  S3385C1 ::v2(){vfunc_called(this, "_ZN7S3385C12v2Ev");}
void  S3385C1 ::v3(){vfunc_called(this, "_ZN7S3385C12v3Ev");}
void  S3385C1 ::v4(){vfunc_called(this, "_ZN7S3385C12v4Ev");}
void  S3385C1 ::v5(){vfunc_called(this, "_ZN7S3385C12v5Ev");}
void  S3385C1 ::v6(){vfunc_called(this, "_ZN7S3385C12v6Ev");}
S3385C1 ::~S3385C1(){ note_dtor("S3385C1", this);} // tgen
S3385C1 ::S3385C1(){ note_ctor("S3385C1", this);} // tgen

static void Test_S3385C1()
{
  extern Class_Descriptor cd_S3385C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,41)];
    init_test(&cd_S3385C1, buf);
    S3385C1 *dp, &lv = *(dp=new (buf) S3385C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,160), "sizeof(S3385C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3385C1)");
    check_base_class_offset(lv, (S3385C3*)(S3385C2*), 0, "S3385C1");
    check_base_class_offset(lv, (S3385C6*)(S3385C5*)(S3385C4*), ABISELECT(80,40), "S3385C1");
    check_base_class_offset(lv, (S3385C5*)(S3385C4*), ABISELECT(80,40), "S3385C1");
    /*is_ambiguous_... S3385C1::S3385C7 */ AMB_check_base_class_offset(lv, (S3385C8*)(S3385C7*), ABISELECT(128,68), "S3385C1");
    check_base_class_offset(lv, (S3385C7*)(S3385C4*), ABISELECT(128,68), "S3385C1");
    check_base_class_offset(lv, (S3385C8*)(S3385C9*)(S3385C4*), ABISELECT(88,44), "S3385C1");
    check_base_class_offset(lv, (S3385C9*)(S3385C4*), ABISELECT(88,44), "S3385C1");
    check_base_class_offset(lv, (S3385C4*)(S3385C2*), ABISELECT(80,40), "S3385C1");
    /*is_ambiguous_... S3385C1::S3385C9 */ AMB_check_base_class_offset(lv, (S3385C8*)(S3385C9*), ABISELECT(160,84), "S3385C1");
    /*is_ambiguous_... S3385C2::S3385C9 */ AMB_check_base_class_offset(lv, (S3385C9*)(S3385C2*), ABISELECT(160,84), "S3385C1");
    check_base_class_offset(lv, (S3385C2*), 0, "S3385C1");
    check_base_class_offset(lv, (S3385C6*)(S3385C10*), ABISELECT(192,100), "S3385C1");
    /*is_ambiguous_... S3385C10::S3385C3 */ AMB_check_base_class_offset(lv, (S3385C3*)(S3385C10*), ABISELECT(208,104), "S3385C1");
    check_base_class_offset(lv, (S3385C3*)(S3385C11_nt*), ABISELECT(256,124), "S3385C1");
    check_base_class_offset(lv, (S3385C11_nt*)(S3385C10*), ABISELECT(256,124), "S3385C1");
    check_base_class_offset(lv, (S3385C10*), ABISELECT(192,100), "S3385C1");
    /*is_ambiguous_... S3385C1::S3385C7 */ AMB_check_base_class_offset(lv, (S3385C8*)(S3385C7*), ABISELECT(40,20), "S3385C1");
    /*is_ambiguous_... S3385C1::S3385C7 */ AMB_check_base_class_offset(lv, (S3385C7*), ABISELECT(40,20), "S3385C1");
    /*is_ambiguous_... S3385C1::S3385C6 */ AMB_check_base_class_offset(lv, (S3385C6*), ABISELECT(72,36), "S3385C1");
    test_class_info(&lv, &cd_S3385C1);
    dp->~S3385C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3385C1(Test_S3385C1, "S3385C1", ABISELECT(336,160));

#else // __cplusplus

extern void _ZN7S3385C1C1Ev();
extern void _ZN7S3385C1D1Ev();
Name_Map name_map_S3385C1[] = {
  NSPAIR(_ZN7S3385C1C1Ev),
  NSPAIR(_ZN7S3385C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3385C3;
extern VTBL_ENTRY _ZTI7S3385C3[];
extern  VTBL_ENTRY _ZTV7S3385C3[];
extern Class_Descriptor cd_S3385C6;
extern VTBL_ENTRY _ZTI7S3385C6[];
extern  VTBL_ENTRY _ZTV7S3385C6[];
extern Class_Descriptor cd_S3385C5;
extern VTBL_ENTRY _ZTI7S3385C5[];
extern  VTBL_ENTRY _ZTV7S3385C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3385C5[];
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
extern Class_Descriptor cd_S3385C7;
extern VTBL_ENTRY _ZTI7S3385C7[];
extern  VTBL_ENTRY _ZTV7S3385C7[];
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
extern Class_Descriptor cd_S3385C9;
extern VTBL_ENTRY _ZTI7S3385C9[];
extern  VTBL_ENTRY _ZTV7S3385C9[];
extern Class_Descriptor cd_S3385C4;
extern VTBL_ENTRY _ZTI7S3385C4[];
extern  VTBL_ENTRY _ZTV7S3385C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3385C4[];
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
extern Class_Descriptor cd_S3385C9;
extern VTBL_ENTRY _ZTI7S3385C9[];
extern  VTBL_ENTRY _ZTV7S3385C9[];
extern Class_Descriptor cd_S3385C2;
extern VTBL_ENTRY _ZTI7S3385C2[];
extern  VTBL_ENTRY _ZTV7S3385C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3385C2[];
extern Class_Descriptor cd_S3385C6;
extern VTBL_ENTRY _ZTI7S3385C6[];
extern  VTBL_ENTRY _ZTV7S3385C6[];
extern Class_Descriptor cd_S3385C3;
extern VTBL_ENTRY _ZTI7S3385C3[];
extern  VTBL_ENTRY _ZTV7S3385C3[];
extern Class_Descriptor cd_S3385C3;
extern VTBL_ENTRY _ZTI7S3385C3[];
extern  VTBL_ENTRY _ZTV7S3385C3[];
extern Class_Descriptor cd_S3385C11_nt;
extern VTBL_ENTRY _ZTI11S3385C11_nt[];
extern  VTBL_ENTRY _ZTV11S3385C11_nt[];
extern Class_Descriptor cd_S3385C10;
extern VTBL_ENTRY _ZTI8S3385C10[];
extern  VTBL_ENTRY _ZTV8S3385C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3385C10[];
extern Class_Descriptor cd_S3385C8;
extern VTBL_ENTRY _ZTI7S3385C8[];
extern  VTBL_ENTRY _ZTV7S3385C8[];
extern Class_Descriptor cd_S3385C7;
extern VTBL_ENTRY _ZTI7S3385C7[];
extern  VTBL_ENTRY _ZTV7S3385C7[];
extern Class_Descriptor cd_S3385C6;
extern VTBL_ENTRY _ZTI7S3385C6[];
extern  VTBL_ENTRY _ZTV7S3385C6[];
static Base_Class bases_S3385C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3385C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S3385C6,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3385C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3385C8,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3385C7,    ABISELECT(128,68), //bcp->offset
    95, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3385C8,    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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3385C9,    ABISELECT(88,44), //bcp->offset
    87, //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3385C4,    ABISELECT(80,40), //bcp->offset
    47, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3385C8,    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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3385C9,    ABISELECT(160,84), //bcp->offset
    105, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3385C2,    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_S3385C6,    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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3385C3,    ABISELECT(208,104), //bcp->offset
    157, //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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3385C3,    ABISELECT(256,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
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3385C11_nt,    ABISELECT(256,124), //bcp->offset
    167, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3385C10,    ABISELECT(192,100), //bcp->offset
    119, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3385C8,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3385C7,    ABISELECT(40,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3385C6,    ABISELECT(72,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3385C1[];
extern void _ZN7S3385C32v7Ev();
extern void _ZN7S3385C32v8Ev();
extern void _ZN7S3385C32v9Ev();
extern void _ZN7S3385C33v10Ev();
extern void _ZN7S3385C33v11Ev();
extern void _ZN7S3385C33v12Ev();
extern void _ZN7S3385C33v13Ev();
extern void _ZN7S3385C33v14Ev();
extern void _ZN7S3385C1D1Ev();
extern void _ZN7S3385C1D0Ev();
extern void _ZN7S3385C23v37Ev();
extern void _ZN7S3385C23v38Ev();
extern void _ZN7S3385C23v39Ev();
extern void _ZN7S3385C23v40Ev();
extern void _ZN7S3385C23v41Ev();
extern void _ZN7S3385C23v42Ev();
extern void _ZN7S3385C23v43Ev();
extern void _ZN7S3385C23v44Ev();
extern void _ZN7S3385C12v1Ev();
extern void _ZN7S3385C12v2Ev();
extern void _ZN7S3385C12v3Ev();
extern void _ZN7S3385C12v4Ev();
extern void _ZN7S3385C12v5Ev();
extern void _ZN7S3385C12v6Ev();
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C73v28Ev();
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C53v22Ev();
extern void _ZN7S3385C53v23Ev();
extern void _ZN7S3385C53v24Ev();
extern void _ZN7S3385C43v32Ev();
extern void _ZN7S3385C43v33Ev();
extern void _ZN7S3385C43v34Ev();
extern void _ZN7S3385C43v35Ev();
extern void _ZN7S3385C43v36Ev();
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C93v29Ev();
extern void _ZN7S3385C93v30Ev();
extern void _ZN7S3385C93v31Ev();
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C73v28Ev();
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C93v29Ev();
extern void _ZN7S3385C93v30Ev();
extern void _ZN7S3385C93v31Ev();
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void ABISELECT(_ZTv0_n88_N7S3385C1D1Ev,_ZTv0_n44_N7S3385C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S3385C1D1Ev,_ZThn100_N7S3385C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S3385C1D0Ev,_ZTv0_n44_N7S3385C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S3385C1D0Ev,_ZThn100_N7S3385C1D0Ev)() __attribute__((weak));
extern void _ZN8S3385C103v49Ev();
extern void _ZN8S3385C103v50Ev();
extern void _ZN8S3385C103v51Ev();
extern void _ZN8S3385C103v52Ev();
extern void _ZN8S3385C103v53Ev();
extern void _ZN7S3385C32v7Ev();
extern void _ZN7S3385C32v8Ev();
extern void _ZN7S3385C32v9Ev();
extern void _ZN7S3385C33v10Ev();
extern void _ZN7S3385C33v11Ev();
extern void _ZN7S3385C33v12Ev();
extern void _ZN7S3385C33v13Ev();
extern void _ZN7S3385C33v14Ev();
extern void _ZN7S3385C32v7Ev();
extern void _ZN7S3385C32v8Ev();
extern void _ZN7S3385C32v9Ev();
extern void _ZN7S3385C33v10Ev();
extern void _ZN7S3385C33v11Ev();
extern void _ZN7S3385C33v12Ev();
extern void _ZN7S3385C33v13Ev();
extern void _ZN7S3385C33v14Ev();
extern void _ZN11S3385C11_nt3v45Ev();
extern void _ZN11S3385C11_nt3v46Ev();
extern void _ZN11S3385C11_nt3v47Ev();
extern void _ZN11S3385C11_nt3v48Ev();
static  VTBL_ENTRY vtc_S3385C1[] = {
  ABISELECT(256,124),
  ABISELECT(192,100),
  ABISELECT(160,84),
  ABISELECT(128,68),
  ABISELECT(80,40),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C1[0]),
  (VTBL_ENTRY)&_ZN7S3385C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3385C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3385C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v37Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v38Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v39Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v40Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v41Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v42Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v43Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v44Ev,
  (VTBL_ENTRY)&_ZN7S3385C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3385C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3385C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3385C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3385C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3385C12v6Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S3385C1[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C73v28Ev,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S3385C1[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S3385C1[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v22Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v23Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v24Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v32Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v33Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v34Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v35Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v36Ev,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S3385C1[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v29Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v30Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v31Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S3385C1[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C73v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S3385C1[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v29Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v30Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v31Ev,
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-100),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,24),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S3385C1[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3385C1D1Ev,_ZTv0_n44_N7S3385C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3385C1D0Ev,_ZTv0_n44_N7S3385C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3385C103v49Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v50Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v51Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v52Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v53Ev,
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI7S3385C1[0]),
  (VTBL_ENTRY)&_ZN7S3385C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-124),
  (VTBL_ENTRY)&(_ZTI7S3385C1[0]),
  (VTBL_ENTRY)&_ZN7S3385C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v14Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v48Ev,
};
extern VTBL_ENTRY _ZTV7S3385C1[];
extern void _ZN7S3385C32v7Ev();
extern void _ZN7S3385C32v8Ev();
extern void _ZN7S3385C32v9Ev();
extern void _ZN7S3385C33v10Ev();
extern void _ZN7S3385C33v11Ev();
extern void _ZN7S3385C33v12Ev();
extern void _ZN7S3385C33v13Ev();
extern void _ZN7S3385C33v14Ev();
extern void _ZN7S3385C2D1Ev();
extern void _ZN7S3385C2D0Ev();
extern void _ZN7S3385C23v37Ev();
extern void _ZN7S3385C23v38Ev();
extern void _ZN7S3385C23v39Ev();
extern void _ZN7S3385C23v40Ev();
extern void _ZN7S3385C23v41Ev();
extern void _ZN7S3385C23v42Ev();
extern void _ZN7S3385C23v43Ev();
extern void _ZN7S3385C23v44Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C2__7S3385C1[] = {
  ABISELECT(160,84),
  ABISELECT(128,68),
  ABISELECT(80,40),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C2[0]),
  (VTBL_ENTRY)&_ZN7S3385C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3385C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3385C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v37Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v38Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v39Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v40Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v41Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v42Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v43Ev,
  (VTBL_ENTRY)&_ZN7S3385C23v44Ev,
};
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C53v22Ev();
extern void _ZN7S3385C53v23Ev();
extern void _ZN7S3385C53v24Ev();
extern void _ZN7S3385C43v32Ev();
extern void _ZN7S3385C43v33Ev();
extern void _ZN7S3385C43v34Ev();
extern void _ZN7S3385C43v35Ev();
extern void _ZN7S3385C43v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C4__7S3385C2__7S3385C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S3385C2[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v22Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v23Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v24Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v32Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v33Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v34Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v35Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v36Ev,
};
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C73v28Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C7__7S3385C2__7S3385C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S3385C2[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C73v28Ev,
};
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C93v29Ev();
extern void _ZN7S3385C93v30Ev();
extern void _ZN7S3385C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C97S3385C4__7S3385C2__7S3385C1[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S3385C2[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v29Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v30Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v31Ev,
};
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C93v29Ev();
extern void _ZN7S3385C93v30Ev();
extern void _ZN7S3385C93v31Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C9__A1__7S3385C2__7S3385C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S3385C2[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v29Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v30Ev,
  (VTBL_ENTRY)&_ZN7S3385C93v31Ev,
};
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C53v22Ev();
extern void _ZN7S3385C53v23Ev();
extern void _ZN7S3385C53v24Ev();
extern void _ZN7S3385C43v32Ev();
extern void _ZN7S3385C43v33Ev();
extern void _ZN7S3385C43v34Ev();
extern void _ZN7S3385C43v35Ev();
extern void _ZN7S3385C43v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C4__7S3385C1[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C4[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v22Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v23Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v24Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v32Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v33Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v34Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v35Ev,
  (VTBL_ENTRY)&_ZN7S3385C43v36Ev,
};
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN7S3385C53v22Ev();
extern void _ZN7S3385C53v23Ev();
extern void _ZN7S3385C53v24Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C57S3385C4__7S3385C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3385C5[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v22Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v23Ev,
  (VTBL_ENTRY)&_ZN7S3385C53v24Ev,
};
extern void _ZN7S3385C83v25Ev();
extern void _ZN7S3385C83v26Ev();
extern void _ZN7S3385C83v27Ev();
extern void _ZN7S3385C73v28Ev();
static  VTBL_ENTRY _tg__ZTV7S3385C7__7S3385C4__7S3385C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S3385C4[0]),
  (VTBL_ENTRY)&_ZN7S3385C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3385C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3385C73v28Ev,
};
extern void _ZN7S3385C63v15Ev();
extern void _ZN7S3385C63v16Ev();
extern void _ZN7S3385C63v17Ev();
extern void _ZN7S3385C63v18Ev();
extern void _ZN7S3385C63v19Ev();
extern void _ZN7S3385C63v20Ev();
extern void _ZN7S3385C63v21Ev();
extern void _ZN8S3385C10D1Ev();
extern void _ZN8S3385C10D0Ev();
extern void _ZN8S3385C103v49Ev();
extern void _ZN8S3385C103v50Ev();
extern void _ZN8S3385C103v51Ev();
extern void _ZN8S3385C103v52Ev();
extern void _ZN8S3385C103v53Ev();
static  VTBL_ENTRY _tg__ZTV8S3385C10__7S3385C1[] = {
  ABISELECT(64,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3385C10[0]),
  (VTBL_ENTRY)&_ZN7S3385C63v15Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3385C63v21Ev,
  (VTBL_ENTRY)&_ZN8S3385C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3385C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v49Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v50Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v51Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v52Ev,
  (VTBL_ENTRY)&_ZN8S3385C103v53Ev,
};
extern void _ZN7S3385C32v7Ev();
extern void _ZN7S3385C32v8Ev();
extern void _ZN7S3385C32v9Ev();
extern void _ZN7S3385C33v10Ev();
extern void _ZN7S3385C33v11Ev();
extern void _ZN7S3385C33v12Ev();
extern void _ZN7S3385C33v13Ev();
extern void _ZN7S3385C33v14Ev();
extern void _ZN11S3385C11_nt3v45Ev();
extern void _ZN11S3385C11_nt3v46Ev();
extern void _ZN11S3385C11_nt3v47Ev();
extern void _ZN11S3385C11_nt3v48Ev();
static  VTBL_ENTRY _tg__ZTV11S3385C11_nt__8S3385C10__7S3385C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S3385C10[0]),
  (VTBL_ENTRY)&_ZN7S3385C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3385C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3385C33v14Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S3385C11_nt3v48Ev,
};
static  VTT_ENTRY vtt_S3385C1[] = {
  {&(_ZTV7S3385C1[8]),  8,193},
  {&(_tg__ZTV7S3385C2__7S3385C1[6]),  6,24},
  {&(_tg__ZTV7S3385C4__7S3385C2__7S3385C1[25]),  25,40},
  {&(_tg__ZTV7S3385C4__7S3385C2__7S3385C1[25]),  25,40},
  {&(_tg__ZTV7S3385C7__7S3385C2__7S3385C1[6]),  6,10},
  {&(_tg__ZTV7S3385C97S3385C4__7S3385C2__7S3385C1[2]),  2,8},
  {&(_tg__ZTV7S3385C9__A1__7S3385C2__7S3385C1[8]),  8,14},
  {&(_ZTV7S3385C1[72]),  72,193},
  {&(_ZTV7S3385C1[72]),  72,193},
  {&(_ZTV7S3385C1[101]),  101,193},
  {&(_ZTV7S3385C1[89]),  89,193},
  {&(_ZTV7S3385C1[113]),  113,193},
  {&(_ZTV7S3385C1[143]),  143,193},
  {&(_ZTV7S3385C1[159]),  159,193},
  {&(_ZTV7S3385C1[181]),  181,193},
  {&(_tg__ZTV7S3385C4__7S3385C1[11]),  11,26},
  {&(_tg__ZTV7S3385C57S3385C4__7S3385C1[10]),  10,20},
  {&(_tg__ZTV7S3385C57S3385C4__7S3385C1[10]),  10,20},
  {&(_tg__ZTV7S3385C4__7S3385C1[11]),  11,26},
  {&(_tg__ZTV7S3385C7__7S3385C4__7S3385C1[6]),  6,10},
  {&(_tg__ZTV8S3385C10__7S3385C1[3]),  3,17},
  {&(_tg__ZTV11S3385C11_nt__8S3385C10__7S3385C1[14]),  14,26},
};
extern VTBL_ENTRY _ZTI7S3385C1[];
extern  VTBL_ENTRY _ZTV7S3385C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3385C1[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3385C1D0Ev,_ZTv0_n44_N7S3385C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3385C1D0Ev,_ZThn100_N7S3385C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3385C1D1Ev,_ZTv0_n44_N7S3385C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3385C1D1Ev,_ZThn100_N7S3385C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3385C1 = {  "S3385C1", // class name
  bases_S3385C1, 19,
  &(vtc_S3385C1[0]), // expected_vtbl_contents
  &(vtt_S3385C1[0]), // expected_vtt_contents
  ABISELECT(336,160), // object size
  NSPAIRA(_ZTI7S3385C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3385C1),193, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3385C1),22, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7689C3  {
  virtual  ~S7689C3(); // _ZN7S7689C3D1Ev
  virtual void  v8(); // _ZN7S7689C32v8Ev
  S7689C3(); // tgen
};
//SIG(-1 S7689C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S7689C3C1Ev();
extern void _ZN7S7689C3D1Ev();
Name_Map name_map_S7689C3[] = {
  NSPAIR(_ZN7S7689C3C1Ev),
  NSPAIR(_ZN7S7689C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7689C3[];
extern void _ZN7S7689C3D1Ev();
extern void _ZN7S7689C3D0Ev();
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY vtc_S7689C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C3[0]),
  (VTBL_ENTRY)&_ZN7S7689C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
Class_Descriptor cd_S7689C3 = {  "S7689C3", // class name
  0,0,//no base classes
  &(vtc_S7689C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7689C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7689C3),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  S7689C5  {
  long s7689c5f0;
  virtual void  v9(); // _ZN7S7689C52v9Ev
  virtual void  v10(); // _ZN7S7689C53v10Ev
  virtual void  v11(); // _ZN7S7689C53v11Ev
  virtual void  v12(); // _ZN7S7689C53v12Ev
  virtual void  v13(); // _ZN7S7689C53v13Ev
  ~S7689C5(); // tgen
  S7689C5(); // tgen
};
//SIG(-1 S7689C5) C1{ v1 v2 v3 v4 v5 Fl}


void  S7689C5 ::v9(){vfunc_called(this, "_ZN7S7689C52v9Ev");}
void  S7689C5 ::v10(){vfunc_called(this, "_ZN7S7689C53v10Ev");}
void  S7689C5 ::v11(){vfunc_called(this, "_ZN7S7689C53v11Ev");}
void  S7689C5 ::v12(){vfunc_called(this, "_ZN7S7689C53v12Ev");}
void  S7689C5 ::v13(){vfunc_called(this, "_ZN7S7689C53v13Ev");}
S7689C5 ::~S7689C5(){ note_dtor("S7689C5", this);} // tgen
S7689C5 ::S7689C5(){ note_ctor("S7689C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7689C5C1Ev();
extern void _ZN7S7689C5D1Ev();
Name_Map name_map_S7689C5[] = {
  NSPAIR(_ZN7S7689C5C1Ev),
  NSPAIR(_ZN7S7689C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7689C5[];
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY vtc_S7689C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C5[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
Class_Descriptor cd_S7689C5 = {  "S7689C5", // class name
  0,0,//no base classes
  &(vtc_S7689C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7689C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7689C5),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  S7689C6  {
  virtual  ~S7689C6(); // _ZN7S7689C6D1Ev
  virtual void  v14(); // _ZN7S7689C63v14Ev
  S7689C6(); // tgen
};
//SIG(-1 S7689C6) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S7689C6C1Ev();
extern void _ZN7S7689C6D1Ev();
Name_Map name_map_S7689C6[] = {
  NSPAIR(_ZN7S7689C6C1Ev),
  NSPAIR(_ZN7S7689C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7689C6[];
extern void _ZN7S7689C6D1Ev();
extern void _ZN7S7689C6D0Ev();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY vtc_S7689C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C6[0]),
  (VTBL_ENTRY)&_ZN7S7689C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
Class_Descriptor cd_S7689C6 = {  "S7689C6", // class name
  0,0,//no base classes
  &(vtc_S7689C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7689C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7689C6),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  S7689C4  : S7689C5 , S7689C6 , S7689C3 {
  virtual  ~S7689C4(); // _ZN7S7689C4D1Ev
  virtual void  v15(); // _ZN7S7689C43v15Ev
  S7689C4(); // tgen
};
//SIG(-1 S7689C4) C1{ BC2{ v2 v3 v4 v5 v6 Fl} BC3{ vd v7} BC4{ vd v8} vd v1}


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

static void Test_S7689C4()
{
  extern Class_Descriptor cd_S7689C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7689C4, buf);
    S7689C4 *dp, &lv = *(dp=new (buf) S7689C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7689C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7689C4)");
    check_base_class_offset(lv, (S7689C5*), 0, "S7689C4");
    check_base_class_offset(lv, (S7689C6*), ABISELECT(16,8), "S7689C4");
    check_base_class_offset(lv, (S7689C3*), ABISELECT(24,12), "S7689C4");
    test_class_info(&lv, &cd_S7689C4);
    dp->~S7689C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7689C4(Test_S7689C4, "S7689C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7689C4C1Ev();
extern void _ZN7S7689C4D1Ev();
Name_Map name_map_S7689C4[] = {
  NSPAIR(_ZN7S7689C4C1Ev),
  NSPAIR(_ZN7S7689C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C6;
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
static Base_Class bases_S7689C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7689C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7689C6,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7689C3,    ABISELECT(24,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7689C4[];
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void _ZN7S7689C4D1Ev();
extern void _ZN7S7689C4D0Ev();
extern void _ZN7S7689C43v15Ev();
extern void ABISELECT(_ZThn16_N7S7689C4D1Ev,_ZThn8_N7S7689C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S7689C4D0Ev,_ZThn8_N7S7689C4D0Ev)();
extern void _ZN7S7689C63v14Ev();
extern void ABISELECT(_ZThn24_N7S7689C4D1Ev,_ZThn12_N7S7689C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7689C4D0Ev,_ZThn12_N7S7689C4D0Ev)();
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY vtc_S7689C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C4[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7689C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7689C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7689C4D1Ev,_ZThn8_N7S7689C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7689C4D0Ev,_ZThn8_N7S7689C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7689C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7689C4D1Ev,_ZThn12_N7S7689C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7689C4D0Ev,_ZThn12_N7S7689C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S7689C4[];
extern  VTBL_ENTRY _ZTV7S7689C4[];
Class_Descriptor cd_S7689C4 = {  "S7689C4", // class name
  bases_S7689C4, 3,
  &(vtc_S7689C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7689C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7689C4),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7689C2  : virtual S7689C3 , virtual S7689C4 , S7689C5 , virtual S7689C6 {
  int s7689c2f0;
  virtual  ~S7689C2(); // _ZN7S7689C2D2Ev
  virtual void  v16(); // _ZN7S7689C23v16Ev
  virtual void  v17(); // _ZN7S7689C23v17Ev
  virtual void  v18(); // _ZN7S7689C23v18Ev
  virtual void  v19(); // _ZN7S7689C23v19Ev
  virtual void  v20(); // _ZN7S7689C23v20Ev
  virtual void  v21(); // _ZN7S7689C23v21Ev
  virtual void  v22(); // _ZN7S7689C23v22Ev
  virtual void  v23(); // _ZN7S7689C23v23Ev
  S7689C2(); // tgen
};
//SIG(-1 S7689C2) C1{ VBC2{ vd v9} VBC3{ BC4{ v10 v11 v12 v13 v14 Fl} BC5{ vd v15} BC2 vd v16} BC4 VBC5 vd v1 v2 v3 v4 v5 v6 v7 v8 Fi}


 S7689C2 ::~S7689C2(){ note_dtor("S7689C2", this);}
void  S7689C2 ::v16(){vfunc_called(this, "_ZN7S7689C23v16Ev");}
void  S7689C2 ::v17(){vfunc_called(this, "_ZN7S7689C23v17Ev");}
void  S7689C2 ::v18(){vfunc_called(this, "_ZN7S7689C23v18Ev");}
void  S7689C2 ::v19(){vfunc_called(this, "_ZN7S7689C23v19Ev");}
void  S7689C2 ::v20(){vfunc_called(this, "_ZN7S7689C23v20Ev");}
void  S7689C2 ::v21(){vfunc_called(this, "_ZN7S7689C23v21Ev");}
void  S7689C2 ::v22(){vfunc_called(this, "_ZN7S7689C23v22Ev");}
void  S7689C2 ::v23(){vfunc_called(this, "_ZN7S7689C23v23Ev");}
S7689C2 ::S7689C2(){ note_ctor("S7689C2", this);} // tgen

static void Test_S7689C2()
{
  extern Class_Descriptor cd_S7689C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S7689C2, buf);
    S7689C2 *dp, &lv = *(dp=new (buf) S7689C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S7689C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7689C2)");
    /*is_ambiguous_... S7689C2::S7689C3 */ AMB_check_base_class_offset(lv, (S7689C3*), ABISELECT(24,12), "S7689C2");
    check_base_class_offset(lv, (S7689C5*)(S7689C4*), ABISELECT(32,16), "S7689C2");
    check_base_class_offset(lv, (S7689C6*)(S7689C4*), ABISELECT(48,24), "S7689C2");
    check_base_class_offset(lv, (S7689C3*)(S7689C4*), ABISELECT(56,28), "S7689C2");
    check_base_class_offset(lv, (S7689C4*), ABISELECT(32,16), "S7689C2");
    /*is_ambiguous_... S7689C2::S7689C5 */ AMB_check_base_class_offset(lv, (S7689C5*), 0, "S7689C2");
    /*is_ambiguous_... S7689C2::S7689C6 */ AMB_check_base_class_offset(lv, (S7689C6*), ABISELECT(64,32), "S7689C2");
    check_field_offset(lv, s7689c2f0, ABISELECT(16,8), "S7689C2.s7689c2f0");
    test_class_info(&lv, &cd_S7689C2);
    dp->~S7689C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7689C2(Test_S7689C2, "S7689C2", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S7689C2C1Ev();
extern void _ZN7S7689C2D2Ev();
Name_Map name_map_S7689C2[] = {
  NSPAIR(_ZN7S7689C2C1Ev),
  NSPAIR(_ZN7S7689C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C6;
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
extern Class_Descriptor cd_S7689C4;
extern VTBL_ENTRY _ZTI7S7689C4[];
extern  VTBL_ENTRY _ZTV7S7689C4[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C6;
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
static Base_Class bases_S7689C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7689C3,    ABISELECT(24,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7689C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7689C6,    ABISELECT(48,24), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7689C3,    ABISELECT(56,28), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7689C4,    ABISELECT(32,16), //bcp->offset
    27, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7689C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7689C6,    ABISELECT(64,32), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7689C2[];
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void _ZN7S7689C2D1Ev();
extern void _ZN7S7689C2D0Ev();
extern void _ZN7S7689C23v16Ev();
extern void _ZN7S7689C23v17Ev();
extern void _ZN7S7689C23v18Ev();
extern void _ZN7S7689C23v19Ev();
extern void _ZN7S7689C23v20Ev();
extern void _ZN7S7689C23v21Ev();
extern void _ZN7S7689C23v22Ev();
extern void _ZN7S7689C23v23Ev();
extern void ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7689C2D1Ev,_ZThn12_N7S7689C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7689C2D0Ev,_ZThn12_N7S7689C2D0Ev)() __attribute__((weak));
extern void _ZN7S7689C32v8Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7689C2D1Ev,_ZThn16_N7S7689C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7689C2D0Ev,_ZThn16_N7S7689C2D0Ev)() __attribute__((weak));
extern void _ZN7S7689C43v15Ev();
extern void ABISELECT(_ZTvn16_n64_N7S7689C2D1Ev,_ZTvn8_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7689C2D0Ev,_ZTvn8_n32_N7S7689C2D0Ev)();
extern void _ZN7S7689C63v14Ev();
extern void ABISELECT(_ZTvn24_n64_N7S7689C2D1Ev,_ZTvn12_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S7689C2D0Ev,_ZTvn12_n32_N7S7689C2D0Ev)();
extern void _ZN7S7689C32v8Ev();
extern void ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7689C2D1Ev,_ZThn32_N7S7689C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7689C2D0Ev,_ZThn32_N7S7689C2D0Ev)() __attribute__((weak));
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY vtc_S7689C2[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7689C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v23Ev,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C2D1Ev,_ZTvn8_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C2D0Ev,_ZTvn8_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C2D1Ev,_ZTvn12_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C2D0Ev,_ZTvn12_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  0,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern VTBL_ENTRY _ZTV7S7689C2[];
static  VTT_ENTRY vtt_S7689C2[] = {
  {&(_ZTV7S7689C2[5]),  5,63},
  {&(_ZTV7S7689C2[24]),  24,63},
  {&(_ZTV7S7689C2[38]),  38,63},
  {&(_ZTV7S7689C2[48]),  48,63},
  {&(_ZTV7S7689C2[53]),  53,63},
  {&(_ZTV7S7689C2[60]),  60,63},
};
extern VTBL_ENTRY _ZTI7S7689C2[];
extern  VTBL_ENTRY _ZTV7S7689C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C2[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7689C2D0Ev,_ZThn16_N7S7689C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7689C2D1Ev,_ZThn16_N7S7689C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7689C2D0Ev,_ZThn32_N7S7689C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7689C2D0Ev,_ZThn12_N7S7689C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7689C2D1Ev,_ZThn32_N7S7689C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7689C2D1Ev,_ZThn12_N7S7689C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7689C2 = {  "S7689C2", // class name
  bases_S7689C2, 7,
  &(vtc_S7689C2[0]), // expected_vtbl_contents
  &(vtt_S7689C2[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S7689C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7689C2),63, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7689C2),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7689C7_nt  {
  int s7689c7f0;
  virtual void  v24(); // _ZN10S7689C7_nt3v24Ev
  virtual void  v25(); // _ZN10S7689C7_nt3v25Ev
  virtual void  v26(); // _ZN10S7689C7_nt3v26Ev
  virtual void  v27(); // _ZN10S7689C7_nt3v27Ev
  virtual void  v28(); // _ZN10S7689C7_nt3v28Ev
  virtual void  v29(); // _ZN10S7689C7_nt3v29Ev
  virtual void  v30(); // _ZN10S7689C7_nt3v30Ev
  ~S7689C7_nt(); // tgen
  S7689C7_nt(); // tgen
};
//SIG(-1 S7689C7_nt) C1{ v1 v2 v3 v4 v5 v6 v7 Fi}


void  S7689C7_nt ::v24(){vfunc_called(this, "_ZN10S7689C7_nt3v24Ev");}
void  S7689C7_nt ::v25(){vfunc_called(this, "_ZN10S7689C7_nt3v25Ev");}
void  S7689C7_nt ::v26(){vfunc_called(this, "_ZN10S7689C7_nt3v26Ev");}
void  S7689C7_nt ::v27(){vfunc_called(this, "_ZN10S7689C7_nt3v27Ev");}
void  S7689C7_nt ::v28(){vfunc_called(this, "_ZN10S7689C7_nt3v28Ev");}
void  S7689C7_nt ::v29(){vfunc_called(this, "_ZN10S7689C7_nt3v29Ev");}
void  S7689C7_nt ::v30(){vfunc_called(this, "_ZN10S7689C7_nt3v30Ev");}
S7689C7_nt ::~S7689C7_nt(){ note_dtor("S7689C7_nt", this);} // tgen
S7689C7_nt ::S7689C7_nt(){ note_ctor("S7689C7_nt", this);} // tgen

//skip512 S7689C7_nt

#else // __cplusplus

extern void _ZN10S7689C7_ntC1Ev();
extern void _ZN10S7689C7_ntD1Ev();
Name_Map name_map_S7689C7_nt[] = {
  NSPAIR(_ZN10S7689C7_ntC1Ev),
  NSPAIR(_ZN10S7689C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7689C7_nt[];
extern void _ZN10S7689C7_nt3v24Ev();
extern void _ZN10S7689C7_nt3v25Ev();
extern void _ZN10S7689C7_nt3v26Ev();
extern void _ZN10S7689C7_nt3v27Ev();
extern void _ZN10S7689C7_nt3v28Ev();
extern void _ZN10S7689C7_nt3v29Ev();
extern void _ZN10S7689C7_nt3v30Ev();
static  VTBL_ENTRY vtc_S7689C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7689C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S7689C7_nt[];
VTBL_ENTRY *P__ZTI10S7689C7_nt = _ZTI10S7689C7_nt; 
extern  VTBL_ENTRY _ZTV10S7689C7_nt[];
Class_Descriptor cd_S7689C7_nt = {  "S7689C7_nt", // class name
  0,0,//no base classes
  &(vtc_S7689C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S7689C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7689C7_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  S7689C9  : virtual S7689C5 {
  int s7689c9f0;
  virtual  ~S7689C9(); // _ZN7S7689C9D2Ev
  virtual void  v31(); // _ZN7S7689C93v31Ev
  virtual void  v32(); // _ZN7S7689C93v32Ev
  virtual void  v33(); // _ZN7S7689C93v33Ev
  virtual void  v34(); // _ZN7S7689C93v34Ev
  S7689C9(); // tgen
};
//SIG(-1 S7689C9) C1{ VBC2{ v5 v6 v7 v8 v9 Fl} vd v1 v2 v3 v4 Fi}


 S7689C9 ::~S7689C9(){ note_dtor("S7689C9", this);}
void  S7689C9 ::v31(){vfunc_called(this, "_ZN7S7689C93v31Ev");}
void  S7689C9 ::v32(){vfunc_called(this, "_ZN7S7689C93v32Ev");}
void  S7689C9 ::v33(){vfunc_called(this, "_ZN7S7689C93v33Ev");}
void  S7689C9 ::v34(){vfunc_called(this, "_ZN7S7689C93v34Ev");}
S7689C9 ::S7689C9(){ note_ctor("S7689C9", this);} // tgen

static void Test_S7689C9()
{
  extern Class_Descriptor cd_S7689C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7689C9, buf);
    S7689C9 *dp, &lv = *(dp=new (buf) S7689C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7689C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7689C9)");
    check_base_class_offset(lv, (S7689C5*), ABISELECT(16,8), "S7689C9");
    check_field_offset(lv, s7689c9f0, ABISELECT(8,4), "S7689C9.s7689c9f0");
    test_class_info(&lv, &cd_S7689C9);
    dp->~S7689C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7689C9(Test_S7689C9, "S7689C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7689C9C1Ev();
extern void _ZN7S7689C9D2Ev();
Name_Map name_map_S7689C9[] = {
  NSPAIR(_ZN7S7689C9C1Ev),
  NSPAIR(_ZN7S7689C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
static Base_Class bases_S7689C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7689C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7689C9[];
extern void _ZN7S7689C9D1Ev();
extern void _ZN7S7689C9D0Ev();
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY vtc_S7689C9[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
extern VTBL_ENTRY _ZTV7S7689C9[];
static  VTT_ENTRY vtt_S7689C9[] = {
  {&(_ZTV7S7689C9[3]),  3,21},
  {&(_ZTV7S7689C9[16]),  16,21},
};
extern VTBL_ENTRY _ZTI7S7689C9[];
extern  VTBL_ENTRY _ZTV7S7689C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C9[];
Class_Descriptor cd_S7689C9 = {  "S7689C9", // class name
  bases_S7689C9, 1,
  &(vtc_S7689C9[0]), // expected_vtbl_contents
  &(vtt_S7689C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7689C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7689C9),21, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7689C9),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  S7689C10  : virtual S7689C6 , virtual S7689C4 , S7689C9 {
  int s7689c10f0[10];
  char s7689c10f1;
  int s7689c10f2;
  char  :0;
  virtual  ~S7689C10(); // _ZN8S7689C10D2Ev
  virtual void  v35(); // _ZN8S7689C103v35Ev
  virtual void  v36(); // _ZN8S7689C103v36Ev
  virtual void  v37(); // _ZN8S7689C103v37Ev
  virtual void  v38(); // _ZN8S7689C103v38Ev
  virtual void  v39(); // _ZN8S7689C103v39Ev
  virtual void  v40(); // _ZN8S7689C103v40Ev
  S7689C10(); // tgen
};
//SIG(-1 S7689C10) C1{ VBC2{ vd v7} VBC3{ BC4{ v8 v9 v10 v11 v12 Fl} BC2 BC5{ vd v13} vd v14} BC6{ VBC4 vd v15 v16 v17 v18 Fi} vd v1 v2 v3 v4 v5 v6 Fi[10] Fc Fi Fc:0}


 S7689C10 ::~S7689C10(){ note_dtor("S7689C10", this);}
void  S7689C10 ::v35(){vfunc_called(this, "_ZN8S7689C103v35Ev");}
void  S7689C10 ::v36(){vfunc_called(this, "_ZN8S7689C103v36Ev");}
void  S7689C10 ::v37(){vfunc_called(this, "_ZN8S7689C103v37Ev");}
void  S7689C10 ::v38(){vfunc_called(this, "_ZN8S7689C103v38Ev");}
void  S7689C10 ::v39(){vfunc_called(this, "_ZN8S7689C103v39Ev");}
void  S7689C10 ::v40(){vfunc_called(this, "_ZN8S7689C103v40Ev");}
S7689C10 ::S7689C10(){ note_ctor("S7689C10", this);} // tgen

static void Test_S7689C10()
{
  extern Class_Descriptor cd_S7689C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S7689C10, buf);
    S7689C10 *dp, &lv = *(dp=new (buf) S7689C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S7689C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7689C10)");
    /*is_ambiguous_... S7689C10::S7689C6 */ AMB_check_base_class_offset(lv, (S7689C6*), ABISELECT(64,56), "S7689C10");
    check_base_class_offset(lv, (S7689C5*)(S7689C4*), ABISELECT(72,60), "S7689C10");
    check_base_class_offset(lv, (S7689C6*)(S7689C4*), ABISELECT(88,68), "S7689C10");
    check_base_class_offset(lv, (S7689C3*)(S7689C4*), ABISELECT(96,72), "S7689C10");
    check_base_class_offset(lv, (S7689C4*), ABISELECT(72,60), "S7689C10");
    check_base_class_offset(lv, (S7689C5*)(S7689C9*), ABISELECT(104,76), "S7689C10");
    check_base_class_offset(lv, (S7689C9*), 0, "S7689C10");
    check_field_offset(lv, s7689c10f0, ABISELECT(12,8), "S7689C10.s7689c10f0");
    check_field_offset(lv, s7689c10f1, ABISELECT(52,48), "S7689C10.s7689c10f1");
    check_field_offset(lv, s7689c10f2, ABISELECT(56,52), "S7689C10.s7689c10f2");
    test_class_info(&lv, &cd_S7689C10);
    dp->~S7689C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7689C10(Test_S7689C10, "S7689C10", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN8S7689C10C1Ev();
extern void _ZN8S7689C10D2Ev();
Name_Map name_map_S7689C10[] = {
  NSPAIR(_ZN8S7689C10C1Ev),
  NSPAIR(_ZN8S7689C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7689C6;
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C6;
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
extern Class_Descriptor cd_S7689C4;
extern VTBL_ENTRY _ZTI7S7689C4[];
extern  VTBL_ENTRY _ZTV7S7689C4[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C9;
extern VTBL_ENTRY _ZTI7S7689C9[];
extern  VTBL_ENTRY _ZTV7S7689C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C9[];
static Base_Class bases_S7689C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7689C6,    ABISELECT(64,56), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7689C5,    ABISELECT(72,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7689C6,    ABISELECT(88,68), //bcp->offset
    43, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7689C3,    ABISELECT(96,72), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7689C4,    ABISELECT(72,60), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7689C5,    ABISELECT(104,76), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7689C9,    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 _ZTI8S7689C10[];
extern void _ZN8S7689C10D1Ev();
extern void _ZN8S7689C10D0Ev();
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
extern void _ZN8S7689C103v35Ev();
extern void _ZN8S7689C103v36Ev();
extern void _ZN8S7689C103v37Ev();
extern void _ZN8S7689C103v38Ev();
extern void _ZN8S7689C103v39Ev();
extern void _ZN8S7689C103v40Ev();
extern void ABISELECT(_ZTv0_n24_N8S7689C10D1Ev,_ZTv0_n12_N8S7689C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7689C10D1Ev,_ZThn56_N8S7689C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7689C10D0Ev,_ZTv0_n12_N8S7689C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7689C10D0Ev,_ZThn56_N8S7689C10D0Ev)() __attribute__((weak));
extern void _ZN7S7689C63v14Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S7689C10D1Ev,_ZTv0_n32_N8S7689C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S7689C10D1Ev,_ZThn60_N8S7689C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7689C10D0Ev,_ZTv0_n32_N8S7689C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S7689C10D0Ev,_ZThn60_N8S7689C10D0Ev)() __attribute__((weak));
extern void _ZN7S7689C43v15Ev();
extern void ABISELECT(_ZTvn16_n64_N8S7689C10D1Ev,_ZTvn8_n32_N8S7689C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S7689C10D0Ev,_ZTvn8_n32_N8S7689C10D0Ev)();
extern void _ZN7S7689C63v14Ev();
extern void ABISELECT(_ZTvn24_n64_N8S7689C10D1Ev,_ZTvn12_n32_N8S7689C10D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S7689C10D0Ev,_ZTvn12_n32_N8S7689C10D0Ev)();
extern void _ZN7S7689C32v8Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY vtc_S7689C10[] = {
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&_ZN8S7689C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7689C10D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v36Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v37Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v38Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v39Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v40Ev,
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7689C10D1Ev,_ZTv0_n12_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7689C10D0Ev,_ZTv0_n12_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-60),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7689C10D1Ev,_ZTv0_n32_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7689C10D0Ev,_ZTv0_n32_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S7689C10D1Ev,_ZTvn8_n32_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S7689C10D0Ev,_ZTvn8_n32_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S7689C10D1Ev,_ZTvn12_n32_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S7689C10D0Ev,_ZTvn12_n32_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
extern VTBL_ENTRY _ZTV8S7689C10[];
extern void _ZN7S7689C9D1Ev();
extern void _ZN7S7689C9D0Ev();
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C9__8S7689C10[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C5__7S7689C9__8S7689C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
static  VTT_ENTRY vtt_S7689C10[] = {
  {&(_ZTV8S7689C10[5]),  5,65},
  {&(_tg__ZTV7S7689C9__8S7689C10[3]),  3,9},
  {&(_tg__ZTV7S7689C5__7S7689C9__8S7689C10[7]),  7,12},
  {&(_ZTV8S7689C10[21]),  21,65},
  {&(_ZTV8S7689C10[35]),  35,65},
  {&(_ZTV8S7689C10[45]),  45,65},
  {&(_ZTV8S7689C10[50]),  50,65},
  {&(_ZTV8S7689C10[60]),  60,65},
};
extern VTBL_ENTRY _ZTI8S7689C10[];
extern  VTBL_ENTRY _ZTV8S7689C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7689C10[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7689C10D0Ev,_ZTv0_n32_N8S7689C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7689C10D0Ev,_ZThn60_N8S7689C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7689C10D1Ev,_ZTv0_n32_N8S7689C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7689C10D1Ev,_ZThn60_N8S7689C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7689C10D0Ev,_ZTv0_n12_N8S7689C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7689C10D0Ev,_ZThn56_N8S7689C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7689C10D1Ev,_ZTv0_n12_N8S7689C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7689C10D1Ev,_ZThn56_N8S7689C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7689C10 = {  "S7689C10", // class name
  bases_S7689C10, 7,
  &(vtc_S7689C10[0]), // expected_vtbl_contents
  &(vtt_S7689C10[0]), // expected_vtt_contents
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI8S7689C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7689C10),65, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7689C10),8, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7689C8  : virtual S7689C2 , virtual S7689C9 , S7689C3 , virtual S7689C10 {
  int s7689c8f0;
  virtual  ~S7689C8(); // _ZN7S7689C8D2Ev
  virtual void  v41(); // _ZN7S7689C83v41Ev
  virtual void  v42(); // _ZN7S7689C83v42Ev
  virtual void  v43(); // _ZN7S7689C83v43Ev
  S7689C8(); // tgen
};
//SIG(-1 S7689C8) C1{ VBC2{ VBC3{ vd v4} VBC4{ BC5{ v5 v6 v7 v8 v9 Fl} BC6{ vd v10} BC3 vd v11} BC5 VBC6 vd v12 v13 v14 v15 v16 v17 v18 v19 Fi} VBC7{ VBC5 vd v20 v21 v22 v23 Fi} BC3 VBC8{ VBC6 VBC4 BC7 vd v24 v25 v26 v27 v28 v29 Fi[10] Fc Fi Fc:0} vd v1 v2 v3 Fi}


 S7689C8 ::~S7689C8(){ note_dtor("S7689C8", this);}
void  S7689C8 ::v41(){vfunc_called(this, "_ZN7S7689C83v41Ev");}
void  S7689C8 ::v42(){vfunc_called(this, "_ZN7S7689C83v42Ev");}
void  S7689C8 ::v43(){vfunc_called(this, "_ZN7S7689C83v43Ev");}
S7689C8 ::S7689C8(){ note_ctor("S7689C8", this);} // tgen

static void Test_S7689C8()
{
  extern Class_Descriptor cd_S7689C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,30)];
    init_test(&cd_S7689C8, buf);
    S7689C8 *dp, &lv = *(dp=new (buf) S7689C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,116), "sizeof(S7689C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7689C8)");
    /*is_ambiguous_... S7689C2::S7689C3 */ AMB_check_base_class_offset(lv, (S7689C3*)(S7689C2*), ABISELECT(40,20), "S7689C8");
    check_base_class_offset(lv, (S7689C5*)(S7689C4*), ABISELECT(48,24), "S7689C8");
    check_base_class_offset(lv, (S7689C6*)(S7689C4*), ABISELECT(64,32), "S7689C8");
    check_base_class_offset(lv, (S7689C3*)(S7689C4*), ABISELECT(72,36), "S7689C8");
    check_base_class_offset(lv, (S7689C4*)(S7689C2*), ABISELECT(48,24), "S7689C8");
    check_base_class_offset(lv, (S7689C4*)(S7689C10*), ABISELECT(48,24), "S7689C8");
    /*is_ambiguous_... S7689C2::S7689C5 */ AMB_check_base_class_offset(lv, (S7689C5*)(S7689C2*), ABISELECT(16,8), "S7689C8");
    /*is_ambiguous_... S7689C2::S7689C6 */ AMB_check_base_class_offset(lv, (S7689C6*)(S7689C2*), ABISELECT(80,40), "S7689C8");
    /*is_ambiguous_... S7689C10::S7689C6 */ AMB_check_base_class_offset(lv, (S7689C6*)(S7689C10*), ABISELECT(80,40), "S7689C8");
    check_base_class_offset(lv, (S7689C2*), ABISELECT(16,8), "S7689C8");
    /*is_ambiguous_... S7689C8::S7689C9 */ AMB_check_base_class_offset(lv, (S7689C5*)(S7689C9*), ABISELECT(104,52), "S7689C8");
    check_base_class_offset(lv, (S7689C5*)(S7689C9*)(S7689C10*), ABISELECT(104,52), "S7689C8");
    /*is_ambiguous_... S7689C8::S7689C9 */ AMB_check_base_class_offset(lv, (S7689C9*), ABISELECT(88,44), "S7689C8");
    /*is_ambiguous_... S7689C8::S7689C3 */ AMB_check_base_class_offset(lv, (S7689C3*), 0, "S7689C8");
    check_base_class_offset(lv, (S7689C9*)(S7689C10*), ABISELECT(120,60), "S7689C8");
    check_base_class_offset(lv, (S7689C10*), ABISELECT(120,60), "S7689C8");
    check_field_offset(lv, s7689c8f0, ABISELECT(8,4), "S7689C8.s7689c8f0");
    test_class_info(&lv, &cd_S7689C8);
    dp->~S7689C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7689C8(Test_S7689C8, "S7689C8", ABISELECT(184,116));

#else // __cplusplus

extern void _ZN7S7689C8C1Ev();
extern void _ZN7S7689C8D2Ev();
Name_Map name_map_S7689C8[] = {
  NSPAIR(_ZN7S7689C8C1Ev),
  NSPAIR(_ZN7S7689C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C6;
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
extern Class_Descriptor cd_S7689C4;
extern VTBL_ENTRY _ZTI7S7689C4[];
extern  VTBL_ENTRY _ZTV7S7689C4[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C6;
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
extern Class_Descriptor cd_S7689C2;
extern VTBL_ENTRY _ZTI7S7689C2[];
extern  VTBL_ENTRY _ZTV7S7689C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C2[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C9;
extern VTBL_ENTRY _ZTI7S7689C9[];
extern  VTBL_ENTRY _ZTV7S7689C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C9[];
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
extern Class_Descriptor cd_S7689C9;
extern VTBL_ENTRY _ZTI7S7689C9[];
extern  VTBL_ENTRY _ZTV7S7689C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C9[];
extern Class_Descriptor cd_S7689C10;
extern VTBL_ENTRY _ZTI8S7689C10[];
extern  VTBL_ENTRY _ZTV8S7689C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7689C10[];
static Base_Class bases_S7689C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7689C3,    ABISELECT(40,20), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7689C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7689C6,    ABISELECT(64,32), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7689C3,    ABISELECT(72,36), //bcp->offset
    80, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7689C4,    ABISELECT(48,24), //bcp->offset
    56, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7689C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7689C6,    ABISELECT(80,40), //bcp->offset
    85, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7689C2,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7689C5,    ABISELECT(104,52), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7689C9,    ABISELECT(88,44), //bcp->offset
    92, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7689C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7689C9,    ABISELECT(120,60), //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
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7689C10,    ABISELECT(120,60), //bcp->offset
    118, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7689C8[];
extern void _ZN7S7689C8D1Ev();
extern void _ZN7S7689C8D0Ev();
extern void _ZN7S7689C32v8Ev();
extern void _ZN7S7689C83v41Ev();
extern void _ZN7S7689C83v42Ev();
extern void _ZN7S7689C83v43Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n88_N7S7689C8D1Ev,_ZTv0_n44_N7S7689C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7689C8D1Ev,_ZThn8_N7S7689C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7689C8D0Ev,_ZTv0_n44_N7S7689C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7689C8D0Ev,_ZThn8_N7S7689C8D0Ev)() __attribute__((weak));
extern void _ZN7S7689C23v16Ev();
extern void _ZN7S7689C23v17Ev();
extern void _ZN7S7689C23v18Ev();
extern void _ZN7S7689C23v19Ev();
extern void _ZN7S7689C23v20Ev();
extern void _ZN7S7689C23v21Ev();
extern void _ZN7S7689C23v22Ev();
extern void _ZN7S7689C23v23Ev();
extern void ABISELECT(_ZTv0_n24_N7S7689C8D1Ev,_ZTv0_n12_N7S7689C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S7689C8D1Ev,_ZThn20_N7S7689C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7689C8D0Ev,_ZTv0_n12_N7S7689C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S7689C8D0Ev,_ZThn20_N7S7689C8D0Ev)() __attribute__((weak));
extern void _ZN7S7689C32v8Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n64_N7S7689C8D1Ev,_ZTv0_n32_N7S7689C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S7689C8D1Ev,_ZThn24_N7S7689C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7689C8D0Ev,_ZTv0_n32_N7S7689C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S7689C8D0Ev,_ZThn24_N7S7689C8D0Ev)() __attribute__((weak));
extern void _ZN7S7689C43v15Ev();
extern void ABISELECT(_ZTvn16_n64_N7S7689C8D1Ev,_ZTvn8_n32_N7S7689C8D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7689C8D0Ev,_ZTvn8_n32_N7S7689C8D0Ev)();
extern void _ZN7S7689C63v14Ev();
extern void ABISELECT(_ZTvn24_n64_N7S7689C8D1Ev,_ZTvn12_n32_N7S7689C8D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S7689C8D0Ev,_ZTvn12_n32_N7S7689C8D0Ev)();
extern void _ZN7S7689C32v8Ev();
extern void ABISELECT(_ZTv0_n24_N7S7689C8D1Ev,_ZTv0_n12_N7S7689C8D1Ev)();
extern void ABISELECT(_ZThn80_N7S7689C8D1Ev,_ZThn40_N7S7689C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7689C8D0Ev,_ZTv0_n12_N7S7689C8D0Ev)();
extern void ABISELECT(_ZThn80_N7S7689C8D0Ev,_ZThn40_N7S7689C8D0Ev)() __attribute__((weak));
extern void _ZN7S7689C63v14Ev();
extern void ABISELECT(_ZTv0_n32_N7S7689C8D1Ev,_ZTv0_n16_N7S7689C8D1Ev)();
extern void ABISELECT(_ZThn88_N7S7689C8D1Ev,_ZThn44_N7S7689C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7689C8D0Ev,_ZTv0_n16_N7S7689C8D0Ev)();
extern void ABISELECT(_ZThn88_N7S7689C8D0Ev,_ZThn44_N7S7689C8D0Ev)() __attribute__((weak));
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7689C8D1Ev,_ZTv0_n24_N7S7689C8D1Ev)();
extern void ABISELECT(_ZThn120_N7S7689C8D1Ev,_ZThn60_N7S7689C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7689C8D0Ev,_ZTv0_n24_N7S7689C8D0Ev)();
extern void ABISELECT(_ZThn120_N7S7689C8D0Ev,_ZThn60_N7S7689C8D0Ev)() __attribute__((weak));
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
extern void _ZN8S7689C103v35Ev();
extern void _ZN8S7689C103v36Ev();
extern void _ZN8S7689C103v37Ev();
extern void _ZN8S7689C103v38Ev();
extern void _ZN8S7689C103v39Ev();
extern void _ZN8S7689C103v40Ev();
static  VTBL_ENTRY vtc_S7689C8[] = {
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(88,44),
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&_ZN7S7689C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7689C83v41Ev,
  (VTBL_ENTRY)&_ZN7S7689C83v42Ev,
  (VTBL_ENTRY)&_ZN7S7689C83v43Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7689C8D1Ev,_ZTv0_n44_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7689C8D0Ev,_ZTv0_n44_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v23Ev,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C8D1Ev,_ZTv0_n12_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C8D0Ev,_ZTv0_n12_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-48,-24),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C8D1Ev,_ZTv0_n32_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C8D0Ev,_ZTv0_n32_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C8D1Ev,_ZTvn8_n32_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C8D0Ev,_ZTvn8_n32_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C8D1Ev,_ZTvn12_n32_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C8D0Ev,_ZTvn12_n32_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  0,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C8D1Ev,_ZTv0_n12_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C8D0Ev,_ZTv0_n12_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-44),
  ABISELECT(16,8),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7689C8D1Ev,_ZTv0_n16_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7689C8D0Ev,_ZTv0_n16_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-60),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7689C8D1Ev,_ZTv0_n24_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7689C8D0Ev,_ZTv0_n24_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v36Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v37Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v38Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v39Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v40Ev,
};
extern VTBL_ENTRY _ZTV7S7689C8[];
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void _ZN7S7689C2D1Ev();
extern void _ZN7S7689C2D0Ev();
extern void _ZN7S7689C23v16Ev();
extern void _ZN7S7689C23v17Ev();
extern void _ZN7S7689C23v18Ev();
extern void _ZN7S7689C23v19Ev();
extern void _ZN7S7689C23v20Ev();
extern void _ZN7S7689C23v21Ev();
extern void _ZN7S7689C23v22Ev();
extern void _ZN7S7689C23v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C2__7S7689C8[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7689C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v23Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7689C2D1Ev,_ZThn12_N7S7689C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7689C2D0Ev,_ZThn12_N7S7689C2D0Ev)() __attribute__((weak));
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C3__7S7689C2__7S7689C8[] = {
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7689C2D1Ev,_ZThn16_N7S7689C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7689C2D0Ev,_ZThn16_N7S7689C2D0Ev)() __attribute__((weak));
extern void _ZN7S7689C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C4__7S7689C2__7S7689C8[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
};
extern void ABISELECT(_ZTvn16_n64_N7S7689C2D1Ev,_ZTvn8_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7689C2D0Ev,_ZTvn8_n32_N7S7689C2D0Ev)();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C67S7689C4__7S7689C2__7S7689C8[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C2D1Ev,_ZTvn8_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C2D0Ev,_ZTvn8_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N7S7689C2D1Ev,_ZTvn12_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S7689C2D0Ev,_ZTvn12_n32_N7S7689C2D0Ev)();
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C37S7689C4__A1__7S7689C2__7S7689C8[] = {
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C2D1Ev,_ZTvn12_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C2D0Ev,_ZTvn12_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7689C2D1Ev,_ZThn32_N7S7689C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7689C2D0Ev,_ZThn32_N7S7689C2D0Ev)() __attribute__((weak));
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C6__A1__7S7689C2__7S7689C8[] = {
  0,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void _ZN7S7689C9D1Ev();
extern void _ZN7S7689C9D0Ev();
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C9__7S7689C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C5__7S7689C9__7S7689C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
extern void _ZN8S7689C10D1Ev();
extern void _ZN8S7689C10D0Ev();
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
extern void _ZN8S7689C103v35Ev();
extern void _ZN8S7689C103v36Ev();
extern void _ZN8S7689C103v37Ev();
extern void _ZN8S7689C103v38Ev();
extern void _ZN8S7689C103v39Ev();
extern void _ZN8S7689C103v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7689C10__7S7689C8[] = {
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&_ZN8S7689C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7689C10D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v36Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v37Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v38Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v39Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v40Ev,
};
extern void _ZN7S7689C9D1Ev();
extern void _ZN7S7689C9D0Ev();
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C98S7689C10__A1__7S7689C8[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C5__7S7689C98S7689C10__A1__7S7689C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7689C10D1Ev,_ZTv0_n12_N8S7689C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7689C10D0Ev,_ZTv0_n12_N8S7689C10D0Ev)();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C6__8S7689C10__7S7689C8[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7689C10D1Ev,_ZTv0_n12_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7689C10D0Ev,_ZTv0_n12_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S7689C10D1Ev,_ZTv0_n32_N8S7689C10D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7689C10D0Ev,_ZTv0_n32_N8S7689C10D0Ev)();
extern void _ZN7S7689C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C4__8S7689C10__7S7689C8[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(72,36),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7689C10D1Ev,_ZTv0_n32_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7689C10D0Ev,_ZTv0_n32_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
};
extern void ABISELECT(_ZTvn16_n64_N8S7689C10D1Ev,_ZTvn8_n32_N8S7689C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S7689C10D0Ev,_ZTvn8_n32_N8S7689C10D0Ev)();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C67S7689C4__A1__8S7689C10__7S7689C8[] = {
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S7689C10D1Ev,_ZTvn8_n32_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S7689C10D0Ev,_ZTvn8_n32_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N8S7689C10D1Ev,_ZTvn12_n32_N8S7689C10D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S7689C10D0Ev,_ZTvn12_n32_N8S7689C10D0Ev)();
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C37S7689C4__8S7689C10__7S7689C8[] = {
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S7689C10D1Ev,_ZTvn12_n32_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S7689C10D0Ev,_ZTvn12_n32_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C5__A1__8S7689C10__7S7689C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
static  VTT_ENTRY vtt_S7689C8[] = {
  {&(_ZTV7S7689C8[9]),  9,146},
  {&(_ZTV7S7689C8[34]),  34,146},
  {&(_ZTV7S7689C8[53]),  53,146},
  {&(_ZTV7S7689C8[67]),  67,146},
  {&(_ZTV7S7689C8[77]),  77,146},
  {&(_ZTV7S7689C8[82]),  82,146},
  {&(_ZTV7S7689C8[89]),  89,146},
  {&(_ZTV7S7689C8[100]),  100,146},
  {&(_ZTV7S7689C8[113]),  113,146},
  {&(_ZTV7S7689C8[134]),  134,146},
  {&(_tg__ZTV7S7689C2__7S7689C8[5]),  5,20},
  {&(_tg__ZTV7S7689C3__7S7689C2__7S7689C8[4]),  4,7},
  {&(_tg__ZTV7S7689C4__7S7689C2__7S7689C8[11]),  11,19},
  {&(_tg__ZTV7S7689C67S7689C4__7S7689C2__7S7689C8[2]),  2,5},
  {&(_tg__ZTV7S7689C37S7689C4__A1__7S7689C2__7S7689C8[2]),  2,5},
  {&(_tg__ZTV7S7689C6__A1__7S7689C2__7S7689C8[4]),  4,7},
  {&(_tg__ZTV7S7689C9__7S7689C8[3]),  3,9},
  {&(_tg__ZTV7S7689C5__7S7689C9__7S7689C8[7]),  7,12},
  {&(_tg__ZTV8S7689C10__7S7689C8[5]),  5,17},
  {&(_tg__ZTV7S7689C98S7689C10__A1__7S7689C8[3]),  3,9},
  {&(_tg__ZTV7S7689C5__7S7689C98S7689C10__A1__7S7689C8[7]),  7,12},
  {&(_tg__ZTV7S7689C6__8S7689C10__7S7689C8[4]),  4,7},
  {&(_tg__ZTV7S7689C4__8S7689C10__7S7689C8[11]),  11,19},
  {&(_tg__ZTV7S7689C67S7689C4__A1__8S7689C10__7S7689C8[2]),  2,5},
  {&(_tg__ZTV7S7689C37S7689C4__8S7689C10__7S7689C8[2]),  2,5},
  {&(_tg__ZTV7S7689C5__A1__8S7689C10__7S7689C8[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7689C8[];
extern  VTBL_ENTRY _ZTV7S7689C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C8[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7689C2D0Ev,_ZThn16_N7S7689C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7689C2D1Ev,_ZThn16_N7S7689C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7689C2D0Ev,_ZThn32_N7S7689C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7689C2D0Ev,_ZThn12_N7S7689C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7689C2D1Ev,_ZThn32_N7S7689C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7689C2D1Ev,_ZThn12_N7S7689C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7689C8D0Ev,_ZTv0_n24_N7S7689C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7689C8D0Ev,_ZThn60_N7S7689C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7689C8D1Ev,_ZTv0_n24_N7S7689C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7689C8D1Ev,_ZThn60_N7S7689C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7689C8D0Ev,_ZTv0_n16_N7S7689C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7689C8D0Ev,_ZThn44_N7S7689C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7689C8D1Ev,_ZTv0_n16_N7S7689C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7689C8D1Ev,_ZThn44_N7S7689C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7689C8D0Ev,_ZTv0_n32_N7S7689C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7689C8D0Ev,_ZThn24_N7S7689C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7689C8D1Ev,_ZTv0_n32_N7S7689C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7689C8D1Ev,_ZThn24_N7S7689C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7689C8D0Ev,_ZTv0_n12_N7S7689C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7689C8D0Ev,_ZThn40_N7S7689C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7689C8D0Ev,_ZThn20_N7S7689C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7689C8D1Ev,_ZTv0_n12_N7S7689C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7689C8D1Ev,_ZThn40_N7S7689C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7689C8D1Ev,_ZThn20_N7S7689C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7689C8D0Ev,_ZTv0_n44_N7S7689C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7689C8D0Ev,_ZThn8_N7S7689C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7689C8D1Ev,_ZTv0_n44_N7S7689C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7689C8D1Ev,_ZThn8_N7S7689C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7689C8 = {  "S7689C8", // class name
  bases_S7689C8, 13,
  &(vtc_S7689C8[0]), // expected_vtbl_contents
  &(vtt_S7689C8[0]), // expected_vtt_contents
  ABISELECT(184,116), // object size
  NSPAIRA(_ZTI7S7689C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7689C8),146, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7689C8),26, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7689C1  : S7689C2 , S7689C4 , virtual S7689C7_nt , virtual S7689C8 {
  virtual void  v1(); // _ZN7S7689C12v1Ev
  virtual void  v2(); // _ZN7S7689C12v2Ev
  virtual void  v3(); // _ZN7S7689C12v3Ev
  virtual void  v4(); // _ZN7S7689C12v4Ev
  virtual void  v5(); // _ZN7S7689C12v5Ev
  virtual void  v6(); // _ZN7S7689C12v6Ev
  virtual void  v7(); // _ZN7S7689C12v7Ev
  ~S7689C1(); // tgen
  S7689C1(); // tgen
};
//SIG(1 S7689C1) C1{ BC2{ VBC3{ vd v8} VBC4{ BC5{ v9 v10 v11 v12 v13 Fl} BC6{ vd v14} BC3 vd v15} BC5 VBC6 vd v16 v17 v18 v19 v20 v21 v22 v23 Fi} BC4 VBC7{ v24 v25 v26 v27 v28 v29 v30 Fi} VBC8{ VBC2 VBC9{ VBC5 vd v31 v32 v33 v34 Fi} BC3 VBC10{ VBC6 VBC4 BC9 vd v35 v36 v37 v38 v39 v40 Fi[10] Fc Fi Fc:0} vd v41 v42 v43 Fi} v1 v2 v3 v4 v5 v6 v7}


void  S7689C1 ::v1(){vfunc_called(this, "_ZN7S7689C12v1Ev");}
void  S7689C1 ::v2(){vfunc_called(this, "_ZN7S7689C12v2Ev");}
void  S7689C1 ::v3(){vfunc_called(this, "_ZN7S7689C12v3Ev");}
void  S7689C1 ::v4(){vfunc_called(this, "_ZN7S7689C12v4Ev");}
void  S7689C1 ::v5(){vfunc_called(this, "_ZN7S7689C12v5Ev");}
void  S7689C1 ::v6(){vfunc_called(this, "_ZN7S7689C12v6Ev");}
void  S7689C1 ::v7(){vfunc_called(this, "_ZN7S7689C12v7Ev");}
S7689C1 ::~S7689C1(){ note_dtor("S7689C1", this);} // tgen
S7689C1 ::S7689C1(){ note_ctor("S7689C1", this);} // tgen

static void Test_S7689C1()
{
  extern Class_Descriptor cd_S7689C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,39)];
    init_test(&cd_S7689C1, buf);
    S7689C1 *dp, &lv = *(dp=new (buf) S7689C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,152), "sizeof(S7689C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7689C1)");
    /*is_ambiguous_... S7689C1::S7689C2 */ AMB_check_base_class_offset(lv, (S7689C3*)(S7689C2*), ABISELECT(56,28), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C2 */ AMB_check_base_class_offset(lv, (S7689C3*)(S7689C2*), ABISELECT(56,28), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C4 */ AMB_check_base_class_offset(lv, (S7689C5*)(S7689C4*), ABISELECT(64,32), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C4 */ AMB_check_base_class_offset(lv, (S7689C6*)(S7689C4*), ABISELECT(80,40), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C4 */ AMB_check_base_class_offset(lv, (S7689C3*)(S7689C4*), ABISELECT(88,44), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C2 */ AMB_check_base_class_offset(lv, (S7689C4*)(S7689C2*), ABISELECT(64,32), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C2 */ AMB_check_base_class_offset(lv, (S7689C4*)(S7689C2*), ABISELECT(64,32), "S7689C1");
    check_base_class_offset(lv, (S7689C4*)(S7689C10*), ABISELECT(64,32), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C2 */ AMB_check_base_class_offset(lv, (S7689C5*)(S7689C2*), 0, "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C2 */ AMB_check_base_class_offset(lv, (S7689C6*)(S7689C2*), ABISELECT(96,48), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C2 */ AMB_check_base_class_offset(lv, (S7689C6*)(S7689C2*), ABISELECT(96,48), "S7689C1");
    /*is_ambiguous_... S7689C10::S7689C6 */ AMB_check_base_class_offset(lv, (S7689C6*)(S7689C10*), ABISELECT(96,48), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C2 */ AMB_check_base_class_offset(lv, (S7689C2*), 0, "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C4 */ AMB_check_base_class_offset(lv, (S7689C5*)(S7689C4*), ABISELECT(24,12), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C4 */ AMB_check_base_class_offset(lv, (S7689C6*)(S7689C4*), ABISELECT(40,20), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C4 */ AMB_check_base_class_offset(lv, (S7689C3*)(S7689C4*), ABISELECT(48,24), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C4 */ AMB_check_base_class_offset(lv, (S7689C4*), ABISELECT(24,12), "S7689C1");
    check_base_class_offset(lv, (S7689C7_nt*), ABISELECT(104,52), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C2 */ AMB_check_base_class_offset(lv, (S7689C5*)(S7689C2*), ABISELECT(136,68), "S7689C1");
    check_base_class_offset(lv, (S7689C2*)(S7689C8*), ABISELECT(136,68), "S7689C1");
    /*is_ambiguous_... S7689C1::S7689C9 */ AMB_check_base_class_offset(lv, (S7689C5*)(S7689C9*), ABISELECT(176,88), "S7689C1");
    check_base_class_offset(lv, (S7689C5*)(S7689C9*)(S7689C10*), ABISELECT(176,88), "S7689C1");
    /*is_ambiguous_... S7689C8::S7689C9 */ AMB_check_base_class_offset(lv, (S7689C9*)(S7689C8*), ABISELECT(160,80), "S7689C1");
    /*is_ambiguous_... S7689C8::S7689C3 */ AMB_check_base_class_offset(lv, (S7689C3*)(S7689C8*), ABISELECT(120,60), "S7689C1");
    check_base_class_offset(lv, (S7689C9*)(S7689C10*), ABISELECT(192,96), "S7689C1");
    check_base_class_offset(lv, (S7689C10*)(S7689C8*), ABISELECT(192,96), "S7689C1");
    check_base_class_offset(lv, (S7689C8*), ABISELECT(120,60), "S7689C1");
    test_class_info(&lv, &cd_S7689C1);
    dp->~S7689C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7689C1(Test_S7689C1, "S7689C1", ABISELECT(256,152));

#else // __cplusplus

extern void _ZN7S7689C1C1Ev();
extern void _ZN7S7689C1D1Ev();
Name_Map name_map_S7689C1[] = {
  NSPAIR(_ZN7S7689C1C1Ev),
  NSPAIR(_ZN7S7689C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C6;
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
extern Class_Descriptor cd_S7689C4;
extern VTBL_ENTRY _ZTI7S7689C4[];
extern  VTBL_ENTRY _ZTV7S7689C4[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C6;
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
extern Class_Descriptor cd_S7689C2;
extern VTBL_ENTRY _ZTI7S7689C2[];
extern  VTBL_ENTRY _ZTV7S7689C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C2[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C6;
extern VTBL_ENTRY _ZTI7S7689C6[];
extern  VTBL_ENTRY _ZTV7S7689C6[];
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
extern Class_Descriptor cd_S7689C4;
extern VTBL_ENTRY _ZTI7S7689C4[];
extern  VTBL_ENTRY _ZTV7S7689C4[];
extern Class_Descriptor cd_S7689C7_nt;
extern VTBL_ENTRY _ZTI10S7689C7_nt[];
extern  VTBL_ENTRY _ZTV10S7689C7_nt[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C2;
extern VTBL_ENTRY _ZTI7S7689C2[];
extern  VTBL_ENTRY _ZTV7S7689C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C2[];
extern Class_Descriptor cd_S7689C5;
extern VTBL_ENTRY _ZTI7S7689C5[];
extern  VTBL_ENTRY _ZTV7S7689C5[];
extern Class_Descriptor cd_S7689C9;
extern VTBL_ENTRY _ZTI7S7689C9[];
extern  VTBL_ENTRY _ZTV7S7689C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C9[];
extern Class_Descriptor cd_S7689C3;
extern VTBL_ENTRY _ZTI7S7689C3[];
extern  VTBL_ENTRY _ZTV7S7689C3[];
extern Class_Descriptor cd_S7689C9;
extern VTBL_ENTRY _ZTI7S7689C9[];
extern  VTBL_ENTRY _ZTV7S7689C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C9[];
extern Class_Descriptor cd_S7689C10;
extern VTBL_ENTRY _ZTI8S7689C10[];
extern  VTBL_ENTRY _ZTV8S7689C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7689C10[];
extern Class_Descriptor cd_S7689C8;
extern VTBL_ENTRY _ZTI7S7689C8[];
extern  VTBL_ENTRY _ZTV7S7689C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C8[];
static Base_Class bases_S7689C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7689C3,    ABISELECT(56,28), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7689C5,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7689C6,    ABISELECT(80,40), //bcp->offset
    79, //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7689C3,    ABISELECT(88,44), //bcp->offset
    84, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7689C4,    ABISELECT(64,32), //bcp->offset
    60, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7689C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    7, //immediately_derived
  0, 0},
  {&cd_S7689C6,    ABISELECT(96,48), //bcp->offset
    89, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7689C2,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7689C5,    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
    18, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7689C6,    ABISELECT(40,20), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7689C3,    ABISELECT(48,24), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7689C4,    ABISELECT(24,12), //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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7689C7_nt,    ABISELECT(104,52), //bcp->offset
    96, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7689C5,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7689C2,    ABISELECT(136,68), //bcp->offset
    132, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7689C5,    ABISELECT(176,88), //bcp->offset
    180, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7689C9,    ABISELECT(160,80), //bcp->offset
    166, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7689C3,    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
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7689C9,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7689C10,    ABISELECT(192,96), //bcp->offset
    192, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7689C8,    ABISELECT(120,60), //bcp->offset
    112, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7689C1[];
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void _ZN7S7689C1D1Ev();
extern void _ZN7S7689C1D0Ev();
extern void _ZN7S7689C23v16Ev();
extern void _ZN7S7689C23v17Ev();
extern void _ZN7S7689C23v18Ev();
extern void _ZN7S7689C23v19Ev();
extern void _ZN7S7689C23v20Ev();
extern void _ZN7S7689C23v21Ev();
extern void _ZN7S7689C23v22Ev();
extern void _ZN7S7689C23v23Ev();
extern void _ZN7S7689C12v1Ev();
extern void _ZN7S7689C12v2Ev();
extern void _ZN7S7689C12v3Ev();
extern void _ZN7S7689C12v4Ev();
extern void _ZN7S7689C12v5Ev();
extern void _ZN7S7689C12v6Ev();
extern void _ZN7S7689C12v7Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZThn24_N7S7689C1D1Ev,_ZThn12_N7S7689C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7689C1D0Ev,_ZThn12_N7S7689C1D0Ev)();
extern void _ZN7S7689C43v15Ev();
extern void ABISELECT(_ZThn40_N7S7689C1D1Ev,_ZThn20_N7S7689C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7689C1D0Ev,_ZThn20_N7S7689C1D0Ev)();
extern void _ZN7S7689C63v14Ev();
extern void ABISELECT(_ZThn48_N7S7689C1D1Ev,_ZThn24_N7S7689C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7689C1D0Ev,_ZThn24_N7S7689C1D0Ev)();
extern void _ZN7S7689C32v8Ev();
extern void ABISELECT(_ZTv0_n24_N7S7689C1D1Ev,_ZTv0_n12_N7S7689C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7689C1D1Ev,_ZThn28_N7S7689C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7689C1D0Ev,_ZTv0_n12_N7S7689C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7689C1D0Ev,_ZThn28_N7S7689C1D0Ev)() __attribute__((weak));
extern void _ZN7S7689C32v8Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n64_N7S7689C1D1Ev,_ZTv0_n32_N7S7689C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7689C1D1Ev,_ZThn32_N7S7689C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7689C1D0Ev,_ZTv0_n32_N7S7689C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7689C1D0Ev,_ZThn32_N7S7689C1D0Ev)() __attribute__((weak));
extern void _ZN7S7689C43v15Ev();
extern void ABISELECT(_ZTvn16_n64_N7S7689C1D1Ev,_ZTvn8_n32_N7S7689C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7689C1D0Ev,_ZTvn8_n32_N7S7689C1D0Ev)();
extern void _ZN7S7689C63v14Ev();
extern void ABISELECT(_ZTvn24_n64_N7S7689C1D1Ev,_ZTvn12_n32_N7S7689C1D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S7689C1D0Ev,_ZTvn12_n32_N7S7689C1D0Ev)();
extern void _ZN7S7689C32v8Ev();
extern void ABISELECT(_ZTv0_n24_N7S7689C1D1Ev,_ZTv0_n12_N7S7689C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S7689C1D1Ev,_ZThn48_N7S7689C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7689C1D0Ev,_ZTv0_n12_N7S7689C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S7689C1D0Ev,_ZThn48_N7S7689C1D0Ev)() __attribute__((weak));
extern void _ZN7S7689C63v14Ev();
extern void _ZN10S7689C7_nt3v24Ev();
extern void _ZN10S7689C7_nt3v25Ev();
extern void _ZN10S7689C7_nt3v26Ev();
extern void _ZN10S7689C7_nt3v27Ev();
extern void _ZN10S7689C7_nt3v28Ev();
extern void _ZN10S7689C7_nt3v29Ev();
extern void _ZN10S7689C7_nt3v30Ev();
extern void ABISELECT(_ZTv0_n80_N7S7689C1D1Ev,_ZTv0_n40_N7S7689C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7689C1D1Ev,_ZThn60_N7S7689C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7689C1D0Ev,_ZTv0_n40_N7S7689C1D0Ev)();
extern void ABISELECT(_ZThn120_N7S7689C1D0Ev,_ZThn60_N7S7689C1D0Ev)() __attribute__((weak));
extern void _ZN7S7689C32v8Ev();
extern void _ZN7S7689C83v41Ev();
extern void _ZN7S7689C83v42Ev();
extern void _ZN7S7689C83v43Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n88_N7S7689C1D1Ev,_ZTv0_n44_N7S7689C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S7689C1D1Ev,_ZThn68_N7S7689C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7689C1D0Ev,_ZTv0_n44_N7S7689C1D0Ev)();
extern void ABISELECT(_ZThn136_N7S7689C1D0Ev,_ZThn68_N7S7689C1D0Ev)() __attribute__((weak));
extern void _ZN7S7689C23v16Ev();
extern void _ZN7S7689C23v17Ev();
extern void _ZN7S7689C23v18Ev();
extern void _ZN7S7689C23v19Ev();
extern void _ZN7S7689C23v20Ev();
extern void _ZN7S7689C23v21Ev();
extern void _ZN7S7689C23v22Ev();
extern void _ZN7S7689C23v23Ev();
extern void ABISELECT(_ZTv0_n32_N7S7689C1D1Ev,_ZTv0_n16_N7S7689C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S7689C1D1Ev,_ZThn80_N7S7689C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7689C1D0Ev,_ZTv0_n16_N7S7689C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S7689C1D0Ev,_ZThn80_N7S7689C1D0Ev)() __attribute__((weak));
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7689C1D1Ev,_ZTv0_n24_N7S7689C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7689C1D1Ev,_ZThn96_N7S7689C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7689C1D0Ev,_ZTv0_n24_N7S7689C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S7689C1D0Ev,_ZThn96_N7S7689C1D0Ev)() __attribute__((weak));
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
extern void _ZN8S7689C103v35Ev();
extern void _ZN8S7689C103v36Ev();
extern void _ZN8S7689C103v37Ev();
extern void _ZN8S7689C103v38Ev();
extern void _ZN8S7689C103v39Ev();
extern void _ZN8S7689C103v40Ev();
static  VTBL_ENTRY vtc_S7689C1[] = {
  ABISELECT(192,96),
  ABISELECT(176,88),
  ABISELECT(160,80),
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7689C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v23Ev,
  (VTBL_ENTRY)&_ZN7S7689C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7689C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7689C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7689C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7689C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7689C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7689C12v7Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7689C1D1Ev,_ZThn12_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7689C1D0Ev,_ZThn12_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7689C1D1Ev,_ZThn20_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7689C1D0Ev,_ZThn20_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7689C1D1Ev,_ZThn24_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7689C1D0Ev,_ZThn24_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C1D1Ev,_ZTv0_n12_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C1D0Ev,_ZTv0_n12_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-64,-32),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C1D1Ev,_ZTv0_n32_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C1D0Ev,_ZTv0_n32_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C1D1Ev,_ZTvn8_n32_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C1D0Ev,_ZTvn8_n32_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C1D1Ev,_ZTvn12_n32_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C1D0Ev,_ZTvn12_n32_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C1D1Ev,_ZTv0_n12_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C1D0Ev,_ZTv0_n12_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S7689C7_nt3v30Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-60),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  ABISELECT(-56,-28),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7689C1D1Ev,_ZTv0_n40_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7689C1D0Ev,_ZTv0_n40_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7689C83v41Ev,
  (VTBL_ENTRY)&_ZN7S7689C83v42Ev,
  (VTBL_ENTRY)&_ZN7S7689C83v43Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-68),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7689C1D1Ev,_ZTv0_n44_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7689C1D0Ev,_ZTv0_n44_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v23Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  ABISELECT(16,8),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7689C1D1Ev,_ZTv0_n16_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7689C1D0Ev,_ZTv0_n16_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-96),
  ABISELECT(-128,-64),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S7689C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7689C1D1Ev,_ZTv0_n24_N7S7689C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7689C1D0Ev,_ZTv0_n24_N7S7689C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v36Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v37Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v38Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v39Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v40Ev,
};
extern VTBL_ENTRY _ZTV7S7689C1[];
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void _ZN7S7689C2D1Ev();
extern void _ZN7S7689C2D0Ev();
extern void _ZN7S7689C23v16Ev();
extern void _ZN7S7689C23v17Ev();
extern void _ZN7S7689C23v18Ev();
extern void _ZN7S7689C23v19Ev();
extern void _ZN7S7689C23v20Ev();
extern void _ZN7S7689C23v21Ev();
extern void _ZN7S7689C23v22Ev();
extern void _ZN7S7689C23v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C2__A__7S7689C1[] = {
  ABISELECT(96,48),
  ABISELECT(64,32),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7689C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v23Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7689C2D1Ev,_ZThn28_N7S7689C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7689C2D0Ev,_ZThn28_N7S7689C2D0Ev)() __attribute__((weak));
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C3__7S7689C2__A__7S7689C1[] = {
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7689C2D1Ev,_ZThn32_N7S7689C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7689C2D0Ev,_ZThn32_N7S7689C2D0Ev)() __attribute__((weak));
extern void _ZN7S7689C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C4__7S7689C2__A__7S7689C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-64,-32),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
};
extern void ABISELECT(_ZTvn16_n64_N7S7689C2D1Ev,_ZTvn8_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7689C2D0Ev,_ZTvn8_n32_N7S7689C2D0Ev)();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C67S7689C4__7S7689C2__A__7S7689C1[] = {
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C2D1Ev,_ZTvn8_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C2D0Ev,_ZTvn8_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N7S7689C2D1Ev,_ZTvn12_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S7689C2D0Ev,_ZTvn12_n32_N7S7689C2D0Ev)();
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C37S7689C4__A1__7S7689C2__A__7S7689C1[] = {
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C2D1Ev,_ZTvn12_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C2D0Ev,_ZTvn12_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S7689C2D1Ev,_ZThn48_N7S7689C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S7689C2D0Ev,_ZThn48_N7S7689C2D0Ev)() __attribute__((weak));
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C6__A1__7S7689C2__A__7S7689C1[] = {
  0,
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void _ZN7S7689C8D1Ev();
extern void _ZN7S7689C8D0Ev();
extern void _ZN7S7689C32v8Ev();
extern void _ZN7S7689C83v41Ev();
extern void _ZN7S7689C83v42Ev();
extern void _ZN7S7689C83v43Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C8__7S7689C1[] = {
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  ABISELECT(-56,-28),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&_ZN7S7689C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7689C83v41Ev,
  (VTBL_ENTRY)&_ZN7S7689C83v42Ev,
  (VTBL_ENTRY)&_ZN7S7689C83v43Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n88_N7S7689C8D1Ev,_ZTv0_n44_N7S7689C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7689C8D1Ev,_ZThn8_N7S7689C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7689C8D0Ev,_ZTv0_n44_N7S7689C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7689C8D0Ev,_ZThn8_N7S7689C8D0Ev)() __attribute__((weak));
extern void _ZN7S7689C23v16Ev();
extern void _ZN7S7689C23v17Ev();
extern void _ZN7S7689C23v18Ev();
extern void _ZN7S7689C23v19Ev();
extern void _ZN7S7689C23v20Ev();
extern void _ZN7S7689C23v21Ev();
extern void _ZN7S7689C23v22Ev();
extern void _ZN7S7689C23v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C2__7S7689C8__7S7689C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7689C8D1Ev,_ZTv0_n44_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7689C8D0Ev,_ZTv0_n44_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v23Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7689C8D1Ev,_ZTv0_n12_N7S7689C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7689C8D0Ev,_ZTv0_n12_N7S7689C8D0Ev)();
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C3__7S7689C8__7S7689C1[] = {
  0,
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C8D1Ev,_ZTv0_n12_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C8D0Ev,_ZTv0_n12_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n64_N7S7689C8D1Ev,_ZTv0_n32_N7S7689C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7689C8D0Ev,_ZTv0_n32_N7S7689C8D0Ev)();
extern void _ZN7S7689C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C4__7S7689C8__7S7689C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(56,28),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C8D1Ev,_ZTv0_n32_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C8D0Ev,_ZTv0_n32_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
};
extern void ABISELECT(_ZTvn16_n64_N7S7689C8D1Ev,_ZTvn8_n32_N7S7689C8D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7689C8D0Ev,_ZTvn8_n32_N7S7689C8D0Ev)();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C67S7689C4__7S7689C8__7S7689C1[] = {
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C8D1Ev,_ZTvn8_n32_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C8D0Ev,_ZTvn8_n32_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N7S7689C8D1Ev,_ZTvn12_n32_N7S7689C8D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S7689C8D0Ev,_ZTvn12_n32_N7S7689C8D0Ev)();
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C37S7689C4__A1__7S7689C8__7S7689C1[] = {
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C8D1Ev,_ZTvn12_n32_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C8D0Ev,_ZTvn12_n32_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7689C8D1Ev,_ZTv0_n12_N7S7689C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7689C8D0Ev,_ZTv0_n12_N7S7689C8D0Ev)();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C6__A1__7S7689C8__7S7689C1[] = {
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C8D1Ev,_ZTv0_n12_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C8D0Ev,_ZTv0_n12_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7689C8D1Ev,_ZTv0_n16_N7S7689C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S7689C8D1Ev,_ZThn20_N7S7689C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7689C8D0Ev,_ZTv0_n16_N7S7689C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S7689C8D0Ev,_ZThn20_N7S7689C8D0Ev)() __attribute__((weak));
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C9__7S7689C8__7S7689C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7689C8D1Ev,_ZTv0_n16_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7689C8D0Ev,_ZTv0_n16_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C5__A2__7S7689C8__7S7689C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7689C8D1Ev,_ZTv0_n24_N7S7689C8D1Ev)();
extern void ABISELECT(_ZThn72_N7S7689C8D1Ev,_ZThn36_N7S7689C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7689C8D0Ev,_ZTv0_n24_N7S7689C8D0Ev)();
extern void ABISELECT(_ZThn72_N7S7689C8D0Ev,_ZThn36_N7S7689C8D0Ev)() __attribute__((weak));
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
extern void _ZN8S7689C103v35Ev();
extern void _ZN8S7689C103v36Ev();
extern void _ZN8S7689C103v37Ev();
extern void _ZN8S7689C103v38Ev();
extern void _ZN8S7689C103v39Ev();
extern void _ZN8S7689C103v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7689C10__7S7689C8__7S7689C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-128,-64),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7689C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7689C8D1Ev,_ZTv0_n24_N7S7689C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7689C8D0Ev,_ZTv0_n24_N7S7689C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v36Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v37Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v38Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v39Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v40Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void _ZN7S7689C2D1Ev();
extern void _ZN7S7689C2D0Ev();
extern void _ZN7S7689C23v16Ev();
extern void _ZN7S7689C23v17Ev();
extern void _ZN7S7689C23v18Ev();
extern void _ZN7S7689C23v19Ev();
extern void _ZN7S7689C23v20Ev();
extern void _ZN7S7689C23v21Ev();
extern void _ZN7S7689C23v22Ev();
extern void _ZN7S7689C23v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C2__A1__7S7689C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7689C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7689C23v23Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev)();
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C3__7S7689C2__A1__7S7689C1[] = {
  0,
  ABISELECT(80,40),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev)();
extern void _ZN7S7689C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C4__7S7689C2__A1__7S7689C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(72,36),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
};
extern void ABISELECT(_ZTvn16_n64_N7S7689C2D1Ev,_ZTvn8_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7689C2D0Ev,_ZTvn8_n32_N7S7689C2D0Ev)();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C67S7689C4__7S7689C2__A1__7S7689C1[] = {
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C2D1Ev,_ZTvn8_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7689C2D0Ev,_ZTvn8_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N7S7689C2D1Ev,_ZTvn12_n32_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S7689C2D0Ev,_ZTvn12_n32_N7S7689C2D0Ev)();
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C37S7689C4__A1__7S7689C2__A1__7S7689C1[] = {
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C2D1Ev,_ZTvn12_n32_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7689C2D0Ev,_ZTvn12_n32_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev)();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C6__A1__7S7689C2__A1__7S7689C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7689C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void _ZN7S7689C9D1Ev();
extern void _ZN7S7689C9D0Ev();
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C9__7S7689C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C5__7S7689C9__7S7689C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
extern void _ZN8S7689C10D1Ev();
extern void _ZN8S7689C10D0Ev();
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
extern void _ZN8S7689C103v35Ev();
extern void _ZN8S7689C103v36Ev();
extern void _ZN8S7689C103v37Ev();
extern void _ZN8S7689C103v38Ev();
extern void _ZN8S7689C103v39Ev();
extern void _ZN8S7689C103v40Ev();
static  VTBL_ENTRY _tg__ZTV8S7689C10__7S7689C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&_ZN8S7689C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7689C10D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v35Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v36Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v37Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v38Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v39Ev,
  (VTBL_ENTRY)&_ZN8S7689C103v40Ev,
};
extern void _ZN7S7689C9D1Ev();
extern void _ZN7S7689C9D0Ev();
extern void _ZN7S7689C93v31Ev();
extern void _ZN7S7689C93v32Ev();
extern void _ZN7S7689C93v33Ev();
extern void _ZN7S7689C93v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C98S7689C10__A1__7S7689C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7689C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7689C93v34Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C5__7S7689C98S7689C10__A1__7S7689C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7689C9[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7689C10D1Ev,_ZTv0_n12_N8S7689C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7689C10D0Ev,_ZTv0_n12_N8S7689C10D0Ev)();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C6__8S7689C10__7S7689C1[] = {
  0,
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7689C10D1Ev,_ZTv0_n12_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7689C10D0Ev,_ZTv0_n12_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
extern void ABISELECT(_ZTv0_n64_N8S7689C10D1Ev,_ZTv0_n32_N8S7689C10D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7689C10D0Ev,_ZTv0_n32_N8S7689C10D0Ev)();
extern void _ZN7S7689C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C4__8S7689C10__7S7689C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(128,64),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7689C10D1Ev,_ZTv0_n32_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7689C10D0Ev,_ZTv0_n32_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C43v15Ev,
};
extern void ABISELECT(_ZTvn16_n64_N8S7689C10D1Ev,_ZTvn8_n32_N8S7689C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S7689C10D0Ev,_ZTvn8_n32_N8S7689C10D0Ev)();
extern void _ZN7S7689C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C67S7689C4__A1__8S7689C10__7S7689C1[] = {
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S7689C10D1Ev,_ZTvn8_n32_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S7689C10D0Ev,_ZTvn8_n32_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C63v14Ev,
};
extern void ABISELECT(_ZTvn24_n64_N8S7689C10D1Ev,_ZTvn12_n32_N8S7689C10D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S7689C10D0Ev,_ZTvn12_n32_N8S7689C10D0Ev)();
extern void _ZN7S7689C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C37S7689C4__8S7689C10__7S7689C1[] = {
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S7689C10D1Ev,_ZTvn12_n32_N8S7689C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S7689C10D0Ev,_ZTvn12_n32_N8S7689C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7689C32v8Ev,
};
extern void _ZN7S7689C52v9Ev();
extern void _ZN7S7689C53v10Ev();
extern void _ZN7S7689C53v11Ev();
extern void _ZN7S7689C53v12Ev();
extern void _ZN7S7689C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7689C5__A1__8S7689C10__7S7689C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7689C10[0]),
  (VTBL_ENTRY)&_ZN7S7689C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7689C53v13Ev,
};
static  VTT_ENTRY vtt_S7689C1[] = {
  {&(_ZTV7S7689C1[11]),  11,220},
  {&(_tg__ZTV7S7689C2__A__7S7689C1[5]),  5,20},
  {&(_tg__ZTV7S7689C3__7S7689C2__A__7S7689C1[4]),  4,7},
  {&(_tg__ZTV7S7689C4__7S7689C2__A__7S7689C1[11]),  11,19},
  {&(_tg__ZTV7S7689C67S7689C4__7S7689C2__A__7S7689C1[2]),  2,5},
  {&(_tg__ZTV7S7689C37S7689C4__A1__7S7689C2__A__7S7689C1[2]),  2,5},
  {&(_tg__ZTV7S7689C6__A1__7S7689C2__A__7S7689C1[4]),  4,7},
  {&(_ZTV7S7689C1[57]),  57,220},
  {&(_ZTV7S7689C1[71]),  71,220},
  {&(_ZTV7S7689C1[81]),  81,220},
  {&(_ZTV7S7689C1[86]),  86,220},
  {&(_ZTV7S7689C1[93]),  93,220},
  {&(_ZTV7S7689C1[105]),  105,220},
  {&(_ZTV7S7689C1[126]),  126,220},
  {&(_ZTV7S7689C1[151]),  151,220},
  {&(_ZTV7S7689C1[174]),  174,220},
  {&(_ZTV7S7689C1[187]),  187,220},
  {&(_ZTV7S7689C1[208]),  208,220},
  {&(_tg__ZTV7S7689C8__7S7689C1[9]),  9,15},
  {&(_tg__ZTV7S7689C2__7S7689C8__7S7689C1[19]),  19,34},
  {&(_tg__ZTV7S7689C3__7S7689C8__7S7689C1[4]),  4,7},
  {&(_tg__ZTV7S7689C4__7S7689C8__7S7689C1[11]),  11,19},
  {&(_tg__ZTV7S7689C67S7689C4__7S7689C8__7S7689C1[2]),  2,5},
  {&(_tg__ZTV7S7689C37S7689C4__A1__7S7689C8__7S7689C1[2]),  2,5},
  {&(_tg__ZTV7S7689C6__A1__7S7689C8__7S7689C1[4]),  4,7},
  {&(_tg__ZTV7S7689C9__7S7689C8__7S7689C1[8]),  8,14},
  {&(_tg__ZTV7S7689C5__A2__7S7689C8__7S7689C1[7]),  7,12},
  {&(_tg__ZTV8S7689C10__7S7689C8__7S7689C1[16]),  16,28},
  {&(_tg__ZTV7S7689C2__A1__7S7689C1[5]),  5,20},
  {&(_tg__ZTV7S7689C3__7S7689C2__A1__7S7689C1[4]),  4,7},
  {&(_tg__ZTV7S7689C4__7S7689C2__A1__7S7689C1[11]),  11,19},
  {&(_tg__ZTV7S7689C67S7689C4__7S7689C2__A1__7S7689C1[2]),  2,5},
  {&(_tg__ZTV7S7689C37S7689C4__A1__7S7689C2__A1__7S7689C1[2]),  2,5},
  {&(_tg__ZTV7S7689C6__A1__7S7689C2__A1__7S7689C1[4]),  4,7},
  {&(_tg__ZTV7S7689C9__7S7689C1[3]),  3,9},
  {&(_tg__ZTV7S7689C5__7S7689C9__7S7689C1[7]),  7,12},
  {&(_tg__ZTV8S7689C10__7S7689C1[5]),  5,17},
  {&(_tg__ZTV7S7689C98S7689C10__A1__7S7689C1[3]),  3,9},
  {&(_tg__ZTV7S7689C5__7S7689C98S7689C10__A1__7S7689C1[7]),  7,12},
  {&(_tg__ZTV7S7689C6__8S7689C10__7S7689C1[4]),  4,7},
  {&(_tg__ZTV7S7689C4__8S7689C10__7S7689C1[11]),  11,19},
  {&(_tg__ZTV7S7689C67S7689C4__A1__8S7689C10__7S7689C1[2]),  2,5},
  {&(_tg__ZTV7S7689C37S7689C4__8S7689C10__7S7689C1[2]),  2,5},
  {&(_tg__ZTV7S7689C5__A1__8S7689C10__7S7689C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7689C1[];
extern  VTBL_ENTRY _ZTV7S7689C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7689C1[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7689C8D0Ev,_ZTv0_n24_N7S7689C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7689C8D0Ev,_ZThn36_N7S7689C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7689C8D1Ev,_ZTv0_n24_N7S7689C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7689C8D1Ev,_ZThn36_N7S7689C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7689C8D0Ev,_ZTv0_n16_N7S7689C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7689C8D0Ev,_ZThn20_N7S7689C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7689C8D1Ev,_ZTv0_n16_N7S7689C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7689C8D1Ev,_ZThn20_N7S7689C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7689C8D0Ev,_ZTv0_n44_N7S7689C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7689C8D0Ev,_ZThn8_N7S7689C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7689C8D1Ev,_ZTv0_n44_N7S7689C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7689C8D1Ev,_ZThn8_N7S7689C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7689C2D0Ev,_ZTv0_n32_N7S7689C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7689C2D0Ev,_ZThn32_N7S7689C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7689C2D1Ev,_ZTv0_n32_N7S7689C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7689C2D1Ev,_ZThn32_N7S7689C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7689C2D0Ev,_ZTv0_n12_N7S7689C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7689C2D0Ev,_ZThn48_N7S7689C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7689C2D0Ev,_ZThn28_N7S7689C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7689C2D1Ev,_ZTv0_n12_N7S7689C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7689C2D1Ev,_ZThn48_N7S7689C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7689C2D1Ev,_ZThn28_N7S7689C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7689C1D0Ev,_ZTv0_n24_N7S7689C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7689C1D0Ev,_ZThn96_N7S7689C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7689C1D1Ev,_ZTv0_n24_N7S7689C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7689C1D1Ev,_ZThn96_N7S7689C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7689C1D0Ev,_ZTv0_n16_N7S7689C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7689C1D0Ev,_ZThn80_N7S7689C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7689C1D1Ev,_ZTv0_n16_N7S7689C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7689C1D1Ev,_ZThn80_N7S7689C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7689C1D0Ev,_ZTv0_n44_N7S7689C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7689C1D0Ev,_ZThn68_N7S7689C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7689C1D1Ev,_ZTv0_n44_N7S7689C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7689C1D1Ev,_ZThn68_N7S7689C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7689C1D0Ev,_ZTv0_n40_N7S7689C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7689C1D0Ev,_ZThn60_N7S7689C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7689C1D1Ev,_ZTv0_n40_N7S7689C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7689C1D1Ev,_ZThn60_N7S7689C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7689C1D0Ev,_ZTv0_n32_N7S7689C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7689C1D0Ev,_ZThn32_N7S7689C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7689C1D1Ev,_ZTv0_n32_N7S7689C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7689C1D1Ev,_ZThn32_N7S7689C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7689C1D0Ev,_ZTv0_n12_N7S7689C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7689C1D0Ev,_ZThn48_N7S7689C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7689C1D0Ev,_ZThn28_N7S7689C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7689C1D1Ev,_ZTv0_n12_N7S7689C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7689C1D1Ev,_ZThn48_N7S7689C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7689C1D1Ev,_ZThn28_N7S7689C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7689C1 = {  "S7689C1", // class name
  bases_S7689C1, 21,
  &(vtc_S7689C1[0]), // expected_vtbl_contents
  &(vtt_S7689C1[0]), // expected_vtt_contents
  ABISELECT(256,152), // object size
  NSPAIRA(_ZTI7S7689C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7689C1),220, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7689C1),44, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6668C4_nt  {
  virtual void  v8(); // _ZN10S6668C4_nt2v8Ev
  virtual void  v9(); // _ZN10S6668C4_nt2v9Ev
  virtual void  v10(); // _ZN10S6668C4_nt3v10Ev
  ~S6668C4_nt(); // tgen
  S6668C4_nt(); // tgen
};
//SIG(-1 S6668C4_nt) C1{ v1 v2 v3}


void  S6668C4_nt ::v8(){vfunc_called(this, "_ZN10S6668C4_nt2v8Ev");}
void  S6668C4_nt ::v9(){vfunc_called(this, "_ZN10S6668C4_nt2v9Ev");}
void  S6668C4_nt ::v10(){vfunc_called(this, "_ZN10S6668C4_nt3v10Ev");}
S6668C4_nt ::~S6668C4_nt(){ note_dtor("S6668C4_nt", this);} // tgen
S6668C4_nt ::S6668C4_nt(){ note_ctor("S6668C4_nt", this);} // tgen

//skip512 S6668C4_nt

#else // __cplusplus

extern void _ZN10S6668C4_ntC1Ev();
extern void _ZN10S6668C4_ntD1Ev();
Name_Map name_map_S6668C4_nt[] = {
  NSPAIR(_ZN10S6668C4_ntC1Ev),
  NSPAIR(_ZN10S6668C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY vtc_S6668C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6668C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
VTBL_ENTRY *P__ZTI10S6668C4_nt = _ZTI10S6668C4_nt; 
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
Class_Descriptor cd_S6668C4_nt = {  "S6668C4_nt", // class name
  0,0,//no base classes
  &(vtc_S6668C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6668C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6668C4_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  S6668C3  : S6668C4_nt {
  virtual  ~S6668C3(); // _ZN7S6668C3D1Ev
  virtual void  v11(); // _ZN7S6668C33v11Ev
  S6668C3(); // tgen
};
//SIG(-1 S6668C3) C1{ BC2{ v2 v3 v4} vd v1}


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

static void Test_S6668C3()
{
  extern Class_Descriptor cd_S6668C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6668C3, buf);
    S6668C3 *dp, &lv = *(dp=new (buf) S6668C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6668C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6668C3)");
    check_base_class_offset(lv, (S6668C4_nt*), 0, "S6668C3");
    test_class_info(&lv, &cd_S6668C3);
    dp->~S6668C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6668C3(Test_S6668C3, "S6668C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6668C3C1Ev();
extern void _ZN7S6668C3D1Ev();
Name_Map name_map_S6668C3[] = {
  NSPAIR(_ZN7S6668C3C1Ev),
  NSPAIR(_ZN7S6668C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
static Base_Class bases_S6668C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6668C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6668C3[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN7S6668C3D1Ev();
extern void _ZN7S6668C3D0Ev();
extern void _ZN7S6668C33v11Ev();
static  VTBL_ENTRY vtc_S6668C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C3[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S6668C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6668C3D0Ev,
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
};
extern VTBL_ENTRY _ZTI7S6668C3[];
extern  VTBL_ENTRY _ZTV7S6668C3[];
Class_Descriptor cd_S6668C3 = {  "S6668C3", // class name
  bases_S6668C3, 1,
  &(vtc_S6668C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6668C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6668C3),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  S6668C2  {
  ::S6668C3 s6668c2f0;
  virtual void  v3(); // _ZN7S6668C22v3Ev
  virtual void  v4(); // _ZN7S6668C22v4Ev
  ~S6668C2(); // tgen
  S6668C2(); // tgen
};
//SIG(-1 S6668C2) C1{ v1 v2 FC2{ BC3{ v4 v5 v6} vd v3}}


void  S6668C2 ::v3(){vfunc_called(this, "_ZN7S6668C22v3Ev");}
void  S6668C2 ::v4(){vfunc_called(this, "_ZN7S6668C22v4Ev");}
S6668C2 ::~S6668C2(){ note_dtor("S6668C2", this);} // tgen
S6668C2 ::S6668C2(){ note_ctor("S6668C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6668C2C1Ev();
extern void _ZN7S6668C2D1Ev();
Name_Map name_map_S6668C2[] = {
  NSPAIR(_ZN7S6668C2C1Ev),
  NSPAIR(_ZN7S6668C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6668C2[];
extern void _ZN7S6668C22v3Ev();
extern void _ZN7S6668C22v4Ev();
static  VTBL_ENTRY vtc_S6668C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C2[0]),
  (VTBL_ENTRY)&_ZN7S6668C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6668C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6668C2[];
extern  VTBL_ENTRY _ZTV7S6668C2[];
Class_Descriptor cd_S6668C2 = {  "S6668C2", // class name
  0,0,//no base classes
  &(vtc_S6668C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6668C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6668C2),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  S6668C6  {
  virtual void  v5(); // _ZN7S6668C62v5Ev
  virtual void  v6(); // _ZN7S6668C62v6Ev
  virtual void  v7(); // _ZN7S6668C62v7Ev
  ~S6668C6(); // tgen
  S6668C6(); // tgen
};
//SIG(-1 S6668C6) C1{ v1 v2 v3}


void  S6668C6 ::v5(){vfunc_called(this, "_ZN7S6668C62v5Ev");}
void  S6668C6 ::v6(){vfunc_called(this, "_ZN7S6668C62v6Ev");}
void  S6668C6 ::v7(){vfunc_called(this, "_ZN7S6668C62v7Ev");}
S6668C6 ::~S6668C6(){ note_dtor("S6668C6", this);} // tgen
S6668C6 ::S6668C6(){ note_ctor("S6668C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6668C6C1Ev();
extern void _ZN7S6668C6D1Ev();
Name_Map name_map_S6668C6[] = {
  NSPAIR(_ZN7S6668C6C1Ev),
  NSPAIR(_ZN7S6668C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6668C6[];
extern void _ZN7S6668C62v5Ev();
extern void _ZN7S6668C62v6Ev();
extern void _ZN7S6668C62v7Ev();
static  VTBL_ENTRY vtc_S6668C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C6[0]),
  (VTBL_ENTRY)&_ZN7S6668C62v5Ev,
  (VTBL_ENTRY)&_ZN7S6668C62v6Ev,
  (VTBL_ENTRY)&_ZN7S6668C62v7Ev,
};
extern VTBL_ENTRY _ZTI7S6668C6[];
extern  VTBL_ENTRY _ZTV7S6668C6[];
Class_Descriptor cd_S6668C6 = {  "S6668C6", // class name
  0,0,//no base classes
  &(vtc_S6668C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6668C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6668C6),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  S6668C10  : virtual S6668C3 , virtual S6668C4_nt {
  int s6668c10f0;
  virtual void  v12(); // _ZN8S6668C103v12Ev
  virtual void  v13(); // _ZN8S6668C103v13Ev
  ~S6668C10(); // tgen
  S6668C10(); // tgen
};
//SIG(-1 S6668C10) C1{ VBC2{ BC3{ v3 v4 v5} vd v6} VBC3 v1 v2 Fi}


void  S6668C10 ::v12(){vfunc_called(this, "_ZN8S6668C103v12Ev");}
void  S6668C10 ::v13(){vfunc_called(this, "_ZN8S6668C103v13Ev");}
S6668C10 ::~S6668C10(){ note_dtor("S6668C10", this);} // tgen
S6668C10 ::S6668C10(){ note_ctor("S6668C10", this);} // tgen

static void Test_S6668C10()
{
  extern Class_Descriptor cd_S6668C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6668C10, buf);
    S6668C10 *dp, &lv = *(dp=new (buf) S6668C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6668C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6668C10)");
    check_base_class_offset(lv, (S6668C4_nt*)(S6668C3*), 0, "S6668C10");
    check_base_class_offset(lv, (S6668C3*), 0, "S6668C10");
    /*is_ambiguous_... S6668C10::S6668C4_nt */ AMB_check_base_class_offset(lv, (S6668C4_nt*), ABISELECT(16,8), "S6668C10");
    check_field_offset(lv, s6668c10f0, ABISELECT(8,4), "S6668C10.s6668c10f0");
    test_class_info(&lv, &cd_S6668C10);
    dp->~S6668C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6668C10(Test_S6668C10, "S6668C10", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S6668C10C1Ev();
extern void _ZN8S6668C10D1Ev();
Name_Map name_map_S6668C10[] = {
  NSPAIR(_ZN8S6668C10C1Ev),
  NSPAIR(_ZN8S6668C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C3;
extern VTBL_ENTRY _ZTI7S6668C3[];
extern  VTBL_ENTRY _ZTV7S6668C3[];
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
static Base_Class bases_S6668C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6668C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6668C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6668C4_nt,    ABISELECT(16,8), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6668C10[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN8S6668C10D1Ev();
extern void _ZN8S6668C10D0Ev();
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY vtc_S6668C10[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S6668C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6668C10D0Ev,
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV8S6668C10[];
static  VTT_ENTRY vtt_S6668C10[] = {
  {&(_ZTV8S6668C10[9]),  9,25},
  {&(_ZTV8S6668C10[9]),  9,25},
  {&(_ZTV8S6668C10[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S6668C10[];
extern  VTBL_ENTRY _ZTV8S6668C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C10[];
Class_Descriptor cd_S6668C10 = {  "S6668C10", // class name
  bases_S6668C10, 3,
  &(vtc_S6668C10[0]), // expected_vtbl_contents
  &(vtt_S6668C10[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S6668C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6668C10),25, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6668C10),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6668C9  : S6668C10 {
  virtual  ~S6668C9(); // _ZN7S6668C9D2Ev
  virtual void  v14(); // _ZN7S6668C93v14Ev
  S6668C9(); // tgen
};
//SIG(-1 S6668C9) C1{ BC2{ VBC3{ BC4{ v2 v3 v4} vd v5} VBC4 v6 v7 Fi} vd v1}


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

static void Test_S6668C9()
{
  extern Class_Descriptor cd_S6668C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6668C9, buf);
    S6668C9 *dp, &lv = *(dp=new (buf) S6668C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6668C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6668C9)");
    check_base_class_offset(lv, (S6668C4_nt*)(S6668C3*), 0, "S6668C9");
    check_base_class_offset(lv, (S6668C3*)(S6668C10*), 0, "S6668C9");
    /*is_ambiguous_... S6668C10::S6668C4_nt */ AMB_check_base_class_offset(lv, (S6668C4_nt*)(S6668C10*), ABISELECT(16,8), "S6668C9");
    check_base_class_offset(lv, (S6668C10*), 0, "S6668C9");
    test_class_info(&lv, &cd_S6668C9);
    dp->~S6668C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6668C9(Test_S6668C9, "S6668C9", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6668C9C1Ev();
extern void _ZN7S6668C9D2Ev();
Name_Map name_map_S6668C9[] = {
  NSPAIR(_ZN7S6668C9C1Ev),
  NSPAIR(_ZN7S6668C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C3;
extern VTBL_ENTRY _ZTI7S6668C3[];
extern  VTBL_ENTRY _ZTV7S6668C3[];
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C10;
extern VTBL_ENTRY _ZTI8S6668C10[];
extern  VTBL_ENTRY _ZTV8S6668C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C10[];
static Base_Class bases_S6668C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6668C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6668C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6668C4_nt,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6668C10,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6668C9[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN7S6668C9D1Ev();
extern void _ZN7S6668C9D0Ev();
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY vtc_S6668C9[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S6668C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6668C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV7S6668C9[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN8S6668C10D1Ev();
extern void _ZN8S6668C10D0Ev();
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
static  VTBL_ENTRY _tg__ZTV8S6668C10__7S6668C9[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S6668C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6668C10D0Ev,
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__8S6668C10__7S6668C9[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
static  VTT_ENTRY vtt_S6668C9[] = {
  {&(_ZTV7S6668C9[9]),  9,26},
  {&(_tg__ZTV8S6668C10__7S6668C9[9]),  9,17},
  {&(_tg__ZTV8S6668C10__7S6668C9[9]),  9,17},
  {&(_tg__ZTV10S6668C4_nt__A1__8S6668C10__7S6668C9[5]),  5,8},
  {&(_ZTV7S6668C9[9]),  9,26},
  {&(_ZTV7S6668C9[23]),  23,26},
};
extern VTBL_ENTRY _ZTI7S6668C9[];
extern  VTBL_ENTRY _ZTV7S6668C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C9[];
Class_Descriptor cd_S6668C9 = {  "S6668C9", // class name
  bases_S6668C9, 4,
  &(vtc_S6668C9[0]), // expected_vtbl_contents
  &(vtt_S6668C9[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6668C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6668C9),26, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6668C9),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  S6668C8  : S6668C9 {
  virtual void  v15(); // _ZN7S6668C83v15Ev
  virtual void  v16(); // _ZN7S6668C83v16Ev
  ~S6668C8(); // tgen
  S6668C8(); // tgen
};
//SIG(-1 S6668C8) C1{ BC2{ BC3{ VBC4{ BC5{ v3 v4 v5} vd v6} VBC5 v7 v8 Fi} vd v9} v1 v2}


void  S6668C8 ::v15(){vfunc_called(this, "_ZN7S6668C83v15Ev");}
void  S6668C8 ::v16(){vfunc_called(this, "_ZN7S6668C83v16Ev");}
S6668C8 ::~S6668C8(){ note_dtor("S6668C8", this);} // tgen
S6668C8 ::S6668C8(){ note_ctor("S6668C8", this);} // tgen

static void Test_S6668C8()
{
  extern Class_Descriptor cd_S6668C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6668C8, buf);
    S6668C8 *dp, &lv = *(dp=new (buf) S6668C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6668C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6668C8)");
    check_base_class_offset(lv, (S6668C4_nt*)(S6668C3*), 0, "S6668C8");
    check_base_class_offset(lv, (S6668C3*)(S6668C10*)(S6668C9*), 0, "S6668C8");
    /*is_ambiguous_... S6668C10::S6668C4_nt */ AMB_check_base_class_offset(lv, (S6668C4_nt*)(S6668C10*)(S6668C9*), ABISELECT(16,8), "S6668C8");
    check_base_class_offset(lv, (S6668C10*)(S6668C9*), 0, "S6668C8");
    check_base_class_offset(lv, (S6668C9*), 0, "S6668C8");
    test_class_info(&lv, &cd_S6668C8);
    dp->~S6668C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6668C8(Test_S6668C8, "S6668C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6668C8C1Ev();
extern void _ZN7S6668C8D1Ev();
Name_Map name_map_S6668C8[] = {
  NSPAIR(_ZN7S6668C8C1Ev),
  NSPAIR(_ZN7S6668C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C3;
extern VTBL_ENTRY _ZTI7S6668C3[];
extern  VTBL_ENTRY _ZTV7S6668C3[];
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C10;
extern VTBL_ENTRY _ZTI8S6668C10[];
extern  VTBL_ENTRY _ZTV8S6668C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C10[];
extern Class_Descriptor cd_S6668C9;
extern VTBL_ENTRY _ZTI7S6668C9[];
extern  VTBL_ENTRY _ZTV7S6668C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C9[];
static Base_Class bases_S6668C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6668C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6668C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6668C4_nt,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6668C10,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6668C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6668C8[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN7S6668C8D1Ev();
extern void _ZN7S6668C8D0Ev();
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN7S6668C83v15Ev();
extern void _ZN7S6668C83v16Ev();
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY vtc_S6668C8[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C8[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S6668C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6668C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v15Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v16Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6668C8[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV7S6668C8[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN7S6668C9D1Ev();
extern void _ZN7S6668C9D0Ev();
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C9__7S6668C8[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S6668C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6668C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev)();
extern void _ZN8S6668C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev)();
extern void _ZN8S6668C10D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
static  VTBL_ENTRY _tg__ZTV8S6668C107S6668C9__7S6668C8[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C9__7S6668C8[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__7S6668C9__7S6668C8[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
static  VTT_ENTRY vtt_S6668C8[] = {
  {&(_ZTV7S6668C8[9]),  9,28},
  {&(_tg__ZTV7S6668C9__7S6668C8[9]),  9,18},
  {&(_tg__ZTV8S6668C107S6668C9__7S6668C8[9]),  9,17},
  {&(_tg__ZTV8S6668C107S6668C9__7S6668C8[9]),  9,17},
  {&(_tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C9__7S6668C8[5]),  5,8},
  {&(_tg__ZTV7S6668C9__7S6668C8[9]),  9,18},
  {&(_tg__ZTV10S6668C4_nt__A1__7S6668C9__7S6668C8[5]),  5,8},
  {&(_ZTV7S6668C8[9]),  9,28},
  {&(_ZTV7S6668C8[25]),  25,28},
};
extern VTBL_ENTRY _ZTI7S6668C8[];
extern  VTBL_ENTRY _ZTV7S6668C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C8[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6668C8 = {  "S6668C8", // class name
  bases_S6668C8, 5,
  &(vtc_S6668C8[0]), // expected_vtbl_contents
  &(vtt_S6668C8[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6668C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6668C8),28, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6668C8),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6668C7  : virtual S6668C8 {
  int s6668c7f0;
  virtual void  v17(); // _ZN7S6668C73v17Ev
  virtual void  v18(); // _ZN7S6668C73v18Ev
  virtual void  v19(); // _ZN7S6668C73v19Ev
  virtual void  v20(); // _ZN7S6668C73v20Ev
  virtual void  v21(); // _ZN7S6668C73v21Ev
  virtual void  v22(); // _ZN7S6668C73v22Ev
  virtual void  v23(); // _ZN7S6668C73v23Ev
  virtual void  v24(); // _ZN7S6668C73v24Ev
  ~S6668C7(); // tgen
  S6668C7(); // tgen
};
//SIG(-1 S6668C7) C1{ VBC2{ BC3{ BC4{ VBC5{ BC6{ v9 v10 v11} vd v12} VBC6 v13 v14 Fi} vd v15} v16 v17} v1 v2 v3 v4 v5 v6 v7 v8 Fi}


void  S6668C7 ::v17(){vfunc_called(this, "_ZN7S6668C73v17Ev");}
void  S6668C7 ::v18(){vfunc_called(this, "_ZN7S6668C73v18Ev");}
void  S6668C7 ::v19(){vfunc_called(this, "_ZN7S6668C73v19Ev");}
void  S6668C7 ::v20(){vfunc_called(this, "_ZN7S6668C73v20Ev");}
void  S6668C7 ::v21(){vfunc_called(this, "_ZN7S6668C73v21Ev");}
void  S6668C7 ::v22(){vfunc_called(this, "_ZN7S6668C73v22Ev");}
void  S6668C7 ::v23(){vfunc_called(this, "_ZN7S6668C73v23Ev");}
void  S6668C7 ::v24(){vfunc_called(this, "_ZN7S6668C73v24Ev");}
S6668C7 ::~S6668C7(){ note_dtor("S6668C7", this);} // tgen
S6668C7 ::S6668C7(){ note_ctor("S6668C7", this);} // tgen

static void Test_S6668C7()
{
  extern Class_Descriptor cd_S6668C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6668C7, buf);
    S6668C7 *dp, &lv = *(dp=new (buf) S6668C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6668C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6668C7)");
    check_base_class_offset(lv, (S6668C4_nt*)(S6668C3*), ABISELECT(16,8), "S6668C7");
    check_base_class_offset(lv, (S6668C3*)(S6668C10*)(S6668C9*)(S6668C8*), ABISELECT(16,8), "S6668C7");
    /*is_ambiguous_... S6668C10::S6668C4_nt */ AMB_check_base_class_offset(lv, (S6668C4_nt*)(S6668C10*)(S6668C9*)(S6668C8*), 0, "S6668C7");
    check_base_class_offset(lv, (S6668C10*)(S6668C9*)(S6668C8*), ABISELECT(16,8), "S6668C7");
    check_base_class_offset(lv, (S6668C9*)(S6668C8*), ABISELECT(16,8), "S6668C7");
    check_base_class_offset(lv, (S6668C8*), ABISELECT(16,8), "S6668C7");
    check_field_offset(lv, s6668c7f0, ABISELECT(8,4), "S6668C7.s6668c7f0");
    test_class_info(&lv, &cd_S6668C7);
    dp->~S6668C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6668C7(Test_S6668C7, "S6668C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6668C7C1Ev();
extern void _ZN7S6668C7D1Ev();
Name_Map name_map_S6668C7[] = {
  NSPAIR(_ZN7S6668C7C1Ev),
  NSPAIR(_ZN7S6668C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C3;
extern VTBL_ENTRY _ZTI7S6668C3[];
extern  VTBL_ENTRY _ZTV7S6668C3[];
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C10;
extern VTBL_ENTRY _ZTI8S6668C10[];
extern  VTBL_ENTRY _ZTV8S6668C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C10[];
extern Class_Descriptor cd_S6668C9;
extern VTBL_ENTRY _ZTI7S6668C9[];
extern  VTBL_ENTRY _ZTV7S6668C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C9[];
extern Class_Descriptor cd_S6668C8;
extern VTBL_ENTRY _ZTI7S6668C8[];
extern  VTBL_ENTRY _ZTV7S6668C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C8[];
static Base_Class bases_S6668C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6668C4_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_S6668C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6668C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6668C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6668C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6668C8,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6668C7[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN7S6668C73v17Ev();
extern void _ZN7S6668C73v18Ev();
extern void _ZN7S6668C73v19Ev();
extern void _ZN7S6668C73v20Ev();
extern void _ZN7S6668C73v21Ev();
extern void _ZN7S6668C73v22Ev();
extern void _ZN7S6668C73v23Ev();
extern void _ZN7S6668C73v24Ev();
extern void _ZN7S6668C7D1Ev();
extern void _ZN7S6668C7D0Ev();
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C7D1Ev,_ZTv0_n24_N7S6668C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6668C7D1Ev,_ZThn8_N7S6668C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C7D0Ev,_ZTv0_n24_N7S6668C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S6668C7D0Ev,_ZThn8_N7S6668C7D0Ev)() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN7S6668C83v15Ev();
extern void _ZN7S6668C83v16Ev();
static  VTBL_ENTRY vtc_S6668C7[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C7[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v17Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v18Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v19Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v20Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v21Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v22Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v23Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v24Ev,
  (VTBL_ENTRY)&_ZN7S6668C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6668C7D0Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6668C7[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C7D1Ev,_ZTv0_n24_N7S6668C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C7D0Ev,_ZTv0_n24_N7S6668C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v15Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v16Ev,
};
extern VTBL_ENTRY _ZTV7S6668C7[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C8D1Ev,_ZTv0_n24_N7S6668C8D1Ev)();
extern void _ZN7S6668C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C8D0Ev,_ZTv0_n24_N7S6668C8D0Ev)();
extern void _ZN7S6668C8D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN7S6668C83v15Ev();
extern void _ZN7S6668C83v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C8__7S6668C7[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C8[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C8D1Ev,_ZTv0_n24_N7S6668C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C8D0Ev,_ZTv0_n24_N7S6668C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v15Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v16Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev)();
extern void _ZN7S6668C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev)();
extern void _ZN7S6668C9D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C97S6668C8__7S6668C7[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev)();
extern void _ZN8S6668C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev)();
extern void _ZN8S6668C10D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
static  VTBL_ENTRY _tg__ZTV8S6668C107S6668C97S6668C8__7S6668C7[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C97S6668C8__7S6668C7[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__7S6668C97S6668C8__7S6668C7[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__7S6668C8__7S6668C7[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6668C8[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
static  VTT_ENTRY vtt_S6668C7[] = {
  {&(_ZTV7S6668C7[8]),  8,46},
  {&(_ZTV7S6668C7[35]),  35,46},
  {&(_ZTV7S6668C7[35]),  35,46},
  {&(_ZTV7S6668C7[8]),  8,46},
  {&(_tg__ZTV7S6668C8__7S6668C7[9]),  9,20},
  {&(_tg__ZTV7S6668C97S6668C8__7S6668C7[9]),  9,18},
  {&(_tg__ZTV8S6668C107S6668C97S6668C8__7S6668C7[9]),  9,17},
  {&(_tg__ZTV8S6668C107S6668C97S6668C8__7S6668C7[9]),  9,17},
  {&(_tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C97S6668C8__7S6668C7[5]),  5,8},
  {&(_tg__ZTV7S6668C97S6668C8__7S6668C7[9]),  9,18},
  {&(_tg__ZTV10S6668C4_nt__A1__7S6668C97S6668C8__7S6668C7[5]),  5,8},
  {&(_tg__ZTV7S6668C8__7S6668C7[9]),  9,20},
  {&(_tg__ZTV10S6668C4_nt__A1__7S6668C8__7S6668C7[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S6668C7[];
extern  VTBL_ENTRY _ZTV7S6668C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C7[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S6668C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S6668C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C8D0Ev,_ZTv0_n24_N7S6668C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S6668C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C8D1Ev,_ZTv0_n24_N7S6668C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S6668C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C7D0Ev,_ZTv0_n24_N7S6668C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6668C7D0Ev,_ZThn8_N7S6668C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C7D1Ev,_ZTv0_n24_N7S6668C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6668C7D1Ev,_ZThn8_N7S6668C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6668C7 = {  "S6668C7", // class name
  bases_S6668C7, 6,
  &(vtc_S6668C7[0]), // expected_vtbl_contents
  &(vtt_S6668C7[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6668C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6668C7),46, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6668C7),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6668C5  : S6668C6 , virtual S6668C7 {
  void *s6668c5f0;
  long double s6668c5f1;
  virtual void  v25(); // _ZN7S6668C53v25Ev
  virtual void  v26(); // _ZN7S6668C53v26Ev
  virtual void  v27(); // _ZN7S6668C53v27Ev
  virtual void  v28(); // _ZN7S6668C53v28Ev
  virtual void  v29(); // _ZN7S6668C53v29Ev
  virtual void  v30(); // _ZN7S6668C53v30Ev
  virtual void  v31(); // _ZN7S6668C53v31Ev
  ~S6668C5(); // tgen
  S6668C5(); // tgen
};
//SIG(-1 S6668C5) C1{ BC2{ v8 v9 v10} VBC3{ VBC4{ BC5{ BC6{ VBC7{ BC8{ v11 v12 v13} vd v14} VBC8 v15 v16 Fi} vd v17} v18 v19} v20 v21 v22 v23 v24 v25 v26 v27 Fi} v1 v2 v3 v4 v5 v6 v7 Fp FD}


void  S6668C5 ::v25(){vfunc_called(this, "_ZN7S6668C53v25Ev");}
void  S6668C5 ::v26(){vfunc_called(this, "_ZN7S6668C53v26Ev");}
void  S6668C5 ::v27(){vfunc_called(this, "_ZN7S6668C53v27Ev");}
void  S6668C5 ::v28(){vfunc_called(this, "_ZN7S6668C53v28Ev");}
void  S6668C5 ::v29(){vfunc_called(this, "_ZN7S6668C53v29Ev");}
void  S6668C5 ::v30(){vfunc_called(this, "_ZN7S6668C53v30Ev");}
void  S6668C5 ::v31(){vfunc_called(this, "_ZN7S6668C53v31Ev");}
S6668C5 ::~S6668C5(){ note_dtor("S6668C5", this);} // tgen
S6668C5 ::S6668C5(){ note_ctor("S6668C5", this);} // tgen

static void Test_S6668C5()
{
  extern Class_Descriptor cd_S6668C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,10)];
    init_test(&cd_S6668C5, buf);
    S6668C5 *dp, &lv = *(dp=new (buf) S6668C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S6668C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6668C5)");
    check_base_class_offset(lv, (S6668C6*), 0, "S6668C5");
    check_base_class_offset(lv, (S6668C4_nt*)(S6668C3*), ABISELECT(48,28), "S6668C5");
    check_base_class_offset(lv, (S6668C3*)(S6668C10*)(S6668C9*)(S6668C8*), ABISELECT(48,28), "S6668C5");
    /*is_ambiguous_... S6668C10::S6668C4_nt */ AMB_check_base_class_offset(lv, (S6668C4_nt*)(S6668C10*)(S6668C9*)(S6668C8*), ABISELECT(32,20), "S6668C5");
    check_base_class_offset(lv, (S6668C10*)(S6668C9*)(S6668C8*), ABISELECT(48,28), "S6668C5");
    check_base_class_offset(lv, (S6668C9*)(S6668C8*), ABISELECT(48,28), "S6668C5");
    check_base_class_offset(lv, (S6668C8*)(S6668C7*), ABISELECT(48,28), "S6668C5");
    check_base_class_offset(lv, (S6668C7*), ABISELECT(32,20), "S6668C5");
    check_field_offset(lv, s6668c5f0, ABISELECT(8,4), "S6668C5.s6668c5f0");
    check_field_offset(lv, s6668c5f1, ABISELECT(16,8), "S6668C5.s6668c5f1");
    test_class_info(&lv, &cd_S6668C5);
    dp->~S6668C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6668C5(Test_S6668C5, "S6668C5", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S6668C5C1Ev();
extern void _ZN7S6668C5D1Ev();
Name_Map name_map_S6668C5[] = {
  NSPAIR(_ZN7S6668C5C1Ev),
  NSPAIR(_ZN7S6668C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6668C6;
extern VTBL_ENTRY _ZTI7S6668C6[];
extern  VTBL_ENTRY _ZTV7S6668C6[];
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C3;
extern VTBL_ENTRY _ZTI7S6668C3[];
extern  VTBL_ENTRY _ZTV7S6668C3[];
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C10;
extern VTBL_ENTRY _ZTI8S6668C10[];
extern  VTBL_ENTRY _ZTV8S6668C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C10[];
extern Class_Descriptor cd_S6668C9;
extern VTBL_ENTRY _ZTI7S6668C9[];
extern  VTBL_ENTRY _ZTV7S6668C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C9[];
extern Class_Descriptor cd_S6668C8;
extern VTBL_ENTRY _ZTI7S6668C8[];
extern  VTBL_ENTRY _ZTV7S6668C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C8[];
extern Class_Descriptor cd_S6668C7;
extern VTBL_ENTRY _ZTI7S6668C7[];
extern  VTBL_ENTRY _ZTV7S6668C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C7[];
static Base_Class bases_S6668C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6668C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6668C4_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
    2, //immediately_derived
  0, 0},
  {&cd_S6668C3,    ABISELECT(48,28), //bcp->offset
    -1, //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
    4, //immediately_derived
  0, 1},
  {&cd_S6668C4_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6668C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6668C9,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6668C8,    ABISELECT(48,28), //bcp->offset
    48, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6668C7,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6668C5[];
extern void _ZN7S6668C62v5Ev();
extern void _ZN7S6668C62v6Ev();
extern void _ZN7S6668C62v7Ev();
extern void _ZN7S6668C53v25Ev();
extern void _ZN7S6668C53v26Ev();
extern void _ZN7S6668C53v27Ev();
extern void _ZN7S6668C53v28Ev();
extern void _ZN7S6668C53v29Ev();
extern void _ZN7S6668C53v30Ev();
extern void _ZN7S6668C53v31Ev();
extern void _ZN7S6668C5D1Ev();
extern void _ZN7S6668C5D0Ev();
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN7S6668C73v17Ev();
extern void _ZN7S6668C73v18Ev();
extern void _ZN7S6668C73v19Ev();
extern void _ZN7S6668C73v20Ev();
extern void _ZN7S6668C73v21Ev();
extern void _ZN7S6668C73v22Ev();
extern void _ZN7S6668C73v23Ev();
extern void _ZN7S6668C73v24Ev();
extern void ABISELECT(_ZTv0_n136_N7S6668C5D1Ev,_ZTv0_n68_N7S6668C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S6668C5D1Ev,_ZThn20_N7S6668C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S6668C5D0Ev,_ZTv0_n68_N7S6668C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S6668C5D0Ev,_ZThn20_N7S6668C5D0Ev)() __attribute__((weak));
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C5D1Ev,_ZTv0_n24_N7S6668C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6668C5D1Ev,_ZThn28_N7S6668C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C5D0Ev,_ZTv0_n24_N7S6668C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6668C5D0Ev,_ZThn28_N7S6668C5D0Ev)() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN7S6668C83v15Ev();
extern void _ZN7S6668C83v16Ev();
static  VTBL_ENTRY vtc_S6668C5[] = {
  ABISELECT(32,20),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C5[0]),
  (VTBL_ENTRY)&_ZN7S6668C62v5Ev,
  (VTBL_ENTRY)&_ZN7S6668C62v6Ev,
  (VTBL_ENTRY)&_ZN7S6668C62v7Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v25Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v26Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v27Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v28Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v29Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v30Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v31Ev,
  (VTBL_ENTRY)&_ZN7S6668C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6668C5D0Ev,
  ABISELECT(-32,-20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6668C5[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v17Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v18Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v19Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v20Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v21Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v22Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v23Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S6668C5D1Ev,_ZTv0_n68_N7S6668C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S6668C5D0Ev,_ZTv0_n68_N7S6668C5D0Ev),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-48,-28),
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6668C5[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C5D1Ev,_ZTv0_n24_N7S6668C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C5D0Ev,_ZTv0_n24_N7S6668C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v15Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v16Ev,
};
extern VTBL_ENTRY _ZTV7S6668C5[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN7S6668C73v17Ev();
extern void _ZN7S6668C73v18Ev();
extern void _ZN7S6668C73v19Ev();
extern void _ZN7S6668C73v20Ev();
extern void _ZN7S6668C73v21Ev();
extern void _ZN7S6668C73v22Ev();
extern void _ZN7S6668C73v23Ev();
extern void _ZN7S6668C73v24Ev();
extern void _ZN7S6668C7D1Ev();
extern void _ZN7S6668C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C7__7S6668C5[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C7[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v17Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v18Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v19Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v20Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v21Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v22Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v23Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v24Ev,
  (VTBL_ENTRY)&_ZN7S6668C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6668C7D0Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C7D1Ev,_ZTv0_n24_N7S6668C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6668C7D1Ev,_ZThn8_N7S6668C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C7D0Ev,_ZTv0_n24_N7S6668C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S6668C7D0Ev,_ZThn8_N7S6668C7D0Ev)() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN7S6668C83v15Ev();
extern void _ZN7S6668C83v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C8__7S6668C7__7S6668C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6668C7[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C7D1Ev,_ZTv0_n24_N7S6668C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C7D0Ev,_ZTv0_n24_N7S6668C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v15Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v16Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C8D1Ev,_ZTv0_n24_N7S6668C8D1Ev)();
extern void _ZN7S6668C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C8D0Ev,_ZTv0_n24_N7S6668C8D0Ev)();
extern void _ZN7S6668C8D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN7S6668C83v15Ev();
extern void _ZN7S6668C83v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C8__7S6668C5[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C8[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C8D1Ev,_ZTv0_n24_N7S6668C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C8D0Ev,_ZTv0_n24_N7S6668C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v15Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v16Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev)();
extern void _ZN7S6668C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev)();
extern void _ZN7S6668C9D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C97S6668C8__7S6668C5[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev)();
extern void _ZN8S6668C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev)();
extern void _ZN8S6668C10D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
static  VTBL_ENTRY _tg__ZTV8S6668C107S6668C97S6668C8__7S6668C5[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C97S6668C8__7S6668C5[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__7S6668C97S6668C8__7S6668C5[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__7S6668C8__7S6668C5[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6668C8[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
static  VTT_ENTRY vtt_S6668C5[] = {
  {&(_ZTV7S6668C5[6]),  6,73},
  {&(_ZTV7S6668C5[35]),  35,73},
  {&(_ZTV7S6668C5[62]),  62,73},
  {&(_ZTV7S6668C5[62]),  62,73},
  {&(_ZTV7S6668C5[35]),  35,73},
  {&(_tg__ZTV7S6668C7__7S6668C5[8]),  8,21},
  {&(_tg__ZTV7S6668C8__7S6668C7__7S6668C5[14]),  14,25},
  {&(_tg__ZTV7S6668C8__7S6668C7__7S6668C5[14]),  14,25},
  {&(_tg__ZTV7S6668C7__7S6668C5[8]),  8,21},
  {&(_tg__ZTV7S6668C8__7S6668C5[9]),  9,20},
  {&(_tg__ZTV7S6668C97S6668C8__7S6668C5[9]),  9,18},
  {&(_tg__ZTV8S6668C107S6668C97S6668C8__7S6668C5[9]),  9,17},
  {&(_tg__ZTV8S6668C107S6668C97S6668C8__7S6668C5[9]),  9,17},
  {&(_tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C97S6668C8__7S6668C5[5]),  5,8},
  {&(_tg__ZTV7S6668C97S6668C8__7S6668C5[9]),  9,18},
  {&(_tg__ZTV10S6668C4_nt__A1__7S6668C97S6668C8__7S6668C5[5]),  5,8},
  {&(_tg__ZTV7S6668C8__7S6668C5[9]),  9,20},
  {&(_tg__ZTV10S6668C4_nt__A1__7S6668C8__7S6668C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S6668C5[];
extern  VTBL_ENTRY _ZTV7S6668C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C5[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S6668C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S6668C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C8D0Ev,_ZTv0_n24_N7S6668C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S6668C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C8D1Ev,_ZTv0_n24_N7S6668C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S6668C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C7D0Ev,_ZTv0_n24_N7S6668C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6668C7D0Ev,_ZThn8_N7S6668C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C7D1Ev,_ZTv0_n24_N7S6668C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6668C7D1Ev,_ZThn8_N7S6668C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C5D0Ev,_ZTv0_n24_N7S6668C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6668C5D0Ev,_ZThn28_N7S6668C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C5D1Ev,_ZTv0_n24_N7S6668C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6668C5D1Ev,_ZThn28_N7S6668C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S6668C5D0Ev,_ZTv0_n68_N7S6668C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6668C5D0Ev,_ZThn20_N7S6668C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S6668C5D1Ev,_ZTv0_n68_N7S6668C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6668C5D1Ev,_ZThn20_N7S6668C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6668C5 = {  "S6668C5", // class name
  bases_S6668C5, 8,
  &(vtc_S6668C5[0]), // expected_vtbl_contents
  &(vtt_S6668C5[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S6668C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6668C5),73, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6668C5),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6668C12  : virtual S6668C3 , virtual S6668C9 {
  void *s6668c12f0;
  virtual void  v41(); // _ZN8S6668C123v41Ev
  virtual void  v42(); // _ZN8S6668C123v42Ev
  virtual void  v43(); // _ZN8S6668C123v43Ev
  virtual void  v44(); // _ZN8S6668C123v44Ev
  virtual void  v45(); // _ZN8S6668C123v45Ev
  virtual void  v46(); // _ZN8S6668C123v46Ev
  virtual void  v47(); // _ZN8S6668C123v47Ev
  virtual void  v48(); // _ZN8S6668C123v48Ev
  ~S6668C12(); // tgen
  S6668C12(); // tgen
};
//SIG(-1 S6668C12) C1{ VBC2{ BC3{ v9 v10 v11} vd v12} VBC4{ BC5{ VBC2 VBC3 v13 v14 Fi} vd v15} v1 v2 v3 v4 v5 v6 v7 v8 Fp}


void  S6668C12 ::v41(){vfunc_called(this, "_ZN8S6668C123v41Ev");}
void  S6668C12 ::v42(){vfunc_called(this, "_ZN8S6668C123v42Ev");}
void  S6668C12 ::v43(){vfunc_called(this, "_ZN8S6668C123v43Ev");}
void  S6668C12 ::v44(){vfunc_called(this, "_ZN8S6668C123v44Ev");}
void  S6668C12 ::v45(){vfunc_called(this, "_ZN8S6668C123v45Ev");}
void  S6668C12 ::v46(){vfunc_called(this, "_ZN8S6668C123v46Ev");}
void  S6668C12 ::v47(){vfunc_called(this, "_ZN8S6668C123v47Ev");}
void  S6668C12 ::v48(){vfunc_called(this, "_ZN8S6668C123v48Ev");}
S6668C12 ::~S6668C12(){ note_dtor("S6668C12", this);} // tgen
S6668C12 ::S6668C12(){ note_ctor("S6668C12", this);} // tgen

static void Test_S6668C12()
{
  extern Class_Descriptor cd_S6668C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6668C12, buf);
    S6668C12 *dp, &lv = *(dp=new (buf) S6668C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6668C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6668C12)");
    check_base_class_offset(lv, (S6668C4_nt*)(S6668C3*), ABISELECT(16,8), "S6668C12");
    check_base_class_offset(lv, (S6668C3*), ABISELECT(16,8), "S6668C12");
    check_base_class_offset(lv, (S6668C3*)(S6668C10*)(S6668C9*), ABISELECT(16,8), "S6668C12");
    /*is_ambiguous_... S6668C10::S6668C4_nt */ AMB_check_base_class_offset(lv, (S6668C4_nt*)(S6668C10*)(S6668C9*), 0, "S6668C12");
    check_base_class_offset(lv, (S6668C10*)(S6668C9*), ABISELECT(16,8), "S6668C12");
    check_base_class_offset(lv, (S6668C9*), ABISELECT(16,8), "S6668C12");
    check_field_offset(lv, s6668c12f0, ABISELECT(8,4), "S6668C12.s6668c12f0");
    test_class_info(&lv, &cd_S6668C12);
    dp->~S6668C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6668C12(Test_S6668C12, "S6668C12", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S6668C12C1Ev();
extern void _ZN8S6668C12D1Ev();
Name_Map name_map_S6668C12[] = {
  NSPAIR(_ZN8S6668C12C1Ev),
  NSPAIR(_ZN8S6668C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C3;
extern VTBL_ENTRY _ZTI7S6668C3[];
extern  VTBL_ENTRY _ZTV7S6668C3[];
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C10;
extern VTBL_ENTRY _ZTI8S6668C10[];
extern  VTBL_ENTRY _ZTV8S6668C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C10[];
extern Class_Descriptor cd_S6668C9;
extern VTBL_ENTRY _ZTI7S6668C9[];
extern  VTBL_ENTRY _ZTV7S6668C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C9[];
static Base_Class bases_S6668C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6668C4_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_S6668C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6668C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6668C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6668C9,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6668C12[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN8S6668C123v41Ev();
extern void _ZN8S6668C123v42Ev();
extern void _ZN8S6668C123v43Ev();
extern void _ZN8S6668C123v44Ev();
extern void _ZN8S6668C123v45Ev();
extern void _ZN8S6668C123v46Ev();
extern void _ZN8S6668C123v47Ev();
extern void _ZN8S6668C123v48Ev();
extern void _ZN8S6668C12D1Ev();
extern void _ZN8S6668C12D0Ev();
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C12D1Ev,_ZTv0_n24_N8S6668C12D1Ev)();
extern void ABISELECT(_ZThn16_N8S6668C12D1Ev,_ZThn8_N8S6668C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6668C12D0Ev,_ZTv0_n24_N8S6668C12D0Ev)();
extern void ABISELECT(_ZThn16_N8S6668C12D0Ev,_ZThn8_N8S6668C12D0Ev)() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
static  VTBL_ENTRY vtc_S6668C12[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C12[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v41Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v42Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v43Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v44Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v45Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v46Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v47Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v48Ev,
  (VTBL_ENTRY)&_ZN8S6668C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6668C12D0Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6668C12[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C12D1Ev,_ZTv0_n24_N8S6668C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C12D0Ev,_ZTv0_n24_N8S6668C12D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
};
extern VTBL_ENTRY _ZTV8S6668C12[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev)();
extern void _ZN7S6668C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev)();
extern void _ZN7S6668C9D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C9__8S6668C12[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev)();
extern void _ZN8S6668C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev)();
extern void _ZN8S6668C10D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
static  VTBL_ENTRY _tg__ZTV8S6668C107S6668C9__8S6668C12[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C9__8S6668C12[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__7S6668C9__8S6668C12[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
static  VTT_ENTRY vtt_S6668C12[] = {
  {&(_ZTV8S6668C12[8]),  8,42},
  {&(_ZTV8S6668C12[33]),  33,42},
  {&(_ZTV8S6668C12[33]),  33,42},
  {&(_ZTV8S6668C12[8]),  8,42},
  {&(_tg__ZTV7S6668C9__8S6668C12[9]),  9,18},
  {&(_tg__ZTV8S6668C107S6668C9__8S6668C12[9]),  9,17},
  {&(_tg__ZTV8S6668C107S6668C9__8S6668C12[9]),  9,17},
  {&(_tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C9__8S6668C12[5]),  5,8},
  {&(_tg__ZTV7S6668C9__8S6668C12[9]),  9,18},
  {&(_tg__ZTV10S6668C4_nt__A1__7S6668C9__8S6668C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S6668C12[];
extern  VTBL_ENTRY _ZTV8S6668C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C12[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S6668C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S6668C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C12D0Ev,_ZTv0_n24_N8S6668C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6668C12D0Ev,_ZThn8_N8S6668C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C12D1Ev,_ZTv0_n24_N8S6668C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6668C12D1Ev,_ZThn8_N8S6668C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6668C12 = {  "S6668C12", // class name
  bases_S6668C12, 5,
  &(vtc_S6668C12[0]), // expected_vtbl_contents
  &(vtt_S6668C12[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S6668C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6668C12),42, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6668C12),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6668C11  : virtual S6668C12 {
  virtual  ~S6668C11(); // _ZN8S6668C11D2Ev
  virtual void  v32(); // _ZN8S6668C113v32Ev
  virtual void  v33(); // _ZN8S6668C113v33Ev
  virtual void  v34(); // _ZN8S6668C113v34Ev
  virtual void  v35(); // _ZN8S6668C113v35Ev
  virtual void  v36(); // _ZN8S6668C113v36Ev
  virtual void  v37(); // _ZN8S6668C113v37Ev
  virtual void  v38(); // _ZN8S6668C113v38Ev
  virtual void  v39(); // _ZN8S6668C113v39Ev
  virtual void  v40(); // _ZN8S6668C113v40Ev
  S6668C11(); // tgen
};
//SIG(1 S6668C11) C1{ VBC2{ VBC3{ BC4{ v10 v11 v12} vd v13} VBC5{ BC6{ VBC3 VBC4 v14 v15 Fi} vd v16} v17 v18 v19 v20 v21 v22 v23 v24 Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S6668C11 ::~S6668C11(){ note_dtor("S6668C11", this);}
void  S6668C11 ::v32(){vfunc_called(this, "_ZN8S6668C113v32Ev");}
void  S6668C11 ::v33(){vfunc_called(this, "_ZN8S6668C113v33Ev");}
void  S6668C11 ::v34(){vfunc_called(this, "_ZN8S6668C113v34Ev");}
void  S6668C11 ::v35(){vfunc_called(this, "_ZN8S6668C113v35Ev");}
void  S6668C11 ::v36(){vfunc_called(this, "_ZN8S6668C113v36Ev");}
void  S6668C11 ::v37(){vfunc_called(this, "_ZN8S6668C113v37Ev");}
void  S6668C11 ::v38(){vfunc_called(this, "_ZN8S6668C113v38Ev");}
void  S6668C11 ::v39(){vfunc_called(this, "_ZN8S6668C113v39Ev");}
void  S6668C11 ::v40(){vfunc_called(this, "_ZN8S6668C113v40Ev");}
S6668C11 ::S6668C11(){ note_ctor("S6668C11", this);} // tgen

static void Test_S6668C11()
{
  extern Class_Descriptor cd_S6668C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S6668C11, buf);
    S6668C11 *dp, &lv = *(dp=new (buf) S6668C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S6668C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6668C11)");
    check_base_class_offset(lv, (S6668C4_nt*)(S6668C3*), 0, "S6668C11");
    check_base_class_offset(lv, (S6668C3*)(S6668C12*), 0, "S6668C11");
    check_base_class_offset(lv, (S6668C3*)(S6668C10*)(S6668C9*), 0, "S6668C11");
    /*is_ambiguous_... S6668C10::S6668C4_nt */ AMB_check_base_class_offset(lv, (S6668C4_nt*)(S6668C10*)(S6668C9*), ABISELECT(8,4), "S6668C11");
    check_base_class_offset(lv, (S6668C10*)(S6668C9*), ABISELECT(24,12), "S6668C11");
    check_base_class_offset(lv, (S6668C9*)(S6668C12*), ABISELECT(24,12), "S6668C11");
    check_base_class_offset(lv, (S6668C12*), ABISELECT(8,4), "S6668C11");
    test_class_info(&lv, &cd_S6668C11);
    dp->~S6668C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6668C11(Test_S6668C11, "S6668C11", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S6668C11C1Ev();
extern void _ZN8S6668C11D2Ev();
Name_Map name_map_S6668C11[] = {
  NSPAIR(_ZN8S6668C11C1Ev),
  NSPAIR(_ZN8S6668C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C3;
extern VTBL_ENTRY _ZTI7S6668C3[];
extern  VTBL_ENTRY _ZTV7S6668C3[];
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C10;
extern VTBL_ENTRY _ZTI8S6668C10[];
extern  VTBL_ENTRY _ZTV8S6668C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C10[];
extern Class_Descriptor cd_S6668C9;
extern VTBL_ENTRY _ZTI7S6668C9[];
extern  VTBL_ENTRY _ZTV7S6668C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C9[];
extern Class_Descriptor cd_S6668C12;
extern VTBL_ENTRY _ZTI8S6668C12[];
extern  VTBL_ENTRY _ZTV8S6668C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C12[];
static Base_Class bases_S6668C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6668C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6668C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6668C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6668C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6668C9,    ABISELECT(24,12), //bcp->offset
    56, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6668C12,    ABISELECT(8,4), //bcp->offset
    26, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6668C11[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN8S6668C11D1Ev();
extern void _ZN8S6668C11D0Ev();
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C113v32Ev();
extern void _ZN8S6668C113v33Ev();
extern void _ZN8S6668C113v34Ev();
extern void _ZN8S6668C113v35Ev();
extern void _ZN8S6668C113v36Ev();
extern void _ZN8S6668C113v37Ev();
extern void _ZN8S6668C113v38Ev();
extern void _ZN8S6668C113v39Ev();
extern void _ZN8S6668C113v40Ev();
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN8S6668C123v41Ev();
extern void _ZN8S6668C123v42Ev();
extern void _ZN8S6668C123v43Ev();
extern void _ZN8S6668C123v44Ev();
extern void _ZN8S6668C123v45Ev();
extern void _ZN8S6668C123v46Ev();
extern void _ZN8S6668C123v47Ev();
extern void _ZN8S6668C123v48Ev();
extern void ABISELECT(_ZTv0_n136_N8S6668C11D1Ev,_ZTv0_n68_N8S6668C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S6668C11D1Ev,_ZThn4_N8S6668C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S6668C11D0Ev,_ZTv0_n68_N8S6668C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S6668C11D0Ev,_ZThn4_N8S6668C11D0Ev)() __attribute__((weak));
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C11D1Ev,_ZTv0_n24_N8S6668C11D1Ev)();
extern void ABISELECT(_ZThn24_N8S6668C11D1Ev,_ZThn12_N8S6668C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6668C11D0Ev,_ZTv0_n24_N8S6668C11D0Ev)();
extern void ABISELECT(_ZThn24_N8S6668C11D0Ev,_ZThn12_N8S6668C11D0Ev)() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
static  VTBL_ENTRY vtc_S6668C11[] = {
  ABISELECT(8,4),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C11[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S6668C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6668C11D0Ev,
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C113v32Ev,
  (VTBL_ENTRY)&_ZN8S6668C113v33Ev,
  (VTBL_ENTRY)&_ZN8S6668C113v34Ev,
  (VTBL_ENTRY)&_ZN8S6668C113v35Ev,
  (VTBL_ENTRY)&_ZN8S6668C113v36Ev,
  (VTBL_ENTRY)&_ZN8S6668C113v37Ev,
  (VTBL_ENTRY)&_ZN8S6668C113v38Ev,
  (VTBL_ENTRY)&_ZN8S6668C113v39Ev,
  (VTBL_ENTRY)&_ZN8S6668C113v40Ev,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6668C11[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v41Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v42Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v43Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v44Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v45Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v46Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v47Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v48Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S6668C11D1Ev,_ZTv0_n68_N8S6668C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S6668C11D0Ev,_ZTv0_n68_N8S6668C11D0Ev),
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6668C11[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C11D1Ev,_ZTv0_n24_N8S6668C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C11D0Ev,_ZTv0_n24_N8S6668C11D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
};
extern VTBL_ENTRY _ZTV8S6668C11[];
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN8S6668C123v41Ev();
extern void _ZN8S6668C123v42Ev();
extern void _ZN8S6668C123v43Ev();
extern void _ZN8S6668C123v44Ev();
extern void _ZN8S6668C123v45Ev();
extern void _ZN8S6668C123v46Ev();
extern void _ZN8S6668C123v47Ev();
extern void _ZN8S6668C123v48Ev();
extern void _ZN8S6668C12D1Ev();
extern void _ZN8S6668C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6668C12__8S6668C11[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C12[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v41Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v42Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v43Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v44Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v45Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v46Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v47Ev,
  (VTBL_ENTRY)&_ZN8S6668C123v48Ev,
  (VTBL_ENTRY)&_ZN8S6668C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6668C12D0Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C12D1Ev,_ZTv0_n24_N8S6668C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6668C12D0Ev,_ZTv0_n24_N8S6668C12D0Ev)();
extern void _ZN7S6668C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C3__8S6668C12__8S6668C11[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6668C12[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C12D1Ev,_ZTv0_n24_N8S6668C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C12D0Ev,_ZTv0_n24_N8S6668C12D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C12D1Ev,_ZTv0_n24_N8S6668C12D1Ev)();
extern void ABISELECT(_ZThn16_N8S6668C12D1Ev,_ZThn8_N8S6668C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6668C12D0Ev,_ZTv0_n24_N8S6668C12D0Ev)();
extern void ABISELECT(_ZThn16_N8S6668C12D0Ev,_ZThn8_N8S6668C12D0Ev)() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C9__8S6668C12__8S6668C11[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6668C12[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C12D1Ev,_ZTv0_n24_N8S6668C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C12D0Ev,_ZTv0_n24_N8S6668C12D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev)();
extern void _ZN7S6668C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev)();
extern void _ZN7S6668C9D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C9__8S6668C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev)();
extern void _ZN8S6668C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev)();
extern void _ZN8S6668C10D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
static  VTBL_ENTRY _tg__ZTV8S6668C107S6668C9__8S6668C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev)();
extern void _ZN7S6668C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C3__8S6668C107S6668C9__8S6668C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C9__8S6668C11[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev)();
extern void _ZN7S6668C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C3__7S6668C9__8S6668C11[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__7S6668C9__8S6668C11[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
static  VTT_ENTRY vtt_S6668C11[] = {
  {&(_ZTV8S6668C11[11]),  11,77},
  {&(_ZTV8S6668C11[43]),  43,77},
  {&(_ZTV8S6668C11[11]),  11,77},
  {&(_ZTV8S6668C11[68]),  68,77},
  {&(_ZTV8S6668C11[43]),  43,77},
  {&(_tg__ZTV8S6668C12__8S6668C11[8]),  8,21},
  {&(_tg__ZTV7S6668C3__8S6668C12__8S6668C11[7]),  7,13},
  {&(_tg__ZTV7S6668C9__8S6668C12__8S6668C11[12]),  12,21},
  {&(_tg__ZTV8S6668C12__8S6668C11[8]),  8,21},
  {&(_tg__ZTV7S6668C9__8S6668C11[9]),  9,18},
  {&(_tg__ZTV8S6668C107S6668C9__8S6668C11[9]),  9,17},
  {&(_tg__ZTV7S6668C3__8S6668C107S6668C9__8S6668C11[7]),  7,13},
  {&(_tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C9__8S6668C11[5]),  5,8},
  {&(_tg__ZTV7S6668C3__7S6668C9__8S6668C11[7]),  7,13},
  {&(_tg__ZTV10S6668C4_nt__A1__7S6668C9__8S6668C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S6668C11[];
extern  VTBL_ENTRY _ZTV8S6668C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C11[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S6668C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S6668C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C12D0Ev,_ZTv0_n24_N8S6668C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6668C12D0Ev,_ZThn8_N8S6668C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C12D1Ev,_ZTv0_n24_N8S6668C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6668C12D1Ev,_ZThn8_N8S6668C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C11D0Ev,_ZTv0_n24_N8S6668C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6668C11D0Ev,_ZThn12_N8S6668C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C11D1Ev,_ZTv0_n24_N8S6668C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6668C11D1Ev,_ZThn12_N8S6668C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S6668C11D0Ev,_ZTv0_n68_N8S6668C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6668C11D0Ev,_ZThn4_N8S6668C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S6668C11D1Ev,_ZTv0_n68_N8S6668C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6668C11D1Ev,_ZThn4_N8S6668C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6668C11 = {  "S6668C11", // class name
  bases_S6668C11, 6,
  &(vtc_S6668C11[0]), // expected_vtbl_contents
  &(vtt_S6668C11[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S6668C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6668C11),77, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6668C11),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6668C1  : S6668C2 , S6668C5 {
  ::S6668C11 s6668c1f0[5];
  virtual  ~S6668C1(); // _ZN7S6668C1D2Ev
  virtual void  v1(); // _ZN7S6668C12v1Ev
  virtual void  v2(); // _ZN7S6668C12v2Ev
  S6668C1(); // tgen
};
//SIG(1 S6668C1) C1{ BC2{ v3 v4 FC3{ BC4{ v8 v9 v10} vd v11}} BC5{ BC6{ v5 v6 v7} VBC7{ VBC8{ BC9{ BC10{ VBC3 VBC4 v12 v13 Fi} vd v14} v15 v16} v17 v18 v19 v20 v21 v22 v23 v24 Fi} v25 v26 v27 v28 v29 v30 v31 Fp FD} vd v1 v2 FC11{ VBC12{ VBC3 VBC9 v41 v42 v43 v44 v45 v46 v47 v48 Fp} vd v32 v33 v34 v35 v36 v37 v38 v39 v40}[5]}


 S6668C1 ::~S6668C1(){ note_dtor("S6668C1", this);}
void  S6668C1 ::v1(){vfunc_called(this, "_ZN7S6668C12v1Ev");}
void  S6668C1 ::v2(){vfunc_called(this, "_ZN7S6668C12v2Ev");}
S6668C1 ::S6668C1(){ note_ctor("S6668C1", this);} // tgen

static void Test_S6668C1()
{
  extern Class_Descriptor cd_S6668C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,37)];
    init_test(&cd_S6668C1, buf);
    S6668C1 *dp, &lv = *(dp=new (buf) S6668C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,144), "sizeof(S6668C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6668C1)");
    check_base_class_offset(lv, (S6668C2*), 0, "S6668C1");
    check_base_class_offset(lv, (S6668C6*)(S6668C5*), ABISELECT(16,8), "S6668C1");
    check_base_class_offset(lv, (S6668C4_nt*)(S6668C3*), ABISELECT(264,136), "S6668C1");
    check_base_class_offset(lv, (S6668C3*)(S6668C10*)(S6668C9*)(S6668C8*), ABISELECT(264,136), "S6668C1");
    /*is_ambiguous_... S6668C10::S6668C4_nt */ AMB_check_base_class_offset(lv, (S6668C4_nt*)(S6668C10*)(S6668C9*)(S6668C8*), ABISELECT(248,128), "S6668C1");
    check_base_class_offset(lv, (S6668C10*)(S6668C9*)(S6668C8*), ABISELECT(264,136), "S6668C1");
    check_base_class_offset(lv, (S6668C9*)(S6668C8*), ABISELECT(264,136), "S6668C1");
    check_base_class_offset(lv, (S6668C8*)(S6668C7*), ABISELECT(264,136), "S6668C1");
    check_base_class_offset(lv, (S6668C7*)(S6668C5*), ABISELECT(248,128), "S6668C1");
    check_base_class_offset(lv, (S6668C5*), ABISELECT(16,8), "S6668C1");
    check_field_offset(lv, s6668c1f0, ABISELECT(48,28), "S6668C1.s6668c1f0");
    test_class_info(&lv, &cd_S6668C1);
    dp->~S6668C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6668C1(Test_S6668C1, "S6668C1", ABISELECT(288,144));

#else // __cplusplus

extern void _ZN7S6668C1C1Ev();
extern void _ZN7S6668C1D2Ev();
Name_Map name_map_S6668C1[] = {
  NSPAIR(_ZN7S6668C1C1Ev),
  NSPAIR(_ZN7S6668C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6668C2;
extern VTBL_ENTRY _ZTI7S6668C2[];
extern  VTBL_ENTRY _ZTV7S6668C2[];
extern Class_Descriptor cd_S6668C6;
extern VTBL_ENTRY _ZTI7S6668C6[];
extern  VTBL_ENTRY _ZTV7S6668C6[];
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C3;
extern VTBL_ENTRY _ZTI7S6668C3[];
extern  VTBL_ENTRY _ZTV7S6668C3[];
extern Class_Descriptor cd_S6668C4_nt;
extern VTBL_ENTRY _ZTI10S6668C4_nt[];
extern  VTBL_ENTRY _ZTV10S6668C4_nt[];
extern Class_Descriptor cd_S6668C10;
extern VTBL_ENTRY _ZTI8S6668C10[];
extern  VTBL_ENTRY _ZTV8S6668C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6668C10[];
extern Class_Descriptor cd_S6668C9;
extern VTBL_ENTRY _ZTI7S6668C9[];
extern  VTBL_ENTRY _ZTV7S6668C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C9[];
extern Class_Descriptor cd_S6668C8;
extern VTBL_ENTRY _ZTI7S6668C8[];
extern  VTBL_ENTRY _ZTV7S6668C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C8[];
extern Class_Descriptor cd_S6668C7;
extern VTBL_ENTRY _ZTI7S6668C7[];
extern  VTBL_ENTRY _ZTV7S6668C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C7[];
extern Class_Descriptor cd_S6668C5;
extern VTBL_ENTRY _ZTI7S6668C5[];
extern  VTBL_ENTRY _ZTV7S6668C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C5[];
static Base_Class bases_S6668C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6668C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6668C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6668C4_nt,    ABISELECT(264,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
    3, //immediately_derived
  0, 0},
  {&cd_S6668C3,    ABISELECT(264,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6668C4_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6668C10,    ABISELECT(264,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6668C9,    ABISELECT(264,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6668C8,    ABISELECT(264,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6668C7,    ABISELECT(248,128), //bcp->offset
    30, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6668C5,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6668C1[];
extern void _ZN7S6668C22v3Ev();
extern void _ZN7S6668C22v4Ev();
extern void _ZN7S6668C1D1Ev();
extern void _ZN7S6668C1D0Ev();
extern void _ZN7S6668C12v1Ev();
extern void _ZN7S6668C12v2Ev();
extern void _ZN7S6668C62v5Ev();
extern void _ZN7S6668C62v6Ev();
extern void _ZN7S6668C62v7Ev();
extern void _ZN7S6668C53v25Ev();
extern void _ZN7S6668C53v26Ev();
extern void _ZN7S6668C53v27Ev();
extern void _ZN7S6668C53v28Ev();
extern void _ZN7S6668C53v29Ev();
extern void _ZN7S6668C53v30Ev();
extern void _ZN7S6668C53v31Ev();
extern void ABISELECT(_ZThn16_N7S6668C1D1Ev,_ZThn8_N7S6668C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S6668C1D0Ev,_ZThn8_N7S6668C1D0Ev)();
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN7S6668C73v17Ev();
extern void _ZN7S6668C73v18Ev();
extern void _ZN7S6668C73v19Ev();
extern void _ZN7S6668C73v20Ev();
extern void _ZN7S6668C73v21Ev();
extern void _ZN7S6668C73v22Ev();
extern void _ZN7S6668C73v23Ev();
extern void _ZN7S6668C73v24Ev();
extern void ABISELECT(_ZTv0_n136_N7S6668C1D1Ev,_ZTv0_n68_N7S6668C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S6668C1D1Ev,_ZThn128_N7S6668C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S6668C1D0Ev,_ZTv0_n68_N7S6668C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S6668C1D0Ev,_ZThn128_N7S6668C1D0Ev)() __attribute__((weak));
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C1D1Ev,_ZTv0_n24_N7S6668C1D1Ev)();
extern void ABISELECT(_ZThn264_N7S6668C1D1Ev,_ZThn136_N7S6668C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C1D0Ev,_ZTv0_n24_N7S6668C1D0Ev)();
extern void ABISELECT(_ZThn264_N7S6668C1D0Ev,_ZThn136_N7S6668C1D0Ev)() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN7S6668C83v15Ev();
extern void _ZN7S6668C83v16Ev();
static  VTBL_ENTRY vtc_S6668C1[] = {
  ABISELECT(248,128),
  ABISELECT(264,136),
  ABISELECT(264,136),
  ABISELECT(248,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C1[0]),
  (VTBL_ENTRY)&_ZN7S6668C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6668C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6668C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6668C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6668C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6668C12v2Ev,
  ABISELECT(232,120),
  ABISELECT(248,128),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6668C1[0]),
  (VTBL_ENTRY)&_ZN7S6668C62v5Ev,
  (VTBL_ENTRY)&_ZN7S6668C62v6Ev,
  (VTBL_ENTRY)&_ZN7S6668C62v7Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v25Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v26Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v27Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v28Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v29Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v30Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6668C1D1Ev,_ZThn8_N7S6668C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6668C1D0Ev,_ZThn8_N7S6668C1D0Ev),
  ABISELECT(-248,-128),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI7S6668C1[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v17Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v18Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v19Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v20Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v21Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v22Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v23Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S6668C1D1Ev,_ZTv0_n68_N7S6668C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S6668C1D0Ev,_ZTv0_n68_N7S6668C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-264,-136),
  0,
  0,
  0,
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI7S6668C1[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C1D1Ev,_ZTv0_n24_N7S6668C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C1D0Ev,_ZTv0_n24_N7S6668C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v15Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v16Ev,
};
extern VTBL_ENTRY _ZTV7S6668C1[];
extern void _ZN7S6668C62v5Ev();
extern void _ZN7S6668C62v6Ev();
extern void _ZN7S6668C62v7Ev();
extern void _ZN7S6668C53v25Ev();
extern void _ZN7S6668C53v26Ev();
extern void _ZN7S6668C53v27Ev();
extern void _ZN7S6668C53v28Ev();
extern void _ZN7S6668C53v29Ev();
extern void _ZN7S6668C53v30Ev();
extern void _ZN7S6668C53v31Ev();
extern void _ZN7S6668C5D1Ev();
extern void _ZN7S6668C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C5__7S6668C1[] = {
  ABISELECT(232,120),
  ABISELECT(248,128),
  ABISELECT(248,128),
  ABISELECT(232,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C5[0]),
  (VTBL_ENTRY)&_ZN7S6668C62v5Ev,
  (VTBL_ENTRY)&_ZN7S6668C62v6Ev,
  (VTBL_ENTRY)&_ZN7S6668C62v7Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v25Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v26Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v27Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v28Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v29Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v30Ev,
  (VTBL_ENTRY)&_ZN7S6668C53v31Ev,
  (VTBL_ENTRY)&_ZN7S6668C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6668C5D0Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN7S6668C73v17Ev();
extern void _ZN7S6668C73v18Ev();
extern void _ZN7S6668C73v19Ev();
extern void _ZN7S6668C73v20Ev();
extern void _ZN7S6668C73v21Ev();
extern void _ZN7S6668C73v22Ev();
extern void _ZN7S6668C73v23Ev();
extern void _ZN7S6668C73v24Ev();
extern void ABISELECT(_ZTv0_n136_N7S6668C5D1Ev,_ZTv0_n68_N7S6668C5D1Ev)();
extern void ABISELECT(_ZThn232_N7S6668C5D1Ev,_ZThn120_N7S6668C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S6668C5D0Ev,_ZTv0_n68_N7S6668C5D0Ev)();
extern void ABISELECT(_ZThn232_N7S6668C5D0Ev,_ZThn120_N7S6668C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6668C7__7S6668C5__7S6668C1[] = {
  ABISELECT(-232,-120),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S6668C5[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v17Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v18Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v19Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v20Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v21Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v22Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v23Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S6668C5D1Ev,_ZTv0_n68_N7S6668C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S6668C5D0Ev,_ZTv0_n68_N7S6668C5D0Ev),
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C5D1Ev,_ZTv0_n24_N7S6668C5D1Ev)();
extern void ABISELECT(_ZThn248_N7S6668C5D1Ev,_ZThn128_N7S6668C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C5D0Ev,_ZTv0_n24_N7S6668C5D0Ev)();
extern void ABISELECT(_ZThn248_N7S6668C5D0Ev,_ZThn128_N7S6668C5D0Ev)() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN7S6668C83v15Ev();
extern void _ZN7S6668C83v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C8__7S6668C5__7S6668C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-248,-128),
  0,
  0,
  0,
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI7S6668C5[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C5D1Ev,_ZTv0_n24_N7S6668C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C5D0Ev,_ZTv0_n24_N7S6668C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v15Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v16Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void _ZN7S6668C73v17Ev();
extern void _ZN7S6668C73v18Ev();
extern void _ZN7S6668C73v19Ev();
extern void _ZN7S6668C73v20Ev();
extern void _ZN7S6668C73v21Ev();
extern void _ZN7S6668C73v22Ev();
extern void _ZN7S6668C73v23Ev();
extern void _ZN7S6668C73v24Ev();
extern void _ZN7S6668C7D1Ev();
extern void _ZN7S6668C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C7__7S6668C1[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C7[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v17Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v18Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v19Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v20Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v21Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v22Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v23Ev,
  (VTBL_ENTRY)&_ZN7S6668C73v24Ev,
  (VTBL_ENTRY)&_ZN7S6668C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6668C7D0Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C7D1Ev,_ZTv0_n24_N7S6668C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6668C7D1Ev,_ZThn8_N7S6668C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C7D0Ev,_ZTv0_n24_N7S6668C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S6668C7D0Ev,_ZThn8_N7S6668C7D0Ev)() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN7S6668C83v15Ev();
extern void _ZN7S6668C83v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C8__7S6668C7__7S6668C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6668C7[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C7D1Ev,_ZTv0_n24_N7S6668C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C7D0Ev,_ZTv0_n24_N7S6668C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v15Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v16Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C8D1Ev,_ZTv0_n24_N7S6668C8D1Ev)();
extern void _ZN7S6668C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C8D0Ev,_ZTv0_n24_N7S6668C8D0Ev)();
extern void _ZN7S6668C8D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
extern void _ZN7S6668C83v15Ev();
extern void _ZN7S6668C83v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C8__7S6668C1[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C8[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C8D1Ev,_ZTv0_n24_N7S6668C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C8D0Ev,_ZTv0_n24_N7S6668C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v15Ev,
  (VTBL_ENTRY)&_ZN7S6668C83v16Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev)();
extern void _ZN7S6668C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev)();
extern void _ZN7S6668C9D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
extern void _ZN7S6668C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S6668C97S6668C8__7S6668C1[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
  (VTBL_ENTRY)&_ZN7S6668C93v14Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev)();
extern void _ZN8S6668C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev)();
extern void _ZN8S6668C10D0Ev() __attribute__((weak));
extern void _ZN7S6668C33v11Ev();
extern void _ZN8S6668C103v12Ev();
extern void _ZN8S6668C103v13Ev();
static  VTBL_ENTRY _tg__ZTV8S6668C107S6668C97S6668C8__7S6668C1[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6668C33v11Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v12Ev,
  (VTBL_ENTRY)&_ZN8S6668C103v13Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C97S6668C8__7S6668C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6668C10[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__7S6668C97S6668C8__7S6668C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6668C9[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
extern void _ZN10S6668C4_nt2v8Ev();
extern void _ZN10S6668C4_nt2v9Ev();
extern void _ZN10S6668C4_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV10S6668C4_nt__A1__7S6668C8__7S6668C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6668C8[0]),
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S6668C4_nt3v10Ev,
};
static  VTT_ENTRY vtt_S6668C1[] = {
  {&(_ZTV7S6668C1[6]),  6,85},
  {&(_tg__ZTV7S6668C5__7S6668C1[6]),  6,18},
  {&(_tg__ZTV7S6668C7__7S6668C5__7S6668C1[17]),  17,30},
  {&(_tg__ZTV7S6668C8__7S6668C5__7S6668C1[14]),  14,25},
  {&(_tg__ZTV7S6668C8__7S6668C5__7S6668C1[14]),  14,25},
  {&(_tg__ZTV7S6668C7__7S6668C5__7S6668C1[17]),  17,30},
  {&(_ZTV7S6668C1[18]),  18,85},
  {&(_ZTV7S6668C1[47]),  47,85},
  {&(_ZTV7S6668C1[74]),  74,85},
  {&(_ZTV7S6668C1[74]),  74,85},
  {&(_ZTV7S6668C1[47]),  47,85},
  {&(_tg__ZTV7S6668C7__7S6668C1[8]),  8,21},
  {&(_tg__ZTV7S6668C8__7S6668C7__7S6668C1[14]),  14,25},
  {&(_tg__ZTV7S6668C8__7S6668C7__7S6668C1[14]),  14,25},
  {&(_tg__ZTV7S6668C7__7S6668C1[8]),  8,21},
  {&(_tg__ZTV7S6668C8__7S6668C1[9]),  9,20},
  {&(_tg__ZTV7S6668C97S6668C8__7S6668C1[9]),  9,18},
  {&(_tg__ZTV8S6668C107S6668C97S6668C8__7S6668C1[9]),  9,17},
  {&(_tg__ZTV8S6668C107S6668C97S6668C8__7S6668C1[9]),  9,17},
  {&(_tg__ZTV10S6668C4_nt__A1__8S6668C107S6668C97S6668C8__7S6668C1[5]),  5,8},
  {&(_tg__ZTV7S6668C97S6668C8__7S6668C1[9]),  9,18},
  {&(_tg__ZTV10S6668C4_nt__A1__7S6668C97S6668C8__7S6668C1[5]),  5,8},
  {&(_tg__ZTV7S6668C8__7S6668C1[9]),  9,20},
  {&(_tg__ZTV10S6668C4_nt__A1__7S6668C8__7S6668C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S6668C1[];
extern  VTBL_ENTRY _ZTV7S6668C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6668C1[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D0Ev,_ZTv0_n24_N8S6668C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6668C10D1Ev,_ZTv0_n24_N8S6668C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S6668C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C9D0Ev,_ZTv0_n24_N7S6668C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S6668C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C9D1Ev,_ZTv0_n24_N7S6668C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S6668C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C8D0Ev,_ZTv0_n24_N7S6668C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S6668C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C8D1Ev,_ZTv0_n24_N7S6668C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S6668C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C7D0Ev,_ZTv0_n24_N7S6668C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6668C7D0Ev,_ZThn8_N7S6668C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C7D1Ev,_ZTv0_n24_N7S6668C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6668C7D1Ev,_ZThn8_N7S6668C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C5D0Ev,_ZTv0_n24_N7S6668C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S6668C5D0Ev,_ZThn128_N7S6668C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C5D1Ev,_ZTv0_n24_N7S6668C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S6668C5D1Ev,_ZThn128_N7S6668C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S6668C5D0Ev,_ZTv0_n68_N7S6668C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6668C5D0Ev,_ZThn120_N7S6668C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S6668C5D1Ev,_ZTv0_n68_N7S6668C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6668C5D1Ev,_ZThn120_N7S6668C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C1D0Ev,_ZTv0_n24_N7S6668C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S6668C1D0Ev,_ZThn136_N7S6668C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6668C1D1Ev,_ZTv0_n24_N7S6668C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S6668C1D1Ev,_ZThn136_N7S6668C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S6668C1D0Ev,_ZTv0_n68_N7S6668C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S6668C1D0Ev,_ZThn128_N7S6668C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S6668C1D1Ev,_ZTv0_n68_N7S6668C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S6668C1D1Ev,_ZThn128_N7S6668C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6668C1 = {  "S6668C1", // class name
  bases_S6668C1, 10,
  &(vtc_S6668C1[0]), // expected_vtbl_contents
  &(vtt_S6668C1[0]), // expected_vtt_contents
  ABISELECT(288,144), // object size
  NSPAIRA(_ZTI7S6668C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6668C1),85, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6668C1),24, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5228C3  {
  int s5228c3f0;
  char s5228c3f1[3];
  virtual  ~S5228C3(); // _ZN7S5228C3D1Ev
  virtual void  v5(); // _ZN7S5228C32v5Ev
  virtual void  v6(); // _ZN7S5228C32v6Ev
  S5228C3(); // tgen
};
//SIG(-1 S5228C3) C1{ vd v1 v2 Fi Fc[3]}


 S5228C3 ::~S5228C3(){ note_dtor("S5228C3", this);}
void  S5228C3 ::v5(){vfunc_called(this, "_ZN7S5228C32v5Ev");}
void  S5228C3 ::v6(){vfunc_called(this, "_ZN7S5228C32v6Ev");}
S5228C3 ::S5228C3(){ note_ctor("S5228C3", this);} // tgen

static void Test_S5228C3()
{
  extern Class_Descriptor cd_S5228C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5228C3, buf);
    S5228C3 *dp, &lv = *(dp=new (buf) S5228C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5228C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5228C3)");
    check_field_offset(lv, s5228c3f0, ABISELECT(8,4), "S5228C3.s5228c3f0");
    check_field_offset(lv, s5228c3f1, ABISELECT(12,8), "S5228C3.s5228c3f1");
    test_class_info(&lv, &cd_S5228C3);
    dp->~S5228C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5228C3(Test_S5228C3, "S5228C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S5228C3C1Ev();
extern void _ZN7S5228C3D1Ev();
Name_Map name_map_S5228C3[] = {
  NSPAIR(_ZN7S5228C3C1Ev),
  NSPAIR(_ZN7S5228C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5228C3[];
extern void _ZN7S5228C3D1Ev();
extern void _ZN7S5228C3D0Ev();
extern void _ZN7S5228C32v5Ev();
extern void _ZN7S5228C32v6Ev();
static  VTBL_ENTRY vtc_S5228C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5228C3[0]),
  (VTBL_ENTRY)&_ZN7S5228C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5228C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5228C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5228C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S5228C3[];
extern  VTBL_ENTRY _ZTV7S5228C3[];
Class_Descriptor cd_S5228C3 = {  "S5228C3", // class name
  0,0,//no base classes
  &(vtc_S5228C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S5228C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5228C3),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  S5228C4_nt  {
  void  mf5228c4(); // _ZN10S5228C4_nt8mf5228c4Ev
  virtual  ~S5228C4_nt(); // _ZN10S5228C4_ntD1Ev
  S5228C4_nt(); // tgen
};
//SIG(-1 S5228C4_nt) C1{ vd m}


void  S5228C4_nt ::mf5228c4(){}
 S5228C4_nt ::~S5228C4_nt(){ note_dtor("S5228C4_nt", this);}
S5228C4_nt ::S5228C4_nt(){ note_ctor("S5228C4_nt", this);} // tgen

//skip512 S5228C4_nt

#else // __cplusplus

extern void _ZN10S5228C4_ntC1Ev();
extern void _ZN10S5228C4_ntD1Ev();
Name_Map name_map_S5228C4_nt[] = {
  NSPAIR(_ZN10S5228C4_ntC1Ev),
  NSPAIR(_ZN10S5228C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern void _ZN10S5228C4_ntD1Ev();
extern void _ZN10S5228C4_ntD0Ev();
static  VTBL_ENTRY vtc_S5228C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5228C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S5228C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5228C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
VTBL_ENTRY *P__ZTI10S5228C4_nt = _ZTI10S5228C4_nt; 
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
Class_Descriptor cd_S5228C4_nt = {  "S5228C4_nt", // class name
  0,0,//no base classes
  &(vtc_S5228C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S5228C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5228C4_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  S5228C6_nt  {
  void *s5228c6f0;
  virtual  ~S5228C6_nt(); // _ZN10S5228C6_ntD1Ev
  virtual void  v24(); // _ZN10S5228C6_nt3v24Ev
  virtual void  v25(); // _ZN10S5228C6_nt3v25Ev
  virtual void  v26(); // _ZN10S5228C6_nt3v26Ev
  virtual void  v27(); // _ZN10S5228C6_nt3v27Ev
  virtual void  v28(); // _ZN10S5228C6_nt3v28Ev
  virtual void  v29(); // _ZN10S5228C6_nt3v29Ev
  virtual void  v30(); // _ZN10S5228C6_nt3v30Ev
  virtual void  v31(); // _ZN10S5228C6_nt3v31Ev
  virtual void  v32(); // _ZN10S5228C6_nt3v32Ev
  S5228C6_nt(); // tgen
};
//SIG(-1 S5228C6_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp}


 S5228C6_nt ::~S5228C6_nt(){ note_dtor("S5228C6_nt", this);}
void  S5228C6_nt ::v24(){vfunc_called(this, "_ZN10S5228C6_nt3v24Ev");}
void  S5228C6_nt ::v25(){vfunc_called(this, "_ZN10S5228C6_nt3v25Ev");}
void  S5228C6_nt ::v26(){vfunc_called(this, "_ZN10S5228C6_nt3v26Ev");}
void  S5228C6_nt ::v27(){vfunc_called(this, "_ZN10S5228C6_nt3v27Ev");}
void  S5228C6_nt ::v28(){vfunc_called(this, "_ZN10S5228C6_nt3v28Ev");}
void  S5228C6_nt ::v29(){vfunc_called(this, "_ZN10S5228C6_nt3v29Ev");}
void  S5228C6_nt ::v30(){vfunc_called(this, "_ZN10S5228C6_nt3v30Ev");}
void  S5228C6_nt ::v31(){vfunc_called(this, "_ZN10S5228C6_nt3v31Ev");}
void  S5228C6_nt ::v32(){vfunc_called(this, "_ZN10S5228C6_nt3v32Ev");}
S5228C6_nt ::S5228C6_nt(){ note_ctor("S5228C6_nt", this);} // tgen

//skip512 S5228C6_nt

#else // __cplusplus

extern void _ZN10S5228C6_ntC1Ev();
extern void _ZN10S5228C6_ntD1Ev();
Name_Map name_map_S5228C6_nt[] = {
  NSPAIR(_ZN10S5228C6_ntC1Ev),
  NSPAIR(_ZN10S5228C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5228C6_nt[];
extern void _ZN10S5228C6_ntD1Ev();
extern void _ZN10S5228C6_ntD0Ev();
extern void _ZN10S5228C6_nt3v24Ev();
extern void _ZN10S5228C6_nt3v25Ev();
extern void _ZN10S5228C6_nt3v26Ev();
extern void _ZN10S5228C6_nt3v27Ev();
extern void _ZN10S5228C6_nt3v28Ev();
extern void _ZN10S5228C6_nt3v29Ev();
extern void _ZN10S5228C6_nt3v30Ev();
extern void _ZN10S5228C6_nt3v31Ev();
extern void _ZN10S5228C6_nt3v32Ev();
static  VTBL_ENTRY vtc_S5228C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5228C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S5228C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v32Ev,
};
extern VTBL_ENTRY _ZTI10S5228C6_nt[];
VTBL_ENTRY *P__ZTI10S5228C6_nt = _ZTI10S5228C6_nt; 
extern  VTBL_ENTRY _ZTV10S5228C6_nt[];
Class_Descriptor cd_S5228C6_nt = {  "S5228C6_nt", // class name
  0,0,//no base classes
  &(vtc_S5228C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S5228C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5228C6_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  S5228C5  : S5228C6_nt {
  int s5228c5f0[2];
  void *s5228c5f1;
  virtual  ~S5228C5(); // _ZN7S5228C5D1Ev
  virtual void  v16(); // _ZN7S5228C53v16Ev
  virtual void  v17(); // _ZN7S5228C53v17Ev
  virtual void  v18(); // _ZN7S5228C53v18Ev
  virtual void  v19(); // _ZN7S5228C53v19Ev
  virtual void  v20(); // _ZN7S5228C53v20Ev
  virtual void  v21(); // _ZN7S5228C53v21Ev
  virtual void  v22(); // _ZN7S5228C53v22Ev
  virtual void  v23(); // _ZN7S5228C53v23Ev
  S5228C5(); // tgen
};
//SIG(-1 S5228C5) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi[2] Fp}


 S5228C5 ::~S5228C5(){ note_dtor("S5228C5", this);}
void  S5228C5 ::v16(){vfunc_called(this, "_ZN7S5228C53v16Ev");}
void  S5228C5 ::v17(){vfunc_called(this, "_ZN7S5228C53v17Ev");}
void  S5228C5 ::v18(){vfunc_called(this, "_ZN7S5228C53v18Ev");}
void  S5228C5 ::v19(){vfunc_called(this, "_ZN7S5228C53v19Ev");}
void  S5228C5 ::v20(){vfunc_called(this, "_ZN7S5228C53v20Ev");}
void  S5228C5 ::v21(){vfunc_called(this, "_ZN7S5228C53v21Ev");}
void  S5228C5 ::v22(){vfunc_called(this, "_ZN7S5228C53v22Ev");}
void  S5228C5 ::v23(){vfunc_called(this, "_ZN7S5228C53v23Ev");}
S5228C5 ::S5228C5(){ note_ctor("S5228C5", this);} // tgen

static void Test_S5228C5()
{
  extern Class_Descriptor cd_S5228C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S5228C5, buf);
    S5228C5 *dp, &lv = *(dp=new (buf) S5228C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S5228C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5228C5)");
    check_base_class_offset(lv, (S5228C6_nt*), 0, "S5228C5");
    check_field_offset(lv, s5228c5f0, ABISELECT(16,8), "S5228C5.s5228c5f0");
    check_field_offset(lv, s5228c5f1, ABISELECT(24,16), "S5228C5.s5228c5f1");
    test_class_info(&lv, &cd_S5228C5);
    dp->~S5228C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5228C5(Test_S5228C5, "S5228C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S5228C5C1Ev();
extern void _ZN7S5228C5D1Ev();
Name_Map name_map_S5228C5[] = {
  NSPAIR(_ZN7S5228C5C1Ev),
  NSPAIR(_ZN7S5228C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C6_nt;
extern VTBL_ENTRY _ZTI10S5228C6_nt[];
extern  VTBL_ENTRY _ZTV10S5228C6_nt[];
static Base_Class bases_S5228C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5228C5[];
extern void _ZN7S5228C5D1Ev();
extern void _ZN7S5228C5D0Ev();
extern void _ZN10S5228C6_nt3v24Ev();
extern void _ZN10S5228C6_nt3v25Ev();
extern void _ZN10S5228C6_nt3v26Ev();
extern void _ZN10S5228C6_nt3v27Ev();
extern void _ZN10S5228C6_nt3v28Ev();
extern void _ZN10S5228C6_nt3v29Ev();
extern void _ZN10S5228C6_nt3v30Ev();
extern void _ZN10S5228C6_nt3v31Ev();
extern void _ZN10S5228C6_nt3v32Ev();
extern void _ZN7S5228C53v16Ev();
extern void _ZN7S5228C53v17Ev();
extern void _ZN7S5228C53v18Ev();
extern void _ZN7S5228C53v19Ev();
extern void _ZN7S5228C53v20Ev();
extern void _ZN7S5228C53v21Ev();
extern void _ZN7S5228C53v22Ev();
extern void _ZN7S5228C53v23Ev();
static  VTBL_ENTRY vtc_S5228C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5228C5[0]),
  (VTBL_ENTRY)&_ZN7S5228C5D1Ev,
  (VTBL_ENTRY)&_ZN7S5228C5D0Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S5228C6_nt3v32Ev,
  (VTBL_ENTRY)&_ZN7S5228C53v16Ev,
  (VTBL_ENTRY)&_ZN7S5228C53v17Ev,
  (VTBL_ENTRY)&_ZN7S5228C53v18Ev,
  (VTBL_ENTRY)&_ZN7S5228C53v19Ev,
  (VTBL_ENTRY)&_ZN7S5228C53v20Ev,
  (VTBL_ENTRY)&_ZN7S5228C53v21Ev,
  (VTBL_ENTRY)&_ZN7S5228C53v22Ev,
  (VTBL_ENTRY)&_ZN7S5228C53v23Ev,
};
extern VTBL_ENTRY _ZTI7S5228C5[];
extern  VTBL_ENTRY _ZTV7S5228C5[];
Class_Descriptor cd_S5228C5 = {  "S5228C5", // class name
  bases_S5228C5, 1,
  &(vtc_S5228C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S5228C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5228C5),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5228C7  {
  int s5228c7f0[3];
  char s5228c7f1;
  void  mf5228c7(); // _ZN7S5228C78mf5228c7Ev
};
//SIG(-1 S5228C7) C1{ m Fi[3] Fc}


void  S5228C7 ::mf5228c7(){}

static void Test_S5228C7()
{
  {
    init_simple_test("S5228C7");
    S5228C7 lv;
    check2(sizeof(lv), 16, "sizeof(S5228C7)");
    check2(__alignof__(lv), 4, "__alignof__(S5228C7)");
    check_field_offset(lv, s5228c7f0, 0, "S5228C7.s5228c7f0");
    check_field_offset(lv, s5228c7f1, 12, "S5228C7.s5228c7f1");
  }
}
static Arrange_To_Call_Me vS5228C7(Test_S5228C7, "S5228C7", 16);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5228C2  : S5228C3 , S5228C4_nt {
  ::S5228C5 s5228c2f0;
  ::S5228C7 s5228c2f1;
  void *s5228c2f2;
  char s5228c2f3;
  virtual  ~S5228C2(); // _ZN7S5228C2D1Ev
  virtual void  v7(); // _ZN7S5228C22v7Ev
  virtual void  v8(); // _ZN7S5228C22v8Ev
  virtual void  v9(); // _ZN7S5228C22v9Ev
  virtual void  v10(); // _ZN7S5228C23v10Ev
  virtual void  v11(); // _ZN7S5228C23v11Ev
  virtual void  v12(); // _ZN7S5228C23v12Ev
  virtual void  v13(); // _ZN7S5228C23v13Ev
  virtual void  v14(); // _ZN7S5228C23v14Ev
  virtual void  v15(); // _ZN7S5228C23v15Ev
  S5228C2(); // tgen
};
//SIG(-1 S5228C2) C1{ BC2{ vd v10 v11 Fi Fc[3]} BC3{ vd m} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ BC5{ vd v20 v21 v22 v23 v24 v25 v26 v27 v28 Fp} vd v12 v13 v14 v15 v16 v17 v18 v19 Fi[2] Fp} FC6{ m Fi[3] Fc} Fp Fc}


 S5228C2 ::~S5228C2(){ note_dtor("S5228C2", this);}
void  S5228C2 ::v7(){vfunc_called(this, "_ZN7S5228C22v7Ev");}
void  S5228C2 ::v8(){vfunc_called(this, "_ZN7S5228C22v8Ev");}
void  S5228C2 ::v9(){vfunc_called(this, "_ZN7S5228C22v9Ev");}
void  S5228C2 ::v10(){vfunc_called(this, "_ZN7S5228C23v10Ev");}
void  S5228C2 ::v11(){vfunc_called(this, "_ZN7S5228C23v11Ev");}
void  S5228C2 ::v12(){vfunc_called(this, "_ZN7S5228C23v12Ev");}
void  S5228C2 ::v13(){vfunc_called(this, "_ZN7S5228C23v13Ev");}
void  S5228C2 ::v14(){vfunc_called(this, "_ZN7S5228C23v14Ev");}
void  S5228C2 ::v15(){vfunc_called(this, "_ZN7S5228C23v15Ev");}
S5228C2 ::S5228C2(){ note_ctor("S5228C2", this);} // tgen

static void Test_S5228C2()
{
  extern Class_Descriptor cd_S5228C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S5228C2, buf);
    S5228C2 *dp, &lv = *(dp=new (buf) S5228C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S5228C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5228C2)");
    check_base_class_offset(lv, (S5228C3*), 0, "S5228C2");
    check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(16,12), "S5228C2");
    check_field_offset(lv, s5228c2f0, ABISELECT(24,16), "S5228C2.s5228c2f0");
    check_field_offset(lv, s5228c2f1, ABISELECT(56,36), "S5228C2.s5228c2f1");
    check_field_offset(lv, s5228c2f2, ABISELECT(72,52), "S5228C2.s5228c2f2");
    check_field_offset(lv, s5228c2f3, ABISELECT(80,56), "S5228C2.s5228c2f3");
    test_class_info(&lv, &cd_S5228C2);
    dp->~S5228C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5228C2(Test_S5228C2, "S5228C2", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S5228C2C1Ev();
extern void _ZN7S5228C2D1Ev();
Name_Map name_map_S5228C2[] = {
  NSPAIR(_ZN7S5228C2C1Ev),
  NSPAIR(_ZN7S5228C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C3;
extern VTBL_ENTRY _ZTI7S5228C3[];
extern  VTBL_ENTRY _ZTV7S5228C3[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S5228C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5228C2[];
extern void _ZN7S5228C2D1Ev();
extern void _ZN7S5228C2D0Ev();
extern void _ZN7S5228C32v5Ev();
extern void _ZN7S5228C32v6Ev();
extern void _ZN7S5228C22v7Ev();
extern void _ZN7S5228C22v8Ev();
extern void _ZN7S5228C22v9Ev();
extern void _ZN7S5228C23v10Ev();
extern void _ZN7S5228C23v11Ev();
extern void _ZN7S5228C23v12Ev();
extern void _ZN7S5228C23v13Ev();
extern void _ZN7S5228C23v14Ev();
extern void _ZN7S5228C23v15Ev();
extern void ABISELECT(_ZThn16_N7S5228C2D1Ev,_ZThn12_N7S5228C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S5228C2D0Ev,_ZThn12_N7S5228C2D0Ev)();
static  VTBL_ENTRY vtc_S5228C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5228C2[0]),
  (VTBL_ENTRY)&_ZN7S5228C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5228C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5228C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5228C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5228C22v7Ev,
  (VTBL_ENTRY)&_ZN7S5228C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5228C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v15Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5228C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5228C2D1Ev,_ZThn12_N7S5228C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5228C2D0Ev,_ZThn12_N7S5228C2D0Ev),
};
extern VTBL_ENTRY _ZTI7S5228C2[];
extern  VTBL_ENTRY _ZTV7S5228C2[];
Class_Descriptor cd_S5228C2 = {  "S5228C2", // class name
  bases_S5228C2, 2,
  &(vtc_S5228C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S5228C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5228C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5228C10_nt  {
  __tsi64 s5228c10f0;
  char s5228c10f1;
  void  mf5228c10(); // _ZN11S5228C10_nt9mf5228c10Ev
  virtual  ~S5228C10_nt(); // _ZN11S5228C10_ntD1Ev
  S5228C10_nt(); // tgen
};
//SIG(-1 S5228C10_nt) C1{ vd m FL Fc}


void  S5228C10_nt ::mf5228c10(){}
 S5228C10_nt ::~S5228C10_nt(){ note_dtor("S5228C10_nt", this);}
S5228C10_nt ::S5228C10_nt(){ note_ctor("S5228C10_nt", this);} // tgen

//skip512 S5228C10_nt

#else // __cplusplus

extern void _ZN11S5228C10_ntC1Ev();
extern void _ZN11S5228C10_ntD1Ev();
Name_Map name_map_S5228C10_nt[] = {
  NSPAIR(_ZN11S5228C10_ntC1Ev),
  NSPAIR(_ZN11S5228C10_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S5228C10_nt[];
extern void _ZN11S5228C10_ntD1Ev();
extern void _ZN11S5228C10_ntD0Ev();
static  VTBL_ENTRY vtc_S5228C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S5228C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S5228C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S5228C10_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S5228C10_nt[];
VTBL_ENTRY *P__ZTI11S5228C10_nt = _ZTI11S5228C10_nt; 
extern  VTBL_ENTRY _ZTV11S5228C10_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5228C9_nt  {
  ::S5228C10_nt s5228c9f0;
  ::S5228C10_nt s5228c9f1;
  void  mf5228c9(); // _ZN10S5228C9_nt8mf5228c9Ev
};
//SIG(-1 S5228C9_nt) C1{ m FC2{ vd m FL Fc} FC2}


void  S5228C9_nt ::mf5228c9(){}

//skip512 S5228C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5228C11  : S5228C4_nt {
  ::S5228C9_nt s5228c11f0;
  char s5228c11f1[10];
  virtual  ~S5228C11(); // _ZN8S5228C11D1Ev
  S5228C11(); // tgen
};
//SIG(-1 S5228C11) C1{ BC2{ vd m} vd FC3{ m FC4{ vd m FL Fc} FC4} Fc[10]}


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

static void Test_S5228C11()
{
  extern Class_Descriptor cd_S5228C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S5228C11, buf);
    S5228C11 *dp, &lv = *(dp=new (buf) S5228C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S5228C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5228C11)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S5228C11");
    check_field_offset(lv, s5228c11f0, ABISELECT(8,4), "S5228C11.s5228c11f0");
    check_field_offset(lv, s5228c11f1, ABISELECT(56,36), "S5228C11.s5228c11f1");
    test_class_info(&lv, &cd_S5228C11);
    dp->~S5228C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5228C11(Test_S5228C11, "S5228C11", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN8S5228C11C1Ev();
extern void _ZN8S5228C11D1Ev();
Name_Map name_map_S5228C11[] = {
  NSPAIR(_ZN8S5228C11C1Ev),
  NSPAIR(_ZN8S5228C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S5228C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S5228C11[];
extern void _ZN8S5228C11D1Ev();
extern void _ZN8S5228C11D0Ev();
static  VTBL_ENTRY vtc_S5228C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S5228C11[0]),
  (VTBL_ENTRY)&_ZN8S5228C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5228C11D0Ev,
};
extern VTBL_ENTRY _ZTI8S5228C11[];
extern  VTBL_ENTRY _ZTV8S5228C11[];
Class_Descriptor cd_S5228C11 = {  "S5228C11", // class name
  bases_S5228C11, 1,
  &(vtc_S5228C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI8S5228C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S5228C11),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  S5228C8  {
  ::S5228C9_nt s5228c8f0;
  int s5228c8f1[4];
  void *s5228c8f2;
  ::S5228C11 s5228c8f3;
  void  mf5228c8(); // _ZN7S5228C88mf5228c8Ev
  virtual  ~S5228C8(); // _ZN7S5228C8D1Ev
  S5228C8(); // tgen
};
//SIG(-1 S5228C8) C1{ vd m FC2{ m FC3{ vd m FL Fc} FC3} Fi[4] Fp FC4{ BC5{ vd m} vd FC2 Fc[10]}}


void  S5228C8 ::mf5228c8(){}
 S5228C8 ::~S5228C8(){ note_dtor("S5228C8", this);}
S5228C8 ::S5228C8(){ note_ctor("S5228C8", this);} // tgen

static void Test_S5228C8()
{
  extern Class_Descriptor cd_S5228C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S5228C8, buf);
    S5228C8 *dp, &lv = *(dp=new (buf) S5228C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S5228C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5228C8)");
    check_field_offset(lv, s5228c8f0, ABISELECT(8,4), "S5228C8.s5228c8f0");
    check_field_offset(lv, s5228c8f1, ABISELECT(56,36), "S5228C8.s5228c8f1");
    check_field_offset(lv, s5228c8f2, ABISELECT(72,52), "S5228C8.s5228c8f2");
    check_field_offset(lv, s5228c8f3, ABISELECT(80,56), "S5228C8.s5228c8f3");
    test_class_info(&lv, &cd_S5228C8);
    dp->~S5228C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5228C8(Test_S5228C8, "S5228C8", ABISELECT(152,104));

#else // __cplusplus

extern void _ZN7S5228C8C1Ev();
extern void _ZN7S5228C8D1Ev();
Name_Map name_map_S5228C8[] = {
  NSPAIR(_ZN7S5228C8C1Ev),
  NSPAIR(_ZN7S5228C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5228C8[];
extern void _ZN7S5228C8D1Ev();
extern void _ZN7S5228C8D0Ev();
static  VTBL_ENTRY vtc_S5228C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5228C8[0]),
  (VTBL_ENTRY)&_ZN7S5228C8D1Ev,
  (VTBL_ENTRY)&_ZN7S5228C8D0Ev,
};
extern VTBL_ENTRY _ZTI7S5228C8[];
extern  VTBL_ENTRY _ZTV7S5228C8[];
Class_Descriptor cd_S5228C8 = {  "S5228C8", // class name
  0,0,//no base classes
  &(vtc_S5228C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,104), // object size
  NSPAIRA(_ZTI7S5228C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5228C8),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  S5228C1  : S5228C2 {
  void *s5228c1f0;
  ::S5228C8 s5228c1f1;
  void *s5228c1f2[3];
  virtual  ~S5228C1(); // _ZN7S5228C1D1Ev
  virtual void  v1(); // _ZN7S5228C12v1Ev
  virtual void  v2(); // _ZN7S5228C12v2Ev
  virtual void  v3(); // _ZN7S5228C12v3Ev
  virtual void  v4(); // _ZN7S5228C12v4Ev
  S5228C1(); // tgen
};
//SIG(1 S5228C1) C1{ BC2{ BC3{ vd v5 v6 Fi Fc[3]} BC4{ vd m} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 FC5{ BC6{ vd v24 v25 v26 v27 v28 v29 v30 v31 v32 Fp} vd v16 v17 v18 v19 v20 v21 v22 v23 Fi[2] Fp} FC7{ m Fi[3] Fc} Fp Fc} vd v1 v2 v3 v4 Fp FC8{ vd m FC9{ m FC10{ vd m FL Fc} FC10} Fi[4] Fp FC11{ BC4 vd FC9 Fc[10]}} Fp[3]}


 S5228C1 ::~S5228C1(){ note_dtor("S5228C1", this);}
void  S5228C1 ::v1(){vfunc_called(this, "_ZN7S5228C12v1Ev");}
void  S5228C1 ::v2(){vfunc_called(this, "_ZN7S5228C12v2Ev");}
void  S5228C1 ::v3(){vfunc_called(this, "_ZN7S5228C12v3Ev");}
void  S5228C1 ::v4(){vfunc_called(this, "_ZN7S5228C12v4Ev");}
S5228C1 ::S5228C1(){ note_ctor("S5228C1", this);} // tgen

static void Test_S5228C1()
{
  extern Class_Descriptor cd_S5228C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,46)];
    init_test(&cd_S5228C1, buf);
    S5228C1 *dp, &lv = *(dp=new (buf) S5228C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,180), "sizeof(S5228C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5228C1)");
    check_base_class_offset(lv, (S5228C3*)(S5228C2*), 0, "S5228C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S5228C2*), ABISELECT(16,12), "S5228C1");
    check_base_class_offset(lv, (S5228C2*), 0, "S5228C1");
    check_field_offset(lv, s5228c1f0, ABISELECT(88,60), "S5228C1.s5228c1f0");
    check_field_offset(lv, s5228c1f1, ABISELECT(96,64), "S5228C1.s5228c1f1");
    check_field_offset(lv, s5228c1f2, ABISELECT(248,168), "S5228C1.s5228c1f2");
    test_class_info(&lv, &cd_S5228C1);
    dp->~S5228C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5228C1(Test_S5228C1, "S5228C1", ABISELECT(272,180));

#else // __cplusplus

extern void _ZN7S5228C1C1Ev();
extern void _ZN7S5228C1D1Ev();
Name_Map name_map_S5228C1[] = {
  NSPAIR(_ZN7S5228C1C1Ev),
  NSPAIR(_ZN7S5228C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C3;
extern VTBL_ENTRY _ZTI7S5228C3[];
extern  VTBL_ENTRY _ZTV7S5228C3[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C2;
extern VTBL_ENTRY _ZTI7S5228C2[];
extern  VTBL_ENTRY _ZTV7S5228C2[];
static Base_Class bases_S5228C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,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
    2, //immediately_derived
  0, 0},
  {&cd_S5228C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5228C1[];
extern void _ZN7S5228C1D1Ev();
extern void _ZN7S5228C1D0Ev();
extern void _ZN7S5228C32v5Ev();
extern void _ZN7S5228C32v6Ev();
extern void _ZN7S5228C22v7Ev();
extern void _ZN7S5228C22v8Ev();
extern void _ZN7S5228C22v9Ev();
extern void _ZN7S5228C23v10Ev();
extern void _ZN7S5228C23v11Ev();
extern void _ZN7S5228C23v12Ev();
extern void _ZN7S5228C23v13Ev();
extern void _ZN7S5228C23v14Ev();
extern void _ZN7S5228C23v15Ev();
extern void _ZN7S5228C12v1Ev();
extern void _ZN7S5228C12v2Ev();
extern void _ZN7S5228C12v3Ev();
extern void _ZN7S5228C12v4Ev();
extern void ABISELECT(_ZThn16_N7S5228C1D1Ev,_ZThn12_N7S5228C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S5228C1D0Ev,_ZThn12_N7S5228C1D0Ev)();
static  VTBL_ENTRY vtc_S5228C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5228C1[0]),
  (VTBL_ENTRY)&_ZN7S5228C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5228C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5228C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5228C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5228C22v7Ev,
  (VTBL_ENTRY)&_ZN7S5228C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5228C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5228C23v15Ev,
  (VTBL_ENTRY)&_ZN7S5228C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5228C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5228C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5228C12v4Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5228C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5228C1D1Ev,_ZThn12_N7S5228C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5228C1D0Ev,_ZThn12_N7S5228C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S5228C1[];
extern  VTBL_ENTRY _ZTV7S5228C1[];
Class_Descriptor cd_S5228C1 = {  "S5228C1", // class name
  bases_S5228C1, 3,
  &(vtc_S5228C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,180), // object size
  NSPAIRA(_ZTI7S5228C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5228C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6503C2_nt  {
  void *s6503c2f0;
  ::S2213C25 s6503c2f1;
  virtual  ~S6503C2_nt(); // _ZN10S6503C2_ntD1Ev
  virtual void  v15(); // _ZN10S6503C2_nt3v15Ev
  virtual void  v16(); // _ZN10S6503C2_nt3v16Ev
  virtual void  v17(); // _ZN10S6503C2_nt3v17Ev
  virtual void  v18(); // _ZN10S6503C2_nt3v18Ev
  virtual void  v19(); // _ZN10S6503C2_nt3v19Ev
  virtual void  v20(); // _ZN10S6503C2_nt3v20Ev
  virtual void  v21(); // _ZN10S6503C2_nt3v21Ev
  virtual void  v22(); // _ZN10S6503C2_nt3v22Ev
  virtual void  v23(); // _ZN10S6503C2_nt3v23Ev
  virtual void  v24(); // _ZN10S6503C2_nt3v24Ev
  virtual void  v25(); // _ZN10S6503C2_nt3v25Ev
  virtual void  v26(); // _ZN10S6503C2_nt3v26Ev
  virtual void  v27(); // _ZN10S6503C2_nt3v27Ev
  virtual void  v28(); // _ZN10S6503C2_nt3v28Ev
  virtual void  v29(); // _ZN10S6503C2_nt3v29Ev
  S6503C2_nt(); // tgen
};
//SIG(-1 S6503C2_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} FC4}}}


 S6503C2_nt ::~S6503C2_nt(){ note_dtor("S6503C2_nt", this);}
void  S6503C2_nt ::v15(){vfunc_called(this, "_ZN10S6503C2_nt3v15Ev");}
void  S6503C2_nt ::v16(){vfunc_called(this, "_ZN10S6503C2_nt3v16Ev");}
void  S6503C2_nt ::v17(){vfunc_called(this, "_ZN10S6503C2_nt3v17Ev");}
void  S6503C2_nt ::v18(){vfunc_called(this, "_ZN10S6503C2_nt3v18Ev");}
void  S6503C2_nt ::v19(){vfunc_called(this, "_ZN10S6503C2_nt3v19Ev");}
void  S6503C2_nt ::v20(){vfunc_called(this, "_ZN10S6503C2_nt3v20Ev");}
void  S6503C2_nt ::v21(){vfunc_called(this, "_ZN10S6503C2_nt3v21Ev");}
void  S6503C2_nt ::v22(){vfunc_called(this, "_ZN10S6503C2_nt3v22Ev");}
void  S6503C2_nt ::v23(){vfunc_called(this, "_ZN10S6503C2_nt3v23Ev");}
void  S6503C2_nt ::v24(){vfunc_called(this, "_ZN10S6503C2_nt3v24Ev");}
void  S6503C2_nt ::v25(){vfunc_called(this, "_ZN10S6503C2_nt3v25Ev");}
void  S6503C2_nt ::v26(){vfunc_called(this, "_ZN10S6503C2_nt3v26Ev");}
void  S6503C2_nt ::v27(){vfunc_called(this, "_ZN10S6503C2_nt3v27Ev");}
void  S6503C2_nt ::v28(){vfunc_called(this, "_ZN10S6503C2_nt3v28Ev");}
void  S6503C2_nt ::v29(){vfunc_called(this, "_ZN10S6503C2_nt3v29Ev");}
S6503C2_nt ::S6503C2_nt(){ note_ctor("S6503C2_nt", this);} // tgen

//skip512 S6503C2_nt

#else // __cplusplus

extern void _ZN10S6503C2_ntC1Ev();
extern void _ZN10S6503C2_ntD1Ev();
Name_Map name_map_S6503C2_nt[] = {
  NSPAIR(_ZN10S6503C2_ntC1Ev),
  NSPAIR(_ZN10S6503C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6503C2_nt[];
extern void _ZN10S6503C2_ntD1Ev();
extern void _ZN10S6503C2_ntD0Ev();
extern void _ZN10S6503C2_nt3v15Ev();
extern void _ZN10S6503C2_nt3v16Ev();
extern void _ZN10S6503C2_nt3v17Ev();
extern void _ZN10S6503C2_nt3v18Ev();
extern void _ZN10S6503C2_nt3v19Ev();
extern void _ZN10S6503C2_nt3v20Ev();
extern void _ZN10S6503C2_nt3v21Ev();
extern void _ZN10S6503C2_nt3v22Ev();
extern void _ZN10S6503C2_nt3v23Ev();
extern void _ZN10S6503C2_nt3v24Ev();
extern void _ZN10S6503C2_nt3v25Ev();
extern void _ZN10S6503C2_nt3v26Ev();
extern void _ZN10S6503C2_nt3v27Ev();
extern void _ZN10S6503C2_nt3v28Ev();
extern void _ZN10S6503C2_nt3v29Ev();
static  VTBL_ENTRY vtc_S6503C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6503C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6503C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v29Ev,
};
extern VTBL_ENTRY _ZTI10S6503C2_nt[];
VTBL_ENTRY *P__ZTI10S6503C2_nt = _ZTI10S6503C2_nt; 
extern  VTBL_ENTRY _ZTV10S6503C2_nt[];
Class_Descriptor cd_S6503C2_nt = {  "S6503C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6503C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S6503C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6503C2_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  S6503C9  {
  virtual  ~S6503C9(); // _ZN7S6503C9D1Ev
  virtual void  v30(); // _ZN7S6503C93v30Ev
  virtual void  v31(); // _ZN7S6503C93v31Ev
  virtual void  v32(); // _ZN7S6503C93v32Ev
  S6503C9(); // tgen
};
//SIG(-1 S6503C9) C1{ vd v1 v2 v3}


 S6503C9 ::~S6503C9(){ note_dtor("S6503C9", this);}
void  S6503C9 ::v30(){vfunc_called(this, "_ZN7S6503C93v30Ev");}
void  S6503C9 ::v31(){vfunc_called(this, "_ZN7S6503C93v31Ev");}
void  S6503C9 ::v32(){vfunc_called(this, "_ZN7S6503C93v32Ev");}
S6503C9 ::S6503C9(){ note_ctor("S6503C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6503C9C1Ev();
extern void _ZN7S6503C9D1Ev();
Name_Map name_map_S6503C9[] = {
  NSPAIR(_ZN7S6503C9C1Ev),
  NSPAIR(_ZN7S6503C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6503C9[];
extern void _ZN7S6503C9D1Ev();
extern void _ZN7S6503C9D0Ev();
extern void _ZN7S6503C93v30Ev();
extern void _ZN7S6503C93v31Ev();
extern void _ZN7S6503C93v32Ev();
static  VTBL_ENTRY vtc_S6503C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6503C9[0]),
  (VTBL_ENTRY)&_ZN7S6503C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6503C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v32Ev,
};
extern VTBL_ENTRY _ZTI7S6503C9[];
extern  VTBL_ENTRY _ZTV7S6503C9[];
Class_Descriptor cd_S6503C9 = {  "S6503C9", // class name
  0,0,//no base classes
  &(vtc_S6503C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6503C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6503C9),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  S6503C8_nt  : S6503C9 {
  virtual  ~S6503C8_nt(); // _ZN10S6503C8_ntD1Ev
  virtual void  v33(); // _ZN10S6503C8_nt3v33Ev
  virtual void  v34(); // _ZN10S6503C8_nt3v34Ev
  virtual void  v35(); // _ZN10S6503C8_nt3v35Ev
  virtual void  v36(); // _ZN10S6503C8_nt3v36Ev
  virtual void  v37(); // _ZN10S6503C8_nt3v37Ev
  virtual void  v38(); // _ZN10S6503C8_nt3v38Ev
  S6503C8_nt(); // tgen
};
//SIG(-1 S6503C8_nt) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S6503C8_nt ::~S6503C8_nt(){ note_dtor("S6503C8_nt", this);}
void  S6503C8_nt ::v33(){vfunc_called(this, "_ZN10S6503C8_nt3v33Ev");}
void  S6503C8_nt ::v34(){vfunc_called(this, "_ZN10S6503C8_nt3v34Ev");}
void  S6503C8_nt ::v35(){vfunc_called(this, "_ZN10S6503C8_nt3v35Ev");}
void  S6503C8_nt ::v36(){vfunc_called(this, "_ZN10S6503C8_nt3v36Ev");}
void  S6503C8_nt ::v37(){vfunc_called(this, "_ZN10S6503C8_nt3v37Ev");}
void  S6503C8_nt ::v38(){vfunc_called(this, "_ZN10S6503C8_nt3v38Ev");}
S6503C8_nt ::S6503C8_nt(){ note_ctor("S6503C8_nt", this);} // tgen

//skip512 S6503C8_nt

#else // __cplusplus

extern void _ZN10S6503C8_ntC1Ev();
extern void _ZN10S6503C8_ntD1Ev();
Name_Map name_map_S6503C8_nt[] = {
  NSPAIR(_ZN10S6503C8_ntC1Ev),
  NSPAIR(_ZN10S6503C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6503C9;
extern VTBL_ENTRY _ZTI7S6503C9[];
extern  VTBL_ENTRY _ZTV7S6503C9[];
static Base_Class bases_S6503C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6503C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S6503C8_nt[];
extern void _ZN10S6503C8_ntD1Ev();
extern void _ZN10S6503C8_ntD0Ev();
extern void _ZN7S6503C93v30Ev();
extern void _ZN7S6503C93v31Ev();
extern void _ZN7S6503C93v32Ev();
extern void _ZN10S6503C8_nt3v33Ev();
extern void _ZN10S6503C8_nt3v34Ev();
extern void _ZN10S6503C8_nt3v35Ev();
extern void _ZN10S6503C8_nt3v36Ev();
extern void _ZN10S6503C8_nt3v37Ev();
extern void _ZN10S6503C8_nt3v38Ev();
static  VTBL_ENTRY vtc_S6503C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6503C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S6503C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v32Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v38Ev,
};
extern VTBL_ENTRY _ZTI10S6503C8_nt[];
VTBL_ENTRY *P__ZTI10S6503C8_nt = _ZTI10S6503C8_nt; 
extern  VTBL_ENTRY _ZTV10S6503C8_nt[];
Class_Descriptor cd_S6503C8_nt = {  "S6503C8_nt", // class name
  bases_S6503C8_nt, 1,
  &(vtc_S6503C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6503C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S6503C8_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  S6503C7_nt  : S6503C8_nt {
  ::S2213C37 s6503c7f0;
  ::S2367C7_nt s6503c7f1;
  char s6503c7f2;
  virtual  ~S6503C7_nt(); // _ZN10S6503C7_ntD1Ev
  virtual void  v39(); // _ZN10S6503C7_nt3v39Ev
  virtual void  v40(); // _ZN10S6503C7_nt3v40Ev
  virtual void  v41(); // _ZN10S6503C7_nt3v41Ev
  S6503C7_nt(); // tgen
};
//SIG(-1 S6503C7_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}


 S6503C7_nt ::~S6503C7_nt(){ note_dtor("S6503C7_nt", this);}
void  S6503C7_nt ::v39(){vfunc_called(this, "_ZN10S6503C7_nt3v39Ev");}
void  S6503C7_nt ::v40(){vfunc_called(this, "_ZN10S6503C7_nt3v40Ev");}
void  S6503C7_nt ::v41(){vfunc_called(this, "_ZN10S6503C7_nt3v41Ev");}
S6503C7_nt ::S6503C7_nt(){ note_ctor("S6503C7_nt", this);} // tgen

//skip512 S6503C7_nt

#else // __cplusplus

extern void _ZN10S6503C7_ntC1Ev();
extern void _ZN10S6503C7_ntD1Ev();
Name_Map name_map_S6503C7_nt[] = {
  NSPAIR(_ZN10S6503C7_ntC1Ev),
  NSPAIR(_ZN10S6503C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6503C9;
extern VTBL_ENTRY _ZTI7S6503C9[];
extern  VTBL_ENTRY _ZTV7S6503C9[];
extern Class_Descriptor cd_S6503C8_nt;
extern VTBL_ENTRY _ZTI10S6503C8_nt[];
extern  VTBL_ENTRY _ZTV10S6503C8_nt[];
static Base_Class bases_S6503C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6503C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6503C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S6503C7_nt[];
extern void _ZN10S6503C7_ntD1Ev();
extern void _ZN10S6503C7_ntD0Ev();
extern void _ZN7S6503C93v30Ev();
extern void _ZN7S6503C93v31Ev();
extern void _ZN7S6503C93v32Ev();
extern void _ZN10S6503C8_nt3v33Ev();
extern void _ZN10S6503C8_nt3v34Ev();
extern void _ZN10S6503C8_nt3v35Ev();
extern void _ZN10S6503C8_nt3v36Ev();
extern void _ZN10S6503C8_nt3v37Ev();
extern void _ZN10S6503C8_nt3v38Ev();
extern void _ZN10S6503C7_nt3v39Ev();
extern void _ZN10S6503C7_nt3v40Ev();
extern void _ZN10S6503C7_nt3v41Ev();
static  VTBL_ENTRY vtc_S6503C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6503C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6503C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6503C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v32Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S6503C7_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6503C7_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S6503C7_nt3v41Ev,
};
extern VTBL_ENTRY _ZTI10S6503C7_nt[];
VTBL_ENTRY *P__ZTI10S6503C7_nt = _ZTI10S6503C7_nt; 
extern  VTBL_ENTRY _ZTV10S6503C7_nt[];
Class_Descriptor cd_S6503C7_nt = {  "S6503C7_nt", // class name
  bases_S6503C7_nt, 2,
  &(vtc_S6503C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S6503C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S6503C7_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  S6503C1  : S6503C2_nt , S6503C7_nt {
  void *s6503c1f0;
  char s6503c1f1[2];
  virtual  ~S6503C1(); // _ZN7S6503C1D1Ev
  virtual void  v1(); // _ZN7S6503C12v1Ev
  virtual void  v2(); // _ZN7S6503C12v2Ev
  virtual void  v3(); // _ZN7S6503C12v3Ev
  virtual void  v4(); // _ZN7S6503C12v4Ev
  virtual void  v5(); // _ZN7S6503C12v5Ev
  virtual void  v6(); // _ZN7S6503C12v6Ev
  virtual void  v7(); // _ZN7S6503C12v7Ev
  virtual void  v8(); // _ZN7S6503C12v8Ev
  virtual void  v9(); // _ZN7S6503C12v9Ev
  virtual void  v10(); // _ZN7S6503C13v10Ev
  virtual void  v11(); // _ZN7S6503C13v11Ev
  virtual void  v12(); // _ZN7S6503C13v12Ev
  virtual void  v13(); // _ZN7S6503C13v13Ev
  virtual void  v14(); // _ZN7S6503C13v14Ev
  S6503C1(); // tgen
};
//SIG(1 S6503C1) 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} FC5}}} BC6{ BC7{ BC8{ vd v30 v31 v32} vd v33 v34 v35 v36 v37 v38} vd v39 v40 v41 FC9{ m Fp Fi[2] FC10{ m}} FC11{ m FC12{ FL[4]}} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp Fc[2]}


 S6503C1 ::~S6503C1(){ note_dtor("S6503C1", this);}
void  S6503C1 ::v1(){vfunc_called(this, "_ZN7S6503C12v1Ev");}
void  S6503C1 ::v2(){vfunc_called(this, "_ZN7S6503C12v2Ev");}
void  S6503C1 ::v3(){vfunc_called(this, "_ZN7S6503C12v3Ev");}
void  S6503C1 ::v4(){vfunc_called(this, "_ZN7S6503C12v4Ev");}
void  S6503C1 ::v5(){vfunc_called(this, "_ZN7S6503C12v5Ev");}
void  S6503C1 ::v6(){vfunc_called(this, "_ZN7S6503C12v6Ev");}
void  S6503C1 ::v7(){vfunc_called(this, "_ZN7S6503C12v7Ev");}
void  S6503C1 ::v8(){vfunc_called(this, "_ZN7S6503C12v8Ev");}
void  S6503C1 ::v9(){vfunc_called(this, "_ZN7S6503C12v9Ev");}
void  S6503C1 ::v10(){vfunc_called(this, "_ZN7S6503C13v10Ev");}
void  S6503C1 ::v11(){vfunc_called(this, "_ZN7S6503C13v11Ev");}
void  S6503C1 ::v12(){vfunc_called(this, "_ZN7S6503C13v12Ev");}
void  S6503C1 ::v13(){vfunc_called(this, "_ZN7S6503C13v13Ev");}
void  S6503C1 ::v14(){vfunc_called(this, "_ZN7S6503C13v14Ev");}
S6503C1 ::S6503C1(){ note_ctor("S6503C1", this);} // tgen

static void Test_S6503C1()
{
  extern Class_Descriptor cd_S6503C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S6503C1, buf);
    S6503C1 *dp, &lv = *(dp=new (buf) S6503C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S6503C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6503C1)");
    check_base_class_offset(lv, (S6503C2_nt*), 0, "S6503C1");
    check_base_class_offset(lv, (S6503C9*)(S6503C8_nt*)(S6503C7_nt*), ABISELECT(32,20), "S6503C1");
    check_base_class_offset(lv, (S6503C8_nt*)(S6503C7_nt*), ABISELECT(32,20), "S6503C1");
    check_base_class_offset(lv, (S6503C7_nt*), ABISELECT(32,20), "S6503C1");
    check_field_offset(lv, s6503c1f0, ABISELECT(104,76), "S6503C1.s6503c1f0");
    check_field_offset(lv, s6503c1f1, ABISELECT(112,80), "S6503C1.s6503c1f1");
    test_class_info(&lv, &cd_S6503C1);
    dp->~S6503C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6503C1(Test_S6503C1, "S6503C1", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN7S6503C1C1Ev();
extern void _ZN7S6503C1D1Ev();
Name_Map name_map_S6503C1[] = {
  NSPAIR(_ZN7S6503C1C1Ev),
  NSPAIR(_ZN7S6503C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6503C2_nt;
extern VTBL_ENTRY _ZTI10S6503C2_nt[];
extern  VTBL_ENTRY _ZTV10S6503C2_nt[];
extern Class_Descriptor cd_S6503C9;
extern VTBL_ENTRY _ZTI7S6503C9[];
extern  VTBL_ENTRY _ZTV7S6503C9[];
extern Class_Descriptor cd_S6503C8_nt;
extern VTBL_ENTRY _ZTI10S6503C8_nt[];
extern  VTBL_ENTRY _ZTV10S6503C8_nt[];
extern Class_Descriptor cd_S6503C7_nt;
extern VTBL_ENTRY _ZTI10S6503C7_nt[];
extern  VTBL_ENTRY _ZTV10S6503C7_nt[];
static Base_Class bases_S6503C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6503C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6503C9,    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_S6503C8_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6503C7_nt,    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 _ZTI7S6503C1[];
extern void _ZN7S6503C1D1Ev();
extern void _ZN7S6503C1D0Ev();
extern void _ZN10S6503C2_nt3v15Ev();
extern void _ZN10S6503C2_nt3v16Ev();
extern void _ZN10S6503C2_nt3v17Ev();
extern void _ZN10S6503C2_nt3v18Ev();
extern void _ZN10S6503C2_nt3v19Ev();
extern void _ZN10S6503C2_nt3v20Ev();
extern void _ZN10S6503C2_nt3v21Ev();
extern void _ZN10S6503C2_nt3v22Ev();
extern void _ZN10S6503C2_nt3v23Ev();
extern void _ZN10S6503C2_nt3v24Ev();
extern void _ZN10S6503C2_nt3v25Ev();
extern void _ZN10S6503C2_nt3v26Ev();
extern void _ZN10S6503C2_nt3v27Ev();
extern void _ZN10S6503C2_nt3v28Ev();
extern void _ZN10S6503C2_nt3v29Ev();
extern void _ZN7S6503C12v1Ev();
extern void _ZN7S6503C12v2Ev();
extern void _ZN7S6503C12v3Ev();
extern void _ZN7S6503C12v4Ev();
extern void _ZN7S6503C12v5Ev();
extern void _ZN7S6503C12v6Ev();
extern void _ZN7S6503C12v7Ev();
extern void _ZN7S6503C12v8Ev();
extern void _ZN7S6503C12v9Ev();
extern void _ZN7S6503C13v10Ev();
extern void _ZN7S6503C13v11Ev();
extern void _ZN7S6503C13v12Ev();
extern void _ZN7S6503C13v13Ev();
extern void _ZN7S6503C13v14Ev();
extern void ABISELECT(_ZThn32_N7S6503C1D1Ev,_ZThn20_N7S6503C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S6503C1D0Ev,_ZThn20_N7S6503C1D0Ev)();
extern void _ZN7S6503C93v30Ev();
extern void _ZN7S6503C93v31Ev();
extern void _ZN7S6503C93v32Ev();
extern void _ZN10S6503C8_nt3v33Ev();
extern void _ZN10S6503C8_nt3v34Ev();
extern void _ZN10S6503C8_nt3v35Ev();
extern void _ZN10S6503C8_nt3v36Ev();
extern void _ZN10S6503C8_nt3v37Ev();
extern void _ZN10S6503C8_nt3v38Ev();
extern void _ZN10S6503C7_nt3v39Ev();
extern void _ZN10S6503C7_nt3v40Ev();
extern void _ZN10S6503C7_nt3v41Ev();
static  VTBL_ENTRY vtc_S6503C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6503C1[0]),
  (VTBL_ENTRY)&_ZN7S6503C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6503C1D0Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S6503C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN7S6503C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6503C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6503C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6503C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6503C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6503C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6503C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6503C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6503C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6503C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6503C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6503C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6503C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6503C13v14Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6503C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6503C1D1Ev,_ZThn20_N7S6503C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6503C1D0Ev,_ZThn20_N7S6503C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6503C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6503C93v32Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6503C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S6503C7_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6503C7_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S6503C7_nt3v41Ev,
};
extern VTBL_ENTRY _ZTI7S6503C1[];
extern  VTBL_ENTRY _ZTV7S6503C1[];
Class_Descriptor cd_S6503C1 = {  "S6503C1", // class name
  bases_S6503C1, 4,
  &(vtc_S6503C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI7S6503C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6503C1),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  S22077C2  {
  void *s22077c2f0;
  char s22077c2f1;
  void *s22077c2f2[8];
  ::S2213C20_nt s22077c2f3;
  char s22077c2f4;
  int s22077c2f5;
  virtual  ~S22077C2(); // _ZN8S22077C2D1Ev
  virtual void  v13(); // _ZN8S22077C23v13Ev
  virtual void  v14(); // _ZN8S22077C23v14Ev
  virtual void  v15(); // _ZN8S22077C23v15Ev
  virtual void  v16(); // _ZN8S22077C23v16Ev
  virtual void  v17(); // _ZN8S22077C23v17Ev
  virtual void  v18(); // _ZN8S22077C23v18Ev
  virtual void  v19(); // _ZN8S22077C23v19Ev
  virtual void  v20(); // _ZN8S22077C23v20Ev
  virtual void  v21(); // _ZN8S22077C23v21Ev
  virtual void  v22(); // _ZN8S22077C23v22Ev
  virtual void  v23(); // _ZN8S22077C23v23Ev
  virtual void  v24(); // _ZN8S22077C23v24Ev
  virtual void  v25(); // _ZN8S22077C23v25Ev
  virtual void  v26(); // _ZN8S22077C23v26Ev
  virtual void  v27(); // _ZN8S22077C23v27Ev
  virtual void  v28(); // _ZN8S22077C23v28Ev
  virtual void  v29(); // _ZN8S22077C23v29Ev
  virtual void  v30(); // _ZN8S22077C23v30Ev
  S22077C2(); // tgen
};
//SIG(-1 S22077C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp Fc Fp[8] FC2{ m Fp Fi FC3{ m}} Fc Fi}


 S22077C2 ::~S22077C2(){ note_dtor("S22077C2", this);}
void  S22077C2 ::v13(){vfunc_called(this, "_ZN8S22077C23v13Ev");}
void  S22077C2 ::v14(){vfunc_called(this, "_ZN8S22077C23v14Ev");}
void  S22077C2 ::v15(){vfunc_called(this, "_ZN8S22077C23v15Ev");}
void  S22077C2 ::v16(){vfunc_called(this, "_ZN8S22077C23v16Ev");}
void  S22077C2 ::v17(){vfunc_called(this, "_ZN8S22077C23v17Ev");}
void  S22077C2 ::v18(){vfunc_called(this, "_ZN8S22077C23v18Ev");}
void  S22077C2 ::v19(){vfunc_called(this, "_ZN8S22077C23v19Ev");}
void  S22077C2 ::v20(){vfunc_called(this, "_ZN8S22077C23v20Ev");}
void  S22077C2 ::v21(){vfunc_called(this, "_ZN8S22077C23v21Ev");}
void  S22077C2 ::v22(){vfunc_called(this, "_ZN8S22077C23v22Ev");}
void  S22077C2 ::v23(){vfunc_called(this, "_ZN8S22077C23v23Ev");}
void  S22077C2 ::v24(){vfunc_called(this, "_ZN8S22077C23v24Ev");}
void  S22077C2 ::v25(){vfunc_called(this, "_ZN8S22077C23v25Ev");}
void  S22077C2 ::v26(){vfunc_called(this, "_ZN8S22077C23v26Ev");}
void  S22077C2 ::v27(){vfunc_called(this, "_ZN8S22077C23v27Ev");}
void  S22077C2 ::v28(){vfunc_called(this, "_ZN8S22077C23v28Ev");}
void  S22077C2 ::v29(){vfunc_called(this, "_ZN8S22077C23v29Ev");}
void  S22077C2 ::v30(){vfunc_called(this, "_ZN8S22077C23v30Ev");}
S22077C2 ::S22077C2(){ note_ctor("S22077C2", this);} // tgen

static void Test_S22077C2()
{
  extern Class_Descriptor cd_S22077C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S22077C2, buf);
    S22077C2 *dp, &lv = *(dp=new (buf) S22077C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S22077C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22077C2)");
    check_field_offset(lv, s22077c2f0, ABISELECT(8,4), "S22077C2.s22077c2f0");
    check_field_offset(lv, s22077c2f1, ABISELECT(16,8), "S22077C2.s22077c2f1");
    check_field_offset(lv, s22077c2f2, ABISELECT(24,12), "S22077C2.s22077c2f2");
    check_field_offset(lv, s22077c2f3, ABISELECT(88,44), "S22077C2.s22077c2f3");
    check_field_offset(lv, s22077c2f4, ABISELECT(104,56), "S22077C2.s22077c2f4");
    check_field_offset(lv, s22077c2f5, ABISELECT(108,60), "S22077C2.s22077c2f5");
    test_class_info(&lv, &cd_S22077C2);
    dp->~S22077C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS22077C2(Test_S22077C2, "S22077C2", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S22077C2C1Ev();
extern void _ZN8S22077C2D1Ev();
Name_Map name_map_S22077C2[] = {
  NSPAIR(_ZN8S22077C2C1Ev),
  NSPAIR(_ZN8S22077C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S22077C2[];
extern void _ZN8S22077C2D1Ev();
extern void _ZN8S22077C2D0Ev();
extern void _ZN8S22077C23v13Ev();
extern void _ZN8S22077C23v14Ev();
extern void _ZN8S22077C23v15Ev();
extern void _ZN8S22077C23v16Ev();
extern void _ZN8S22077C23v17Ev();
extern void _ZN8S22077C23v18Ev();
extern void _ZN8S22077C23v19Ev();
extern void _ZN8S22077C23v20Ev();
extern void _ZN8S22077C23v21Ev();
extern void _ZN8S22077C23v22Ev();
extern void _ZN8S22077C23v23Ev();
extern void _ZN8S22077C23v24Ev();
extern void _ZN8S22077C23v25Ev();
extern void _ZN8S22077C23v26Ev();
extern void _ZN8S22077C23v27Ev();
extern void _ZN8S22077C23v28Ev();
extern void _ZN8S22077C23v29Ev();
extern void _ZN8S22077C23v30Ev();
static  VTBL_ENTRY vtc_S22077C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S22077C2[0]),
  (VTBL_ENTRY)&_ZN8S22077C2D1Ev,
  (VTBL_ENTRY)&_ZN8S22077C2D0Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v13Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v14Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v15Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v16Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v17Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v18Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v19Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v20Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v21Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v22Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v23Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v24Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v25Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v26Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v27Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v28Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v29Ev,
  (VTBL_ENTRY)&_ZN8S22077C23v30Ev,
};
extern VTBL_ENTRY _ZTI8S22077C2[];
extern  VTBL_ENTRY _ZTV8S22077C2[];
Class_Descriptor cd_S22077C2 = {  "S22077C2", // class name
  0,0,//no base classes
  &(vtc_S22077C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S22077C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S22077C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S22077C5_nt  {
  char s22077c5f0[12];
};
//SIG(-1 S22077C5_nt) C1{ Fc[12]}



//skip512 S22077C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S22077C1  {
  void *s22077c1f0;
  int s22077c1f1;
  ::S22077C2 s22077c1f2;
  int s22077c1f3[2];
  ::S22077C5_nt s22077c1f4;
  int s22077c1f5[2];
  ::S2137C23_nt s22077c1f6;
  int s22077c1f7;
  ::S2213C20_nt s22077c1f8;
  void *s22077c1f9;
  char s22077c1f10;
  ::S2213C25 s22077c1f11;
  ::S2342C13_nt s22077c1f12;
  char s22077c1f13;
  int s22077c1f14;
  virtual  ~S22077C1(); // _ZN8S22077C1D1Ev
  virtual void  v1(); // _ZN8S22077C12v1Ev
  virtual void  v2(); // _ZN8S22077C12v2Ev
  virtual void  v3(); // _ZN8S22077C12v3Ev
  virtual void  v4(); // _ZN8S22077C12v4Ev
  virtual void  v5(); // _ZN8S22077C12v5Ev
  virtual void  v6(); // _ZN8S22077C12v6Ev
  virtual void  v7(); // _ZN8S22077C12v7Ev
  virtual void  v8(); // _ZN8S22077C12v8Ev
  virtual void  v9(); // _ZN8S22077C12v9Ev
  virtual void  v10(); // _ZN8S22077C13v10Ev
  virtual void  v11(); // _ZN8S22077C13v11Ev
  virtual void  v12(); // _ZN8S22077C13v12Ev
  S22077C1(); // tgen
};
//SIG(1 S22077C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp Fi FC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 Fp Fc Fp[8] FC3{ m Fp Fi FC4{ m}} Fc Fi} Fi[2] FC5{ Fc[12]} Fi[2] FC6{ m Fp[2]} Fi FC3 Fp Fc FC7{ BC8{ m Fp Fi FC9{ m} FC9}} FC10{ m FC11{ Fl[4]}} Fc Fi}


 S22077C1 ::~S22077C1(){ note_dtor("S22077C1", this);}
void  S22077C1 ::v1(){vfunc_called(this, "_ZN8S22077C12v1Ev");}
void  S22077C1 ::v2(){vfunc_called(this, "_ZN8S22077C12v2Ev");}
void  S22077C1 ::v3(){vfunc_called(this, "_ZN8S22077C12v3Ev");}
void  S22077C1 ::v4(){vfunc_called(this, "_ZN8S22077C12v4Ev");}
void  S22077C1 ::v5(){vfunc_called(this, "_ZN8S22077C12v5Ev");}
void  S22077C1 ::v6(){vfunc_called(this, "_ZN8S22077C12v6Ev");}
void  S22077C1 ::v7(){vfunc_called(this, "_ZN8S22077C12v7Ev");}
void  S22077C1 ::v8(){vfunc_called(this, "_ZN8S22077C12v8Ev");}
void  S22077C1 ::v9(){vfunc_called(this, "_ZN8S22077C12v9Ev");}
void  S22077C1 ::v10(){vfunc_called(this, "_ZN8S22077C13v10Ev");}
void  S22077C1 ::v11(){vfunc_called(this, "_ZN8S22077C13v11Ev");}
void  S22077C1 ::v12(){vfunc_called(this, "_ZN8S22077C13v12Ev");}
S22077C1 ::S22077C1(){ note_ctor("S22077C1", this);} // tgen

static void Test_S22077C1()
{
  extern Class_Descriptor cd_S22077C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,44)];
    init_test(&cd_S22077C1, buf);
    S22077C1 *dp, &lv = *(dp=new (buf) S22077C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,172), "sizeof(S22077C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22077C1)");
    check_field_offset(lv, s22077c1f0, ABISELECT(8,4), "S22077C1.s22077c1f0");
    check_field_offset(lv, s22077c1f1, ABISELECT(16,8), "S22077C1.s22077c1f1");
    check_field_offset(lv, s22077c1f2, ABISELECT(24,12), "S22077C1.s22077c1f2");
    check_field_offset(lv, s22077c1f3, ABISELECT(136,76), "S22077C1.s22077c1f3");
    check_field_offset(lv, s22077c1f4, ABISELECT(144,84), "S22077C1.s22077c1f4");
    check_field_offset(lv, s22077c1f5, ABISELECT(156,96), "S22077C1.s22077c1f5");
    check_field_offset(lv, s22077c1f6, ABISELECT(168,104), "S22077C1.s22077c1f6");
    check_field_offset(lv, s22077c1f7, ABISELECT(184,112), "S22077C1.s22077c1f7");
    check_field_offset(lv, s22077c1f8, ABISELECT(192,116), "S22077C1.s22077c1f8");
    check_field_offset(lv, s22077c1f9, ABISELECT(208,128), "S22077C1.s22077c1f9");
    check_field_offset(lv, s22077c1f10, ABISELECT(216,132), "S22077C1.s22077c1f10");
    check_field_offset(lv, s22077c1f11, ABISELECT(224,136), "S22077C1.s22077c1f11");
    check_field_offset(lv, s22077c1f12, ABISELECT(240,148), "S22077C1.s22077c1f12");
    check_field_offset(lv, s22077c1f13, ABISELECT(272,164), "S22077C1.s22077c1f13");
    check_field_offset(lv, s22077c1f14, ABISELECT(276,168), "S22077C1.s22077c1f14");
    test_class_info(&lv, &cd_S22077C1);
    dp->~S22077C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS22077C1(Test_S22077C1, "S22077C1", ABISELECT(280,172));

#else // __cplusplus

extern void _ZN8S22077C1C1Ev();
extern void _ZN8S22077C1D1Ev();
Name_Map name_map_S22077C1[] = {
  NSPAIR(_ZN8S22077C1C1Ev),
  NSPAIR(_ZN8S22077C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S22077C1[];
extern void _ZN8S22077C1D1Ev();
extern void _ZN8S22077C1D0Ev();
extern void _ZN8S22077C12v1Ev();
extern void _ZN8S22077C12v2Ev();
extern void _ZN8S22077C12v3Ev();
extern void _ZN8S22077C12v4Ev();
extern void _ZN8S22077C12v5Ev();
extern void _ZN8S22077C12v6Ev();
extern void _ZN8S22077C12v7Ev();
extern void _ZN8S22077C12v8Ev();
extern void _ZN8S22077C12v9Ev();
extern void _ZN8S22077C13v10Ev();
extern void _ZN8S22077C13v11Ev();
extern void _ZN8S22077C13v12Ev();
static  VTBL_ENTRY vtc_S22077C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S22077C1[0]),
  (VTBL_ENTRY)&_ZN8S22077C1D1Ev,
  (VTBL_ENTRY)&_ZN8S22077C1D0Ev,
  (VTBL_ENTRY)&_ZN8S22077C12v1Ev,
  (VTBL_ENTRY)&_ZN8S22077C12v2Ev,
  (VTBL_ENTRY)&_ZN8S22077C12v3Ev,
  (VTBL_ENTRY)&_ZN8S22077C12v4Ev,
  (VTBL_ENTRY)&_ZN8S22077C12v5Ev,
  (VTBL_ENTRY)&_ZN8S22077C12v6Ev,
  (VTBL_ENTRY)&_ZN8S22077C12v7Ev,
  (VTBL_ENTRY)&_ZN8S22077C12v8Ev,
  (VTBL_ENTRY)&_ZN8S22077C12v9Ev,
  (VTBL_ENTRY)&_ZN8S22077C13v10Ev,
  (VTBL_ENTRY)&_ZN8S22077C13v11Ev,
  (VTBL_ENTRY)&_ZN8S22077C13v12Ev,
};
extern VTBL_ENTRY _ZTI8S22077C1[];
extern  VTBL_ENTRY _ZTV8S22077C1[];
Class_Descriptor cd_S22077C1 = {  "S22077C1", // class name
  0,0,//no base classes
  &(vtc_S22077C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,172), // object size
  NSPAIRA(_ZTI8S22077C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S22077C1),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  S22078C1  {
  void *s22078c1f0;
  int s22078c1f1;
  ::S22077C2 s22078c1f2;
  int s22078c1f3[2];
  ::S22077C5_nt s22078c1f4;
  int s22078c1f5[2];
  ::S2137C23_nt s22078c1f6;
  int s22078c1f7;
  ::S2213C20_nt s22078c1f8;
  void *s22078c1f9;
  char s22078c1f10;
  ::S2213C25 s22078c1f11;
  ::S2367C7_nt s22078c1f12;
  char s22078c1f13;
  int s22078c1f14;
  virtual  ~S22078C1(); // _ZN8S22078C1D1Ev
  virtual void  v1(); // _ZN8S22078C12v1Ev
  virtual void  v2(); // _ZN8S22078C12v2Ev
  virtual void  v3(); // _ZN8S22078C12v3Ev
  virtual void  v4(); // _ZN8S22078C12v4Ev
  virtual void  v5(); // _ZN8S22078C12v5Ev
  virtual void  v6(); // _ZN8S22078C12v6Ev
  virtual void  v7(); // _ZN8S22078C12v7Ev
  virtual void  v8(); // _ZN8S22078C12v8Ev
  virtual void  v9(); // _ZN8S22078C12v9Ev
  virtual void  v10(); // _ZN8S22078C13v10Ev
  virtual void  v11(); // _ZN8S22078C13v11Ev
  virtual void  v12(); // _ZN8S22078C13v12Ev
  S22078C1(); // tgen
};
//SIG(1 S22078C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp Fi FC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 Fp Fc Fp[8] FC3{ m Fp Fi FC4{ m}} Fc Fi} Fi[2] FC5{ Fc[12]} Fi[2] FC6{ m Fp[2]} Fi FC3 Fp Fc FC7{ BC8{ m Fp Fi FC9{ m} FC9}} FC10{ m FC11{ FL[4]}} Fc Fi}


 S22078C1 ::~S22078C1(){ note_dtor("S22078C1", this);}
void  S22078C1 ::v1(){vfunc_called(this, "_ZN8S22078C12v1Ev");}
void  S22078C1 ::v2(){vfunc_called(this, "_ZN8S22078C12v2Ev");}
void  S22078C1 ::v3(){vfunc_called(this, "_ZN8S22078C12v3Ev");}
void  S22078C1 ::v4(){vfunc_called(this, "_ZN8S22078C12v4Ev");}
void  S22078C1 ::v5(){vfunc_called(this, "_ZN8S22078C12v5Ev");}
void  S22078C1 ::v6(){vfunc_called(this, "_ZN8S22078C12v6Ev");}
void  S22078C1 ::v7(){vfunc_called(this, "_ZN8S22078C12v7Ev");}
void  S22078C1 ::v8(){vfunc_called(this, "_ZN8S22078C12v8Ev");}
void  S22078C1 ::v9(){vfunc_called(this, "_ZN8S22078C12v9Ev");}
void  S22078C1 ::v10(){vfunc_called(this, "_ZN8S22078C13v10Ev");}
void  S22078C1 ::v11(){vfunc_called(this, "_ZN8S22078C13v11Ev");}
void  S22078C1 ::v12(){vfunc_called(this, "_ZN8S22078C13v12Ev");}
S22078C1 ::S22078C1(){ note_ctor("S22078C1", this);} // tgen

static void Test_S22078C1()
{
  extern Class_Descriptor cd_S22078C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,48)];
    init_test(&cd_S22078C1, buf);
    S22078C1 *dp, &lv = *(dp=new (buf) S22078C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,188), "sizeof(S22078C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22078C1)");
    check_field_offset(lv, s22078c1f0, ABISELECT(8,4), "S22078C1.s22078c1f0");
    check_field_offset(lv, s22078c1f1, ABISELECT(16,8), "S22078C1.s22078c1f1");
    check_field_offset(lv, s22078c1f2, ABISELECT(24,12), "S22078C1.s22078c1f2");
    check_field_offset(lv, s22078c1f3, ABISELECT(136,76), "S22078C1.s22078c1f3");
    check_field_offset(lv, s22078c1f4, ABISELECT(144,84), "S22078C1.s22078c1f4");
    check_field_offset(lv, s22078c1f5, ABISELECT(156,96), "S22078C1.s22078c1f5");
    check_field_offset(lv, s22078c1f6, ABISELECT(168,104), "S22078C1.s22078c1f6");
    check_field_offset(lv, s22078c1f7, ABISELECT(184,112), "S22078C1.s22078c1f7");
    check_field_offset(lv, s22078c1f8, ABISELECT(192,116), "S22078C1.s22078c1f8");
    check_field_offset(lv, s22078c1f9, ABISELECT(208,128), "S22078C1.s22078c1f9");
    check_field_offset(lv, s22078c1f10, ABISELECT(216,132), "S22078C1.s22078c1f10");
    check_field_offset(lv, s22078c1f11, ABISELECT(224,136), "S22078C1.s22078c1f11");
    check_field_offset(lv, s22078c1f12, ABISELECT(240,148), "S22078C1.s22078c1f12");
    check_field_offset(lv, s22078c1f13, ABISELECT(272,180), "S22078C1.s22078c1f13");
    check_field_offset(lv, s22078c1f14, ABISELECT(276,184), "S22078C1.s22078c1f14");
    test_class_info(&lv, &cd_S22078C1);
    dp->~S22078C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS22078C1(Test_S22078C1, "S22078C1", ABISELECT(280,188));

#else // __cplusplus

extern void _ZN8S22078C1C1Ev();
extern void _ZN8S22078C1D1Ev();
Name_Map name_map_S22078C1[] = {
  NSPAIR(_ZN8S22078C1C1Ev),
  NSPAIR(_ZN8S22078C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S22078C1[];
extern void _ZN8S22078C1D1Ev();
extern void _ZN8S22078C1D0Ev();
extern void _ZN8S22078C12v1Ev();
extern void _ZN8S22078C12v2Ev();
extern void _ZN8S22078C12v3Ev();
extern void _ZN8S22078C12v4Ev();
extern void _ZN8S22078C12v5Ev();
extern void _ZN8S22078C12v6Ev();
extern void _ZN8S22078C12v7Ev();
extern void _ZN8S22078C12v8Ev();
extern void _ZN8S22078C12v9Ev();
extern void _ZN8S22078C13v10Ev();
extern void _ZN8S22078C13v11Ev();
extern void _ZN8S22078C13v12Ev();
static  VTBL_ENTRY vtc_S22078C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S22078C1[0]),
  (VTBL_ENTRY)&_ZN8S22078C1D1Ev,
  (VTBL_ENTRY)&_ZN8S22078C1D0Ev,
  (VTBL_ENTRY)&_ZN8S22078C12v1Ev,
  (VTBL_ENTRY)&_ZN8S22078C12v2Ev,
  (VTBL_ENTRY)&_ZN8S22078C12v3Ev,
  (VTBL_ENTRY)&_ZN8S22078C12v4Ev,
  (VTBL_ENTRY)&_ZN8S22078C12v5Ev,
  (VTBL_ENTRY)&_ZN8S22078C12v6Ev,
  (VTBL_ENTRY)&_ZN8S22078C12v7Ev,
  (VTBL_ENTRY)&_ZN8S22078C12v8Ev,
  (VTBL_ENTRY)&_ZN8S22078C12v9Ev,
  (VTBL_ENTRY)&_ZN8S22078C13v10Ev,
  (VTBL_ENTRY)&_ZN8S22078C13v11Ev,
  (VTBL_ENTRY)&_ZN8S22078C13v12Ev,
};
extern VTBL_ENTRY _ZTI8S22078C1[];
extern  VTBL_ENTRY _ZTV8S22078C1[];
Class_Descriptor cd_S22078C1 = {  "S22078C1", // class name
  0,0,//no base classes
  &(vtc_S22078C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,188), // object size
  NSPAIRA(_ZTI8S22078C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S22078C1),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  S4704C3  {
  int s4704c3f0;
  char s4704c3f1[3];
  virtual  ~S4704C3(); // _ZN7S4704C3D1Ev
  virtual void  v3(); // _ZN7S4704C32v3Ev
  virtual void  v4(); // _ZN7S4704C32v4Ev
  S4704C3(); // tgen
};
//SIG(-1 S4704C3) C1{ vd v1 v2 Fi Fc[3]}


 S4704C3 ::~S4704C3(){ note_dtor("S4704C3", this);}
void  S4704C3 ::v3(){vfunc_called(this, "_ZN7S4704C32v3Ev");}
void  S4704C3 ::v4(){vfunc_called(this, "_ZN7S4704C32v4Ev");}
S4704C3 ::S4704C3(){ note_ctor("S4704C3", this);} // tgen

static void Test_S4704C3()
{
  extern Class_Descriptor cd_S4704C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4704C3, buf);
    S4704C3 *dp, &lv = *(dp=new (buf) S4704C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4704C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4704C3)");
    check_field_offset(lv, s4704c3f0, ABISELECT(8,4), "S4704C3.s4704c3f0");
    check_field_offset(lv, s4704c3f1, ABISELECT(12,8), "S4704C3.s4704c3f1");
    test_class_info(&lv, &cd_S4704C3);
    dp->~S4704C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4704C3(Test_S4704C3, "S4704C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4704C3C1Ev();
extern void _ZN7S4704C3D1Ev();
Name_Map name_map_S4704C3[] = {
  NSPAIR(_ZN7S4704C3C1Ev),
  NSPAIR(_ZN7S4704C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4704C3[];
extern void _ZN7S4704C3D1Ev();
extern void _ZN7S4704C3D0Ev();
extern void _ZN7S4704C32v3Ev();
extern void _ZN7S4704C32v4Ev();
static  VTBL_ENTRY vtc_S4704C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4704C3[0]),
  (VTBL_ENTRY)&_ZN7S4704C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4704C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4704C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4704C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4704C3[];
extern  VTBL_ENTRY _ZTV7S4704C3[];
Class_Descriptor cd_S4704C3 = {  "S4704C3", // class name
  0,0,//no base classes
  &(vtc_S4704C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4704C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4704C3),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  S4704C2  : S4704C3 , S5228C4_nt {
  ::S5228C5 s4704c2f0;
  ::S5228C7 s4704c2f1;
  void *s4704c2f2;
  char s4704c2f3;
  virtual  ~S4704C2(); // _ZN7S4704C2D1Ev
  virtual void  v5(); // _ZN7S4704C22v5Ev
  virtual void  v6(); // _ZN7S4704C22v6Ev
  virtual void  v7(); // _ZN7S4704C22v7Ev
  virtual void  v8(); // _ZN7S4704C22v8Ev
  virtual void  v9(); // _ZN7S4704C22v9Ev
  virtual void  v10(); // _ZN7S4704C23v10Ev
  virtual void  v11(); // _ZN7S4704C23v11Ev
  virtual void  v12(); // _ZN7S4704C23v12Ev
  virtual void  v13(); // _ZN7S4704C23v13Ev
  S4704C2(); // tgen
};
//SIG(-1 S4704C2) C1{ BC2{ vd v10 v11 Fi Fc[3]} BC3{ vd m} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ BC5{ vd v20 v21 v22 v23 v24 v25 v26 v27 v28 Fp} vd v12 v13 v14 v15 v16 v17 v18 v19 Fi[2] Fp} FC6{ m Fi[3] Fc} Fp Fc}


 S4704C2 ::~S4704C2(){ note_dtor("S4704C2", this);}
void  S4704C2 ::v5(){vfunc_called(this, "_ZN7S4704C22v5Ev");}
void  S4704C2 ::v6(){vfunc_called(this, "_ZN7S4704C22v6Ev");}
void  S4704C2 ::v7(){vfunc_called(this, "_ZN7S4704C22v7Ev");}
void  S4704C2 ::v8(){vfunc_called(this, "_ZN7S4704C22v8Ev");}
void  S4704C2 ::v9(){vfunc_called(this, "_ZN7S4704C22v9Ev");}
void  S4704C2 ::v10(){vfunc_called(this, "_ZN7S4704C23v10Ev");}
void  S4704C2 ::v11(){vfunc_called(this, "_ZN7S4704C23v11Ev");}
void  S4704C2 ::v12(){vfunc_called(this, "_ZN7S4704C23v12Ev");}
void  S4704C2 ::v13(){vfunc_called(this, "_ZN7S4704C23v13Ev");}
S4704C2 ::S4704C2(){ note_ctor("S4704C2", this);} // tgen

static void Test_S4704C2()
{
  extern Class_Descriptor cd_S4704C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S4704C2, buf);
    S4704C2 *dp, &lv = *(dp=new (buf) S4704C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S4704C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4704C2)");
    check_base_class_offset(lv, (S4704C3*), 0, "S4704C2");
    check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(16,12), "S4704C2");
    check_field_offset(lv, s4704c2f0, ABISELECT(24,16), "S4704C2.s4704c2f0");
    check_field_offset(lv, s4704c2f1, ABISELECT(56,36), "S4704C2.s4704c2f1");
    check_field_offset(lv, s4704c2f2, ABISELECT(72,52), "S4704C2.s4704c2f2");
    check_field_offset(lv, s4704c2f3, ABISELECT(80,56), "S4704C2.s4704c2f3");
    test_class_info(&lv, &cd_S4704C2);
    dp->~S4704C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4704C2(Test_S4704C2, "S4704C2", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S4704C2C1Ev();
extern void _ZN7S4704C2D1Ev();
Name_Map name_map_S4704C2[] = {
  NSPAIR(_ZN7S4704C2C1Ev),
  NSPAIR(_ZN7S4704C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4704C3;
extern VTBL_ENTRY _ZTI7S4704C3[];
extern  VTBL_ENTRY _ZTV7S4704C3[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S4704C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4704C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4704C2[];
extern void _ZN7S4704C2D1Ev();
extern void _ZN7S4704C2D0Ev();
extern void _ZN7S4704C32v3Ev();
extern void _ZN7S4704C32v4Ev();
extern void _ZN7S4704C22v5Ev();
extern void _ZN7S4704C22v6Ev();
extern void _ZN7S4704C22v7Ev();
extern void _ZN7S4704C22v8Ev();
extern void _ZN7S4704C22v9Ev();
extern void _ZN7S4704C23v10Ev();
extern void _ZN7S4704C23v11Ev();
extern void _ZN7S4704C23v12Ev();
extern void _ZN7S4704C23v13Ev();
extern void ABISELECT(_ZThn16_N7S4704C2D1Ev,_ZThn12_N7S4704C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S4704C2D0Ev,_ZThn12_N7S4704C2D0Ev)();
static  VTBL_ENTRY vtc_S4704C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4704C2[0]),
  (VTBL_ENTRY)&_ZN7S4704C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4704C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4704C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4704C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4704C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4704C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4704C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4704C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4704C22v9Ev,
  (VTBL_ENTRY)&_ZN7S4704C23v10Ev,
  (VTBL_ENTRY)&_ZN7S4704C23v11Ev,
  (VTBL_ENTRY)&_ZN7S4704C23v12Ev,
  (VTBL_ENTRY)&_ZN7S4704C23v13Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S4704C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4704C2D1Ev,_ZThn12_N7S4704C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4704C2D0Ev,_ZThn12_N7S4704C2D0Ev),
};
extern VTBL_ENTRY _ZTI7S4704C2[];
extern  VTBL_ENTRY _ZTV7S4704C2[];
Class_Descriptor cd_S4704C2 = {  "S4704C2", // class name
  bases_S4704C2, 2,
  &(vtc_S4704C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S4704C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4704C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4704C8  {
  void *s4704c8f0;
  int s4704c8f1;
  ::S5228C9_nt s4704c8f2;
  void *s4704c8f3[2];
  char s4704c8f4;
  ::S5228C9_nt s4704c8f5;
  void  mf4704c8(); // _ZN7S4704C88mf4704c8Ev
};
//SIG(-1 S4704C8) C1{ m Fp Fi FC2{ m FC3{ vd m FL Fc} FC3} Fp[2] Fc FC2}


void  S4704C8 ::mf4704c8(){}

static void Test_S4704C8()
{
  {
    init_simple_test("S4704C8");
    S4704C8 lv;
    check2(sizeof(lv), ABISELECT(136,84), "sizeof(S4704C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4704C8)");
    check_field_offset(lv, s4704c8f0, 0, "S4704C8.s4704c8f0");
    check_field_offset(lv, s4704c8f1, ABISELECT(8,4), "S4704C8.s4704c8f1");
    check_field_offset(lv, s4704c8f2, ABISELECT(16,8), "S4704C8.s4704c8f2");
    check_field_offset(lv, s4704c8f3, ABISELECT(64,40), "S4704C8.s4704c8f3");
    check_field_offset(lv, s4704c8f4, ABISELECT(80,48), "S4704C8.s4704c8f4");
    check_field_offset(lv, s4704c8f5, ABISELECT(88,52), "S4704C8.s4704c8f5");
  }
}
static Arrange_To_Call_Me vS4704C8(Test_S4704C8, "S4704C8", ABISELECT(136,84));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4704C1  : S4704C2 {
  int s4704c1f0;
  void *s4704c1f1[2];
  ::S4704C8 s4704c1f2;
  void *s4704c1f3[2];
  char s4704c1f4;
  virtual  ~S4704C1(); // _ZN7S4704C1D1Ev
  virtual void  v1(); // _ZN7S4704C12v1Ev
  virtual void  v2(); // _ZN7S4704C12v2Ev
  S4704C1(); // tgen
};
//SIG(1 S4704C1) C1{ BC2{ BC3{ vd v3 v4 Fi Fc[3]} BC4{ vd m} vd v5 v6 v7 v8 v9 v10 v11 v12 v13 FC5{ BC6{ vd v22 v23 v24 v25 v26 v27 v28 v29 v30 Fp} vd v14 v15 v16 v17 v18 v19 v20 v21 Fi[2] Fp} FC7{ m Fi[3] Fc} Fp Fc} vd v1 v2 Fi Fp[2] FC8{ m Fp Fi FC9{ m FC10{ vd m FL Fc} FC10} Fp[2] Fc FC9} Fp[2] Fc}


 S4704C1 ::~S4704C1(){ note_dtor("S4704C1", this);}
void  S4704C1 ::v1(){vfunc_called(this, "_ZN7S4704C12v1Ev");}
void  S4704C1 ::v2(){vfunc_called(this, "_ZN7S4704C12v2Ev");}
S4704C1 ::S4704C1(){ note_ctor("S4704C1", this);} // tgen

static void Test_S4704C1()
{
  extern Class_Descriptor cd_S4704C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S4704C1, buf);
    S4704C1 *dp, &lv = *(dp=new (buf) S4704C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S4704C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4704C1)");
    check_base_class_offset(lv, (S4704C3*)(S4704C2*), 0, "S4704C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S4704C2*), ABISELECT(16,12), "S4704C1");
    check_base_class_offset(lv, (S4704C2*), 0, "S4704C1");
    check_field_offset(lv, s4704c1f0, ABISELECT(84,60), "S4704C1.s4704c1f0");
    check_field_offset(lv, s4704c1f1, ABISELECT(88,64), "S4704C1.s4704c1f1");
    check_field_offset(lv, s4704c1f2, ABISELECT(104,72), "S4704C1.s4704c1f2");
    check_field_offset(lv, s4704c1f3, ABISELECT(240,156), "S4704C1.s4704c1f3");
    check_field_offset(lv, s4704c1f4, ABISELECT(256,164), "S4704C1.s4704c1f4");
    test_class_info(&lv, &cd_S4704C1);
    dp->~S4704C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4704C1(Test_S4704C1, "S4704C1", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN7S4704C1C1Ev();
extern void _ZN7S4704C1D1Ev();
Name_Map name_map_S4704C1[] = {
  NSPAIR(_ZN7S4704C1C1Ev),
  NSPAIR(_ZN7S4704C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4704C3;
extern VTBL_ENTRY _ZTI7S4704C3[];
extern  VTBL_ENTRY _ZTV7S4704C3[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4704C2;
extern VTBL_ENTRY _ZTI7S4704C2[];
extern  VTBL_ENTRY _ZTV7S4704C2[];
static Base_Class bases_S4704C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4704C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S4704C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4704C1[];
extern void _ZN7S4704C1D1Ev();
extern void _ZN7S4704C1D0Ev();
extern void _ZN7S4704C32v3Ev();
extern void _ZN7S4704C32v4Ev();
extern void _ZN7S4704C22v5Ev();
extern void _ZN7S4704C22v6Ev();
extern void _ZN7S4704C22v7Ev();
extern void _ZN7S4704C22v8Ev();
extern void _ZN7S4704C22v9Ev();
extern void _ZN7S4704C23v10Ev();
extern void _ZN7S4704C23v11Ev();
extern void _ZN7S4704C23v12Ev();
extern void _ZN7S4704C23v13Ev();
extern void _ZN7S4704C12v1Ev();
extern void _ZN7S4704C12v2Ev();
extern void ABISELECT(_ZThn16_N7S4704C1D1Ev,_ZThn12_N7S4704C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S4704C1D0Ev,_ZThn12_N7S4704C1D0Ev)();
static  VTBL_ENTRY vtc_S4704C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4704C1[0]),
  (VTBL_ENTRY)&_ZN7S4704C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4704C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4704C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4704C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4704C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4704C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4704C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4704C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4704C22v9Ev,
  (VTBL_ENTRY)&_ZN7S4704C23v10Ev,
  (VTBL_ENTRY)&_ZN7S4704C23v11Ev,
  (VTBL_ENTRY)&_ZN7S4704C23v12Ev,
  (VTBL_ENTRY)&_ZN7S4704C23v13Ev,
  (VTBL_ENTRY)&_ZN7S4704C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4704C12v2Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S4704C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4704C1D1Ev,_ZThn12_N7S4704C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4704C1D0Ev,_ZThn12_N7S4704C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S4704C1[];
extern  VTBL_ENTRY _ZTV7S4704C1[];
Class_Descriptor cd_S4704C1 = {  "S4704C1", // class name
  bases_S4704C1, 3,
  &(vtc_S4704C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI7S4704C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4704C1),21, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S22079C11_nt  {
  __tsi64 s22079c11f0[4];
  void  mf22079c11(); // _ZN12S22079C11_nt10mf22079c11Ev
};
//SIG(-1 S22079C11_nt) C1{ m FL[4]}


void  S22079C11_nt ::mf22079c11(){}

//skip512 S22079C11_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S22079C1  {
  void *s22079c1f0;
  int s22079c1f1;
  ::S22077C2 s22079c1f2;
  int s22079c1f3[2];
  ::S22077C5_nt s22079c1f4;
  int s22079c1f5[2];
  ::S2137C23_nt s22079c1f6;
  int s22079c1f7;
  ::S2213C20_nt s22079c1f8;
  void *s22079c1f9;
  char s22079c1f10;
  ::S2213C25 s22079c1f11;
  ::S22079C11_nt s22079c1f12;
  char s22079c1f13;
  int s22079c1f14;
  virtual  ~S22079C1(); // _ZN8S22079C1D1Ev
  virtual void  v1(); // _ZN8S22079C12v1Ev
  virtual void  v2(); // _ZN8S22079C12v2Ev
  virtual void  v3(); // _ZN8S22079C12v3Ev
  virtual void  v4(); // _ZN8S22079C12v4Ev
  virtual void  v5(); // _ZN8S22079C12v5Ev
  virtual void  v6(); // _ZN8S22079C12v6Ev
  virtual void  v7(); // _ZN8S22079C12v7Ev
  virtual void  v8(); // _ZN8S22079C12v8Ev
  virtual void  v9(); // _ZN8S22079C12v9Ev
  virtual void  v10(); // _ZN8S22079C13v10Ev
  virtual void  v11(); // _ZN8S22079C13v11Ev
  virtual void  v12(); // _ZN8S22079C13v12Ev
  S22079C1(); // tgen
};
//SIG(1 S22079C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp Fi FC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 Fp Fc Fp[8] FC3{ m Fp Fi FC4{ m}} Fc Fi} Fi[2] FC5{ Fc[12]} Fi[2] FC6{ m Fp[2]} Fi FC3 Fp Fc FC7{ BC8{ m Fp Fi FC9{ m} FC9}} FC10{ m FL[4]} Fc Fi}


 S22079C1 ::~S22079C1(){ note_dtor("S22079C1", this);}
void  S22079C1 ::v1(){vfunc_called(this, "_ZN8S22079C12v1Ev");}
void  S22079C1 ::v2(){vfunc_called(this, "_ZN8S22079C12v2Ev");}
void  S22079C1 ::v3(){vfunc_called(this, "_ZN8S22079C12v3Ev");}
void  S22079C1 ::v4(){vfunc_called(this, "_ZN8S22079C12v4Ev");}
void  S22079C1 ::v5(){vfunc_called(this, "_ZN8S22079C12v5Ev");}
void  S22079C1 ::v6(){vfunc_called(this, "_ZN8S22079C12v6Ev");}
void  S22079C1 ::v7(){vfunc_called(this, "_ZN8S22079C12v7Ev");}
void  S22079C1 ::v8(){vfunc_called(this, "_ZN8S22079C12v8Ev");}
void  S22079C1 ::v9(){vfunc_called(this, "_ZN8S22079C12v9Ev");}
void  S22079C1 ::v10(){vfunc_called(this, "_ZN8S22079C13v10Ev");}
void  S22079C1 ::v11(){vfunc_called(this, "_ZN8S22079C13v11Ev");}
void  S22079C1 ::v12(){vfunc_called(this, "_ZN8S22079C13v12Ev");}
S22079C1 ::S22079C1(){ note_ctor("S22079C1", this);} // tgen

static void Test_S22079C1()
{
  extern Class_Descriptor cd_S22079C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,48)];
    init_test(&cd_S22079C1, buf);
    S22079C1 *dp, &lv = *(dp=new (buf) S22079C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,188), "sizeof(S22079C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22079C1)");
    check_field_offset(lv, s22079c1f0, ABISELECT(8,4), "S22079C1.s22079c1f0");
    check_field_offset(lv, s22079c1f1, ABISELECT(16,8), "S22079C1.s22079c1f1");
    check_field_offset(lv, s22079c1f2, ABISELECT(24,12), "S22079C1.s22079c1f2");
    check_field_offset(lv, s22079c1f3, ABISELECT(136,76), "S22079C1.s22079c1f3");
    check_field_offset(lv, s22079c1f4, ABISELECT(144,84), "S22079C1.s22079c1f4");
    check_field_offset(lv, s22079c1f5, ABISELECT(156,96), "S22079C1.s22079c1f5");
    check_field_offset(lv, s22079c1f6, ABISELECT(168,104), "S22079C1.s22079c1f6");
    check_field_offset(lv, s22079c1f7, ABISELECT(184,112), "S22079C1.s22079c1f7");
    check_field_offset(lv, s22079c1f8, ABISELECT(192,116), "S22079C1.s22079c1f8");
    check_field_offset(lv, s22079c1f9, ABISELECT(208,128), "S22079C1.s22079c1f9");
    check_field_offset(lv, s22079c1f10, ABISELECT(216,132), "S22079C1.s22079c1f10");
    check_field_offset(lv, s22079c1f11, ABISELECT(224,136), "S22079C1.s22079c1f11");
    check_field_offset(lv, s22079c1f12, ABISELECT(240,148), "S22079C1.s22079c1f12");
    check_field_offset(lv, s22079c1f13, ABISELECT(272,180), "S22079C1.s22079c1f13");
    check_field_offset(lv, s22079c1f14, ABISELECT(276,184), "S22079C1.s22079c1f14");
    test_class_info(&lv, &cd_S22079C1);
    dp->~S22079C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS22079C1(Test_S22079C1, "S22079C1", ABISELECT(280,188));

#else // __cplusplus

extern void _ZN8S22079C1C1Ev();
extern void _ZN8S22079C1D1Ev();
Name_Map name_map_S22079C1[] = {
  NSPAIR(_ZN8S22079C1C1Ev),
  NSPAIR(_ZN8S22079C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S22079C1[];
extern void _ZN8S22079C1D1Ev();
extern void _ZN8S22079C1D0Ev();
extern void _ZN8S22079C12v1Ev();
extern void _ZN8S22079C12v2Ev();
extern void _ZN8S22079C12v3Ev();
extern void _ZN8S22079C12v4Ev();
extern void _ZN8S22079C12v5Ev();
extern void _ZN8S22079C12v6Ev();
extern void _ZN8S22079C12v7Ev();
extern void _ZN8S22079C12v8Ev();
extern void _ZN8S22079C12v9Ev();
extern void _ZN8S22079C13v10Ev();
extern void _ZN8S22079C13v11Ev();
extern void _ZN8S22079C13v12Ev();
static  VTBL_ENTRY vtc_S22079C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S22079C1[0]),
  (VTBL_ENTRY)&_ZN8S22079C1D1Ev,
  (VTBL_ENTRY)&_ZN8S22079C1D0Ev,
  (VTBL_ENTRY)&_ZN8S22079C12v1Ev,
  (VTBL_ENTRY)&_ZN8S22079C12v2Ev,
  (VTBL_ENTRY)&_ZN8S22079C12v3Ev,
  (VTBL_ENTRY)&_ZN8S22079C12v4Ev,
  (VTBL_ENTRY)&_ZN8S22079C12v5Ev,
  (VTBL_ENTRY)&_ZN8S22079C12v6Ev,
  (VTBL_ENTRY)&_ZN8S22079C12v7Ev,
  (VTBL_ENTRY)&_ZN8S22079C12v8Ev,
  (VTBL_ENTRY)&_ZN8S22079C12v9Ev,
  (VTBL_ENTRY)&_ZN8S22079C13v10Ev,
  (VTBL_ENTRY)&_ZN8S22079C13v11Ev,
  (VTBL_ENTRY)&_ZN8S22079C13v12Ev,
};
extern VTBL_ENTRY _ZTI8S22079C1[];
extern  VTBL_ENTRY _ZTV8S22079C1[];
Class_Descriptor cd_S22079C1 = {  "S22079C1", // class name
  0,0,//no base classes
  &(vtc_S22079C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,188), // object size
  NSPAIRA(_ZTI8S22079C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S22079C1),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  S19526C4  {
  virtual void  v3(); // _ZN8S19526C42v3Ev
  virtual void  v4(); // _ZN8S19526C42v4Ev
  virtual void  v5(); // _ZN8S19526C42v5Ev
  virtual void  v6(); // _ZN8S19526C42v6Ev
  virtual void  v7(); // _ZN8S19526C42v7Ev
  virtual void  v8(); // _ZN8S19526C42v8Ev
  virtual void  v9(); // _ZN8S19526C42v9Ev
  ~S19526C4(); // tgen
  S19526C4(); // tgen
};
//SIG(-1 S19526C4) C1{ v1 v2 v3 v4 v5 v6 v7}


void  S19526C4 ::v3(){vfunc_called(this, "_ZN8S19526C42v3Ev");}
void  S19526C4 ::v4(){vfunc_called(this, "_ZN8S19526C42v4Ev");}
void  S19526C4 ::v5(){vfunc_called(this, "_ZN8S19526C42v5Ev");}
void  S19526C4 ::v6(){vfunc_called(this, "_ZN8S19526C42v6Ev");}
void  S19526C4 ::v7(){vfunc_called(this, "_ZN8S19526C42v7Ev");}
void  S19526C4 ::v8(){vfunc_called(this, "_ZN8S19526C42v8Ev");}
void  S19526C4 ::v9(){vfunc_called(this, "_ZN8S19526C42v9Ev");}
S19526C4 ::~S19526C4(){ note_dtor("S19526C4", this);} // tgen
S19526C4 ::S19526C4(){ note_ctor("S19526C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19526C4C1Ev();
extern void _ZN8S19526C4D1Ev();
Name_Map name_map_S19526C4[] = {
  NSPAIR(_ZN8S19526C4C1Ev),
  NSPAIR(_ZN8S19526C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19526C4[];
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
static  VTBL_ENTRY vtc_S19526C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C4[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
};
extern VTBL_ENTRY _ZTI8S19526C4[];
extern  VTBL_ENTRY _ZTV8S19526C4[];
Class_Descriptor cd_S19526C4 = {  "S19526C4", // class name
  0,0,//no base classes
  &(vtc_S19526C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19526C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19526C4),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  S19526C3  : virtual S19526C4 {
  virtual void  v10(); // _ZN8S19526C33v10Ev
  virtual void  v11(); // _ZN8S19526C33v11Ev
  virtual void  v12(); // _ZN8S19526C33v12Ev
  ~S19526C3(); // tgen
  S19526C3(); // tgen
};
//SIG(-1 S19526C3) C1{ VBC2{ v4 v5 v6 v7 v8 v9 v10} v1 v2 v3}


void  S19526C3 ::v10(){vfunc_called(this, "_ZN8S19526C33v10Ev");}
void  S19526C3 ::v11(){vfunc_called(this, "_ZN8S19526C33v11Ev");}
void  S19526C3 ::v12(){vfunc_called(this, "_ZN8S19526C33v12Ev");}
S19526C3 ::~S19526C3(){ note_dtor("S19526C3", this);} // tgen
S19526C3 ::S19526C3(){ note_ctor("S19526C3", this);} // tgen

static void Test_S19526C3()
{
  extern Class_Descriptor cd_S19526C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19526C3, buf);
    S19526C3 *dp, &lv = *(dp=new (buf) S19526C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19526C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19526C3)");
    check_base_class_offset(lv, (S19526C4*), 0, "S19526C3");
    test_class_info(&lv, &cd_S19526C3);
    dp->~S19526C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19526C3(Test_S19526C3, "S19526C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19526C3C1Ev();
extern void _ZN8S19526C3D1Ev();
Name_Map name_map_S19526C3[] = {
  NSPAIR(_ZN8S19526C3C1Ev),
  NSPAIR(_ZN8S19526C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19526C4;
extern VTBL_ENTRY _ZTI8S19526C4[];
extern  VTBL_ENTRY _ZTV8S19526C4[];
static Base_Class bases_S19526C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19526C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19526C3[];
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
extern void _ZN8S19526C33v10Ev();
extern void _ZN8S19526C33v11Ev();
extern void _ZN8S19526C33v12Ev();
static  VTBL_ENTRY vtc_S19526C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C3[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v12Ev,
};
extern VTBL_ENTRY _ZTV8S19526C3[];
static  VTT_ENTRY vtt_S19526C3[] = {
  {&(_ZTV8S19526C3[10]),  10,20},
  {&(_ZTV8S19526C3[10]),  10,20},
};
extern VTBL_ENTRY _ZTI8S19526C3[];
extern  VTBL_ENTRY _ZTV8S19526C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19526C3[];
Class_Descriptor cd_S19526C3 = {  "S19526C3", // class name
  bases_S19526C3, 1,
  &(vtc_S19526C3[0]), // expected_vtbl_contents
  &(vtt_S19526C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19526C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19526C3),20, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19526C3),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  S19526C6  {
  char s19526c6f0;
  void *s19526c6f1;
  short s19526c6f2:11;
  virtual void  v13(); // _ZN8S19526C63v13Ev
  virtual void  v14(); // _ZN8S19526C63v14Ev
  virtual void  v15(); // _ZN8S19526C63v15Ev
  ~S19526C6(); // tgen
  S19526C6(); // tgen
};
//SIG(-1 S19526C6) C1{ v1 v2 v3 Fc Fp Fs:11}


void  S19526C6 ::v13(){vfunc_called(this, "_ZN8S19526C63v13Ev");}
void  S19526C6 ::v14(){vfunc_called(this, "_ZN8S19526C63v14Ev");}
void  S19526C6 ::v15(){vfunc_called(this, "_ZN8S19526C63v15Ev");}
S19526C6 ::~S19526C6(){ note_dtor("S19526C6", this);} // tgen
S19526C6 ::S19526C6(){ note_ctor("S19526C6", this);} // tgen

static void Test_S19526C6()
{
  extern Class_Descriptor cd_S19526C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19526C6, buf);
    S19526C6 *dp, &lv = *(dp=new (buf) S19526C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19526C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19526C6)");
    check_field_offset(lv, s19526c6f0, ABISELECT(8,4), "S19526C6.s19526c6f0");
    check_field_offset(lv, s19526c6f1, ABISELECT(16,8), "S19526C6.s19526c6f1");
    set_bf_and_test(lv, s19526c6f2, ABISELECT(24,12), 0, 11, 1, "S19526C6");
    set_bf_and_test(lv, s19526c6f2, ABISELECT(24,12), 0, 11, hide_sll(1LL<<10), "S19526C6");
    test_class_info(&lv, &cd_S19526C6);
    dp->~S19526C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19526C6(Test_S19526C6, "S19526C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19526C6C1Ev();
extern void _ZN8S19526C6D1Ev();
Name_Map name_map_S19526C6[] = {
  NSPAIR(_ZN8S19526C6C1Ev),
  NSPAIR(_ZN8S19526C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19526C6[];
extern void _ZN8S19526C63v13Ev();
extern void _ZN8S19526C63v14Ev();
extern void _ZN8S19526C63v15Ev();
static  VTBL_ENTRY vtc_S19526C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C6[0]),
  (VTBL_ENTRY)&_ZN8S19526C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v15Ev,
};
extern VTBL_ENTRY _ZTI8S19526C6[];
extern  VTBL_ENTRY _ZTV8S19526C6[];
Class_Descriptor cd_S19526C6 = {  "S19526C6", // class name
  0,0,//no base classes
  &(vtc_S19526C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19526C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19526C6),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  S19526C5  : S19526C6 {
  virtual void  v16(); // _ZN8S19526C53v16Ev
  ~S19526C5(); // tgen
  S19526C5(); // tgen
};
//SIG(-1 S19526C5) C1{ BC2{ v2 v3 v4 Fc Fp Fs:11} v1}


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

static void Test_S19526C5()
{
  extern Class_Descriptor cd_S19526C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19526C5, buf);
    S19526C5 *dp, &lv = *(dp=new (buf) S19526C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19526C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19526C5)");
    check_base_class_offset(lv, (S19526C6*), 0, "S19526C5");
    test_class_info(&lv, &cd_S19526C5);
    dp->~S19526C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19526C5(Test_S19526C5, "S19526C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19526C5C1Ev();
extern void _ZN8S19526C5D1Ev();
Name_Map name_map_S19526C5[] = {
  NSPAIR(_ZN8S19526C5C1Ev),
  NSPAIR(_ZN8S19526C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19526C6;
extern VTBL_ENTRY _ZTI8S19526C6[];
extern  VTBL_ENTRY _ZTV8S19526C6[];
static Base_Class bases_S19526C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19526C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19526C5[];
extern void _ZN8S19526C63v13Ev();
extern void _ZN8S19526C63v14Ev();
extern void _ZN8S19526C63v15Ev();
extern void _ZN8S19526C53v16Ev();
static  VTBL_ENTRY vtc_S19526C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C5[0]),
  (VTBL_ENTRY)&_ZN8S19526C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19526C53v16Ev,
};
extern VTBL_ENTRY _ZTI8S19526C5[];
extern  VTBL_ENTRY _ZTV8S19526C5[];
Class_Descriptor cd_S19526C5 = {  "S19526C5", // class name
  bases_S19526C5, 1,
  &(vtc_S19526C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19526C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19526C5),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  S19526C7  : S19526C6 {
  virtual void  v17(); // _ZN8S19526C73v17Ev
  virtual void  v18(); // _ZN8S19526C73v18Ev
  virtual void  v19(); // _ZN8S19526C73v19Ev
  ~S19526C7(); // tgen
  S19526C7(); // tgen
};
//SIG(-1 S19526C7) C1{ BC2{ v4 v5 v6 Fc Fp Fs:11} v1 v2 v3}


void  S19526C7 ::v17(){vfunc_called(this, "_ZN8S19526C73v17Ev");}
void  S19526C7 ::v18(){vfunc_called(this, "_ZN8S19526C73v18Ev");}
void  S19526C7 ::v19(){vfunc_called(this, "_ZN8S19526C73v19Ev");}
S19526C7 ::~S19526C7(){ note_dtor("S19526C7", this);} // tgen
S19526C7 ::S19526C7(){ note_ctor("S19526C7", this);} // tgen

static void Test_S19526C7()
{
  extern Class_Descriptor cd_S19526C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19526C7, buf);
    S19526C7 *dp, &lv = *(dp=new (buf) S19526C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19526C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19526C7)");
    check_base_class_offset(lv, (S19526C6*), 0, "S19526C7");
    test_class_info(&lv, &cd_S19526C7);
    dp->~S19526C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19526C7(Test_S19526C7, "S19526C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19526C7C1Ev();
extern void _ZN8S19526C7D1Ev();
Name_Map name_map_S19526C7[] = {
  NSPAIR(_ZN8S19526C7C1Ev),
  NSPAIR(_ZN8S19526C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19526C6;
extern VTBL_ENTRY _ZTI8S19526C6[];
extern  VTBL_ENTRY _ZTV8S19526C6[];
static Base_Class bases_S19526C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19526C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19526C7[];
extern void _ZN8S19526C63v13Ev();
extern void _ZN8S19526C63v14Ev();
extern void _ZN8S19526C63v15Ev();
extern void _ZN8S19526C73v17Ev();
extern void _ZN8S19526C73v18Ev();
extern void _ZN8S19526C73v19Ev();
static  VTBL_ENTRY vtc_S19526C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C7[0]),
  (VTBL_ENTRY)&_ZN8S19526C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19526C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19526C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19526C73v19Ev,
};
extern VTBL_ENTRY _ZTI8S19526C7[];
extern  VTBL_ENTRY _ZTV8S19526C7[];
Class_Descriptor cd_S19526C7 = {  "S19526C7", // class name
  bases_S19526C7, 1,
  &(vtc_S19526C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19526C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19526C7),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  S19526C2  : S19526C3 , virtual S19526C5 , S19526C7 {
  int s19526c2f0;
  char s19526c2f1[3];
  virtual void  v20(); // _ZN8S19526C23v20Ev
  virtual void  v21(); // _ZN8S19526C23v21Ev
  virtual void  v22(); // _ZN8S19526C23v22Ev
  virtual void  v23(); // _ZN8S19526C23v23Ev
  virtual void  v24(); // _ZN8S19526C23v24Ev
  ~S19526C2(); // tgen
  S19526C2(); // tgen
};
//SIG(-1 S19526C2) C1{ BC2{ VBC3{ v6 v7 v8 v9 v10 v11 v12} v13 v14 v15} VBC4{ BC5{ v16 v17 v18 Fc Fp Fs:11} v19} BC6{ BC5 v20 v21 v22} v1 v2 v3 v4 v5 Fi Fc[3]}


void  S19526C2 ::v20(){vfunc_called(this, "_ZN8S19526C23v20Ev");}
void  S19526C2 ::v21(){vfunc_called(this, "_ZN8S19526C23v21Ev");}
void  S19526C2 ::v22(){vfunc_called(this, "_ZN8S19526C23v22Ev");}
void  S19526C2 ::v23(){vfunc_called(this, "_ZN8S19526C23v23Ev");}
void  S19526C2 ::v24(){vfunc_called(this, "_ZN8S19526C23v24Ev");}
S19526C2 ::~S19526C2(){ note_dtor("S19526C2", this);} // tgen
S19526C2 ::S19526C2(){ note_ctor("S19526C2", this);} // tgen

static void Test_S19526C2()
{
  extern Class_Descriptor cd_S19526C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S19526C2, buf);
    S19526C2 *dp, &lv = *(dp=new (buf) S19526C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S19526C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19526C2)");
    check_base_class_offset(lv, (S19526C4*)(S19526C3*), 0, "S19526C2");
    check_base_class_offset(lv, (S19526C3*), 0, "S19526C2");
    check_base_class_offset(lv, (S19526C6*)(S19526C5*), ABISELECT(48,28), "S19526C2");
    check_base_class_offset(lv, (S19526C5*), ABISELECT(48,28), "S19526C2");
    check_base_class_offset(lv, (S19526C6*)(S19526C7*), ABISELECT(8,4), "S19526C2");
    check_base_class_offset(lv, (S19526C7*), ABISELECT(8,4), "S19526C2");
    check_field_offset(lv, s19526c2f0, ABISELECT(36,20), "S19526C2.s19526c2f0");
    check_field_offset(lv, s19526c2f1, ABISELECT(40,24), "S19526C2.s19526c2f1");
    test_class_info(&lv, &cd_S19526C2);
    dp->~S19526C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19526C2(Test_S19526C2, "S19526C2", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S19526C2C1Ev();
extern void _ZN8S19526C2D1Ev();
Name_Map name_map_S19526C2[] = {
  NSPAIR(_ZN8S19526C2C1Ev),
  NSPAIR(_ZN8S19526C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19526C4;
extern VTBL_ENTRY _ZTI8S19526C4[];
extern  VTBL_ENTRY _ZTV8S19526C4[];
extern Class_Descriptor cd_S19526C3;
extern VTBL_ENTRY _ZTI8S19526C3[];
extern  VTBL_ENTRY _ZTV8S19526C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19526C3[];
extern Class_Descriptor cd_S19526C6;
extern VTBL_ENTRY _ZTI8S19526C6[];
extern  VTBL_ENTRY _ZTV8S19526C6[];
extern Class_Descriptor cd_S19526C5;
extern VTBL_ENTRY _ZTI8S19526C5[];
extern  VTBL_ENTRY _ZTV8S19526C5[];
extern Class_Descriptor cd_S19526C6;
extern VTBL_ENTRY _ZTI8S19526C6[];
extern  VTBL_ENTRY _ZTV8S19526C6[];
extern Class_Descriptor cd_S19526C7;
extern VTBL_ENTRY _ZTI8S19526C7[];
extern  VTBL_ENTRY _ZTV8S19526C7[];
static Base_Class bases_S19526C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19526C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19526C3,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19526C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19526C5,    ABISELECT(48,28), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19526C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19526C7,    ABISELECT(8,4), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19526C2[];
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
extern void _ZN8S19526C33v10Ev();
extern void _ZN8S19526C33v11Ev();
extern void _ZN8S19526C33v12Ev();
extern void _ZN8S19526C23v20Ev();
extern void _ZN8S19526C23v21Ev();
extern void _ZN8S19526C23v22Ev();
extern void _ZN8S19526C23v23Ev();
extern void _ZN8S19526C23v24Ev();
extern void _ZN8S19526C63v13Ev();
extern void _ZN8S19526C63v14Ev();
extern void _ZN8S19526C63v15Ev();
extern void _ZN8S19526C73v17Ev();
extern void _ZN8S19526C73v18Ev();
extern void _ZN8S19526C73v19Ev();
extern void _ZN8S19526C63v13Ev();
extern void _ZN8S19526C63v14Ev();
extern void _ZN8S19526C63v15Ev();
extern void _ZN8S19526C53v16Ev();
static  VTBL_ENTRY vtc_S19526C2[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C2[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v22Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v23Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v24Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19526C2[0]),
  (VTBL_ENTRY)&_ZN8S19526C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19526C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19526C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19526C73v19Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19526C2[0]),
  (VTBL_ENTRY)&_ZN8S19526C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19526C53v16Ev,
};
extern VTBL_ENTRY _ZTV8S19526C2[];
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
extern void _ZN8S19526C33v10Ev();
extern void _ZN8S19526C33v11Ev();
extern void _ZN8S19526C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19526C3__8S19526C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C3[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v12Ev,
};
static  VTT_ENTRY vtt_S19526C2[] = {
  {&(_ZTV8S19526C2[11]),  11,44},
  {&(_tg__ZTV8S19526C3__8S19526C2[10]),  10,20},
  {&(_tg__ZTV8S19526C3__8S19526C2[10]),  10,20},
  {&(_ZTV8S19526C2[11]),  11,44},
  {&(_ZTV8S19526C2[40]),  40,44},
};
extern VTBL_ENTRY _ZTI8S19526C2[];
extern  VTBL_ENTRY _ZTV8S19526C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19526C2[];
Class_Descriptor cd_S19526C2 = {  "S19526C2", // class name
  bases_S19526C2, 6,
  &(vtc_S19526C2[0]), // expected_vtbl_contents
  &(vtt_S19526C2[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S19526C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19526C2),44, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19526C2),5, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19526C9  {
  long double s19526c9f0;
  char s19526c9f1;
  virtual void  v25(); // _ZN8S19526C93v25Ev
  virtual void  v26(); // _ZN8S19526C93v26Ev
  virtual void  v27(); // _ZN8S19526C93v27Ev
  virtual void  v28(); // _ZN8S19526C93v28Ev
  virtual void  v29(); // _ZN8S19526C93v29Ev
  virtual void  v30(); // _ZN8S19526C93v30Ev
  virtual void  v31(); // _ZN8S19526C93v31Ev
  virtual void  v32(); // _ZN8S19526C93v32Ev
  ~S19526C9(); // tgen
  S19526C9(); // tgen
};
//SIG(-1 S19526C9) C1{ v1 v2 v3 v4 v5 v6 v7 v8 FD Fc}


void  S19526C9 ::v25(){vfunc_called(this, "_ZN8S19526C93v25Ev");}
void  S19526C9 ::v26(){vfunc_called(this, "_ZN8S19526C93v26Ev");}
void  S19526C9 ::v27(){vfunc_called(this, "_ZN8S19526C93v27Ev");}
void  S19526C9 ::v28(){vfunc_called(this, "_ZN8S19526C93v28Ev");}
void  S19526C9 ::v29(){vfunc_called(this, "_ZN8S19526C93v29Ev");}
void  S19526C9 ::v30(){vfunc_called(this, "_ZN8S19526C93v30Ev");}
void  S19526C9 ::v31(){vfunc_called(this, "_ZN8S19526C93v31Ev");}
void  S19526C9 ::v32(){vfunc_called(this, "_ZN8S19526C93v32Ev");}
S19526C9 ::~S19526C9(){ note_dtor("S19526C9", this);} // tgen
S19526C9 ::S19526C9(){ note_ctor("S19526C9", this);} // tgen

static void Test_S19526C9()
{
  extern Class_Descriptor cd_S19526C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19526C9, buf);
    S19526C9 *dp, &lv = *(dp=new (buf) S19526C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19526C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19526C9)");
    check_field_offset(lv, s19526c9f0, ABISELECT(16,4), "S19526C9.s19526c9f0");
    check_field_offset(lv, s19526c9f1, ABISELECT(32,16), "S19526C9.s19526c9f1");
    test_class_info(&lv, &cd_S19526C9);
    dp->~S19526C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19526C9(Test_S19526C9, "S19526C9", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S19526C9C1Ev();
extern void _ZN8S19526C9D1Ev();
Name_Map name_map_S19526C9[] = {
  NSPAIR(_ZN8S19526C9C1Ev),
  NSPAIR(_ZN8S19526C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19526C9[];
extern void _ZN8S19526C93v25Ev();
extern void _ZN8S19526C93v26Ev();
extern void _ZN8S19526C93v27Ev();
extern void _ZN8S19526C93v28Ev();
extern void _ZN8S19526C93v29Ev();
extern void _ZN8S19526C93v30Ev();
extern void _ZN8S19526C93v31Ev();
extern void _ZN8S19526C93v32Ev();
static  VTBL_ENTRY vtc_S19526C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C9[0]),
  (VTBL_ENTRY)&_ZN8S19526C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v27Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v28Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v32Ev,
};
extern VTBL_ENTRY _ZTI8S19526C9[];
extern  VTBL_ENTRY _ZTV8S19526C9[];
Class_Descriptor cd_S19526C9 = {  "S19526C9", // class name
  0,0,//no base classes
  &(vtc_S19526C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S19526C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19526C9),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19526C10  : S19526C9 {
  long double s19526c10f0;
  long s19526c10f1;
  virtual void  v33(); // _ZN9S19526C103v33Ev
  virtual void  v34(); // _ZN9S19526C103v34Ev
  virtual void  v35(); // _ZN9S19526C103v35Ev
  virtual void  v36(); // _ZN9S19526C103v36Ev
  ~S19526C10(); // tgen
  S19526C10(); // tgen
};
//SIG(-1 S19526C10) C1{ BC2{ v5 v6 v7 v8 v9 v10 v11 v12 FD Fc} v1 v2 v3 v4 FD Fl}


void  S19526C10 ::v33(){vfunc_called(this, "_ZN9S19526C103v33Ev");}
void  S19526C10 ::v34(){vfunc_called(this, "_ZN9S19526C103v34Ev");}
void  S19526C10 ::v35(){vfunc_called(this, "_ZN9S19526C103v35Ev");}
void  S19526C10 ::v36(){vfunc_called(this, "_ZN9S19526C103v36Ev");}
S19526C10 ::~S19526C10(){ note_dtor("S19526C10", this);} // tgen
S19526C10 ::S19526C10(){ note_ctor("S19526C10", this);} // tgen

static void Test_S19526C10()
{
  extern Class_Descriptor cd_S19526C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S19526C10, buf);
    S19526C10 *dp, &lv = *(dp=new (buf) S19526C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S19526C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19526C10)");
    check_base_class_offset(lv, (S19526C9*), 0, "S19526C10");
    check_field_offset(lv, s19526c10f0, ABISELECT(48,20), "S19526C10.s19526c10f0");
    check_field_offset(lv, s19526c10f1, ABISELECT(64,32), "S19526C10.s19526c10f1");
    test_class_info(&lv, &cd_S19526C10);
    dp->~S19526C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19526C10(Test_S19526C10, "S19526C10", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN9S19526C10C1Ev();
extern void _ZN9S19526C10D1Ev();
Name_Map name_map_S19526C10[] = {
  NSPAIR(_ZN9S19526C10C1Ev),
  NSPAIR(_ZN9S19526C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19526C9;
extern VTBL_ENTRY _ZTI8S19526C9[];
extern  VTBL_ENTRY _ZTV8S19526C9[];
static Base_Class bases_S19526C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19526C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19526C10[];
extern void _ZN8S19526C93v25Ev();
extern void _ZN8S19526C93v26Ev();
extern void _ZN8S19526C93v27Ev();
extern void _ZN8S19526C93v28Ev();
extern void _ZN8S19526C93v29Ev();
extern void _ZN8S19526C93v30Ev();
extern void _ZN8S19526C93v31Ev();
extern void _ZN8S19526C93v32Ev();
extern void _ZN9S19526C103v33Ev();
extern void _ZN9S19526C103v34Ev();
extern void _ZN9S19526C103v35Ev();
extern void _ZN9S19526C103v36Ev();
static  VTBL_ENTRY vtc_S19526C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19526C10[0]),
  (VTBL_ENTRY)&_ZN8S19526C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v27Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v28Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v32Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v36Ev,
};
extern VTBL_ENTRY _ZTI9S19526C10[];
extern  VTBL_ENTRY _ZTV9S19526C10[];
Class_Descriptor cd_S19526C10 = {  "S19526C10", // class name
  bases_S19526C10, 1,
  &(vtc_S19526C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI9S19526C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19526C10),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19526C8  : S19526C4 , S19526C9 , virtual S19526C10 {
  virtual  ~S19526C8(); // _ZN8S19526C8D2Ev
  virtual void  v37(); // _ZN8S19526C83v37Ev
  virtual void  v38(); // _ZN8S19526C83v38Ev
  virtual void  v39(); // _ZN8S19526C83v39Ev
  virtual void  v40(); // _ZN8S19526C83v40Ev
  virtual void  v41(); // _ZN8S19526C83v41Ev
  S19526C8(); // tgen
};
//SIG(-1 S19526C8) C1{ BC2{ v6 v7 v8 v9 v10 v11 v12} BC3{ v13 v14 v15 v16 v17 v18 v19 v20 FD Fc} VBC4{ BC3 v21 v22 v23 v24 FD Fl} vd v1 v2 v3 v4 v5}


 S19526C8 ::~S19526C8(){ note_dtor("S19526C8", this);}
void  S19526C8 ::v37(){vfunc_called(this, "_ZN8S19526C83v37Ev");}
void  S19526C8 ::v38(){vfunc_called(this, "_ZN8S19526C83v38Ev");}
void  S19526C8 ::v39(){vfunc_called(this, "_ZN8S19526C83v39Ev");}
void  S19526C8 ::v40(){vfunc_called(this, "_ZN8S19526C83v40Ev");}
void  S19526C8 ::v41(){vfunc_called(this, "_ZN8S19526C83v41Ev");}
S19526C8 ::S19526C8(){ note_ctor("S19526C8", this);} // tgen

static void Test_S19526C8()
{
  extern Class_Descriptor cd_S19526C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,16)];
    init_test(&cd_S19526C8, buf);
    S19526C8 *dp, &lv = *(dp=new (buf) S19526C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,60), "sizeof(S19526C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19526C8)");
    check_base_class_offset(lv, (S19526C4*), 0, "S19526C8");
    /*is_ambiguous_... S19526C8::S19526C9 */ AMB_check_base_class_offset(lv, (S19526C9*), ABISELECT(16,4), "S19526C8");
    check_base_class_offset(lv, (S19526C9*)(S19526C10*), ABISELECT(64,24), "S19526C8");
    check_base_class_offset(lv, (S19526C10*), ABISELECT(64,24), "S19526C8");
    test_class_info(&lv, &cd_S19526C8);
    dp->~S19526C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19526C8(Test_S19526C8, "S19526C8", ABISELECT(144,60));

#else // __cplusplus

extern void _ZN8S19526C8C1Ev();
extern void _ZN8S19526C8D2Ev();
Name_Map name_map_S19526C8[] = {
  NSPAIR(_ZN8S19526C8C1Ev),
  NSPAIR(_ZN8S19526C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19526C4;
extern VTBL_ENTRY _ZTI8S19526C4[];
extern  VTBL_ENTRY _ZTV8S19526C4[];
extern Class_Descriptor cd_S19526C9;
extern VTBL_ENTRY _ZTI8S19526C9[];
extern  VTBL_ENTRY _ZTV8S19526C9[];
extern Class_Descriptor cd_S19526C9;
extern VTBL_ENTRY _ZTI8S19526C9[];
extern  VTBL_ENTRY _ZTV8S19526C9[];
extern Class_Descriptor cd_S19526C10;
extern VTBL_ENTRY _ZTI9S19526C10[];
extern  VTBL_ENTRY _ZTV9S19526C10[];
static Base_Class bases_S19526C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19526C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19526C9,    ABISELECT(16,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19526C9,    ABISELECT(64,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19526C10,    ABISELECT(64,24), //bcp->offset
    27, //bcp->virtual_function_table_offset
    14, //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 _ZTI8S19526C8[];
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
extern void _ZN8S19526C8D1Ev();
extern void _ZN8S19526C8D0Ev();
extern void _ZN8S19526C83v37Ev();
extern void _ZN8S19526C83v38Ev();
extern void _ZN8S19526C83v39Ev();
extern void _ZN8S19526C83v40Ev();
extern void _ZN8S19526C83v41Ev();
extern void _ZN8S19526C93v25Ev();
extern void _ZN8S19526C93v26Ev();
extern void _ZN8S19526C93v27Ev();
extern void _ZN8S19526C93v28Ev();
extern void _ZN8S19526C93v29Ev();
extern void _ZN8S19526C93v30Ev();
extern void _ZN8S19526C93v31Ev();
extern void _ZN8S19526C93v32Ev();
extern void _ZN8S19526C93v25Ev();
extern void _ZN8S19526C93v26Ev();
extern void _ZN8S19526C93v27Ev();
extern void _ZN8S19526C93v28Ev();
extern void _ZN8S19526C93v29Ev();
extern void _ZN8S19526C93v30Ev();
extern void _ZN8S19526C93v31Ev();
extern void _ZN8S19526C93v32Ev();
extern void _ZN9S19526C103v33Ev();
extern void _ZN9S19526C103v34Ev();
extern void _ZN9S19526C103v35Ev();
extern void _ZN9S19526C103v36Ev();
static  VTBL_ENTRY vtc_S19526C8[] = {
  ABISELECT(64,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C8[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19526C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19526C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v37Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v38Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v39Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v40Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v41Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19526C8[0]),
  (VTBL_ENTRY)&_ZN8S19526C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v27Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v28Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v32Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S19526C8[0]),
  (VTBL_ENTRY)&_ZN8S19526C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v27Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v28Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v32Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v36Ev,
};
extern VTBL_ENTRY _ZTV8S19526C8[];
static  VTT_ENTRY vtt_S19526C8[] = {
  {&(_ZTV8S19526C8[3]),  3,53},
  {&(_ZTV8S19526C8[41]),  41,53},
};
extern VTBL_ENTRY _ZTI8S19526C8[];
extern  VTBL_ENTRY _ZTV8S19526C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19526C8[];
Class_Descriptor cd_S19526C8 = {  "S19526C8", // class name
  bases_S19526C8, 4,
  &(vtc_S19526C8[0]), // expected_vtbl_contents
  &(vtt_S19526C8[0]), // expected_vtt_contents
  ABISELECT(144,60), // object size
  NSPAIRA(_ZTI8S19526C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19526C8),53, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19526C8),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19526C1  : virtual S19526C2 , virtual S19526C8 {
  void *s19526c1f0;
  virtual  ~S19526C1(); // _ZN8S19526C1D2Ev
  virtual void  v1(); // _ZN8S19526C12v1Ev
  virtual void  v2(); // _ZN8S19526C12v2Ev
  S19526C1(); // tgen
};
//SIG(1 S19526C1) C1{ VBC2{ BC3{ VBC4{ v3 v4 v5 v6 v7 v8 v9} v10 v11 v12} VBC5{ BC6{ v13 v14 v15 Fc Fp Fs:11} v16} BC7{ BC6 v17 v18 v19} v20 v21 v22 v23 v24 Fi Fc[3]} VBC8{ BC4 BC9{ v25 v26 v27 v28 v29 v30 v31 v32 FD Fc} VBC10{ BC9 v33 v34 v35 v36 FD Fl} vd v37 v38 v39 v40 v41} vd v1 v2 Fp}


 S19526C1 ::~S19526C1(){ note_dtor("S19526C1", this);}
void  S19526C1 ::v1(){vfunc_called(this, "_ZN8S19526C12v1Ev");}
void  S19526C1 ::v2(){vfunc_called(this, "_ZN8S19526C12v2Ev");}
S19526C1 ::S19526C1(){ note_ctor("S19526C1", this);} // tgen

static void Test_S19526C1()
{
  extern Class_Descriptor cd_S19526C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,29)];
    init_test(&cd_S19526C1, buf);
    S19526C1 *dp, &lv = *(dp=new (buf) S19526C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,112), "sizeof(S19526C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19526C1)");
    check_base_class_offset(lv, (S19526C4*)(S19526C3*)(S19526C2*), 0, "S19526C1");
    check_base_class_offset(lv, (S19526C3*)(S19526C2*), ABISELECT(16,8), "S19526C1");
    check_base_class_offset(lv, (S19526C6*)(S19526C5*), ABISELECT(64,36), "S19526C1");
    check_base_class_offset(lv, (S19526C5*)(S19526C2*), ABISELECT(64,36), "S19526C1");
    check_base_class_offset(lv, (S19526C6*)(S19526C7*)(S19526C2*), ABISELECT(24,12), "S19526C1");
    check_base_class_offset(lv, (S19526C7*)(S19526C2*), ABISELECT(24,12), "S19526C1");
    check_base_class_offset(lv, (S19526C2*), ABISELECT(16,8), "S19526C1");
    check_base_class_offset(lv, (S19526C4*)(S19526C8*), ABISELECT(96,52), "S19526C1");
    /*is_ambiguous_... S19526C8::S19526C9 */ AMB_check_base_class_offset(lv, (S19526C9*)(S19526C8*), ABISELECT(112,56), "S19526C1");
    check_base_class_offset(lv, (S19526C9*)(S19526C10*), ABISELECT(160,76), "S19526C1");
    check_base_class_offset(lv, (S19526C10*)(S19526C8*), ABISELECT(160,76), "S19526C1");
    check_base_class_offset(lv, (S19526C8*), ABISELECT(96,52), "S19526C1");
    check_field_offset(lv, s19526c1f0, ABISELECT(8,4), "S19526C1.s19526c1f0");
    test_class_info(&lv, &cd_S19526C1);
    dp->~S19526C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19526C1(Test_S19526C1, "S19526C1", ABISELECT(240,112));

#else // __cplusplus

extern void _ZN8S19526C1C1Ev();
extern void _ZN8S19526C1D2Ev();
Name_Map name_map_S19526C1[] = {
  NSPAIR(_ZN8S19526C1C1Ev),
  NSPAIR(_ZN8S19526C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19526C4;
extern VTBL_ENTRY _ZTI8S19526C4[];
extern  VTBL_ENTRY _ZTV8S19526C4[];
extern Class_Descriptor cd_S19526C3;
extern VTBL_ENTRY _ZTI8S19526C3[];
extern  VTBL_ENTRY _ZTV8S19526C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19526C3[];
extern Class_Descriptor cd_S19526C6;
extern VTBL_ENTRY _ZTI8S19526C6[];
extern  VTBL_ENTRY _ZTV8S19526C6[];
extern Class_Descriptor cd_S19526C5;
extern VTBL_ENTRY _ZTI8S19526C5[];
extern  VTBL_ENTRY _ZTV8S19526C5[];
extern Class_Descriptor cd_S19526C6;
extern VTBL_ENTRY _ZTI8S19526C6[];
extern  VTBL_ENTRY _ZTV8S19526C6[];
extern Class_Descriptor cd_S19526C7;
extern VTBL_ENTRY _ZTI8S19526C7[];
extern  VTBL_ENTRY _ZTV8S19526C7[];
extern Class_Descriptor cd_S19526C2;
extern VTBL_ENTRY _ZTI8S19526C2[];
extern  VTBL_ENTRY _ZTV8S19526C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19526C2[];
extern Class_Descriptor cd_S19526C4;
extern VTBL_ENTRY _ZTI8S19526C4[];
extern  VTBL_ENTRY _ZTV8S19526C4[];
extern Class_Descriptor cd_S19526C9;
extern VTBL_ENTRY _ZTI8S19526C9[];
extern  VTBL_ENTRY _ZTV8S19526C9[];
extern Class_Descriptor cd_S19526C9;
extern VTBL_ENTRY _ZTI8S19526C9[];
extern  VTBL_ENTRY _ZTV8S19526C9[];
extern Class_Descriptor cd_S19526C10;
extern VTBL_ENTRY _ZTI9S19526C10[];
extern  VTBL_ENTRY _ZTV9S19526C10[];
extern Class_Descriptor cd_S19526C8;
extern VTBL_ENTRY _ZTI8S19526C8[];
extern  VTBL_ENTRY _ZTV8S19526C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19526C8[];
static Base_Class bases_S19526C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19526C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19526C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19526C6,    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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19526C5,    ABISELECT(64,36), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19526C6,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19526C7,    ABISELECT(24,12), //bcp->offset
    65, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19526C2,    ABISELECT(16,8), //bcp->offset
    25, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19526C4,    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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19526C9,    ABISELECT(112,56), //bcp->offset
    121, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19526C9,    ABISELECT(160,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
    10, //immediately_derived
  0, 0},
  {&cd_S19526C10,    ABISELECT(160,76), //bcp->offset
    131, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19526C8,    ABISELECT(96,52), //bcp->offset
    83, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19526C1[];
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
extern void _ZN8S19526C1D1Ev();
extern void _ZN8S19526C1D0Ev();
extern void _ZN8S19526C12v1Ev();
extern void _ZN8S19526C12v2Ev();
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
extern void _ZN8S19526C33v10Ev();
extern void _ZN8S19526C33v11Ev();
extern void _ZN8S19526C33v12Ev();
extern void _ZN8S19526C23v20Ev();
extern void _ZN8S19526C23v21Ev();
extern void _ZN8S19526C23v22Ev();
extern void _ZN8S19526C23v23Ev();
extern void _ZN8S19526C23v24Ev();
extern void _ZN8S19526C63v13Ev();
extern void _ZN8S19526C63v14Ev();
extern void _ZN8S19526C63v15Ev();
extern void _ZN8S19526C73v17Ev();
extern void _ZN8S19526C73v18Ev();
extern void _ZN8S19526C73v19Ev();
extern void _ZN8S19526C63v13Ev();
extern void _ZN8S19526C63v14Ev();
extern void _ZN8S19526C63v15Ev();
extern void _ZN8S19526C53v16Ev();
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
extern void ABISELECT(_ZTv0_n88_N8S19526C1D1Ev,_ZTv0_n44_N8S19526C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19526C1D1Ev,_ZThn52_N8S19526C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19526C1D0Ev,_ZTv0_n44_N8S19526C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19526C1D0Ev,_ZThn52_N8S19526C1D0Ev)() __attribute__((weak));
extern void _ZN8S19526C83v37Ev();
extern void _ZN8S19526C83v38Ev();
extern void _ZN8S19526C83v39Ev();
extern void _ZN8S19526C83v40Ev();
extern void _ZN8S19526C83v41Ev();
extern void _ZN8S19526C93v25Ev();
extern void _ZN8S19526C93v26Ev();
extern void _ZN8S19526C93v27Ev();
extern void _ZN8S19526C93v28Ev();
extern void _ZN8S19526C93v29Ev();
extern void _ZN8S19526C93v30Ev();
extern void _ZN8S19526C93v31Ev();
extern void _ZN8S19526C93v32Ev();
extern void _ZN8S19526C93v25Ev();
extern void _ZN8S19526C93v26Ev();
extern void _ZN8S19526C93v27Ev();
extern void _ZN8S19526C93v28Ev();
extern void _ZN8S19526C93v29Ev();
extern void _ZN8S19526C93v30Ev();
extern void _ZN8S19526C93v31Ev();
extern void _ZN8S19526C93v32Ev();
extern void _ZN9S19526C103v33Ev();
extern void _ZN9S19526C103v34Ev();
extern void _ZN9S19526C103v35Ev();
extern void _ZN9S19526C103v36Ev();
static  VTBL_ENTRY vtc_S19526C1[] = {
  ABISELECT(160,76),
  ABISELECT(96,52),
  ABISELECT(64,36),
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C1[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19526C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19526C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19526C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19526C12v2Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19526C1[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v22Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v23Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v24Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19526C1[0]),
  (VTBL_ENTRY)&_ZN8S19526C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19526C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19526C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19526C73v19Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19526C1[0]),
  (VTBL_ENTRY)&_ZN8S19526C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19526C53v16Ev,
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,24),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19526C1[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19526C1D1Ev,_ZTv0_n44_N8S19526C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19526C1D0Ev,_ZTv0_n44_N8S19526C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19526C83v37Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v38Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v39Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v40Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v41Ev,
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19526C1[0]),
  (VTBL_ENTRY)&_ZN8S19526C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v27Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v28Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v32Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-76),
  (VTBL_ENTRY)&(_ZTI8S19526C1[0]),
  (VTBL_ENTRY)&_ZN8S19526C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v27Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v28Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v32Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v36Ev,
};
extern VTBL_ENTRY _ZTV8S19526C1[];
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
extern void _ZN8S19526C33v10Ev();
extern void _ZN8S19526C33v11Ev();
extern void _ZN8S19526C33v12Ev();
extern void _ZN8S19526C23v20Ev();
extern void _ZN8S19526C23v21Ev();
extern void _ZN8S19526C23v22Ev();
extern void _ZN8S19526C23v23Ev();
extern void _ZN8S19526C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19526C2__8S19526C1[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C2[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v22Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v23Ev,
  (VTBL_ENTRY)&_ZN8S19526C23v24Ev,
};
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
extern void _ZN8S19526C33v10Ev();
extern void _ZN8S19526C33v11Ev();
extern void _ZN8S19526C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19526C38S19526C2__8S19526C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C3[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19526C33v12Ev,
};
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S19526C4__8S19526C38S19526C2__8S19526C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19526C3[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
};
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S19526C4__8S19526C2__8S19526C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19526C2[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
};
extern void _ZN8S19526C63v13Ev();
extern void _ZN8S19526C63v14Ev();
extern void _ZN8S19526C63v15Ev();
extern void _ZN8S19526C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19526C5__8S19526C2__8S19526C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19526C2[0]),
  (VTBL_ENTRY)&_ZN8S19526C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19526C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19526C53v16Ev,
};
extern void _ZN8S19526C42v3Ev();
extern void _ZN8S19526C42v4Ev();
extern void _ZN8S19526C42v5Ev();
extern void _ZN8S19526C42v6Ev();
extern void _ZN8S19526C42v7Ev();
extern void _ZN8S19526C42v8Ev();
extern void _ZN8S19526C42v9Ev();
extern void _ZN8S19526C8D1Ev();
extern void _ZN8S19526C8D0Ev();
extern void _ZN8S19526C83v37Ev();
extern void _ZN8S19526C83v38Ev();
extern void _ZN8S19526C83v39Ev();
extern void _ZN8S19526C83v40Ev();
extern void _ZN8S19526C83v41Ev();
static  VTBL_ENTRY _tg__ZTV8S19526C8__8S19526C1[] = {
  ABISELECT(64,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19526C8[0]),
  (VTBL_ENTRY)&_ZN8S19526C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19526C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19526C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19526C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v37Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v38Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v39Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v40Ev,
  (VTBL_ENTRY)&_ZN8S19526C83v41Ev,
};
extern void _ZN8S19526C93v25Ev();
extern void _ZN8S19526C93v26Ev();
extern void _ZN8S19526C93v27Ev();
extern void _ZN8S19526C93v28Ev();
extern void _ZN8S19526C93v29Ev();
extern void _ZN8S19526C93v30Ev();
extern void _ZN8S19526C93v31Ev();
extern void _ZN8S19526C93v32Ev();
extern void _ZN9S19526C103v33Ev();
extern void _ZN9S19526C103v34Ev();
extern void _ZN9S19526C103v35Ev();
extern void _ZN9S19526C103v36Ev();
static  VTBL_ENTRY _tg__ZTV9S19526C10__8S19526C8__8S19526C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S19526C8[0]),
  (VTBL_ENTRY)&_ZN8S19526C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v27Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v28Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19526C93v32Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19526C103v36Ev,
};
static  VTT_ENTRY vtt_S19526C1[] = {
  {&(_ZTV8S19526C1[14]),  14,157},
  {&(_ZTV8S19526C1[50]),  50,157},
  {&(_ZTV8S19526C1[14]),  14,157},
  {&(_ZTV8S19526C1[79]),  79,157},
  {&(_ZTV8S19526C1[67]),  67,157},
  {&(_ZTV8S19526C1[107]),  107,157},
  {&(_ZTV8S19526C1[123]),  123,157},
  {&(_ZTV8S19526C1[145]),  145,157},
  {&(_tg__ZTV8S19526C2__8S19526C1[11]),  11,26},
  {&(_tg__ZTV8S19526C38S19526C2__8S19526C1[10]),  10,20},
  {&(_tg__ZTV8S19526C4__8S19526C38S19526C2__8S19526C1[9]),  9,16},
  {&(_tg__ZTV8S19526C4__8S19526C2__8S19526C1[9]),  9,16},
  {&(_tg__ZTV8S19526C5__8S19526C2__8S19526C1[6]),  6,10},
  {&(_tg__ZTV8S19526C8__8S19526C1[3]),  3,17},
  {&(_tg__ZTV9S19526C10__8S19526C8__8S19526C1[14]),  14,26},
};
extern VTBL_ENTRY _ZTI8S19526C1[];
extern  VTBL_ENTRY _ZTV8S19526C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19526C1[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19526C1D0Ev,_ZTv0_n44_N8S19526C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19526C1D0Ev,_ZThn52_N8S19526C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19526C1D1Ev,_ZTv0_n44_N8S19526C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19526C1D1Ev,_ZThn52_N8S19526C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19526C1 = {  "S19526C1", // class name
  bases_S19526C1, 12,
  &(vtc_S19526C1[0]), // expected_vtbl_contents
  &(vtt_S19526C1[0]), // expected_vtt_contents
  ABISELECT(240,112), // object size
  NSPAIRA(_ZTI8S19526C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19526C1),157, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19526C1),15, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names136,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19076C4  {
  short s19076c4f0[5];
  virtual void  v7(); // _ZN8S19076C42v7Ev
  virtual void  v8(); // _ZN8S19076C42v8Ev
  virtual void  v9(); // _ZN8S19076C42v9Ev
  virtual void  v10(); // _ZN8S19076C43v10Ev
  virtual void  v11(); // _ZN8S19076C43v11Ev
  ~S19076C4(); // tgen
  S19076C4(); // tgen
};
//SIG(-1 S19076C4) C1{ v1 v2 v3 v4 v5 Fs[5]}


void  S19076C4 ::v7(){vfunc_called(this, "_ZN8S19076C42v7Ev");}
void  S19076C4 ::v8(){vfunc_called(this, "_ZN8S19076C42v8Ev");}
void  S19076C4 ::v9(){vfunc_called(this, "_ZN8S19076C42v9Ev");}
void  S19076C4 ::v10(){vfunc_called(this, "_ZN8S19076C43v10Ev");}
void  S19076C4 ::v11(){vfunc_called(this, "_ZN8S19076C43v11Ev");}
S19076C4 ::~S19076C4(){ note_dtor("S19076C4", this);} // tgen
S19076C4 ::S19076C4(){ note_ctor("S19076C4", this);} // tgen

static void Test_S19076C4()
{
  extern Class_Descriptor cd_S19076C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19076C4, buf);
    S19076C4 *dp, &lv = *(dp=new (buf) S19076C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19076C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19076C4)");
    check_field_offset(lv, s19076c4f0, ABISELECT(8,4), "S19076C4.s19076c4f0");
    test_class_info(&lv, &cd_S19076C4);
    dp->~S19076C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19076C4(Test_S19076C4, "S19076C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19076C4C1Ev();
extern void _ZN8S19076C4D1Ev();
Name_Map name_map_S19076C4[] = {
  NSPAIR(_ZN8S19076C4C1Ev),
  NSPAIR(_ZN8S19076C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19076C4[];
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY vtc_S19076C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C4[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
Class_Descriptor cd_S19076C4 = {  "S19076C4", // class name
  0,0,//no base classes
  &(vtc_S19076C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19076C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19076C4),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  S19076C5  : virtual S19076C4 {
  virtual void  v12(); // _ZN8S19076C53v12Ev
  virtual void  v13(); // _ZN8S19076C53v13Ev
  ~S19076C5(); // tgen
  S19076C5(); // tgen
};
//SIG(-1 S19076C5) C1{ VBC2{ v3 v4 v5 v6 v7 Fs[5]} v1 v2}


void  S19076C5 ::v12(){vfunc_called(this, "_ZN8S19076C53v12Ev");}
void  S19076C5 ::v13(){vfunc_called(this, "_ZN8S19076C53v13Ev");}
S19076C5 ::~S19076C5(){ note_dtor("S19076C5", this);} // tgen
S19076C5 ::S19076C5(){ note_ctor("S19076C5", this);} // tgen

static void Test_S19076C5()
{
  extern Class_Descriptor cd_S19076C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19076C5, buf);
    S19076C5 *dp, &lv = *(dp=new (buf) S19076C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19076C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19076C5)");
    check_base_class_offset(lv, (S19076C4*), ABISELECT(8,4), "S19076C5");
    test_class_info(&lv, &cd_S19076C5);
    dp->~S19076C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19076C5(Test_S19076C5, "S19076C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19076C5C1Ev();
extern void _ZN8S19076C5D1Ev();
Name_Map name_map_S19076C5[] = {
  NSPAIR(_ZN8S19076C5C1Ev),
  NSPAIR(_ZN8S19076C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
static Base_Class bases_S19076C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19076C4,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19076C5[];
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY vtc_S19076C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S19076C5[];
static  VTT_ENTRY vtt_S19076C5[] = {
  {&(_ZTV8S19076C5[3]),  3,17},
  {&(_ZTV8S19076C5[12]),  12,17},
};
extern VTBL_ENTRY _ZTI8S19076C5[];
extern  VTBL_ENTRY _ZTV8S19076C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C5[];
Class_Descriptor cd_S19076C5 = {  "S19076C5", // class name
  bases_S19076C5, 1,
  &(vtc_S19076C5[0]), // expected_vtbl_contents
  &(vtt_S19076C5[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19076C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19076C5),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19076C5),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  S19076C6  : S19076C4 , virtual S19076C5 {
  int s19076c6f0[2];
  virtual void  v14(); // _ZN8S19076C63v14Ev
  ~S19076C6(); // tgen
  S19076C6(); // tgen
};
//SIG(-1 S19076C6) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} v1 Fi[2]}


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

static void Test_S19076C6()
{
  extern Class_Descriptor cd_S19076C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S19076C6, buf);
    S19076C6 *dp, &lv = *(dp=new (buf) S19076C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S19076C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19076C6)");
    /*is_ambiguous_... S19076C6::S19076C4 */ AMB_check_base_class_offset(lv, (S19076C4*), 0, "S19076C6");
    check_base_class_offset(lv, (S19076C4*)(S19076C5*), ABISELECT(40,28), "S19076C6");
    check_base_class_offset(lv, (S19076C5*), ABISELECT(32,24), "S19076C6");
    check_field_offset(lv, s19076c6f0, ABISELECT(20,16), "S19076C6.s19076c6f0");
    test_class_info(&lv, &cd_S19076C6);
    dp->~S19076C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19076C6(Test_S19076C6, "S19076C6", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN8S19076C6C1Ev();
extern void _ZN8S19076C6D1Ev();
Name_Map name_map_S19076C6[] = {
  NSPAIR(_ZN8S19076C6C1Ev),
  NSPAIR(_ZN8S19076C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C5;
extern VTBL_ENTRY _ZTI8S19076C5[];
extern  VTBL_ENTRY _ZTV8S19076C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C5[];
static Base_Class bases_S19076C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19076C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19076C4,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19076C5,    ABISELECT(32,24), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19076C6[];
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY vtc_S19076C6[] = {
  ABISELECT(40,28),
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S19076C6[];
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__8S19076C5__8S19076C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
static  VTT_ENTRY vtt_S19076C6[] = {
  {&(_ZTV8S19076C6[4]),  4,29},
  {&(_ZTV8S19076C6[15]),  15,29},
  {&(_ZTV8S19076C6[24]),  24,29},
  {&(_tg__ZTV8S19076C5__8S19076C6[3]),  3,5},
  {&(_tg__ZTV8S19076C4__8S19076C5__8S19076C6[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19076C6[];
extern  VTBL_ENTRY _ZTV8S19076C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C6[];
Class_Descriptor cd_S19076C6 = {  "S19076C6", // class name
  bases_S19076C6, 3,
  &(vtc_S19076C6[0]), // expected_vtbl_contents
  &(vtt_S19076C6[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI8S19076C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19076C6),29, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19076C6),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  S19076C3  : S19076C4 , virtual S19076C5 , S19076C6 {
  int s19076c3f0;
  virtual void  v15(); // _ZN8S19076C33v15Ev
  ~S19076C3(); // tgen
  S19076C3(); // tgen
};
//SIG(-1 S19076C3) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} BC4{ BC2 VBC3 v9 Fi[2]} v1 Fi}


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

static void Test_S19076C3()
{
  extern Class_Descriptor cd_S19076C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S19076C3, buf);
    S19076C3 *dp, &lv = *(dp=new (buf) S19076C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S19076C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19076C3)");
    /*is_ambiguous_... S19076C3::S19076C4 */ AMB_check_base_class_offset(lv, (S19076C4*), 0, "S19076C3");
    check_base_class_offset(lv, (S19076C4*)(S19076C5*), ABISELECT(64,48), "S19076C3");
    check_base_class_offset(lv, (S19076C5*), ABISELECT(56,44), "S19076C3");
    check_base_class_offset(lv, (S19076C5*)(S19076C6*), ABISELECT(56,44), "S19076C3");
    /*is_ambiguous_... S19076C6::S19076C4 */ AMB_check_base_class_offset(lv, (S19076C4*)(S19076C6*), ABISELECT(24,16), "S19076C3");
    check_base_class_offset(lv, (S19076C6*), ABISELECT(24,16), "S19076C3");
    check_field_offset(lv, s19076c3f0, ABISELECT(52,40), "S19076C3.s19076c3f0");
    test_class_info(&lv, &cd_S19076C3);
    dp->~S19076C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19076C3(Test_S19076C3, "S19076C3", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN8S19076C3C1Ev();
extern void _ZN8S19076C3D1Ev();
Name_Map name_map_S19076C3[] = {
  NSPAIR(_ZN8S19076C3C1Ev),
  NSPAIR(_ZN8S19076C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C5;
extern VTBL_ENTRY _ZTI8S19076C5[];
extern  VTBL_ENTRY _ZTV8S19076C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C5[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C6;
extern VTBL_ENTRY _ZTI8S19076C6[];
extern  VTBL_ENTRY _ZTV8S19076C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C6[];
static Base_Class bases_S19076C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19076C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19076C4,    ABISELECT(64,48), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19076C5,    ABISELECT(56,44), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19076C4,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19076C6,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19076C3[];
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C33v15Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY vtc_S19076C3[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C33v15Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S19076C3[];
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C6__8S19076C3[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C6__8S19076C3[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C6__8S19076C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__8S19076C5__8S19076C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
static  VTT_ENTRY vtt_S19076C3[] = {
  {&(_ZTV8S19076C3[4]),  4,39},
  {&(_tg__ZTV8S19076C6__8S19076C3[4]),  4,10},
  {&(_tg__ZTV8S19076C5__8S19076C6__8S19076C3[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C6__8S19076C3[7]),  7,12},
  {&(_ZTV8S19076C3[25]),  25,39},
  {&(_ZTV8S19076C3[34]),  34,39},
  {&(_ZTV8S19076C3[14]),  14,39},
  {&(_tg__ZTV8S19076C5__8S19076C3[3]),  3,5},
  {&(_tg__ZTV8S19076C4__8S19076C5__8S19076C3[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19076C3[];
extern  VTBL_ENTRY _ZTV8S19076C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C3[];
Class_Descriptor cd_S19076C3 = {  "S19076C3", // class name
  bases_S19076C3, 5,
  &(vtc_S19076C3[0]), // expected_vtbl_contents
  &(vtt_S19076C3[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI8S19076C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19076C3),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19076C3),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19076C7  : virtual S19076C5 , S19076C6 {
  int s19076c7f0[3];
  void *s19076c7f1;
  virtual void  v16(); // _ZN8S19076C73v16Ev
  virtual void  v17(); // _ZN8S19076C73v17Ev
  virtual void  v18(); // _ZN8S19076C73v18Ev
  virtual void  v19(); // _ZN8S19076C73v19Ev
  ~S19076C7(); // tgen
  S19076C7(); // tgen
};
//SIG(-1 S19076C7) C1{ VBC2{ VBC3{ v5 v6 v7 v8 v9 Fs[5]} v10 v11} BC4{ BC3 VBC2 v12 Fi[2]} v1 v2 v3 v4 Fi[3] Fp}


void  S19076C7 ::v16(){vfunc_called(this, "_ZN8S19076C73v16Ev");}
void  S19076C7 ::v17(){vfunc_called(this, "_ZN8S19076C73v17Ev");}
void  S19076C7 ::v18(){vfunc_called(this, "_ZN8S19076C73v18Ev");}
void  S19076C7 ::v19(){vfunc_called(this, "_ZN8S19076C73v19Ev");}
S19076C7 ::~S19076C7(){ note_dtor("S19076C7", this);} // tgen
S19076C7 ::S19076C7(){ note_ctor("S19076C7", this);} // tgen

static void Test_S19076C7()
{
  extern Class_Descriptor cd_S19076C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S19076C7, buf);
    S19076C7 *dp, &lv = *(dp=new (buf) S19076C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S19076C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19076C7)");
    check_base_class_offset(lv, (S19076C4*)(S19076C5*), ABISELECT(56,44), "S19076C7");
    check_base_class_offset(lv, (S19076C5*), ABISELECT(48,40), "S19076C7");
    check_base_class_offset(lv, (S19076C5*)(S19076C6*), ABISELECT(48,40), "S19076C7");
    /*is_ambiguous_... S19076C6::S19076C4 */ AMB_check_base_class_offset(lv, (S19076C4*)(S19076C6*), 0, "S19076C7");
    check_base_class_offset(lv, (S19076C6*), 0, "S19076C7");
    check_field_offset(lv, s19076c7f0, ABISELECT(28,24), "S19076C7.s19076c7f0");
    check_field_offset(lv, s19076c7f1, ABISELECT(40,36), "S19076C7.s19076c7f1");
    test_class_info(&lv, &cd_S19076C7);
    dp->~S19076C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19076C7(Test_S19076C7, "S19076C7", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN8S19076C7C1Ev();
extern void _ZN8S19076C7D1Ev();
Name_Map name_map_S19076C7[] = {
  NSPAIR(_ZN8S19076C7C1Ev),
  NSPAIR(_ZN8S19076C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C5;
extern VTBL_ENTRY _ZTI8S19076C5[];
extern  VTBL_ENTRY _ZTV8S19076C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C5[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C6;
extern VTBL_ENTRY _ZTI8S19076C6[];
extern  VTBL_ENTRY _ZTV8S19076C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C6[];
static Base_Class bases_S19076C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19076C4,    ABISELECT(56,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19076C5,    ABISELECT(48,40), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19076C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19076C6,    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 _ZTI8S19076C7[];
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C73v16Ev();
extern void _ZN8S19076C73v17Ev();
extern void _ZN8S19076C73v18Ev();
extern void _ZN8S19076C73v19Ev();
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY vtc_S19076C7[] = {
  ABISELECT(56,44),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C7[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v19Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S19076C7[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19076C7[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S19076C7[];
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C6__8S19076C7[] = {
  ABISELECT(56,44),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C6__8S19076C7[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C6__8S19076C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__8S19076C5__8S19076C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
static  VTT_ENTRY vtt_S19076C7[] = {
  {&(_ZTV8S19076C7[4]),  4,33},
  {&(_tg__ZTV8S19076C6__8S19076C7[4]),  4,10},
  {&(_tg__ZTV8S19076C5__8S19076C6__8S19076C7[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C6__8S19076C7[7]),  7,12},
  {&(_ZTV8S19076C7[19]),  19,33},
  {&(_ZTV8S19076C7[28]),  28,33},
  {&(_tg__ZTV8S19076C5__8S19076C7[3]),  3,5},
  {&(_tg__ZTV8S19076C4__8S19076C5__8S19076C7[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19076C7[];
extern  VTBL_ENTRY _ZTV8S19076C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C7[];
Class_Descriptor cd_S19076C7 = {  "S19076C7", // class name
  bases_S19076C7, 4,
  &(vtc_S19076C7[0]), // expected_vtbl_contents
  &(vtt_S19076C7[0]), // expected_vtt_contents
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI8S19076C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19076C7),33, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19076C7),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19076C2  : S19076C3 , S19076C7 , S19076C6 {
  char s19076c2f0[4];
  __tsi64 s19076c2f1;
  ::S7656C10 s19076c2f2;
  void *s19076c2f3;
  virtual void  v20(); // _ZN8S19076C23v20Ev
  virtual void  v21(); // _ZN8S19076C23v21Ev
  virtual void  v22(); // _ZN8S19076C23v22Ev
  ~S19076C2(); // tgen
  S19076C2(); // tgen
};
//SIG(-1 S19076C2) C1{ BC2{ BC3{ v4 v5 v6 v7 v8 Fs[5]} VBC4{ VBC3 v9 v10} BC5{ BC3 VBC4 v11 Fi[2]} v12 Fi} BC6{ VBC4 BC5 v13 v14 v15 v16 Fi[3] Fp} BC5 v1 v2 v3 Fc[4] FL FC7{ BC8{ BC9{ v19 v20 v21 v22 v23 Fs[5]} VBC10{ VBC9 v24 v25} v26 Fi[2]} VBC11{ BC9 VBC10 BC8 v27 Fi} VBC12{ VBC11 BC9 BC10 v28 v29 v30 v31 v32 Fc Fp} v17 v18 Fp} Fp}


void  S19076C2 ::v20(){vfunc_called(this, "_ZN8S19076C23v20Ev");}
void  S19076C2 ::v21(){vfunc_called(this, "_ZN8S19076C23v21Ev");}
void  S19076C2 ::v22(){vfunc_called(this, "_ZN8S19076C23v22Ev");}
S19076C2 ::~S19076C2(){ note_dtor("S19076C2", this);} // tgen
S19076C2 ::S19076C2(){ note_ctor("S19076C2", this);} // tgen

static void Test_S19076C2()
{
  extern Class_Descriptor cd_S19076C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(46,67)];
    init_test(&cd_S19076C2, buf);
    S19076C2 *dp, &lv = *(dp=new (buf) S19076C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(360,264), "sizeof(S19076C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19076C2)");
    /*is_ambiguous_... S19076C3::S19076C4 */ AMB_check_base_class_offset(lv, (S19076C4*)(S19076C3*), 0, "S19076C2");
    check_base_class_offset(lv, (S19076C4*)(S19076C5*), ABISELECT(336,248), "S19076C2");
    check_base_class_offset(lv, (S19076C5*)(S19076C3*), ABISELECT(328,244), "S19076C2");
    check_base_class_offset(lv, (S19076C5*)(S19076C6*)(S19076C3*), ABISELECT(328,244), "S19076C2");
    check_base_class_offset(lv, (S19076C5*)(S19076C7*), ABISELECT(328,244), "S19076C2");
    check_base_class_offset(lv, (S19076C5*)(S19076C6*)(S19076C7*), ABISELECT(328,244), "S19076C2");
    /*is_ambiguous_... S19076C2::S19076C6 */ AMB_check_base_class_offset(lv, (S19076C5*)(S19076C6*), ABISELECT(328,244), "S19076C2");
    /*is_ambiguous_... S19076C6::S19076C4 */ AMB_check_base_class_offset(lv, (S19076C4*)(S19076C6*)(S19076C3*), ABISELECT(24,16), "S19076C2");
    check_base_class_offset(lv, (S19076C6*)(S19076C3*), ABISELECT(24,16), "S19076C2");
    check_base_class_offset(lv, (S19076C3*), 0, "S19076C2");
    /*is_ambiguous_... S19076C6::S19076C4 */ AMB_check_base_class_offset(lv, (S19076C4*)(S19076C6*)(S19076C7*), ABISELECT(56,44), "S19076C2");
    check_base_class_offset(lv, (S19076C6*)(S19076C7*), ABISELECT(56,44), "S19076C2");
    check_base_class_offset(lv, (S19076C7*), ABISELECT(56,44), "S19076C2");
    /*is_ambiguous_... S19076C2::S19076C6 */ AMB_check_base_class_offset(lv, (S19076C4*)(S19076C6*), ABISELECT(104,84), "S19076C2");
    /*is_ambiguous_... S19076C2::S19076C6 */ AMB_check_base_class_offset(lv, (S19076C6*), ABISELECT(104,84), "S19076C2");
    check_field_offset(lv, s19076c2f0, ABISELECT(132,108), "S19076C2.s19076c2f0");
    check_field_offset(lv, s19076c2f1, ABISELECT(136,112), "S19076C2.s19076c2f1");
    check_field_offset(lv, s19076c2f2, ABISELECT(144,120), "S19076C2.s19076c2f2");
    check_field_offset(lv, s19076c2f3, ABISELECT(320,240), "S19076C2.s19076c2f3");
    test_class_info(&lv, &cd_S19076C2);
    dp->~S19076C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19076C2(Test_S19076C2, "S19076C2", ABISELECT(360,264));

#else // __cplusplus

extern void _ZN8S19076C2C1Ev();
extern void _ZN8S19076C2D1Ev();
Name_Map name_map_S19076C2[] = {
  NSPAIR(_ZN8S19076C2C1Ev),
  NSPAIR(_ZN8S19076C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C5;
extern VTBL_ENTRY _ZTI8S19076C5[];
extern  VTBL_ENTRY _ZTV8S19076C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C5[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C6;
extern VTBL_ENTRY _ZTI8S19076C6[];
extern  VTBL_ENTRY _ZTV8S19076C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C6[];
extern Class_Descriptor cd_S19076C3;
extern VTBL_ENTRY _ZTI8S19076C3[];
extern  VTBL_ENTRY _ZTV8S19076C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C3[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C6;
extern VTBL_ENTRY _ZTI8S19076C6[];
extern  VTBL_ENTRY _ZTV8S19076C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C6[];
extern Class_Descriptor cd_S19076C7;
extern VTBL_ENTRY _ZTI8S19076C7[];
extern  VTBL_ENTRY _ZTV8S19076C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C7[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C6;
extern VTBL_ENTRY _ZTI8S19076C6[];
extern  VTBL_ENTRY _ZTV8S19076C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C6[];
static Base_Class bases_S19076C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19076C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19076C4,    ABISELECT(336,248), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19076C5,    ABISELECT(328,244), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19076C4,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19076C6,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19076C3,    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_S19076C4,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19076C6,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19076C7,    ABISELECT(56,44), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19076C4,    ABISELECT(104,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
    10, //immediately_derived
  0, 0},
  {&cd_S19076C6,    ABISELECT(104,84), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19076C2[];
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C33v15Ev();
extern void _ZN8S19076C23v20Ev();
extern void _ZN8S19076C23v21Ev();
extern void _ZN8S19076C23v22Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C73v16Ev();
extern void _ZN8S19076C73v17Ev();
extern void _ZN8S19076C73v18Ev();
extern void _ZN8S19076C73v19Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY vtc_S19076C2[] = {
  ABISELECT(336,248),
  ABISELECT(328,244),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C33v15Ev,
  (VTBL_ENTRY)&_ZN8S19076C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19076C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19076C23v22Ev,
  ABISELECT(312,232),
  ABISELECT(304,228),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  ABISELECT(280,204),
  ABISELECT(272,200),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v19Ev,
  ABISELECT(232,164),
  ABISELECT(224,160),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S19076C2[];
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C3__8S19076C2[] = {
  ABISELECT(336,248),
  ABISELECT(328,244),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C33v15Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C68S19076C3__8S19076C2[] = {
  ABISELECT(312,232),
  ABISELECT(304,228),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C68S19076C3__8S19076C2[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-304,-228),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C68S19076C3__8S19076C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-232),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C3__8S19076C2[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C3__8S19076C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C6__8S19076C3__8S19076C2[] = {
  ABISELECT(312,232),
  ABISELECT(304,228),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C73v16Ev();
extern void _ZN8S19076C73v17Ev();
extern void _ZN8S19076C73v18Ev();
extern void _ZN8S19076C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C7__8S19076C2[] = {
  ABISELECT(280,204),
  ABISELECT(272,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C7[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v19Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C68S19076C7__A1__8S19076C2[] = {
  ABISELECT(280,204),
  ABISELECT(272,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C68S19076C7__A1__8S19076C2[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C68S19076C7__A1__8S19076C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-204),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C7__8S19076C2[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI8S19076C7[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__8S19076C7__8S19076C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-204),
  (VTBL_ENTRY)&(_ZTI8S19076C7[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C6__A2__8S19076C2[] = {
  ABISELECT(232,164),
  ABISELECT(224,160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C6__A2__8S19076C2[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C6__A2__8S19076C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__8S19076C5__8S19076C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
static  VTT_ENTRY vtt_S19076C2[] = {
  {&(_ZTV8S19076C2[4]),  4,66},
  {&(_tg__ZTV8S19076C3__8S19076C2[4]),  4,10},
  {&(_tg__ZTV8S19076C68S19076C3__8S19076C2[4]),  4,10},
  {&(_tg__ZTV8S19076C5__8S19076C68S19076C3__8S19076C2[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C68S19076C3__8S19076C2[7]),  7,12},
  {&(_tg__ZTV8S19076C5__8S19076C3__8S19076C2[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C3__8S19076C2[7]),  7,12},
  {&(_tg__ZTV8S19076C6__8S19076C3__8S19076C2[4]),  4,10},
  {&(_tg__ZTV8S19076C7__8S19076C2[4]),  4,14},
  {&(_tg__ZTV8S19076C68S19076C7__A1__8S19076C2[4]),  4,10},
  {&(_tg__ZTV8S19076C5__8S19076C68S19076C7__A1__8S19076C2[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C68S19076C7__A1__8S19076C2[7]),  7,12},
  {&(_tg__ZTV8S19076C5__8S19076C7__8S19076C2[5]),  5,7},
  {&(_tg__ZTV8S19076C4__8S19076C7__8S19076C2[7]),  7,12},
  {&(_tg__ZTV8S19076C6__A2__8S19076C2[4]),  4,10},
  {&(_tg__ZTV8S19076C5__8S19076C6__A2__8S19076C2[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C6__A2__8S19076C2[7]),  7,12},
  {&(_ZTV8S19076C2[52]),  52,66},
  {&(_ZTV8S19076C2[61]),  61,66},
  {&(_ZTV8S19076C2[17]),  17,66},
  {&(_ZTV8S19076C2[27]),  27,66},
  {&(_ZTV8S19076C2[41]),  41,66},
  {&(_tg__ZTV8S19076C5__8S19076C2[3]),  3,5},
  {&(_tg__ZTV8S19076C4__8S19076C5__8S19076C2[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19076C2[];
extern  VTBL_ENTRY _ZTV8S19076C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C2[];
Class_Descriptor cd_S19076C2 = {  "S19076C2", // class name
  bases_S19076C2, 11,
  &(vtc_S19076C2[0]), // expected_vtbl_contents
  &(vtt_S19076C2[0]), // expected_vtt_contents
  ABISELECT(360,264), // object size
  NSPAIRA(_ZTI8S19076C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19076C2),66, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19076C2),24, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19076C1  : virtual S19076C2 {
  char s19076c1f0;
  virtual void  v1(); // _ZN8S19076C12v1Ev
  virtual void  v2(); // _ZN8S19076C12v2Ev
  virtual void  v3(); // _ZN8S19076C12v3Ev
  virtual void  v4(); // _ZN8S19076C12v4Ev
  virtual void  v5(); // _ZN8S19076C12v5Ev
  virtual void  v6(); // _ZN8S19076C12v6Ev
  ~S19076C1(); // tgen
  S19076C1(); // tgen
};
//SIG(1 S19076C1) C1{ VBC2{ BC3{ BC4{ v7 v8 v9 v10 v11 Fs[5]} VBC5{ VBC4 v12 v13} BC6{ BC4 VBC5 v14 Fi[2]} v15 Fi} BC7{ VBC5 BC6 v16 v17 v18 v19 Fi[3] Fp} BC6 v20 v21 v22 Fc[4] FL FC8{ BC9{ BC10{ v25 v26 v27 v28 v29 Fs[5]} VBC11{ VBC10 v30 v31} v32 Fi[2]} VBC12{ BC10 VBC11 BC9 v33 Fi} VBC13{ VBC12 BC10 BC11 v34 v35 v36 v37 v38 Fc Fp} v23 v24 Fp} Fp} v1 v2 v3 v4 v5 v6 Fc}


void  S19076C1 ::v1(){vfunc_called(this, "_ZN8S19076C12v1Ev");}
void  S19076C1 ::v2(){vfunc_called(this, "_ZN8S19076C12v2Ev");}
void  S19076C1 ::v3(){vfunc_called(this, "_ZN8S19076C12v3Ev");}
void  S19076C1 ::v4(){vfunc_called(this, "_ZN8S19076C12v4Ev");}
void  S19076C1 ::v5(){vfunc_called(this, "_ZN8S19076C12v5Ev");}
void  S19076C1 ::v6(){vfunc_called(this, "_ZN8S19076C12v6Ev");}
S19076C1 ::~S19076C1(){ note_dtor("S19076C1", this);} // tgen
S19076C1 ::S19076C1(){ note_ctor("S19076C1", this);} // tgen

static void Test_S19076C1()
{
  extern Class_Descriptor cd_S19076C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(47,68)];
    init_test(&cd_S19076C1, buf);
    S19076C1 *dp, &lv = *(dp=new (buf) S19076C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,268), "sizeof(S19076C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19076C1)");
    /*is_ambiguous_... S19076C3::S19076C4 */ AMB_check_base_class_offset(lv, (S19076C4*)(S19076C3*)(S19076C2*), ABISELECT(16,8), "S19076C1");
    check_base_class_offset(lv, (S19076C4*)(S19076C5*), ABISELECT(344,252), "S19076C1");
    check_base_class_offset(lv, (S19076C5*)(S19076C3*)(S19076C2*), 0, "S19076C1");
    check_base_class_offset(lv, (S19076C5*)(S19076C6*)(S19076C3*)(S19076C2*), 0, "S19076C1");
    check_base_class_offset(lv, (S19076C5*)(S19076C7*)(S19076C2*), 0, "S19076C1");
    check_base_class_offset(lv, (S19076C5*)(S19076C6*)(S19076C7*)(S19076C2*), 0, "S19076C1");
    /*is_ambiguous_... S19076C2::S19076C6 */ AMB_check_base_class_offset(lv, (S19076C5*)(S19076C6*)(S19076C2*), 0, "S19076C1");
    /*is_ambiguous_... S19076C6::S19076C4 */ AMB_check_base_class_offset(lv, (S19076C4*)(S19076C6*)(S19076C3*)(S19076C2*), ABISELECT(40,24), "S19076C1");
    check_base_class_offset(lv, (S19076C6*)(S19076C3*)(S19076C2*), ABISELECT(40,24), "S19076C1");
    check_base_class_offset(lv, (S19076C3*)(S19076C2*), ABISELECT(16,8), "S19076C1");
    /*is_ambiguous_... S19076C6::S19076C4 */ AMB_check_base_class_offset(lv, (S19076C4*)(S19076C6*)(S19076C7*)(S19076C2*), ABISELECT(72,52), "S19076C1");
    check_base_class_offset(lv, (S19076C6*)(S19076C7*)(S19076C2*), ABISELECT(72,52), "S19076C1");
    check_base_class_offset(lv, (S19076C7*)(S19076C2*), ABISELECT(72,52), "S19076C1");
    /*is_ambiguous_... S19076C2::S19076C6 */ AMB_check_base_class_offset(lv, (S19076C4*)(S19076C6*)(S19076C2*), ABISELECT(120,92), "S19076C1");
    /*is_ambiguous_... S19076C2::S19076C6 */ AMB_check_base_class_offset(lv, (S19076C6*)(S19076C2*), ABISELECT(120,92), "S19076C1");
    check_base_class_offset(lv, (S19076C2*), ABISELECT(16,8), "S19076C1");
    check_field_offset(lv, s19076c1f0, ABISELECT(8,4), "S19076C1.s19076c1f0");
    test_class_info(&lv, &cd_S19076C1);
    dp->~S19076C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19076C1(Test_S19076C1, "S19076C1", ABISELECT(368,268));

#else // __cplusplus

extern void _ZN8S19076C1C1Ev();
extern void _ZN8S19076C1D1Ev();
Name_Map name_map_S19076C1[] = {
  NSPAIR(_ZN8S19076C1C1Ev),
  NSPAIR(_ZN8S19076C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C5;
extern VTBL_ENTRY _ZTI8S19076C5[];
extern  VTBL_ENTRY _ZTV8S19076C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C5[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C6;
extern VTBL_ENTRY _ZTI8S19076C6[];
extern  VTBL_ENTRY _ZTV8S19076C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C6[];
extern Class_Descriptor cd_S19076C3;
extern VTBL_ENTRY _ZTI8S19076C3[];
extern  VTBL_ENTRY _ZTV8S19076C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C3[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C6;
extern VTBL_ENTRY _ZTI8S19076C6[];
extern  VTBL_ENTRY _ZTV8S19076C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C6[];
extern Class_Descriptor cd_S19076C7;
extern VTBL_ENTRY _ZTI8S19076C7[];
extern  VTBL_ENTRY _ZTV8S19076C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C7[];
extern Class_Descriptor cd_S19076C4;
extern VTBL_ENTRY _ZTI8S19076C4[];
extern  VTBL_ENTRY _ZTV8S19076C4[];
extern Class_Descriptor cd_S19076C6;
extern VTBL_ENTRY _ZTI8S19076C6[];
extern  VTBL_ENTRY _ZTV8S19076C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C6[];
extern Class_Descriptor cd_S19076C2;
extern VTBL_ENTRY _ZTI8S19076C2[];
extern  VTBL_ENTRY _ZTV8S19076C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C2[];
static Base_Class bases_S19076C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19076C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19076C4,    ABISELECT(344,252), //bcp->offset
    76, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19076C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19076C4,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19076C6,    ABISELECT(40,24), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19076C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19076C4,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19076C6,    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
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19076C7,    ABISELECT(72,52), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19076C4,    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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19076C6,    ABISELECT(120,92), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19076C2,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19076C1[];
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
extern void _ZN8S19076C12v1Ev();
extern void _ZN8S19076C12v2Ev();
extern void _ZN8S19076C12v3Ev();
extern void _ZN8S19076C12v4Ev();
extern void _ZN8S19076C12v5Ev();
extern void _ZN8S19076C12v6Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C33v15Ev();
extern void _ZN8S19076C23v20Ev();
extern void _ZN8S19076C23v21Ev();
extern void _ZN8S19076C23v22Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C73v16Ev();
extern void _ZN8S19076C73v17Ev();
extern void _ZN8S19076C73v18Ev();
extern void _ZN8S19076C73v19Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY vtc_S19076C1[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  ABISELECT(344,252),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C1[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19076C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19076C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19076C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19076C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19076C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19076C12v6Ev,
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  ABISELECT(56,44),
  0,
  0,
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(328,244),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19076C1[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C33v15Ev,
  (VTBL_ENTRY)&_ZN8S19076C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19076C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19076C23v22Ev,
  ABISELECT(304,228),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19076C1[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  ABISELECT(272,200),
  ABISELECT(-72,-52),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S19076C1[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v19Ev,
  ABISELECT(224,160),
  ABISELECT(-120,-92),
  ABISELECT(-120,-92),
  (VTBL_ENTRY)&(_ZTI8S19076C1[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-252),
  (VTBL_ENTRY)&(_ZTI8S19076C1[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S19076C1[];
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C33v15Ev();
extern void _ZN8S19076C23v20Ev();
extern void _ZN8S19076C23v21Ev();
extern void _ZN8S19076C23v22Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C2__8S19076C1[] = {
  ABISELECT(328,244),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C33v15Ev,
  (VTBL_ENTRY)&_ZN8S19076C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19076C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19076C23v22Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C38S19076C2__8S19076C1[] = {
  ABISELECT(328,244),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C33v15Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C68S19076C38S19076C2__8S19076C1[] = {
  ABISELECT(304,228),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C68S19076C38S19076C2__8S19076C1[] = {
  0,
  0,
  ABISELECT(344,252),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C68S19076C38S19076C2__8S19076C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-228),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C38S19076C2__8S19076C1[] = {
  0,
  0,
  ABISELECT(344,252),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C38S19076C2__8S19076C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C6__8S19076C38S19076C2__8S19076C1[] = {
  ABISELECT(304,228),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19076C3[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C73v16Ev();
extern void _ZN8S19076C73v17Ev();
extern void _ZN8S19076C73v18Ev();
extern void _ZN8S19076C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C78S19076C2__8S19076C1[] = {
  ABISELECT(272,200),
  ABISELECT(-72,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C7[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v19Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C68S19076C78S19076C2__A1__8S19076C1[] = {
  ABISELECT(272,200),
  ABISELECT(-72,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C68S19076C78S19076C2__A1__8S19076C1[] = {
  0,
  0,
  ABISELECT(344,252),
  ABISELECT(72,52),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C68S19076C78S19076C2__A1__8S19076C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C78S19076C2__8S19076C1[] = {
  0,
  0,
  ABISELECT(344,252),
  ABISELECT(72,52),
  (VTBL_ENTRY)&(_ZTI8S19076C7[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__8S19076C78S19076C2__8S19076C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI8S19076C7[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C68S19076C2__A2__8S19076C1[] = {
  ABISELECT(224,160),
  ABISELECT(-120,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C68S19076C2__A2__8S19076C1[] = {
  0,
  0,
  ABISELECT(344,252),
  ABISELECT(120,92),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C68S19076C2__A2__8S19076C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI8S19076C6[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C2__8S19076C1[] = {
  0,
  0,
  ABISELECT(344,252),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__A1__8S19076C2__8S19076C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-244),
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C68S19076C3__8S19076C2__8S19076C1[] = {
  ABISELECT(304,228),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
extern void _ZN8S19076C73v16Ev();
extern void _ZN8S19076C73v17Ev();
extern void _ZN8S19076C73v18Ev();
extern void _ZN8S19076C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C7__8S19076C2__8S19076C1[] = {
  ABISELECT(272,200),
  ABISELECT(-72,-52),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19076C73v19Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
extern void _ZN8S19076C63v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C6__A2__8S19076C2__8S19076C1[] = {
  ABISELECT(224,160),
  ABISELECT(-120,-92),
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI8S19076C2[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19076C63v14Ev,
};
extern void _ZN8S19076C53v12Ev();
extern void _ZN8S19076C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C5__8S19076C1[] = {
  ABISELECT(344,252),
  0,
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19076C53v13Ev,
};
extern void _ZN8S19076C42v7Ev();
extern void _ZN8S19076C42v8Ev();
extern void _ZN8S19076C42v9Ev();
extern void _ZN8S19076C43v10Ev();
extern void _ZN8S19076C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19076C4__8S19076C5__8S19076C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-252),
  (VTBL_ENTRY)&(_ZTI8S19076C5[0]),
  (VTBL_ENTRY)&_ZN8S19076C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19076C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19076C43v11Ev,
};
static  VTT_ENTRY vtt_S19076C1[] = {
  {&(_ZTV8S19076C1[7]),  7,88},
  {&(_ZTV8S19076C1[33]),  33,88},
  {&(_ZTV8S19076C1[7]),  7,88},
  {&(_ZTV8S19076C1[83]),  83,88},
  {&(_ZTV8S19076C1[46]),  46,88},
  {&(_ZTV8S19076C1[56]),  56,88},
  {&(_ZTV8S19076C1[70]),  70,88},
  {&(_tg__ZTV8S19076C2__8S19076C1[4]),  4,13},
  {&(_tg__ZTV8S19076C38S19076C2__8S19076C1[4]),  4,10},
  {&(_tg__ZTV8S19076C68S19076C38S19076C2__8S19076C1[4]),  4,10},
  {&(_tg__ZTV8S19076C5__8S19076C68S19076C38S19076C2__8S19076C1[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C68S19076C38S19076C2__8S19076C1[7]),  7,12},
  {&(_tg__ZTV8S19076C5__8S19076C38S19076C2__8S19076C1[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C38S19076C2__8S19076C1[7]),  7,12},
  {&(_tg__ZTV8S19076C6__8S19076C38S19076C2__8S19076C1[4]),  4,10},
  {&(_tg__ZTV8S19076C78S19076C2__8S19076C1[4]),  4,14},
  {&(_tg__ZTV8S19076C68S19076C78S19076C2__A1__8S19076C1[4]),  4,10},
  {&(_tg__ZTV8S19076C5__8S19076C68S19076C78S19076C2__A1__8S19076C1[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C68S19076C78S19076C2__A1__8S19076C1[7]),  7,12},
  {&(_tg__ZTV8S19076C5__8S19076C78S19076C2__8S19076C1[5]),  5,7},
  {&(_tg__ZTV8S19076C4__8S19076C78S19076C2__8S19076C1[7]),  7,12},
  {&(_tg__ZTV8S19076C68S19076C2__A2__8S19076C1[4]),  4,10},
  {&(_tg__ZTV8S19076C5__8S19076C68S19076C2__A2__8S19076C1[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C68S19076C2__A2__8S19076C1[7]),  7,12},
  {&(_tg__ZTV8S19076C5__8S19076C2__8S19076C1[5]),  5,7},
  {&(_tg__ZTV8S19076C4__A1__8S19076C2__8S19076C1[7]),  7,12},
  {&(_tg__ZTV8S19076C68S19076C3__8S19076C2__8S19076C1[4]),  4,10},
  {&(_tg__ZTV8S19076C7__8S19076C2__8S19076C1[4]),  4,14},
  {&(_tg__ZTV8S19076C6__A2__8S19076C2__8S19076C1[4]),  4,10},
  {&(_tg__ZTV8S19076C5__8S19076C1[3]),  3,5},
  {&(_tg__ZTV8S19076C4__8S19076C5__8S19076C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19076C1[];
extern  VTBL_ENTRY _ZTV8S19076C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19076C1[];
Class_Descriptor cd_S19076C1 = {  "S19076C1", // class name
  bases_S19076C1, 12,
  &(vtc_S19076C1[0]), // expected_vtbl_contents
  &(vtt_S19076C1[0]), // expected_vtt_contents
  ABISELECT(368,268), // object size
  NSPAIRA(_ZTI8S19076C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19076C1),88, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19076C1),31, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9312C2  {
  ::S2213C20_nt s9312c2f0;
  int s9312c2f1[2];
  char s9312c2f2;
  virtual  ~S9312C2(); // _ZN7S9312C2D1Ev
  virtual void  v3(); // _ZN7S9312C22v3Ev
  virtual void  v4(); // _ZN7S9312C22v4Ev
  virtual void  v5(); // _ZN7S9312C22v5Ev
  S9312C2(); // tgen
};
//SIG(-1 S9312C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9312C2 ::~S9312C2(){ note_dtor("S9312C2", this);}
void  S9312C2 ::v3(){vfunc_called(this, "_ZN7S9312C22v3Ev");}
void  S9312C2 ::v4(){vfunc_called(this, "_ZN7S9312C22v4Ev");}
void  S9312C2 ::v5(){vfunc_called(this, "_ZN7S9312C22v5Ev");}
S9312C2 ::S9312C2(){ note_ctor("S9312C2", this);} // tgen

static void Test_S9312C2()
{
  extern Class_Descriptor cd_S9312C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9312C2, buf);
    S9312C2 *dp, &lv = *(dp=new (buf) S9312C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9312C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9312C2)");
    check_field_offset(lv, s9312c2f0, ABISELECT(8,4), "S9312C2.s9312c2f0");
    check_field_offset(lv, s9312c2f1, ABISELECT(24,16), "S9312C2.s9312c2f1");
    check_field_offset(lv, s9312c2f2, ABISELECT(32,24), "S9312C2.s9312c2f2");
    test_class_info(&lv, &cd_S9312C2);
    dp->~S9312C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9312C2(Test_S9312C2, "S9312C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9312C2C1Ev();
extern void _ZN7S9312C2D1Ev();
Name_Map name_map_S9312C2[] = {
  NSPAIR(_ZN7S9312C2C1Ev),
  NSPAIR(_ZN7S9312C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9312C2[];
extern void _ZN7S9312C2D1Ev();
extern void _ZN7S9312C2D0Ev();
extern void _ZN7S9312C22v3Ev();
extern void _ZN7S9312C22v4Ev();
extern void _ZN7S9312C22v5Ev();
static  VTBL_ENTRY vtc_S9312C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9312C2[0]),
  (VTBL_ENTRY)&_ZN7S9312C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9312C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9312C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9312C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9312C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9312C2[];
extern  VTBL_ENTRY _ZTV7S9312C2[];
Class_Descriptor cd_S9312C2 = {  "S9312C2", // class name
  0,0,//no base classes
  &(vtc_S9312C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9312C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9312C2),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  S9312C5_nt  {
  void *s9312c5f0;
  int s9312c5f1;
  void  mf9312c5(); // _ZN10S9312C5_nt8mf9312c5Ev
  virtual  ~S9312C5_nt(); // _ZN10S9312C5_ntD1Ev
  S9312C5_nt(); // tgen
};
//SIG(-1 S9312C5_nt) C1{ vd m Fp Fi}


void  S9312C5_nt ::mf9312c5(){}
 S9312C5_nt ::~S9312C5_nt(){ note_dtor("S9312C5_nt", this);}
S9312C5_nt ::S9312C5_nt(){ note_ctor("S9312C5_nt", this);} // tgen

//skip512 S9312C5_nt

#else // __cplusplus

extern void _ZN10S9312C5_ntC1Ev();
extern void _ZN10S9312C5_ntD1Ev();
Name_Map name_map_S9312C5_nt[] = {
  NSPAIR(_ZN10S9312C5_ntC1Ev),
  NSPAIR(_ZN10S9312C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9312C5_nt[];
extern void _ZN10S9312C5_ntD1Ev();
extern void _ZN10S9312C5_ntD0Ev();
static  VTBL_ENTRY vtc_S9312C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9312C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S9312C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9312C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S9312C5_nt[];
VTBL_ENTRY *P__ZTI10S9312C5_nt = _ZTI10S9312C5_nt; 
extern  VTBL_ENTRY _ZTV10S9312C5_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9312C1  : S9312C2 {
  ::S9312C5_nt s9312c1f0;
  ::S2367C19 s9312c1f1;
  void *s9312c1f2[2];
  ::S5228C6_nt s9312c1f3;
  void *s9312c1f4[2];
  ::S2367C7_nt s9312c1f5;
  ::S3164C31_nt s9312c1f6;
  ::S5228C8 s9312c1f7;
  ::S2213C20_nt s9312c1f8;
  virtual  ~S9312C1(); // _ZN7S9312C1D1Ev
  virtual void  v1(); // _ZN7S9312C12v1Ev
  virtual void  v2(); // _ZN7S9312C12v2Ev
  S9312C1(); // tgen
};
//SIG(1 S9312C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FC5{ vd m Fp Fi} FC6{ m Fp} Fp[2] FC7{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp} Fp[2] FC8{ m FC9{ FL[4]}} FC10{ m} FC11{ vd m FC12{ m FC13{ vd m FL Fc} FC13} Fi[4] Fp FC14{ BC15{ vd m} vd FC12 Fc[10]}} FC3}


 S9312C1 ::~S9312C1(){ note_dtor("S9312C1", this);}
void  S9312C1 ::v1(){vfunc_called(this, "_ZN7S9312C12v1Ev");}
void  S9312C1 ::v2(){vfunc_called(this, "_ZN7S9312C12v2Ev");}
S9312C1 ::S9312C1(){ note_ctor("S9312C1", this);} // tgen

static void Test_S9312C1()
{
  extern Class_Descriptor cd_S9312C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,56)];
    init_test(&cd_S9312C1, buf);
    S9312C1 *dp, &lv = *(dp=new (buf) S9312C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,220), "sizeof(S9312C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9312C1)");
    check_base_class_offset(lv, (S9312C2*), 0, "S9312C1");
    check_field_offset(lv, s9312c1f0, ABISELECT(40,28), "S9312C1.s9312c1f0");
    check_field_offset(lv, s9312c1f1, ABISELECT(64,40), "S9312C1.s9312c1f1");
    check_field_offset(lv, s9312c1f2, ABISELECT(72,44), "S9312C1.s9312c1f2");
    check_field_offset(lv, s9312c1f3, ABISELECT(88,52), "S9312C1.s9312c1f3");
    check_field_offset(lv, s9312c1f4, ABISELECT(104,60), "S9312C1.s9312c1f4");
    check_field_offset(lv, s9312c1f5, ABISELECT(120,68), "S9312C1.s9312c1f5");
    check_field_offset(lv, s9312c1f6, ABISELECT(152,100), "S9312C1.s9312c1f6");
    check_field_offset(lv, s9312c1f7, ABISELECT(160,104), "S9312C1.s9312c1f7");
    check_field_offset(lv, s9312c1f8, ABISELECT(312,208), "S9312C1.s9312c1f8");
    test_class_info(&lv, &cd_S9312C1);
    dp->~S9312C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9312C1(Test_S9312C1, "S9312C1", ABISELECT(328,220));

#else // __cplusplus

extern void _ZN7S9312C1C1Ev();
extern void _ZN7S9312C1D1Ev();
Name_Map name_map_S9312C1[] = {
  NSPAIR(_ZN7S9312C1C1Ev),
  NSPAIR(_ZN7S9312C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9312C2;
extern VTBL_ENTRY _ZTI7S9312C2[];
extern  VTBL_ENTRY _ZTV7S9312C2[];
static Base_Class bases_S9312C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9312C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9312C1[];
extern void _ZN7S9312C1D1Ev();
extern void _ZN7S9312C1D0Ev();
extern void _ZN7S9312C22v3Ev();
extern void _ZN7S9312C22v4Ev();
extern void _ZN7S9312C22v5Ev();
extern void _ZN7S9312C12v1Ev();
extern void _ZN7S9312C12v2Ev();
static  VTBL_ENTRY vtc_S9312C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9312C1[0]),
  (VTBL_ENTRY)&_ZN7S9312C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9312C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9312C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9312C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9312C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9312C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9312C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9312C1[];
extern  VTBL_ENTRY _ZTV7S9312C1[];
Class_Descriptor cd_S9312C1 = {  "S9312C1", // class name
  bases_S9312C1, 1,
  &(vtc_S9312C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(328,220), // object size
  NSPAIRA(_ZTI7S9312C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9312C1),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  S9311C2  {
  ::S2213C20_nt s9311c2f0;
  int s9311c2f1[2];
  char s9311c2f2;
  virtual  ~S9311C2(); // _ZN7S9311C2D1Ev
  virtual void  v3(); // _ZN7S9311C22v3Ev
  virtual void  v4(); // _ZN7S9311C22v4Ev
  virtual void  v5(); // _ZN7S9311C22v5Ev
  S9311C2(); // tgen
};
//SIG(-1 S9311C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9311C2 ::~S9311C2(){ note_dtor("S9311C2", this);}
void  S9311C2 ::v3(){vfunc_called(this, "_ZN7S9311C22v3Ev");}
void  S9311C2 ::v4(){vfunc_called(this, "_ZN7S9311C22v4Ev");}
void  S9311C2 ::v5(){vfunc_called(this, "_ZN7S9311C22v5Ev");}
S9311C2 ::S9311C2(){ note_ctor("S9311C2", this);} // tgen

static void Test_S9311C2()
{
  extern Class_Descriptor cd_S9311C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9311C2, buf);
    S9311C2 *dp, &lv = *(dp=new (buf) S9311C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9311C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9311C2)");
    check_field_offset(lv, s9311c2f0, ABISELECT(8,4), "S9311C2.s9311c2f0");
    check_field_offset(lv, s9311c2f1, ABISELECT(24,16), "S9311C2.s9311c2f1");
    check_field_offset(lv, s9311c2f2, ABISELECT(32,24), "S9311C2.s9311c2f2");
    test_class_info(&lv, &cd_S9311C2);
    dp->~S9311C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9311C2(Test_S9311C2, "S9311C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9311C2C1Ev();
extern void _ZN7S9311C2D1Ev();
Name_Map name_map_S9311C2[] = {
  NSPAIR(_ZN7S9311C2C1Ev),
  NSPAIR(_ZN7S9311C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9311C2[];
extern void _ZN7S9311C2D1Ev();
extern void _ZN7S9311C2D0Ev();
extern void _ZN7S9311C22v3Ev();
extern void _ZN7S9311C22v4Ev();
extern void _ZN7S9311C22v5Ev();
static  VTBL_ENTRY vtc_S9311C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9311C2[0]),
  (VTBL_ENTRY)&_ZN7S9311C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9311C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9311C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9311C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9311C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9311C2[];
extern  VTBL_ENTRY _ZTV7S9311C2[];
Class_Descriptor cd_S9311C2 = {  "S9311C2", // class name
  0,0,//no base classes
  &(vtc_S9311C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9311C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9311C2),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  S9311C1  : S9311C2 {
  ::S9312C5_nt s9311c1f0;
  ::S2367C19 s9311c1f1;
  void *s9311c1f2[2];
  ::S5228C6_nt s9311c1f3;
  void *s9311c1f4[2];
  ::S2342C13_nt s9311c1f5;
  ::S3164C31_nt s9311c1f6;
  ::S5228C8 s9311c1f7;
  ::S2213C20_nt s9311c1f8;
  virtual  ~S9311C1(); // _ZN7S9311C1D1Ev
  virtual void  v1(); // _ZN7S9311C12v1Ev
  virtual void  v2(); // _ZN7S9311C12v2Ev
  S9311C1(); // tgen
};
//SIG(1 S9311C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FC5{ vd m Fp Fi} FC6{ m Fp} Fp[2] FC7{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp} Fp[2] FC8{ m FC9{ Fl[4]}} FC10{ m} FC11{ vd m FC12{ m FC13{ vd m FL Fc} FC13} Fi[4] Fp FC14{ BC15{ vd m} vd FC12 Fc[10]}} FC3}


 S9311C1 ::~S9311C1(){ note_dtor("S9311C1", this);}
void  S9311C1 ::v1(){vfunc_called(this, "_ZN7S9311C12v1Ev");}
void  S9311C1 ::v2(){vfunc_called(this, "_ZN7S9311C12v2Ev");}
S9311C1 ::S9311C1(){ note_ctor("S9311C1", this);} // tgen

static void Test_S9311C1()
{
  extern Class_Descriptor cd_S9311C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,52)];
    init_test(&cd_S9311C1, buf);
    S9311C1 *dp, &lv = *(dp=new (buf) S9311C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,204), "sizeof(S9311C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9311C1)");
    check_base_class_offset(lv, (S9311C2*), 0, "S9311C1");
    check_field_offset(lv, s9311c1f0, ABISELECT(40,28), "S9311C1.s9311c1f0");
    check_field_offset(lv, s9311c1f1, ABISELECT(64,40), "S9311C1.s9311c1f1");
    check_field_offset(lv, s9311c1f2, ABISELECT(72,44), "S9311C1.s9311c1f2");
    check_field_offset(lv, s9311c1f3, ABISELECT(88,52), "S9311C1.s9311c1f3");
    check_field_offset(lv, s9311c1f4, ABISELECT(104,60), "S9311C1.s9311c1f4");
    check_field_offset(lv, s9311c1f5, ABISELECT(120,68), "S9311C1.s9311c1f5");
    check_field_offset(lv, s9311c1f6, ABISELECT(152,84), "S9311C1.s9311c1f6");
    check_field_offset(lv, s9311c1f7, ABISELECT(160,88), "S9311C1.s9311c1f7");
    check_field_offset(lv, s9311c1f8, ABISELECT(312,192), "S9311C1.s9311c1f8");
    test_class_info(&lv, &cd_S9311C1);
    dp->~S9311C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9311C1(Test_S9311C1, "S9311C1", ABISELECT(328,204));

#else // __cplusplus

extern void _ZN7S9311C1C1Ev();
extern void _ZN7S9311C1D1Ev();
Name_Map name_map_S9311C1[] = {
  NSPAIR(_ZN7S9311C1C1Ev),
  NSPAIR(_ZN7S9311C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9311C2;
extern VTBL_ENTRY _ZTI7S9311C2[];
extern  VTBL_ENTRY _ZTV7S9311C2[];
static Base_Class bases_S9311C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9311C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9311C1[];
extern void _ZN7S9311C1D1Ev();
extern void _ZN7S9311C1D0Ev();
extern void _ZN7S9311C22v3Ev();
extern void _ZN7S9311C22v4Ev();
extern void _ZN7S9311C22v5Ev();
extern void _ZN7S9311C12v1Ev();
extern void _ZN7S9311C12v2Ev();
static  VTBL_ENTRY vtc_S9311C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9311C1[0]),
  (VTBL_ENTRY)&_ZN7S9311C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9311C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9311C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9311C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9311C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9311C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9311C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9311C1[];
extern  VTBL_ENTRY _ZTV7S9311C1[];
Class_Descriptor cd_S9311C1 = {  "S9311C1", // class name
  bases_S9311C1, 1,
  &(vtc_S9311C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(328,204), // object size
  NSPAIRA(_ZTI7S9311C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9311C1),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  S1362C4  {
  void *s1362c4f0[7];
  __tsi64 s1362c4f1;
  short s1362c4f2;
  virtual void  v3(); // _ZN7S1362C42v3Ev
  ~S1362C4(); // tgen
  S1362C4(); // tgen
};
//SIG(-1 S1362C4) C1{ v1 Fp[7] FL Fs}


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

static void Test_S1362C4()
{
  extern Class_Descriptor cd_S1362C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S1362C4, buf);
    S1362C4 *dp, &lv = *(dp=new (buf) S1362C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S1362C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1362C4)");
    check_field_offset(lv, s1362c4f0, ABISELECT(8,4), "S1362C4.s1362c4f0");
    check_field_offset(lv, s1362c4f1, ABISELECT(64,32), "S1362C4.s1362c4f1");
    check_field_offset(lv, s1362c4f2, ABISELECT(72,40), "S1362C4.s1362c4f2");
    test_class_info(&lv, &cd_S1362C4);
    dp->~S1362C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C4(Test_S1362C4, "S1362C4", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S1362C4C1Ev();
extern void _ZN7S1362C4D1Ev();
Name_Map name_map_S1362C4[] = {
  NSPAIR(_ZN7S1362C4C1Ev),
  NSPAIR(_ZN7S1362C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1362C4[];
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY vtc_S1362C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1362C4[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
Class_Descriptor cd_S1362C4 = {  "S1362C4", // class name
  0,0,//no base classes
  &(vtc_S1362C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S1362C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1362C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1362C3  : S1362C4 {
  virtual void  v4(); // _ZN7S1362C32v4Ev
  ~S1362C3(); // tgen
  S1362C3(); // tgen
};
//SIG(-1 S1362C3) C1{ BC2{ v2 Fp[7] FL Fs} v1}


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

static void Test_S1362C3()
{
  extern Class_Descriptor cd_S1362C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S1362C3, buf);
    S1362C3 *dp, &lv = *(dp=new (buf) S1362C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S1362C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1362C3)");
    check_base_class_offset(lv, (S1362C4*), 0, "S1362C3");
    test_class_info(&lv, &cd_S1362C3);
    dp->~S1362C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C3(Test_S1362C3, "S1362C3", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S1362C3C1Ev();
extern void _ZN7S1362C3D1Ev();
Name_Map name_map_S1362C3[] = {
  NSPAIR(_ZN7S1362C3C1Ev),
  NSPAIR(_ZN7S1362C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
static Base_Class bases_S1362C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1362C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1362C3[];
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
static  VTBL_ENTRY vtc_S1362C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1362C3[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S1362C3[];
extern  VTBL_ENTRY _ZTV7S1362C3[];
Class_Descriptor cd_S1362C3 = {  "S1362C3", // class name
  bases_S1362C3, 1,
  &(vtc_S1362C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S1362C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1362C3),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  S1362C2  : S1362C3 {
  int s1362c2f0;
  virtual void  v5(); // _ZN7S1362C22v5Ev
  virtual void  v6(); // _ZN7S1362C22v6Ev
  ~S1362C2(); // tgen
  S1362C2(); // tgen
};
//SIG(-1 S1362C2) C1{ BC2{ BC3{ v3 Fp[7] FL Fs} v4} v1 v2 Fi}


void  S1362C2 ::v5(){vfunc_called(this, "_ZN7S1362C22v5Ev");}
void  S1362C2 ::v6(){vfunc_called(this, "_ZN7S1362C22v6Ev");}
S1362C2 ::~S1362C2(){ note_dtor("S1362C2", this);} // tgen
S1362C2 ::S1362C2(){ note_ctor("S1362C2", this);} // tgen

static void Test_S1362C2()
{
  extern Class_Descriptor cd_S1362C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S1362C2, buf);
    S1362C2 *dp, &lv = *(dp=new (buf) S1362C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S1362C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1362C2)");
    check_base_class_offset(lv, (S1362C4*)(S1362C3*), 0, "S1362C2");
    check_base_class_offset(lv, (S1362C3*), 0, "S1362C2");
    check_field_offset(lv, s1362c2f0, ABISELECT(76,44), "S1362C2.s1362c2f0");
    test_class_info(&lv, &cd_S1362C2);
    dp->~S1362C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C2(Test_S1362C2, "S1362C2", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S1362C2C1Ev();
extern void _ZN7S1362C2D1Ev();
Name_Map name_map_S1362C2[] = {
  NSPAIR(_ZN7S1362C2C1Ev),
  NSPAIR(_ZN7S1362C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C3;
extern VTBL_ENTRY _ZTI7S1362C3[];
extern  VTBL_ENTRY _ZTV7S1362C3[];
static Base_Class bases_S1362C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1362C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1362C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1362C2[];
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN7S1362C22v5Ev();
extern void _ZN7S1362C22v6Ev();
static  VTBL_ENTRY vtc_S1362C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1362C2[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S1362C2[];
extern  VTBL_ENTRY _ZTV7S1362C2[];
Class_Descriptor cd_S1362C2 = {  "S1362C2", // class name
  bases_S1362C2, 2,
  &(vtc_S1362C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S1362C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1362C2),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1362C5  {
  int s1362c5f0;
  void *s1362c5f1;
  virtual  ~S1362C5(); // _ZN7S1362C5D1Ev
  virtual void  v7(); // _ZN7S1362C52v7Ev
  virtual void  v8(); // _ZN7S1362C52v8Ev
  virtual void  v9(); // _ZN7S1362C52v9Ev
  virtual void  v10(); // _ZN7S1362C53v10Ev
  virtual void  v11(); // _ZN7S1362C53v11Ev
  S1362C5(); // tgen
};
//SIG(-1 S1362C5) C1{ vd v1 v2 v3 v4 v5 Fi Fp}


 S1362C5 ::~S1362C5(){ note_dtor("S1362C5", this);}
void  S1362C5 ::v7(){vfunc_called(this, "_ZN7S1362C52v7Ev");}
void  S1362C5 ::v8(){vfunc_called(this, "_ZN7S1362C52v8Ev");}
void  S1362C5 ::v9(){vfunc_called(this, "_ZN7S1362C52v9Ev");}
void  S1362C5 ::v10(){vfunc_called(this, "_ZN7S1362C53v10Ev");}
void  S1362C5 ::v11(){vfunc_called(this, "_ZN7S1362C53v11Ev");}
S1362C5 ::S1362C5(){ note_ctor("S1362C5", this);} // tgen

static void Test_S1362C5()
{
  extern Class_Descriptor cd_S1362C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1362C5, buf);
    S1362C5 *dp, &lv = *(dp=new (buf) S1362C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1362C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1362C5)");
    check_field_offset(lv, s1362c5f0, ABISELECT(8,4), "S1362C5.s1362c5f0");
    check_field_offset(lv, s1362c5f1, ABISELECT(16,8), "S1362C5.s1362c5f1");
    test_class_info(&lv, &cd_S1362C5);
    dp->~S1362C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C5(Test_S1362C5, "S1362C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1362C5C1Ev();
extern void _ZN7S1362C5D1Ev();
Name_Map name_map_S1362C5[] = {
  NSPAIR(_ZN7S1362C5C1Ev),
  NSPAIR(_ZN7S1362C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1362C5[];
extern void _ZN7S1362C5D1Ev();
extern void _ZN7S1362C5D0Ev();
extern void _ZN7S1362C52v7Ev();
extern void _ZN7S1362C52v8Ev();
extern void _ZN7S1362C52v9Ev();
extern void _ZN7S1362C53v10Ev();
extern void _ZN7S1362C53v11Ev();
static  VTBL_ENTRY vtc_S1362C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1362C5[0]),
  (VTBL_ENTRY)&_ZN7S1362C5D1Ev,
  (VTBL_ENTRY)&_ZN7S1362C5D0Ev,
  (VTBL_ENTRY)&_ZN7S1362C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1362C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1362C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1362C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1362C53v11Ev,
};
extern VTBL_ENTRY _ZTI7S1362C5[];
extern  VTBL_ENTRY _ZTV7S1362C5[];
Class_Descriptor cd_S1362C5 = {  "S1362C5", // class name
  0,0,//no base classes
  &(vtc_S1362C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1362C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1362C5),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  S1362C7  : S3164C31_nt , S1362C4 {
  int s1362c7f0;
  virtual void  v12(); // _ZN7S1362C73v12Ev
  ~S1362C7(); // tgen
  S1362C7(); // tgen
};
//SIG(-1 S1362C7) C1{ BC2{ m} BC3{ v2 Fp[7] FL Fs} v1 Fi}


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

static void Test_S1362C7()
{
  extern Class_Descriptor cd_S1362C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S1362C7, buf);
    S1362C7 *dp, &lv = *(dp=new (buf) S1362C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S1362C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1362C7)");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S1362C7");
    check_base_class_offset(lv, (S1362C4*), 0, "S1362C7");
    check_field_offset(lv, s1362c7f0, ABISELECT(76,44), "S1362C7.s1362c7f0");
    test_class_info(&lv, &cd_S1362C7);
    dp->~S1362C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C7(Test_S1362C7, "S1362C7", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S1362C7C1Ev();
extern void _ZN7S1362C7D1Ev();
Name_Map name_map_S1362C7[] = {
  NSPAIR(_ZN7S1362C7C1Ev),
  NSPAIR(_ZN7S1362C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
static Base_Class bases_S1362C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1362C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1362C7[];
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C73v12Ev();
static  VTBL_ENTRY vtc_S1362C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1362C7[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C73v12Ev,
};
extern VTBL_ENTRY _ZTI7S1362C7[];
extern  VTBL_ENTRY _ZTV7S1362C7[];
Class_Descriptor cd_S1362C7 = {  "S1362C7", // class name
  bases_S1362C7, 2,
  &(vtc_S1362C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S1362C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1362C7),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  S1362C9  : S1362C4 {
  ::S1362C4 s1362c9f0;
  virtual void  v13(); // _ZN7S1362C93v13Ev
  virtual void  v14(); // _ZN7S1362C93v14Ev
  ~S1362C9(); // tgen
  S1362C9(); // tgen
};
//SIG(-1 S1362C9) C1{ BC2{ v3 Fp[7] FL Fs} v1 v2 FC2}


void  S1362C9 ::v13(){vfunc_called(this, "_ZN7S1362C93v13Ev");}
void  S1362C9 ::v14(){vfunc_called(this, "_ZN7S1362C93v14Ev");}
S1362C9 ::~S1362C9(){ note_dtor("S1362C9", this);} // tgen
S1362C9 ::S1362C9(){ note_ctor("S1362C9", this);} // tgen

static void Test_S1362C9()
{
  extern Class_Descriptor cd_S1362C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,23)];
    init_test(&cd_S1362C9, buf);
    S1362C9 *dp, &lv = *(dp=new (buf) S1362C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S1362C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1362C9)");
    check_base_class_offset(lv, (S1362C4*), 0, "S1362C9");
    check_field_offset(lv, s1362c9f0, ABISELECT(80,44), "S1362C9.s1362c9f0");
    test_class_info(&lv, &cd_S1362C9);
    dp->~S1362C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C9(Test_S1362C9, "S1362C9", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN7S1362C9C1Ev();
extern void _ZN7S1362C9D1Ev();
Name_Map name_map_S1362C9[] = {
  NSPAIR(_ZN7S1362C9C1Ev),
  NSPAIR(_ZN7S1362C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
static Base_Class bases_S1362C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1362C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1362C9[];
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
static  VTBL_ENTRY vtc_S1362C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1362C9[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
};
extern VTBL_ENTRY _ZTI7S1362C9[];
extern  VTBL_ENTRY _ZTV7S1362C9[];
Class_Descriptor cd_S1362C9 = {  "S1362C9", // class name
  bases_S1362C9, 1,
  &(vtc_S1362C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI7S1362C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1362C9),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  S1362C10  : virtual S1362C9 , S3164C31_nt , virtual S1362C4 , S1362C3 {
  virtual void  v15(); // _ZN8S1362C103v15Ev
  virtual void  v16(); // _ZN8S1362C103v16Ev
  virtual void  v17(); // _ZN8S1362C103v17Ev
  ~S1362C10(); // tgen
  S1362C10(); // tgen
};
//SIG(-1 S1362C10) C1{ VBC2{ BC3{ v4 Fp[7] FL Fs} v5 v6 FC3} BC4{ m} VBC3 BC5{ BC3 v7} v1 v2 v3}


void  S1362C10 ::v15(){vfunc_called(this, "_ZN8S1362C103v15Ev");}
void  S1362C10 ::v16(){vfunc_called(this, "_ZN8S1362C103v16Ev");}
void  S1362C10 ::v17(){vfunc_called(this, "_ZN8S1362C103v17Ev");}
S1362C10 ::~S1362C10(){ note_dtor("S1362C10", this);} // tgen
S1362C10 ::S1362C10(){ note_ctor("S1362C10", this);} // tgen

static void Test_S1362C10()
{
  extern Class_Descriptor cd_S1362C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,45)];
    init_test(&cd_S1362C10, buf);
    S1362C10 *dp, &lv = *(dp=new (buf) S1362C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,176), "sizeof(S1362C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1362C10)");
    check_base_class_offset(lv, (S1362C4*)(S1362C9*), ABISELECT(80,44), "S1362C10");
    check_base_class_offset(lv, (S1362C9*), ABISELECT(80,44), "S1362C10");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S1362C10");
    /*is_ambiguous_... S1362C10::S1362C4 */ AMB_check_base_class_offset(lv, (S1362C4*), ABISELECT(240,132), "S1362C10");
    check_base_class_offset(lv, (S1362C4*)(S1362C3*), 0, "S1362C10");
    check_base_class_offset(lv, (S1362C3*), 0, "S1362C10");
    test_class_info(&lv, &cd_S1362C10);
    dp->~S1362C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C10(Test_S1362C10, "S1362C10", ABISELECT(320,176));

#else // __cplusplus

extern void _ZN8S1362C10C1Ev();
extern void _ZN8S1362C10D1Ev();
Name_Map name_map_S1362C10[] = {
  NSPAIR(_ZN8S1362C10C1Ev),
  NSPAIR(_ZN8S1362C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C9;
extern VTBL_ENTRY _ZTI7S1362C9[];
extern  VTBL_ENTRY _ZTV7S1362C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C3;
extern VTBL_ENTRY _ZTI7S1362C3[];
extern  VTBL_ENTRY _ZTV7S1362C3[];
static Base_Class bases_S1362C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1362C4,    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
    1, //immediately_derived
  0, 0},
  {&cd_S1362C9,    ABISELECT(80,44), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1362C4,    ABISELECT(240,132), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1362C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1362C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S1362C10[];
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN8S1362C103v15Ev();
extern void _ZN8S1362C103v16Ev();
extern void _ZN8S1362C103v17Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY vtc_S1362C10[] = {
  ABISELECT(240,132),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v15Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v16Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v17Ev,
  0,
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
  0,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S1362C10[];
static  VTT_ENTRY vtt_S1362C10[] = {
  {&(_ZTV8S1362C10[4]),  4,21},
  {&(_ZTV8S1362C10[14]),  14,21},
  {&(_ZTV8S1362C10[20]),  20,21},
};
extern VTBL_ENTRY _ZTI8S1362C10[];
extern  VTBL_ENTRY _ZTV8S1362C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1362C10[];
Class_Descriptor cd_S1362C10 = {  "S1362C10", // class name
  bases_S1362C10, 6,
  &(vtc_S1362C10[0]), // expected_vtbl_contents
  &(vtt_S1362C10[0]), // expected_vtt_contents
  ABISELECT(320,176), // object size
  NSPAIRA(_ZTI8S1362C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1362C10),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1362C10),3, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1362C6  : virtual S1362C7 , virtual S1362C9 , virtual S1362C10 , virtual S1362C2 , S3164C31_nt {
  long double s1362c6f0[2];
  virtual void  v18(); // _ZN7S1362C63v18Ev
  virtual void  v19(); // _ZN7S1362C63v19Ev
  ~S1362C6(); // tgen
  S1362C6(); // tgen
};
//SIG(-1 S1362C6) C1{ VBC2{ BC3{ m} BC4{ v3 Fp[7] FL Fs} v4 Fi} VBC5{ BC4 v5 v6 FC4} VBC6{ VBC5 BC3 VBC4 BC7{ BC4 v7} v8 v9 v10} VBC8{ BC7 v11 v12 Fi} BC3 v1 v2 FD[2]}


void  S1362C6 ::v18(){vfunc_called(this, "_ZN7S1362C63v18Ev");}
void  S1362C6 ::v19(){vfunc_called(this, "_ZN7S1362C63v19Ev");}
S1362C6 ::~S1362C6(){ note_dtor("S1362C6", this);} // tgen
S1362C6 ::S1362C6(){ note_ctor("S1362C6", this);} // tgen

static void Test_S1362C6()
{
  extern Class_Descriptor cd_S1362C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(34,76)];
    init_test(&cd_S1362C6, buf);
    S1362C6 *dp, &lv = *(dp=new (buf) S1362C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,300), "sizeof(S1362C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1362C6)");
    check_base_class_offset(lv, (S3164C31_nt*)(S1362C7*), ABISELECT(48,28), "S1362C6");
    check_base_class_offset(lv, (S1362C4*)(S1362C7*), ABISELECT(48,28), "S1362C6");
    check_base_class_offset(lv, (S1362C7*), ABISELECT(48,28), "S1362C6");
    check_base_class_offset(lv, (S1362C4*)(S1362C9*), ABISELECT(128,76), "S1362C6");
    check_base_class_offset(lv, (S1362C9*), ABISELECT(128,76), "S1362C6");
    check_base_class_offset(lv, (S1362C9*)(S1362C10*), ABISELECT(128,76), "S1362C6");
    check_base_class_offset(lv, (S3164C31_nt*)(S1362C10*), ABISELECT(288,164), "S1362C6");
    /*is_ambiguous_... S1362C10::S1362C4 */ AMB_check_base_class_offset(lv, (S1362C4*)(S1362C10*), ABISELECT(368,208), "S1362C6");
    check_base_class_offset(lv, (S1362C4*)(S1362C3*)(S1362C10*), ABISELECT(288,164), "S1362C6");
    check_base_class_offset(lv, (S1362C3*)(S1362C10*), ABISELECT(288,164), "S1362C6");
    check_base_class_offset(lv, (S1362C10*), ABISELECT(288,164), "S1362C6");
    check_base_class_offset(lv, (S1362C4*)(S1362C3*)(S1362C2*), ABISELECT(448,252), "S1362C6");
    check_base_class_offset(lv, (S1362C3*)(S1362C2*), ABISELECT(448,252), "S1362C6");
    check_base_class_offset(lv, (S1362C2*), ABISELECT(448,252), "S1362C6");
    /*is_ambiguous_... S1362C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S1362C6");
    check_field_offset(lv, s1362c6f0, ABISELECT(16,4), "S1362C6.s1362c6f0");
    test_class_info(&lv, &cd_S1362C6);
    dp->~S1362C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C6(Test_S1362C6, "S1362C6", ABISELECT(528,300));

#else // __cplusplus

extern void _ZN7S1362C6C1Ev();
extern void _ZN7S1362C6D1Ev();
Name_Map name_map_S1362C6[] = {
  NSPAIR(_ZN7S1362C6C1Ev),
  NSPAIR(_ZN7S1362C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C7;
extern VTBL_ENTRY _ZTI7S1362C7[];
extern  VTBL_ENTRY _ZTV7S1362C7[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C9;
extern VTBL_ENTRY _ZTI7S1362C9[];
extern  VTBL_ENTRY _ZTV7S1362C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C3;
extern VTBL_ENTRY _ZTI7S1362C3[];
extern  VTBL_ENTRY _ZTV7S1362C3[];
extern Class_Descriptor cd_S1362C10;
extern VTBL_ENTRY _ZTI8S1362C10[];
extern  VTBL_ENTRY _ZTV8S1362C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1362C10[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C3;
extern VTBL_ENTRY _ZTI7S1362C3[];
extern  VTBL_ENTRY _ZTV7S1362C3[];
extern Class_Descriptor cd_S1362C2;
extern VTBL_ENTRY _ZTI7S1362C2[];
extern  VTBL_ENTRY _ZTV7S1362C2[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S1362C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_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
    2, //immediately_derived
  0, 0},
  {&cd_S1362C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S1362C7,    ABISELECT(48,28), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1362C4,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1362C9,    ABISELECT(128,76), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_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
    9, //immediately_derived
  0, 0},
  {&cd_S1362C4,    ABISELECT(368,208), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S1362C4,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1362C3,    ABISELECT(288,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1362C10,    ABISELECT(288,164), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1362C4,    ABISELECT(448,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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1362C3,    ABISELECT(448,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1362C2,    ABISELECT(448,252), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1362C6[];
extern void _ZN7S1362C63v18Ev();
extern void _ZN7S1362C63v19Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C73v12Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN8S1362C103v15Ev();
extern void _ZN8S1362C103v16Ev();
extern void _ZN8S1362C103v17Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN7S1362C22v5Ev();
extern void _ZN7S1362C22v6Ev();
static  VTBL_ENTRY vtc_S1362C6[] = {
  ABISELECT(448,252),
  ABISELECT(368,208),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1362C63v19Ev,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C73v12Ev,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v15Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v16Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v17Ev,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-252),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v6Ev,
};
extern VTBL_ENTRY _ZTV7S1362C6[];
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN8S1362C103v15Ev();
extern void _ZN8S1362C103v16Ev();
extern void _ZN8S1362C103v17Ev();
static  VTBL_ENTRY _tg__ZTV8S1362C10__7S1362C6[] = {
  ABISELECT(80,44),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v15Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v16Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v17Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C9__8S1362C10__7S1362C6[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
};
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C4__A1__8S1362C10__7S1362C6[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
static  VTT_ENTRY vtt_S1362C6[] = {
  {&(_ZTV7S1362C6[7]),  7,51},
  {&(_ZTV7S1362C6[13]),  13,51},
  {&(_ZTV7S1362C6[20]),  20,51},
  {&(_ZTV7S1362C6[32]),  32,51},
  {&(_ZTV7S1362C6[40]),  40,51},
  {&(_ZTV7S1362C6[47]),  47,51},
  {&(_tg__ZTV8S1362C10__7S1362C6[4]),  4,9},
  {&(_tg__ZTV7S1362C9__8S1362C10__7S1362C6[5]),  5,8},
  {&(_tg__ZTV7S1362C4__A1__8S1362C10__7S1362C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1362C6[];
extern  VTBL_ENTRY _ZTV7S1362C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1362C6[];
Class_Descriptor cd_S1362C6 = {  "S1362C6", // class name
  bases_S1362C6, 14,
  &(vtc_S1362C6[0]), // expected_vtbl_contents
  &(vtt_S1362C6[0]), // expected_vtt_contents
  ABISELECT(528,300), // object size
  NSPAIRA(_ZTI7S1362C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1362C6),51, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1362C6),9, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1362C12  : virtual S1362C4 {
  virtual void  v20(); // _ZN8S1362C123v20Ev
  virtual void  v21(); // _ZN8S1362C123v21Ev
  ~S1362C12(); // tgen
  S1362C12(); // tgen
};
//SIG(-1 S1362C12) C1{ VBC2{ v3 Fp[7] FL Fs} v1 v2}


void  S1362C12 ::v20(){vfunc_called(this, "_ZN8S1362C123v20Ev");}
void  S1362C12 ::v21(){vfunc_called(this, "_ZN8S1362C123v21Ev");}
S1362C12 ::~S1362C12(){ note_dtor("S1362C12", this);} // tgen
S1362C12 ::S1362C12(){ note_ctor("S1362C12", this);} // tgen

static void Test_S1362C12()
{
  extern Class_Descriptor cd_S1362C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S1362C12, buf);
    S1362C12 *dp, &lv = *(dp=new (buf) S1362C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S1362C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1362C12)");
    check_base_class_offset(lv, (S1362C4*), ABISELECT(8,4), "S1362C12");
    test_class_info(&lv, &cd_S1362C12);
    dp->~S1362C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C12(Test_S1362C12, "S1362C12", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN8S1362C12C1Ev();
extern void _ZN8S1362C12D1Ev();
Name_Map name_map_S1362C12[] = {
  NSPAIR(_ZN8S1362C12C1Ev),
  NSPAIR(_ZN8S1362C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
static Base_Class bases_S1362C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1362C4,    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 _ZTI8S1362C12[];
extern void _ZN8S1362C123v20Ev();
extern void _ZN8S1362C123v21Ev();
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY vtc_S1362C12[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1362C12[0]),
  (VTBL_ENTRY)&_ZN8S1362C123v20Ev,
  (VTBL_ENTRY)&_ZN8S1362C123v21Ev,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1362C12[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S1362C12[];
static  VTT_ENTRY vtt_S1362C12[] = {
  {&(_ZTV8S1362C12[3]),  3,9},
  {&(_ZTV8S1362C12[8]),  8,9},
};
extern VTBL_ENTRY _ZTI8S1362C12[];
extern  VTBL_ENTRY _ZTV8S1362C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1362C12[];
Class_Descriptor cd_S1362C12 = {  "S1362C12", // class name
  bases_S1362C12, 1,
  &(vtc_S1362C12[0]), // expected_vtbl_contents
  &(vtt_S1362C12[0]), // expected_vtt_contents
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI8S1362C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S1362C12),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1362C12),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  S1362C11  : virtual S1362C4 , virtual S1362C12 , virtual S1362C6 , virtual S3164C31_nt {
  void *s1362c11f0;
  long double s1362c11f1;
  virtual void  v22(); // _ZN8S1362C113v22Ev
  ~S1362C11(); // tgen
  S1362C11(); // tgen
};
//SIG(-1 S1362C11) C1{ VBC2{ v2 Fp[7] FL Fs} VBC3{ VBC2 v3 v4} VBC4{ VBC5{ BC6{ m} BC2 v5 Fi} VBC7{ BC2 v6 v7 FC2} VBC8{ VBC7 BC6 VBC2 BC9{ BC2 v8} v9 v10 v11} VBC10{ BC9 v12 v13 Fi} BC6 v14 v15 FD[2]} VBC6 v1 Fp FD}


void  S1362C11 ::v22(){vfunc_called(this, "_ZN8S1362C113v22Ev");}
S1362C11 ::~S1362C11(){ note_dtor("S1362C11", this);} // tgen
S1362C11 ::S1362C11(){ note_ctor("S1362C11", this);} // tgen

static void Test_S1362C11()
{
  extern Class_Descriptor cd_S1362C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,81)];
    init_test(&cd_S1362C11, buf);
    S1362C11 *dp, &lv = *(dp=new (buf) S1362C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,320), "sizeof(S1362C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1362C11)");
    /*is_ambiguous_... S1362C11::S1362C4 */ AMB_check_base_class_offset(lv, (S1362C4*), ABISELECT(32,20), "S1362C11");
    check_base_class_offset(lv, (S1362C4*)(S1362C12*), ABISELECT(32,20), "S1362C11");
    /*is_ambiguous_... S1362C10::S1362C4 */ AMB_check_base_class_offset(lv, (S1362C4*)(S1362C10*), ABISELECT(32,20), "S1362C11");
    check_base_class_offset(lv, (S1362C12*), 0, "S1362C11");
    check_base_class_offset(lv, (S3164C31_nt*)(S1362C7*), ABISELECT(160,92), "S1362C11");
    check_base_class_offset(lv, (S1362C4*)(S1362C7*), ABISELECT(160,92), "S1362C11");
    check_base_class_offset(lv, (S1362C7*)(S1362C6*), ABISELECT(160,92), "S1362C11");
    check_base_class_offset(lv, (S1362C4*)(S1362C9*), ABISELECT(240,140), "S1362C11");
    check_base_class_offset(lv, (S1362C9*)(S1362C6*), ABISELECT(240,140), "S1362C11");
    check_base_class_offset(lv, (S1362C9*)(S1362C10*), ABISELECT(240,140), "S1362C11");
    check_base_class_offset(lv, (S3164C31_nt*)(S1362C10*), ABISELECT(400,228), "S1362C11");
    check_base_class_offset(lv, (S1362C4*)(S1362C3*)(S1362C10*), ABISELECT(400,228), "S1362C11");
    check_base_class_offset(lv, (S1362C3*)(S1362C10*), ABISELECT(400,228), "S1362C11");
    check_base_class_offset(lv, (S1362C10*)(S1362C6*), ABISELECT(400,228), "S1362C11");
    check_base_class_offset(lv, (S1362C4*)(S1362C3*)(S1362C2*), ABISELECT(480,272), "S1362C11");
    check_base_class_offset(lv, (S1362C3*)(S1362C2*), ABISELECT(480,272), "S1362C11");
    check_base_class_offset(lv, (S1362C2*)(S1362C6*), ABISELECT(480,272), "S1362C11");
    /*is_ambiguous_... S1362C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S1362C6*), ABISELECT(112,64), "S1362C11");
    check_base_class_offset(lv, (S1362C6*), ABISELECT(112,64), "S1362C11");
    /*is_ambiguous_... S1362C11::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S1362C11");
    check_field_offset(lv, s1362c11f0, ABISELECT(8,4), "S1362C11.s1362c11f0");
    check_field_offset(lv, s1362c11f1, ABISELECT(16,8), "S1362C11.s1362c11f1");
    test_class_info(&lv, &cd_S1362C11);
    dp->~S1362C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C11(Test_S1362C11, "S1362C11", ABISELECT(560,320));

#else // __cplusplus

extern void _ZN8S1362C11C1Ev();
extern void _ZN8S1362C11D1Ev();
Name_Map name_map_S1362C11[] = {
  NSPAIR(_ZN8S1362C11C1Ev),
  NSPAIR(_ZN8S1362C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C12;
extern VTBL_ENTRY _ZTI8S1362C12[];
extern  VTBL_ENTRY _ZTV8S1362C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1362C12[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C7;
extern VTBL_ENTRY _ZTI7S1362C7[];
extern  VTBL_ENTRY _ZTV7S1362C7[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C9;
extern VTBL_ENTRY _ZTI7S1362C9[];
extern  VTBL_ENTRY _ZTV7S1362C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C3;
extern VTBL_ENTRY _ZTI7S1362C3[];
extern  VTBL_ENTRY _ZTV7S1362C3[];
extern Class_Descriptor cd_S1362C10;
extern VTBL_ENTRY _ZTI8S1362C10[];
extern  VTBL_ENTRY _ZTV8S1362C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1362C10[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C3;
extern VTBL_ENTRY _ZTI7S1362C3[];
extern  VTBL_ENTRY _ZTV7S1362C3[];
extern Class_Descriptor cd_S1362C2;
extern VTBL_ENTRY _ZTI7S1362C2[];
extern  VTBL_ENTRY _ZTV7S1362C2[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C6;
extern VTBL_ENTRY _ZTI7S1362C6[];
extern  VTBL_ENTRY _ZTV7S1362C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1362C6[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S1362C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1362C4,    ABISELECT(32,20), //bcp->offset
    15, //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_S1362C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_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
    4, //immediately_derived
  0, 0},
  {&cd_S1362C4,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1362C7,    ABISELECT(160,92), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S1362C4,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1362C9,    ABISELECT(240,140), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1362C4,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1362C3,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1362C10,    ABISELECT(400,228), //bcp->offset
    44, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S1362C4,    ABISELECT(480,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1362C3,    ABISELECT(480,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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1362C2,    ABISELECT(480,272), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_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
    15, //immediately_derived
  0, 0},
  {&cd_S1362C6,    ABISELECT(112,64), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S1362C11[];
extern void _ZN8S1362C123v20Ev();
extern void _ZN8S1362C123v21Ev();
extern void _ZN8S1362C113v22Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C63v18Ev();
extern void _ZN7S1362C63v19Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C73v12Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN8S1362C103v15Ev();
extern void _ZN8S1362C103v16Ev();
extern void _ZN8S1362C103v17Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN7S1362C22v5Ev();
extern void _ZN7S1362C22v6Ev();
static  VTBL_ENTRY vtc_S1362C11[] = {
  0,
  ABISELECT(480,272),
  ABISELECT(400,228),
  ABISELECT(240,140),
  ABISELECT(160,92),
  ABISELECT(112,64),
  0,
  0,
  0,
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN8S1362C123v20Ev,
  (VTBL_ENTRY)&_ZN8S1362C123v21Ev,
  (VTBL_ENTRY)&_ZN8S1362C113v22Ev,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  0,
  0,
  ABISELECT(368,208),
  ABISELECT(-80,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1362C63v19Ev,
  0,
  0,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C73v12Ev,
  0,
  0,
  0,
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  ABISELECT(-160,-88),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v15Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v16Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-272),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S1362C11[];
extern void _ZN8S1362C123v20Ev();
extern void _ZN8S1362C123v21Ev();
static  VTBL_ENTRY _tg__ZTV8S1362C12__8S1362C11[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1362C12[0]),
  (VTBL_ENTRY)&_ZN8S1362C123v20Ev,
  (VTBL_ENTRY)&_ZN8S1362C123v21Ev,
};
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C4__8S1362C12__8S1362C11[] = {
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1362C12[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
extern void _ZN7S1362C63v18Ev();
extern void _ZN7S1362C63v19Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C6__8S1362C11[] = {
  ABISELECT(368,208),
  ABISELECT(-80,-44),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1362C63v19Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C7__7S1362C6__8S1362C11[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C73v12Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C9__7S1362C6__8S1362C11[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN8S1362C103v15Ev();
extern void _ZN8S1362C103v16Ev();
extern void _ZN8S1362C103v17Ev();
static  VTBL_ENTRY _tg__ZTV8S1362C10__7S1362C6__8S1362C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v15Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v16Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v17Ev,
};
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C4__A2__7S1362C6__8S1362C11[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN7S1362C22v5Ev();
extern void _ZN7S1362C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C2__7S1362C6__8S1362C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v6Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN8S1362C103v15Ev();
extern void _ZN8S1362C103v16Ev();
extern void _ZN8S1362C103v17Ev();
static  VTBL_ENTRY _tg__ZTV8S1362C10__8S1362C11[] = {
  ABISELECT(-368,-208),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v15Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v16Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v17Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C9__8S1362C10__8S1362C11[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
};
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C4__A1__8S1362C10__8S1362C11[] = {
  0,
  ABISELECT(368,208),
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
static  VTT_ENTRY vtt_S1362C11[] = {
  {&(_ZTV8S1362C11[12]),  12,68},
  {&(_ZTV8S1362C11[18]),  18,68},
  {&(_ZTV8S1362C11[12]),  12,68},
  {&(_ZTV8S1362C11[28]),  28,68},
  {&(_ZTV8S1362C11[34]),  34,68},
  {&(_ZTV8S1362C11[41]),  41,68},
  {&(_ZTV8S1362C11[53]),  53,68},
  {&(_ZTV8S1362C11[64]),  64,68},
  {&(_tg__ZTV8S1362C12__8S1362C11[3]),  3,5},
  {&(_tg__ZTV7S1362C4__8S1362C12__8S1362C11[3]),  3,4},
  {&(_tg__ZTV7S1362C6__8S1362C11[7]),  7,9},
  {&(_tg__ZTV7S1362C7__7S1362C6__8S1362C11[4]),  4,6},
  {&(_tg__ZTV7S1362C9__7S1362C6__8S1362C11[5]),  5,8},
  {&(_tg__ZTV8S1362C10__7S1362C6__8S1362C11[9]),  9,14},
  {&(_tg__ZTV7S1362C4__A2__7S1362C6__8S1362C11[3]),  3,4},
  {&(_tg__ZTV7S1362C2__7S1362C6__8S1362C11[6]),  6,10},
  {&(_tg__ZTV8S1362C10__8S1362C11[4]),  4,9},
  {&(_tg__ZTV7S1362C9__8S1362C10__8S1362C11[5]),  5,8},
  {&(_tg__ZTV7S1362C4__A1__8S1362C10__8S1362C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S1362C11[];
extern  VTBL_ENTRY _ZTV8S1362C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1362C11[];
Class_Descriptor cd_S1362C11 = {  "S1362C11", // class name
  bases_S1362C11, 17,
  &(vtc_S1362C11[0]), // expected_vtbl_contents
  &(vtt_S1362C11[0]), // expected_vtt_contents
  ABISELECT(560,320), // object size
  NSPAIRA(_ZTI8S1362C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1362C11),68, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1362C11),19, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1362C1  : S1362C2 , S1362C5 , virtual S1362C6 , virtual S1362C11 {
  virtual void  v1(); // _ZN7S1362C12v1Ev
  virtual void  v2(); // _ZN7S1362C12v2Ev
  ~S1362C1(); // tgen
  S1362C1(); // tgen
};
//SIG(1 S1362C1) C1{ BC2{ BC3{ BC4{ v3 Fp[7] FL Fs} v4} v5 v6 Fi} BC5{ vd v7 v8 v9 v10 v11 Fi Fp} VBC6{ VBC7{ BC8{ m} BC4 v12 Fi} VBC9{ BC4 v13 v14 FC4} VBC10{ VBC9 BC8 VBC4 BC3 v15 v16 v17} VBC2 BC8 v18 v19 FD[2]} VBC11{ VBC4 VBC12{ VBC4 v20 v21} VBC6 VBC8 v22 Fp FD} v1 v2}


void  S1362C1 ::v1(){vfunc_called(this, "_ZN7S1362C12v1Ev");}
void  S1362C1 ::v2(){vfunc_called(this, "_ZN7S1362C12v2Ev");}
S1362C1 ::~S1362C1(){ note_dtor("S1362C1", this);} // tgen
S1362C1 ::S1362C1(){ note_ctor("S1362C1", this);} // tgen

static void Test_S1362C1()
{
  extern Class_Descriptor cd_S1362C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(43,96)];
    init_test(&cd_S1362C1, buf);
    S1362C1 *dp, &lv = *(dp=new (buf) S1362C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(672,380), "sizeof(S1362C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1362C1)");
    /*is_ambiguous_... S1362C1::S1362C2 */ AMB_check_base_class_offset(lv, (S1362C4*)(S1362C3*)(S1362C2*), 0, "S1362C1");
    /*is_ambiguous_... S1362C1::S1362C2 */ AMB_check_base_class_offset(lv, (S1362C3*)(S1362C2*), 0, "S1362C1");
    /*is_ambiguous_... S1362C1::S1362C2 */ AMB_check_base_class_offset(lv, (S1362C2*), 0, "S1362C1");
    check_base_class_offset(lv, (S1362C5*), ABISELECT(80,48), "S1362C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S1362C7*), ABISELECT(160,88), "S1362C1");
    check_base_class_offset(lv, (S1362C4*)(S1362C7*), ABISELECT(160,88), "S1362C1");
    check_base_class_offset(lv, (S1362C7*)(S1362C6*), ABISELECT(160,88), "S1362C1");
    check_base_class_offset(lv, (S1362C4*)(S1362C9*), ABISELECT(240,136), "S1362C1");
    check_base_class_offset(lv, (S1362C9*)(S1362C6*), ABISELECT(240,136), "S1362C1");
    check_base_class_offset(lv, (S1362C9*)(S1362C10*), ABISELECT(240,136), "S1362C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S1362C10*), ABISELECT(400,224), "S1362C1");
    /*is_ambiguous_... S1362C10::S1362C4 */ AMB_check_base_class_offset(lv, (S1362C4*)(S1362C10*), ABISELECT(480,268), "S1362C1");
    /*is_ambiguous_... S1362C11::S1362C4 */ AMB_check_base_class_offset(lv, (S1362C4*)(S1362C11*), ABISELECT(480,268), "S1362C1");
    check_base_class_offset(lv, (S1362C4*)(S1362C12*), ABISELECT(480,268), "S1362C1");
    check_base_class_offset(lv, (S1362C4*)(S1362C3*)(S1362C10*), ABISELECT(400,224), "S1362C1");
    check_base_class_offset(lv, (S1362C3*)(S1362C10*), ABISELECT(400,224), "S1362C1");
    check_base_class_offset(lv, (S1362C10*)(S1362C6*), ABISELECT(400,224), "S1362C1");
    /*is_ambiguous_... S1362C1::S1362C2 */ AMB_check_base_class_offset(lv, (S1362C4*)(S1362C3*)(S1362C2*), ABISELECT(560,312), "S1362C1");
    /*is_ambiguous_... S1362C1::S1362C2 */ AMB_check_base_class_offset(lv, (S1362C3*)(S1362C2*), ABISELECT(560,312), "S1362C1");
    check_base_class_offset(lv, (S1362C2*)(S1362C6*), ABISELECT(560,312), "S1362C1");
    /*is_ambiguous_... S1362C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S1362C6*), ABISELECT(112,60), "S1362C1");
    check_base_class_offset(lv, (S1362C6*), ABISELECT(112,60), "S1362C1");
    check_base_class_offset(lv, (S1362C6*)(S1362C11*), ABISELECT(112,60), "S1362C1");
    check_base_class_offset(lv, (S1362C12*)(S1362C11*), ABISELECT(640,360), "S1362C1");
    /*is_ambiguous_... S1362C11::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S1362C11*), 0, "S1362C1");
    check_base_class_offset(lv, (S1362C11*), ABISELECT(640,360), "S1362C1");
    test_class_info(&lv, &cd_S1362C1);
    dp->~S1362C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1362C1(Test_S1362C1, "S1362C1", ABISELECT(672,380));

#else // __cplusplus

extern void _ZN7S1362C1C1Ev();
extern void _ZN7S1362C1D1Ev();
Name_Map name_map_S1362C1[] = {
  NSPAIR(_ZN7S1362C1C1Ev),
  NSPAIR(_ZN7S1362C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C3;
extern VTBL_ENTRY _ZTI7S1362C3[];
extern  VTBL_ENTRY _ZTV7S1362C3[];
extern Class_Descriptor cd_S1362C2;
extern VTBL_ENTRY _ZTI7S1362C2[];
extern  VTBL_ENTRY _ZTV7S1362C2[];
extern Class_Descriptor cd_S1362C5;
extern VTBL_ENTRY _ZTI7S1362C5[];
extern  VTBL_ENTRY _ZTV7S1362C5[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C7;
extern VTBL_ENTRY _ZTI7S1362C7[];
extern  VTBL_ENTRY _ZTV7S1362C7[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C9;
extern VTBL_ENTRY _ZTI7S1362C9[];
extern  VTBL_ENTRY _ZTV7S1362C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C3;
extern VTBL_ENTRY _ZTI7S1362C3[];
extern  VTBL_ENTRY _ZTV7S1362C3[];
extern Class_Descriptor cd_S1362C10;
extern VTBL_ENTRY _ZTI8S1362C10[];
extern  VTBL_ENTRY _ZTV8S1362C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1362C10[];
extern Class_Descriptor cd_S1362C4;
extern VTBL_ENTRY _ZTI7S1362C4[];
extern  VTBL_ENTRY _ZTV7S1362C4[];
extern Class_Descriptor cd_S1362C3;
extern VTBL_ENTRY _ZTI7S1362C3[];
extern  VTBL_ENTRY _ZTV7S1362C3[];
extern Class_Descriptor cd_S1362C2;
extern VTBL_ENTRY _ZTI7S1362C2[];
extern  VTBL_ENTRY _ZTV7S1362C2[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C6;
extern VTBL_ENTRY _ZTI7S1362C6[];
extern  VTBL_ENTRY _ZTV7S1362C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1362C6[];
extern Class_Descriptor cd_S1362C12;
extern VTBL_ENTRY _ZTI8S1362C12[];
extern  VTBL_ENTRY _ZTV8S1362C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1362C12[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S1362C11;
extern VTBL_ENTRY _ZTI8S1362C11[];
extern  VTBL_ENTRY _ZTV8S1362C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1362C11[];
static Base_Class bases_S1362C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1362C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1362C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1362C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1362C5,    ABISELECT(80,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3164C31_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
    6, //immediately_derived
  0, 0},
  {&cd_S1362C4,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1362C7,    ABISELECT(160,88), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S1362C4,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1362C9,    ABISELECT(240,136), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(400,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
    13, //immediately_derived
  0, 0},
  {&cd_S1362C4,    ABISELECT(480,268), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S1362C4,    ABISELECT(400,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
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1362C3,    ABISELECT(400,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
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1362C10,    ABISELECT(400,224), //bcp->offset
    53, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S1362C4,    ABISELECT(560,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1362C3,    ABISELECT(560,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1362C2,    ABISELECT(560,312), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S3164C31_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
    18, //immediately_derived
  0, 0},
  {&cd_S1362C6,    ABISELECT(112,60), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1362C12,    ABISELECT(640,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1362C11,    ABISELECT(640,360), //bcp->offset
    81, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1362C1[];
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN7S1362C22v5Ev();
extern void _ZN7S1362C22v6Ev();
extern void _ZN7S1362C12v1Ev();
extern void _ZN7S1362C12v2Ev();
extern void _ZN7S1362C1D1Ev();
extern void _ZN7S1362C1D0Ev();
extern void ABISELECT(_ZThn80_N7S1362C1D1Ev,_ZThn48_N7S1362C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S1362C1D0Ev,_ZThn48_N7S1362C1D0Ev)();
extern void _ZN7S1362C52v7Ev();
extern void _ZN7S1362C52v8Ev();
extern void _ZN7S1362C52v9Ev();
extern void _ZN7S1362C53v10Ev();
extern void _ZN7S1362C53v11Ev();
extern void _ZN7S1362C63v18Ev();
extern void _ZN7S1362C63v19Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C73v12Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN8S1362C103v15Ev();
extern void _ZN8S1362C103v16Ev();
extern void _ZN8S1362C103v17Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN7S1362C22v5Ev();
extern void _ZN7S1362C22v6Ev();
extern void _ZN8S1362C123v20Ev();
extern void _ZN8S1362C123v21Ev();
extern void _ZN8S1362C113v22Ev();
static  VTBL_ENTRY vtc_S1362C1[] = {
  0,
  ABISELECT(640,360),
  ABISELECT(640,360),
  ABISELECT(560,312),
  ABISELECT(480,268),
  ABISELECT(400,224),
  ABISELECT(240,136),
  ABISELECT(160,88),
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1362C1[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1362C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1362C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1362C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1362C1D0Ev,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S1362C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S1362C1D1Ev,_ZThn48_N7S1362C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S1362C1D0Ev,_ZThn48_N7S1362C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1362C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1362C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1362C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1362C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1362C53v11Ev,
  0,
  0,
  ABISELECT(448,252),
  ABISELECT(368,208),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1362C1[0]),
  (VTBL_ENTRY)&_ZN7S1362C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1362C63v19Ev,
  0,
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S1362C1[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C73v12Ev,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI7S1362C1[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-160,-88),
  ABISELECT(-400,-224),
  (VTBL_ENTRY)&(_ZTI7S1362C1[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v15Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v16Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v17Ev,
  0,
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI7S1362C1[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-312),
  (VTBL_ENTRY)&(_ZTI7S1362C1[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v6Ev,
  0,
  ABISELECT(-640,-360),
  ABISELECT(-80,-48),
  ABISELECT(-240,-136),
  ABISELECT(-400,-224),
  ABISELECT(-480,-272),
  ABISELECT(-528,-300),
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(-640,-360),
  (VTBL_ENTRY)&(_ZTI7S1362C1[0]),
  (VTBL_ENTRY)&_ZN8S1362C123v20Ev,
  (VTBL_ENTRY)&_ZN8S1362C123v21Ev,
  (VTBL_ENTRY)&_ZN8S1362C113v22Ev,
};
extern VTBL_ENTRY _ZTV7S1362C1[];
extern void _ZN7S1362C63v18Ev();
extern void _ZN7S1362C63v19Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C6__7S1362C1[] = {
  ABISELECT(448,252),
  ABISELECT(368,208),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1362C63v19Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C7__7S1362C6__7S1362C1[] = {
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C73v12Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C9__7S1362C6__7S1362C1[] = {
  0,
  0,
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN8S1362C103v15Ev();
extern void _ZN8S1362C103v16Ev();
extern void _ZN8S1362C103v17Ev();
static  VTBL_ENTRY _tg__ZTV8S1362C10__7S1362C6__7S1362C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-160,-88),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v15Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v16Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v17Ev,
};
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C4__A2__7S1362C6__7S1362C1[] = {
  0,
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN7S1362C22v5Ev();
extern void _ZN7S1362C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C2__7S1362C6__7S1362C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-448,-252),
  (VTBL_ENTRY)&(_ZTI7S1362C6[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v6Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN8S1362C103v15Ev();
extern void _ZN8S1362C103v16Ev();
extern void _ZN8S1362C103v17Ev();
static  VTBL_ENTRY _tg__ZTV8S1362C10__7S1362C1[] = {
  ABISELECT(80,44),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v15Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v16Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v17Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C9__8S1362C10__7S1362C1[] = {
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
};
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C4__A1__8S1362C10__7S1362C1[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1362C10[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
extern void _ZN8S1362C123v20Ev();
extern void _ZN8S1362C123v21Ev();
extern void _ZN8S1362C113v22Ev();
static  VTBL_ENTRY _tg__ZTV8S1362C11__7S1362C1[] = {
  ABISELECT(-640,-360),
  ABISELECT(-80,-48),
  ABISELECT(-240,-136),
  ABISELECT(-400,-224),
  ABISELECT(-480,-272),
  ABISELECT(-528,-300),
  0,
  0,
  0,
  ABISELECT(-160,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN8S1362C123v20Ev,
  (VTBL_ENTRY)&_ZN8S1362C123v21Ev,
  (VTBL_ENTRY)&_ZN8S1362C113v22Ev,
};
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C4__8S1362C11__7S1362C1[] = {
  0,
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
extern void _ZN7S1362C63v18Ev();
extern void _ZN7S1362C63v19Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C6__8S1362C11__7S1362C1[] = {
  0,
  0,
  ABISELECT(448,252),
  ABISELECT(368,208),
  ABISELECT(288,164),
  ABISELECT(128,76),
  ABISELECT(48,28),
  ABISELECT(528,300),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1362C63v19Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C7__8S1362C11__7S1362C1[] = {
  0,
  0,
  ABISELECT(480,272),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C73v12Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C93v13Ev();
extern void _ZN7S1362C93v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C9__8S1362C11__7S1362C1[] = {
  0,
  0,
  0,
  ABISELECT(400,224),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v13Ev,
  (VTBL_ENTRY)&_ZN7S1362C93v14Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN8S1362C103v15Ev();
extern void _ZN8S1362C103v16Ev();
extern void _ZN8S1362C103v17Ev();
static  VTBL_ENTRY _tg__ZTV8S1362C10__8S1362C11__7S1362C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(-160,-88),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v15Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v16Ev,
  (VTBL_ENTRY)&_ZN8S1362C103v17Ev,
};
extern void _ZN7S1362C42v3Ev();
extern void _ZN7S1362C32v4Ev();
extern void _ZN7S1362C22v5Ev();
extern void _ZN7S1362C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C2__8S1362C11__7S1362C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S1362C11[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1362C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1362C22v6Ev,
};
extern void _ZN8S1362C123v20Ev();
extern void _ZN8S1362C123v21Ev();
static  VTBL_ENTRY _tg__ZTV8S1362C12__7S1362C1[] = {
  ABISELECT(-160,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S1362C12[0]),
  (VTBL_ENTRY)&_ZN8S1362C123v20Ev,
  (VTBL_ENTRY)&_ZN8S1362C123v21Ev,
};
extern void _ZN7S1362C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S1362C4__8S1362C12__7S1362C1[] = {
  0,
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S1362C12[0]),
  (VTBL_ENTRY)&_ZN7S1362C42v3Ev,
};
static  VTT_ENTRY vtt_S1362C1[] = {
  {&(_ZTV7S1362C1[11]),  11,97},
  {&(_ZTV7S1362C1[37]),  37,97},
  {&(_ZTV7S1362C1[43]),  43,97},
  {&(_ZTV7S1362C1[50]),  50,97},
  {&(_ZTV7S1362C1[62]),  62,97},
  {&(_ZTV7S1362C1[70]),  70,97},
  {&(_ZTV7S1362C1[77]),  77,97},
  {&(_ZTV7S1362C1[94]),  94,97},
  {&(_ZTV7S1362C1[94]),  94,97},
  {&(_tg__ZTV7S1362C6__7S1362C1[7]),  7,9},
  {&(_tg__ZTV7S1362C7__7S1362C6__7S1362C1[4]),  4,6},
  {&(_tg__ZTV7S1362C9__7S1362C6__7S1362C1[5]),  5,8},
  {&(_tg__ZTV8S1362C10__7S1362C6__7S1362C1[9]),  9,14},
  {&(_tg__ZTV7S1362C4__A2__7S1362C6__7S1362C1[3]),  3,4},
  {&(_tg__ZTV7S1362C2__7S1362C6__7S1362C1[6]),  6,10},
  {&(_tg__ZTV8S1362C10__7S1362C1[4]),  4,9},
  {&(_tg__ZTV7S1362C9__8S1362C10__7S1362C1[5]),  5,8},
  {&(_tg__ZTV7S1362C4__A1__8S1362C10__7S1362C1[3]),  3,4},
  {&(_tg__ZTV8S1362C11__7S1362C1[12]),  12,15},
  {&(_tg__ZTV7S1362C4__8S1362C11__7S1362C1[3]),  3,4},
  {&(_tg__ZTV8S1362C11__7S1362C1[12]),  12,15},
  {&(_tg__ZTV7S1362C6__8S1362C11__7S1362C1[9]),  9,11},
  {&(_tg__ZTV7S1362C7__8S1362C11__7S1362C1[4]),  4,6},
  {&(_tg__ZTV7S1362C9__8S1362C11__7S1362C1[5]),  5,8},
  {&(_tg__ZTV8S1362C10__8S1362C11__7S1362C1[9]),  9,14},
  {&(_tg__ZTV7S1362C2__8S1362C11__7S1362C1[6]),  6,10},
  {&(_tg__ZTV8S1362C12__7S1362C1[3]),  3,5},
  {&(_tg__ZTV7S1362C4__8S1362C12__7S1362C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S1362C1[];
extern  VTBL_ENTRY _ZTV7S1362C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1362C1[];
Class_Descriptor cd_S1362C1 = {  "S1362C1", // class name
  bases_S1362C1, 22,
  &(vtc_S1362C1[0]), // expected_vtbl_contents
  &(vtt_S1362C1[0]), // expected_vtt_contents
  ABISELECT(672,380), // object size
  NSPAIRA(_ZTI7S1362C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1362C1),97, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1362C1),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9313C2  {
  ::S2213C20_nt s9313c2f0;
  int s9313c2f1[2];
  char s9313c2f2;
  virtual  ~S9313C2(); // _ZN7S9313C2D1Ev
  virtual void  v3(); // _ZN7S9313C22v3Ev
  virtual void  v4(); // _ZN7S9313C22v4Ev
  virtual void  v5(); // _ZN7S9313C22v5Ev
  S9313C2(); // tgen
};
//SIG(-1 S9313C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9313C2 ::~S9313C2(){ note_dtor("S9313C2", this);}
void  S9313C2 ::v3(){vfunc_called(this, "_ZN7S9313C22v3Ev");}
void  S9313C2 ::v4(){vfunc_called(this, "_ZN7S9313C22v4Ev");}
void  S9313C2 ::v5(){vfunc_called(this, "_ZN7S9313C22v5Ev");}
S9313C2 ::S9313C2(){ note_ctor("S9313C2", this);} // tgen

static void Test_S9313C2()
{
  extern Class_Descriptor cd_S9313C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9313C2, buf);
    S9313C2 *dp, &lv = *(dp=new (buf) S9313C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9313C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9313C2)");
    check_field_offset(lv, s9313c2f0, ABISELECT(8,4), "S9313C2.s9313c2f0");
    check_field_offset(lv, s9313c2f1, ABISELECT(24,16), "S9313C2.s9313c2f1");
    check_field_offset(lv, s9313c2f2, ABISELECT(32,24), "S9313C2.s9313c2f2");
    test_class_info(&lv, &cd_S9313C2);
    dp->~S9313C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9313C2(Test_S9313C2, "S9313C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9313C2C1Ev();
extern void _ZN7S9313C2D1Ev();
Name_Map name_map_S9313C2[] = {
  NSPAIR(_ZN7S9313C2C1Ev),
  NSPAIR(_ZN7S9313C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9313C2[];
extern void _ZN7S9313C2D1Ev();
extern void _ZN7S9313C2D0Ev();
extern void _ZN7S9313C22v3Ev();
extern void _ZN7S9313C22v4Ev();
extern void _ZN7S9313C22v5Ev();
static  VTBL_ENTRY vtc_S9313C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9313C2[0]),
  (VTBL_ENTRY)&_ZN7S9313C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9313C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9313C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9313C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9313C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9313C2[];
extern  VTBL_ENTRY _ZTV7S9313C2[];
Class_Descriptor cd_S9313C2 = {  "S9313C2", // class name
  0,0,//no base classes
  &(vtc_S9313C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9313C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9313C2),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  S9313C1  : S9313C2 {
  ::S9312C5_nt s9313c1f0;
  ::S2367C19 s9313c1f1;
  void *s9313c1f2[2];
  ::S5228C6_nt s9313c1f3;
  void *s9313c1f4[2];
  ::S22079C11_nt s9313c1f5;
  ::S3164C31_nt s9313c1f6;
  ::S5228C8 s9313c1f7;
  ::S2213C20_nt s9313c1f8;
  virtual  ~S9313C1(); // _ZN7S9313C1D1Ev
  virtual void  v1(); // _ZN7S9313C12v1Ev
  virtual void  v2(); // _ZN7S9313C12v2Ev
  S9313C1(); // tgen
};
//SIG(1 S9313C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FC5{ vd m Fp Fi} FC6{ m Fp} Fp[2] FC7{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp} Fp[2] FC8{ m FL[4]} FC9{ m} FC10{ vd m FC11{ m FC12{ vd m FL Fc} FC12} Fi[4] Fp FC13{ BC14{ vd m} vd FC11 Fc[10]}} FC3}


 S9313C1 ::~S9313C1(){ note_dtor("S9313C1", this);}
void  S9313C1 ::v1(){vfunc_called(this, "_ZN7S9313C12v1Ev");}
void  S9313C1 ::v2(){vfunc_called(this, "_ZN7S9313C12v2Ev");}
S9313C1 ::S9313C1(){ note_ctor("S9313C1", this);} // tgen

static void Test_S9313C1()
{
  extern Class_Descriptor cd_S9313C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,56)];
    init_test(&cd_S9313C1, buf);
    S9313C1 *dp, &lv = *(dp=new (buf) S9313C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,220), "sizeof(S9313C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9313C1)");
    check_base_class_offset(lv, (S9313C2*), 0, "S9313C1");
    check_field_offset(lv, s9313c1f0, ABISELECT(40,28), "S9313C1.s9313c1f0");
    check_field_offset(lv, s9313c1f1, ABISELECT(64,40), "S9313C1.s9313c1f1");
    check_field_offset(lv, s9313c1f2, ABISELECT(72,44), "S9313C1.s9313c1f2");
    check_field_offset(lv, s9313c1f3, ABISELECT(88,52), "S9313C1.s9313c1f3");
    check_field_offset(lv, s9313c1f4, ABISELECT(104,60), "S9313C1.s9313c1f4");
    check_field_offset(lv, s9313c1f5, ABISELECT(120,68), "S9313C1.s9313c1f5");
    check_field_offset(lv, s9313c1f6, ABISELECT(152,100), "S9313C1.s9313c1f6");
    check_field_offset(lv, s9313c1f7, ABISELECT(160,104), "S9313C1.s9313c1f7");
    check_field_offset(lv, s9313c1f8, ABISELECT(312,208), "S9313C1.s9313c1f8");
    test_class_info(&lv, &cd_S9313C1);
    dp->~S9313C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9313C1(Test_S9313C1, "S9313C1", ABISELECT(328,220));

#else // __cplusplus

extern void _ZN7S9313C1C1Ev();
extern void _ZN7S9313C1D1Ev();
Name_Map name_map_S9313C1[] = {
  NSPAIR(_ZN7S9313C1C1Ev),
  NSPAIR(_ZN7S9313C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9313C2;
extern VTBL_ENTRY _ZTI7S9313C2[];
extern  VTBL_ENTRY _ZTV7S9313C2[];
static Base_Class bases_S9313C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9313C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9313C1[];
extern void _ZN7S9313C1D1Ev();
extern void _ZN7S9313C1D0Ev();
extern void _ZN7S9313C22v3Ev();
extern void _ZN7S9313C22v4Ev();
extern void _ZN7S9313C22v5Ev();
extern void _ZN7S9313C12v1Ev();
extern void _ZN7S9313C12v2Ev();
static  VTBL_ENTRY vtc_S9313C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9313C1[0]),
  (VTBL_ENTRY)&_ZN7S9313C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9313C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9313C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9313C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9313C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9313C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9313C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9313C1[];
extern  VTBL_ENTRY _ZTV7S9313C1[];
Class_Descriptor cd_S9313C1 = {  "S9313C1", // class name
  bases_S9313C1, 1,
  &(vtc_S9313C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(328,220), // object size
  NSPAIRA(_ZTI7S9313C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9313C1),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  S6404C3  {
  virtual  ~S6404C3(); // _ZN7S6404C3D1Ev
  virtual void  v12(); // _ZN7S6404C33v12Ev
  S6404C3(); // tgen
};
//SIG(-1 S6404C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S6404C3C1Ev();
extern void _ZN7S6404C3D1Ev();
Name_Map name_map_S6404C3[] = {
  NSPAIR(_ZN7S6404C3C1Ev),
  NSPAIR(_ZN7S6404C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6404C3[];
extern void _ZN7S6404C3D1Ev();
extern void _ZN7S6404C3D0Ev();
extern void _ZN7S6404C33v12Ev();
static  VTBL_ENTRY vtc_S6404C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C3[0]),
  (VTBL_ENTRY)&_ZN7S6404C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C3D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C33v12Ev,
};
extern VTBL_ENTRY _ZTI7S6404C3[];
extern  VTBL_ENTRY _ZTV7S6404C3[];
Class_Descriptor cd_S6404C3 = {  "S6404C3", // class name
  0,0,//no base classes
  &(vtc_S6404C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6404C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6404C3),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  S6404C2  {
  ::S6404C3 s6404c2f0;
  int s6404c2f1;
  virtual void  v1(); // _ZN7S6404C22v1Ev
  virtual void  v2(); // _ZN7S6404C22v2Ev
  virtual void  v3(); // _ZN7S6404C22v3Ev
  virtual void  v4(); // _ZN7S6404C22v4Ev
  virtual void  v5(); // _ZN7S6404C22v5Ev
  ~S6404C2(); // tgen
  S6404C2(); // tgen
};
//SIG(-1 S6404C2) C1{ v1 v2 v3 v4 v5 FC2{ vd v6} Fi}


void  S6404C2 ::v1(){vfunc_called(this, "_ZN7S6404C22v1Ev");}
void  S6404C2 ::v2(){vfunc_called(this, "_ZN7S6404C22v2Ev");}
void  S6404C2 ::v3(){vfunc_called(this, "_ZN7S6404C22v3Ev");}
void  S6404C2 ::v4(){vfunc_called(this, "_ZN7S6404C22v4Ev");}
void  S6404C2 ::v5(){vfunc_called(this, "_ZN7S6404C22v5Ev");}
S6404C2 ::~S6404C2(){ note_dtor("S6404C2", this);} // tgen
S6404C2 ::S6404C2(){ note_ctor("S6404C2", this);} // tgen

static void Test_S6404C2()
{
  extern Class_Descriptor cd_S6404C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6404C2, buf);
    S6404C2 *dp, &lv = *(dp=new (buf) S6404C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6404C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6404C2)");
    check_field_offset(lv, s6404c2f0, ABISELECT(8,4), "S6404C2.s6404c2f0");
    check_field_offset(lv, s6404c2f1, ABISELECT(16,8), "S6404C2.s6404c2f1");
    test_class_info(&lv, &cd_S6404C2);
    dp->~S6404C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6404C2(Test_S6404C2, "S6404C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6404C2C1Ev();
extern void _ZN7S6404C2D1Ev();
Name_Map name_map_S6404C2[] = {
  NSPAIR(_ZN7S6404C2C1Ev),
  NSPAIR(_ZN7S6404C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6404C2[];
extern void _ZN7S6404C22v1Ev();
extern void _ZN7S6404C22v2Ev();
extern void _ZN7S6404C22v3Ev();
extern void _ZN7S6404C22v4Ev();
extern void _ZN7S6404C22v5Ev();
static  VTBL_ENTRY vtc_S6404C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C2[0]),
  (VTBL_ENTRY)&_ZN7S6404C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6404C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6404C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6404C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6404C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S6404C2[];
extern  VTBL_ENTRY _ZTV7S6404C2[];
Class_Descriptor cd_S6404C2 = {  "S6404C2", // class name
  0,0,//no base classes
  &(vtc_S6404C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6404C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6404C2),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  S6404C4  {
  long s6404c4f0;
  virtual void  v6(); // _ZN7S6404C42v6Ev
  virtual void  v7(); // _ZN7S6404C42v7Ev
  virtual void  v8(); // _ZN7S6404C42v8Ev
  virtual void  v9(); // _ZN7S6404C42v9Ev
  virtual void  v10(); // _ZN7S6404C43v10Ev
  ~S6404C4(); // tgen
  S6404C4(); // tgen
};
//SIG(-1 S6404C4) C1{ v1 v2 v3 v4 v5 Fl}


void  S6404C4 ::v6(){vfunc_called(this, "_ZN7S6404C42v6Ev");}
void  S6404C4 ::v7(){vfunc_called(this, "_ZN7S6404C42v7Ev");}
void  S6404C4 ::v8(){vfunc_called(this, "_ZN7S6404C42v8Ev");}
void  S6404C4 ::v9(){vfunc_called(this, "_ZN7S6404C42v9Ev");}
void  S6404C4 ::v10(){vfunc_called(this, "_ZN7S6404C43v10Ev");}
S6404C4 ::~S6404C4(){ note_dtor("S6404C4", this);} // tgen
S6404C4 ::S6404C4(){ note_ctor("S6404C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6404C4C1Ev();
extern void _ZN7S6404C4D1Ev();
Name_Map name_map_S6404C4[] = {
  NSPAIR(_ZN7S6404C4C1Ev),
  NSPAIR(_ZN7S6404C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6404C4[];
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY vtc_S6404C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C4[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
extern VTBL_ENTRY _ZTI7S6404C4[];
extern  VTBL_ENTRY _ZTV7S6404C4[];
Class_Descriptor cd_S6404C4 = {  "S6404C4", // class name
  0,0,//no base classes
  &(vtc_S6404C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6404C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6404C4),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  S6404C6  {
  virtual  ~S6404C6(); // _ZN7S6404C6D1Ev
  virtual void  v11(); // _ZN7S6404C63v11Ev
  S6404C6(); // tgen
};
//SIG(-1 S6404C6) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S6404C6C1Ev();
extern void _ZN7S6404C6D1Ev();
Name_Map name_map_S6404C6[] = {
  NSPAIR(_ZN7S6404C6C1Ev),
  NSPAIR(_ZN7S6404C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6404C6[];
extern void _ZN7S6404C6D1Ev();
extern void _ZN7S6404C6D0Ev();
extern void _ZN7S6404C63v11Ev();
static  VTBL_ENTRY vtc_S6404C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C6[0]),
  (VTBL_ENTRY)&_ZN7S6404C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C6D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
};
extern VTBL_ENTRY _ZTI7S6404C6[];
extern  VTBL_ENTRY _ZTV7S6404C6[];
Class_Descriptor cd_S6404C6 = {  "S6404C6", // class name
  0,0,//no base classes
  &(vtc_S6404C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6404C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6404C6),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  S6404C5  : S6404C4 , S6404C6 , S6404C3 {
  virtual  ~S6404C5(); // _ZN7S6404C5D1Ev
  virtual void  v13(); // _ZN7S6404C53v13Ev
  S6404C5(); // tgen
};
//SIG(-1 S6404C5) C1{ BC2{ v2 v3 v4 v5 v6 Fl} BC3{ vd v7} BC4{ vd v8} vd v1}


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

static void Test_S6404C5()
{
  extern Class_Descriptor cd_S6404C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6404C5, buf);
    S6404C5 *dp, &lv = *(dp=new (buf) S6404C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6404C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6404C5)");
    check_base_class_offset(lv, (S6404C4*), 0, "S6404C5");
    check_base_class_offset(lv, (S6404C6*), ABISELECT(16,8), "S6404C5");
    check_base_class_offset(lv, (S6404C3*), ABISELECT(24,12), "S6404C5");
    test_class_info(&lv, &cd_S6404C5);
    dp->~S6404C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6404C5(Test_S6404C5, "S6404C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6404C5C1Ev();
extern void _ZN7S6404C5D1Ev();
Name_Map name_map_S6404C5[] = {
  NSPAIR(_ZN7S6404C5C1Ev),
  NSPAIR(_ZN7S6404C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6404C4;
extern VTBL_ENTRY _ZTI7S6404C4[];
extern  VTBL_ENTRY _ZTV7S6404C4[];
extern Class_Descriptor cd_S6404C6;
extern VTBL_ENTRY _ZTI7S6404C6[];
extern  VTBL_ENTRY _ZTV7S6404C6[];
extern Class_Descriptor cd_S6404C3;
extern VTBL_ENTRY _ZTI7S6404C3[];
extern  VTBL_ENTRY _ZTV7S6404C3[];
static Base_Class bases_S6404C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6404C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6404C6,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6404C3,    ABISELECT(24,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6404C5[];
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
extern void _ZN7S6404C5D1Ev();
extern void _ZN7S6404C5D0Ev();
extern void _ZN7S6404C53v13Ev();
extern void ABISELECT(_ZThn16_N7S6404C5D1Ev,_ZThn8_N7S6404C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6404C5D0Ev,_ZThn8_N7S6404C5D0Ev)();
extern void _ZN7S6404C63v11Ev();
extern void ABISELECT(_ZThn24_N7S6404C5D1Ev,_ZThn12_N7S6404C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S6404C5D0Ev,_ZThn12_N7S6404C5D0Ev)();
extern void _ZN7S6404C33v12Ev();
static  VTBL_ENTRY vtc_S6404C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C5[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6404C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C53v13Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6404C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6404C5D1Ev,_ZThn8_N7S6404C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6404C5D0Ev,_ZThn8_N7S6404C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6404C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S6404C5D1Ev,_ZThn12_N7S6404C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S6404C5D0Ev,_ZThn12_N7S6404C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C33v12Ev,
};
extern VTBL_ENTRY _ZTI7S6404C5[];
extern  VTBL_ENTRY _ZTV7S6404C5[];
Class_Descriptor cd_S6404C5 = {  "S6404C5", // class name
  bases_S6404C5, 3,
  &(vtc_S6404C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6404C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6404C5),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6404C9  : virtual S6404C4 {
  int s6404c9f0;
  virtual  ~S6404C9(); // _ZN7S6404C9D2Ev
  virtual void  v14(); // _ZN7S6404C93v14Ev
  virtual void  v15(); // _ZN7S6404C93v15Ev
  virtual void  v16(); // _ZN7S6404C93v16Ev
  virtual void  v17(); // _ZN7S6404C93v17Ev
  S6404C9(); // tgen
};
//SIG(-1 S6404C9) C1{ VBC2{ v5 v6 v7 v8 v9 Fl} vd v1 v2 v3 v4 Fi}


 S6404C9 ::~S6404C9(){ note_dtor("S6404C9", this);}
void  S6404C9 ::v14(){vfunc_called(this, "_ZN7S6404C93v14Ev");}
void  S6404C9 ::v15(){vfunc_called(this, "_ZN7S6404C93v15Ev");}
void  S6404C9 ::v16(){vfunc_called(this, "_ZN7S6404C93v16Ev");}
void  S6404C9 ::v17(){vfunc_called(this, "_ZN7S6404C93v17Ev");}
S6404C9 ::S6404C9(){ note_ctor("S6404C9", this);} // tgen

static void Test_S6404C9()
{
  extern Class_Descriptor cd_S6404C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6404C9, buf);
    S6404C9 *dp, &lv = *(dp=new (buf) S6404C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6404C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6404C9)");
    check_base_class_offset(lv, (S6404C4*), ABISELECT(16,8), "S6404C9");
    check_field_offset(lv, s6404c9f0, ABISELECT(8,4), "S6404C9.s6404c9f0");
    test_class_info(&lv, &cd_S6404C9);
    dp->~S6404C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6404C9(Test_S6404C9, "S6404C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6404C9C1Ev();
extern void _ZN7S6404C9D2Ev();
Name_Map name_map_S6404C9[] = {
  NSPAIR(_ZN7S6404C9C1Ev),
  NSPAIR(_ZN7S6404C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6404C4;
extern VTBL_ENTRY _ZTI7S6404C4[];
extern  VTBL_ENTRY _ZTV7S6404C4[];
static Base_Class bases_S6404C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6404C4,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6404C9[];
extern void _ZN7S6404C9D1Ev();
extern void _ZN7S6404C9D0Ev();
extern void _ZN7S6404C93v14Ev();
extern void _ZN7S6404C93v15Ev();
extern void _ZN7S6404C93v16Ev();
extern void _ZN7S6404C93v17Ev();
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY vtc_S6404C9[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C9[0]),
  (VTBL_ENTRY)&_ZN7S6404C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v15Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v16Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6404C9[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
extern VTBL_ENTRY _ZTV7S6404C9[];
static  VTT_ENTRY vtt_S6404C9[] = {
  {&(_ZTV7S6404C9[3]),  3,21},
  {&(_ZTV7S6404C9[16]),  16,21},
};
extern VTBL_ENTRY _ZTI7S6404C9[];
extern  VTBL_ENTRY _ZTV7S6404C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6404C9[];
Class_Descriptor cd_S6404C9 = {  "S6404C9", // class name
  bases_S6404C9, 1,
  &(vtc_S6404C9[0]), // expected_vtbl_contents
  &(vtt_S6404C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6404C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6404C9),21, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6404C9),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  S6404C8  : virtual S6404C6 , virtual S6404C5 , S6404C9 {
  int s6404c8f0[10];
  char s6404c8f1;
  int s6404c8f2;
  char  :0;
  virtual  ~S6404C8(); // _ZN7S6404C8D2Ev
  virtual void  v18(); // _ZN7S6404C83v18Ev
  virtual void  v19(); // _ZN7S6404C83v19Ev
  virtual void  v20(); // _ZN7S6404C83v20Ev
  virtual void  v21(); // _ZN7S6404C83v21Ev
  virtual void  v22(); // _ZN7S6404C83v22Ev
  virtual void  v23(); // _ZN7S6404C83v23Ev
  S6404C8(); // tgen
};
//SIG(-1 S6404C8) C1{ VBC2{ vd v7} VBC3{ BC4{ v8 v9 v10 v11 v12 Fl} BC2 BC5{ vd v13} vd v14} BC6{ VBC4 vd v15 v16 v17 v18 Fi} vd v1 v2 v3 v4 v5 v6 Fi[10] Fc Fi Fc:0}


 S6404C8 ::~S6404C8(){ note_dtor("S6404C8", this);}
void  S6404C8 ::v18(){vfunc_called(this, "_ZN7S6404C83v18Ev");}
void  S6404C8 ::v19(){vfunc_called(this, "_ZN7S6404C83v19Ev");}
void  S6404C8 ::v20(){vfunc_called(this, "_ZN7S6404C83v20Ev");}
void  S6404C8 ::v21(){vfunc_called(this, "_ZN7S6404C83v21Ev");}
void  S6404C8 ::v22(){vfunc_called(this, "_ZN7S6404C83v22Ev");}
void  S6404C8 ::v23(){vfunc_called(this, "_ZN7S6404C83v23Ev");}
S6404C8 ::S6404C8(){ note_ctor("S6404C8", this);} // tgen

static void Test_S6404C8()
{
  extern Class_Descriptor cd_S6404C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S6404C8, buf);
    S6404C8 *dp, &lv = *(dp=new (buf) S6404C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S6404C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6404C8)");
    /*is_ambiguous_... S6404C8::S6404C6 */ AMB_check_base_class_offset(lv, (S6404C6*), ABISELECT(64,56), "S6404C8");
    check_base_class_offset(lv, (S6404C4*)(S6404C5*), ABISELECT(72,60), "S6404C8");
    check_base_class_offset(lv, (S6404C6*)(S6404C5*), ABISELECT(88,68), "S6404C8");
    check_base_class_offset(lv, (S6404C3*)(S6404C5*), ABISELECT(96,72), "S6404C8");
    check_base_class_offset(lv, (S6404C5*), ABISELECT(72,60), "S6404C8");
    check_base_class_offset(lv, (S6404C4*)(S6404C9*), ABISELECT(104,76), "S6404C8");
    check_base_class_offset(lv, (S6404C9*), 0, "S6404C8");
    check_field_offset(lv, s6404c8f0, ABISELECT(12,8), "S6404C8.s6404c8f0");
    check_field_offset(lv, s6404c8f1, ABISELECT(52,48), "S6404C8.s6404c8f1");
    check_field_offset(lv, s6404c8f2, ABISELECT(56,52), "S6404C8.s6404c8f2");
    test_class_info(&lv, &cd_S6404C8);
    dp->~S6404C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6404C8(Test_S6404C8, "S6404C8", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN7S6404C8C1Ev();
extern void _ZN7S6404C8D2Ev();
Name_Map name_map_S6404C8[] = {
  NSPAIR(_ZN7S6404C8C1Ev),
  NSPAIR(_ZN7S6404C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6404C6;
extern VTBL_ENTRY _ZTI7S6404C6[];
extern  VTBL_ENTRY _ZTV7S6404C6[];
extern Class_Descriptor cd_S6404C4;
extern VTBL_ENTRY _ZTI7S6404C4[];
extern  VTBL_ENTRY _ZTV7S6404C4[];
extern Class_Descriptor cd_S6404C6;
extern VTBL_ENTRY _ZTI7S6404C6[];
extern  VTBL_ENTRY _ZTV7S6404C6[];
extern Class_Descriptor cd_S6404C3;
extern VTBL_ENTRY _ZTI7S6404C3[];
extern  VTBL_ENTRY _ZTV7S6404C3[];
extern Class_Descriptor cd_S6404C5;
extern VTBL_ENTRY _ZTI7S6404C5[];
extern  VTBL_ENTRY _ZTV7S6404C5[];
extern Class_Descriptor cd_S6404C4;
extern VTBL_ENTRY _ZTI7S6404C4[];
extern  VTBL_ENTRY _ZTV7S6404C4[];
extern Class_Descriptor cd_S6404C9;
extern VTBL_ENTRY _ZTI7S6404C9[];
extern  VTBL_ENTRY _ZTV7S6404C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6404C9[];
static Base_Class bases_S6404C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6404C6,    ABISELECT(64,56), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6404C4,    ABISELECT(72,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6404C6,    ABISELECT(88,68), //bcp->offset
    43, //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
    4, //immediately_derived
  0, 0},
  {&cd_S6404C3,    ABISELECT(96,72), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6404C5,    ABISELECT(72,60), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6404C4,    ABISELECT(104,76), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6404C9,    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 _ZTI7S6404C8[];
extern void _ZN7S6404C8D1Ev();
extern void _ZN7S6404C8D0Ev();
extern void _ZN7S6404C93v14Ev();
extern void _ZN7S6404C93v15Ev();
extern void _ZN7S6404C93v16Ev();
extern void _ZN7S6404C93v17Ev();
extern void _ZN7S6404C83v18Ev();
extern void _ZN7S6404C83v19Ev();
extern void _ZN7S6404C83v20Ev();
extern void _ZN7S6404C83v21Ev();
extern void _ZN7S6404C83v22Ev();
extern void _ZN7S6404C83v23Ev();
extern void ABISELECT(_ZTv0_n24_N7S6404C8D1Ev,_ZTv0_n12_N7S6404C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S6404C8D1Ev,_ZThn56_N7S6404C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6404C8D0Ev,_ZTv0_n12_N7S6404C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S6404C8D0Ev,_ZThn56_N7S6404C8D0Ev)() __attribute__((weak));
extern void _ZN7S6404C63v11Ev();
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
extern void ABISELECT(_ZTv0_n64_N7S6404C8D1Ev,_ZTv0_n32_N7S6404C8D1Ev)();
extern void ABISELECT(_ZThn72_N7S6404C8D1Ev,_ZThn60_N7S6404C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6404C8D0Ev,_ZTv0_n32_N7S6404C8D0Ev)();
extern void ABISELECT(_ZThn72_N7S6404C8D0Ev,_ZThn60_N7S6404C8D0Ev)() __attribute__((weak));
extern void _ZN7S6404C53v13Ev();
extern void ABISELECT(_ZTvn16_n64_N7S6404C8D1Ev,_ZTvn8_n32_N7S6404C8D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S6404C8D0Ev,_ZTvn8_n32_N7S6404C8D0Ev)();
extern void _ZN7S6404C63v11Ev();
extern void ABISELECT(_ZTvn24_n64_N7S6404C8D1Ev,_ZTvn12_n32_N7S6404C8D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S6404C8D0Ev,_ZTvn12_n32_N7S6404C8D0Ev)();
extern void _ZN7S6404C33v12Ev();
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY vtc_S6404C8[] = {
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&_ZN7S6404C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v15Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v16Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v17Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v18Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v19Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v20Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v21Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v22Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v23Ev,
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C8D1Ev,_ZTv0_n12_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C8D0Ev,_ZTv0_n12_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-60),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C8D1Ev,_ZTv0_n32_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C8D0Ev,_ZTv0_n32_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C53v13Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C8D1Ev,_ZTvn8_n32_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C8D0Ev,_ZTvn8_n32_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C8D1Ev,_ZTvn12_n32_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C8D0Ev,_ZTvn12_n32_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C33v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
extern VTBL_ENTRY _ZTV7S6404C8[];
extern void _ZN7S6404C9D1Ev();
extern void _ZN7S6404C9D0Ev();
extern void _ZN7S6404C93v14Ev();
extern void _ZN7S6404C93v15Ev();
extern void _ZN7S6404C93v16Ev();
extern void _ZN7S6404C93v17Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C9__7S6404C8[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C9[0]),
  (VTBL_ENTRY)&_ZN7S6404C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v15Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v16Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v17Ev,
};
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C4__7S6404C9__7S6404C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S6404C9[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
static  VTT_ENTRY vtt_S6404C8[] = {
  {&(_ZTV7S6404C8[5]),  5,65},
  {&(_tg__ZTV7S6404C9__7S6404C8[3]),  3,9},
  {&(_tg__ZTV7S6404C4__7S6404C9__7S6404C8[7]),  7,12},
  {&(_ZTV7S6404C8[21]),  21,65},
  {&(_ZTV7S6404C8[35]),  35,65},
  {&(_ZTV7S6404C8[45]),  45,65},
  {&(_ZTV7S6404C8[50]),  50,65},
  {&(_ZTV7S6404C8[60]),  60,65},
};
extern VTBL_ENTRY _ZTI7S6404C8[];
extern  VTBL_ENTRY _ZTV7S6404C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6404C8[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6404C8D0Ev,_ZTv0_n32_N7S6404C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6404C8D0Ev,_ZThn60_N7S6404C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6404C8D1Ev,_ZTv0_n32_N7S6404C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6404C8D1Ev,_ZThn60_N7S6404C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C8D0Ev,_ZTv0_n12_N7S6404C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6404C8D0Ev,_ZThn56_N7S6404C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C8D1Ev,_ZTv0_n12_N7S6404C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6404C8D1Ev,_ZThn56_N7S6404C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6404C8 = {  "S6404C8", // class name
  bases_S6404C8, 7,
  &(vtc_S6404C8[0]), // expected_vtbl_contents
  &(vtt_S6404C8[0]), // expected_vtt_contents
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI7S6404C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6404C8),65, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6404C8),8, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6404C7  : S6404C8 {
  virtual  ~S6404C7(); // _ZN7S6404C7D2Ev
  virtual void  v24(); // _ZN7S6404C73v24Ev
  virtual void  v25(); // _ZN7S6404C73v25Ev
  virtual void  v26(); // _ZN7S6404C73v26Ev
  virtual void  v27(); // _ZN7S6404C73v27Ev
  virtual void  v28(); // _ZN7S6404C73v28Ev
  virtual void  v29(); // _ZN7S6404C73v29Ev
  virtual void  v30(); // _ZN7S6404C73v30Ev
  S6404C7(); // tgen
};
//SIG(-1 S6404C7) C1{ BC2{ VBC3{ vd v8} VBC4{ BC5{ v9 v10 v11 v12 v13 Fl} BC3 BC6{ vd v14} vd v15} BC7{ VBC5 vd v16 v17 v18 v19 Fi} vd v20 v21 v22 v23 v24 v25 Fi[10] Fc Fi Fc:0} vd v1 v2 v3 v4 v5 v6 v7}


 S6404C7 ::~S6404C7(){ note_dtor("S6404C7", this);}
void  S6404C7 ::v24(){vfunc_called(this, "_ZN7S6404C73v24Ev");}
void  S6404C7 ::v25(){vfunc_called(this, "_ZN7S6404C73v25Ev");}
void  S6404C7 ::v26(){vfunc_called(this, "_ZN7S6404C73v26Ev");}
void  S6404C7 ::v27(){vfunc_called(this, "_ZN7S6404C73v27Ev");}
void  S6404C7 ::v28(){vfunc_called(this, "_ZN7S6404C73v28Ev");}
void  S6404C7 ::v29(){vfunc_called(this, "_ZN7S6404C73v29Ev");}
void  S6404C7 ::v30(){vfunc_called(this, "_ZN7S6404C73v30Ev");}
S6404C7 ::S6404C7(){ note_ctor("S6404C7", this);} // tgen

static void Test_S6404C7()
{
  extern Class_Descriptor cd_S6404C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S6404C7, buf);
    S6404C7 *dp, &lv = *(dp=new (buf) S6404C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S6404C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6404C7)");
    /*is_ambiguous_... S6404C8::S6404C6 */ AMB_check_base_class_offset(lv, (S6404C6*)(S6404C8*), ABISELECT(64,56), "S6404C7");
    check_base_class_offset(lv, (S6404C4*)(S6404C5*), ABISELECT(72,60), "S6404C7");
    check_base_class_offset(lv, (S6404C6*)(S6404C5*), ABISELECT(88,68), "S6404C7");
    check_base_class_offset(lv, (S6404C3*)(S6404C5*), ABISELECT(96,72), "S6404C7");
    check_base_class_offset(lv, (S6404C5*)(S6404C8*), ABISELECT(72,60), "S6404C7");
    check_base_class_offset(lv, (S6404C4*)(S6404C9*)(S6404C8*), ABISELECT(104,76), "S6404C7");
    check_base_class_offset(lv, (S6404C9*)(S6404C8*), 0, "S6404C7");
    check_base_class_offset(lv, (S6404C8*), 0, "S6404C7");
    test_class_info(&lv, &cd_S6404C7);
    dp->~S6404C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6404C7(Test_S6404C7, "S6404C7", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN7S6404C7C1Ev();
extern void _ZN7S6404C7D2Ev();
Name_Map name_map_S6404C7[] = {
  NSPAIR(_ZN7S6404C7C1Ev),
  NSPAIR(_ZN7S6404C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6404C6;
extern VTBL_ENTRY _ZTI7S6404C6[];
extern  VTBL_ENTRY _ZTV7S6404C6[];
extern Class_Descriptor cd_S6404C4;
extern VTBL_ENTRY _ZTI7S6404C4[];
extern  VTBL_ENTRY _ZTV7S6404C4[];
extern Class_Descriptor cd_S6404C6;
extern VTBL_ENTRY _ZTI7S6404C6[];
extern  VTBL_ENTRY _ZTV7S6404C6[];
extern Class_Descriptor cd_S6404C3;
extern VTBL_ENTRY _ZTI7S6404C3[];
extern  VTBL_ENTRY _ZTV7S6404C3[];
extern Class_Descriptor cd_S6404C5;
extern VTBL_ENTRY _ZTI7S6404C5[];
extern  VTBL_ENTRY _ZTV7S6404C5[];
extern Class_Descriptor cd_S6404C4;
extern VTBL_ENTRY _ZTI7S6404C4[];
extern  VTBL_ENTRY _ZTV7S6404C4[];
extern Class_Descriptor cd_S6404C9;
extern VTBL_ENTRY _ZTI7S6404C9[];
extern  VTBL_ENTRY _ZTV7S6404C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6404C9[];
extern Class_Descriptor cd_S6404C8;
extern VTBL_ENTRY _ZTI7S6404C8[];
extern  VTBL_ENTRY _ZTV7S6404C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6404C8[];
static Base_Class bases_S6404C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6404C6,    ABISELECT(64,56), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6404C4,    ABISELECT(72,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6404C6,    ABISELECT(88,68), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6404C3,    ABISELECT(96,72), //bcp->offset
    55, //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6404C5,    ABISELECT(72,60), //bcp->offset
    31, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6404C4,    ABISELECT(104,76), //bcp->offset
    60, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6404C9,    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_S6404C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6404C7[];
extern void _ZN7S6404C7D1Ev();
extern void _ZN7S6404C7D0Ev();
extern void _ZN7S6404C93v14Ev();
extern void _ZN7S6404C93v15Ev();
extern void _ZN7S6404C93v16Ev();
extern void _ZN7S6404C93v17Ev();
extern void _ZN7S6404C83v18Ev();
extern void _ZN7S6404C83v19Ev();
extern void _ZN7S6404C83v20Ev();
extern void _ZN7S6404C83v21Ev();
extern void _ZN7S6404C83v22Ev();
extern void _ZN7S6404C83v23Ev();
extern void _ZN7S6404C73v24Ev();
extern void _ZN7S6404C73v25Ev();
extern void _ZN7S6404C73v26Ev();
extern void _ZN7S6404C73v27Ev();
extern void _ZN7S6404C73v28Ev();
extern void _ZN7S6404C73v29Ev();
extern void _ZN7S6404C73v30Ev();
extern void ABISELECT(_ZTv0_n24_N7S6404C7D1Ev,_ZTv0_n12_N7S6404C7D1Ev)();
extern void ABISELECT(_ZThn64_N7S6404C7D1Ev,_ZThn56_N7S6404C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6404C7D0Ev,_ZTv0_n12_N7S6404C7D0Ev)();
extern void ABISELECT(_ZThn64_N7S6404C7D0Ev,_ZThn56_N7S6404C7D0Ev)() __attribute__((weak));
extern void _ZN7S6404C63v11Ev();
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
extern void ABISELECT(_ZTv0_n64_N7S6404C7D1Ev,_ZTv0_n32_N7S6404C7D1Ev)();
extern void ABISELECT(_ZThn72_N7S6404C7D1Ev,_ZThn60_N7S6404C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6404C7D0Ev,_ZTv0_n32_N7S6404C7D0Ev)();
extern void ABISELECT(_ZThn72_N7S6404C7D0Ev,_ZThn60_N7S6404C7D0Ev)() __attribute__((weak));
extern void _ZN7S6404C53v13Ev();
extern void ABISELECT(_ZTvn16_n64_N7S6404C7D1Ev,_ZTvn8_n32_N7S6404C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S6404C7D0Ev,_ZTvn8_n32_N7S6404C7D0Ev)();
extern void _ZN7S6404C63v11Ev();
extern void ABISELECT(_ZTvn24_n64_N7S6404C7D1Ev,_ZTvn12_n32_N7S6404C7D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S6404C7D0Ev,_ZTvn12_n32_N7S6404C7D0Ev)();
extern void _ZN7S6404C33v12Ev();
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY vtc_S6404C7[] = {
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&_ZN7S6404C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v15Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v16Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v17Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v18Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v19Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v20Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v21Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v22Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v23Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v24Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v25Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v26Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v27Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v28Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v29Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v30Ev,
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C7D1Ev,_ZTv0_n12_N7S6404C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C7D0Ev,_ZTv0_n12_N7S6404C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-60),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C7D1Ev,_ZTv0_n32_N7S6404C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C7D0Ev,_ZTv0_n32_N7S6404C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C53v13Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C7D1Ev,_ZTvn8_n32_N7S6404C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C7D0Ev,_ZTvn8_n32_N7S6404C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C7D1Ev,_ZTvn12_n32_N7S6404C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C7D0Ev,_ZTvn12_n32_N7S6404C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C33v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
extern VTBL_ENTRY _ZTV7S6404C7[];
extern void _ZN7S6404C8D1Ev();
extern void _ZN7S6404C8D0Ev();
extern void _ZN7S6404C93v14Ev();
extern void _ZN7S6404C93v15Ev();
extern void _ZN7S6404C93v16Ev();
extern void _ZN7S6404C93v17Ev();
extern void _ZN7S6404C83v18Ev();
extern void _ZN7S6404C83v19Ev();
extern void _ZN7S6404C83v20Ev();
extern void _ZN7S6404C83v21Ev();
extern void _ZN7S6404C83v22Ev();
extern void _ZN7S6404C83v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C8__7S6404C7[] = {
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&_ZN7S6404C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v15Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v16Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v17Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v18Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v19Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v20Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v21Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v22Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v23Ev,
};
extern void _ZN7S6404C9D1Ev();
extern void _ZN7S6404C9D0Ev();
extern void _ZN7S6404C93v14Ev();
extern void _ZN7S6404C93v15Ev();
extern void _ZN7S6404C93v16Ev();
extern void _ZN7S6404C93v17Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C97S6404C8__7S6404C7[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C9[0]),
  (VTBL_ENTRY)&_ZN7S6404C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v15Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v16Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v17Ev,
};
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C4__7S6404C97S6404C8__7S6404C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S6404C9[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6404C8D1Ev,_ZTv0_n12_N7S6404C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S6404C8D1Ev,_ZThn56_N7S6404C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6404C8D0Ev,_ZTv0_n12_N7S6404C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S6404C8D0Ev,_ZThn56_N7S6404C8D0Ev)() __attribute__((weak));
extern void _ZN7S6404C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C6__7S6404C8__7S6404C7[] = {
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C8D1Ev,_ZTv0_n12_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C8D0Ev,_ZTv0_n12_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
};
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
extern void ABISELECT(_ZTv0_n64_N7S6404C8D1Ev,_ZTv0_n32_N7S6404C8D1Ev)();
extern void ABISELECT(_ZThn72_N7S6404C8D1Ev,_ZThn60_N7S6404C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6404C8D0Ev,_ZTv0_n32_N7S6404C8D0Ev)();
extern void ABISELECT(_ZThn72_N7S6404C8D0Ev,_ZThn60_N7S6404C8D0Ev)() __attribute__((weak));
extern void _ZN7S6404C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C5__7S6404C8__7S6404C7[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-60),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C8D1Ev,_ZTv0_n32_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C8D0Ev,_ZTv0_n32_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C53v13Ev,
};
extern void ABISELECT(_ZTvn16_n64_N7S6404C8D1Ev,_ZTvn8_n32_N7S6404C8D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S6404C8D0Ev,_ZTvn8_n32_N7S6404C8D0Ev)();
extern void _ZN7S6404C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C67S6404C5__A1__7S6404C8__7S6404C7[] = {
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C8D1Ev,_ZTvn8_n32_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C8D0Ev,_ZTvn8_n32_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
};
extern void ABISELECT(_ZTvn24_n64_N7S6404C8D1Ev,_ZTvn12_n32_N7S6404C8D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S6404C8D0Ev,_ZTvn12_n32_N7S6404C8D0Ev)();
extern void _ZN7S6404C33v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C37S6404C5__7S6404C8__7S6404C7[] = {
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C8D1Ev,_ZTvn12_n32_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C8D0Ev,_ZTvn12_n32_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C33v12Ev,
};
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C4__A1__7S6404C8__7S6404C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
static  VTT_ENTRY vtt_S6404C7[] = {
  {&(_ZTV7S6404C7[5]),  5,72},
  {&(_tg__ZTV7S6404C8__7S6404C7[5]),  5,17},
  {&(_tg__ZTV7S6404C97S6404C8__7S6404C7[3]),  3,9},
  {&(_tg__ZTV7S6404C4__7S6404C97S6404C8__7S6404C7[7]),  7,12},
  {&(_tg__ZTV7S6404C6__7S6404C8__7S6404C7[4]),  4,7},
  {&(_tg__ZTV7S6404C5__7S6404C8__7S6404C7[11]),  11,19},
  {&(_tg__ZTV7S6404C67S6404C5__A1__7S6404C8__7S6404C7[2]),  2,5},
  {&(_tg__ZTV7S6404C37S6404C5__7S6404C8__7S6404C7[2]),  2,5},
  {&(_tg__ZTV7S6404C4__A1__7S6404C8__7S6404C7[7]),  7,12},
  {&(_ZTV7S6404C7[28]),  28,72},
  {&(_ZTV7S6404C7[42]),  42,72},
  {&(_ZTV7S6404C7[52]),  52,72},
  {&(_ZTV7S6404C7[57]),  57,72},
  {&(_ZTV7S6404C7[67]),  67,72},
};
extern VTBL_ENTRY _ZTI7S6404C7[];
extern  VTBL_ENTRY _ZTV7S6404C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6404C7[];
static VTBL_ENTRY alt_thunk_names138[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6404C8D0Ev,_ZTv0_n32_N7S6404C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6404C8D0Ev,_ZThn60_N7S6404C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6404C8D1Ev,_ZTv0_n32_N7S6404C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6404C8D1Ev,_ZThn60_N7S6404C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C8D0Ev,_ZTv0_n12_N7S6404C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6404C8D0Ev,_ZThn56_N7S6404C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C8D1Ev,_ZTv0_n12_N7S6404C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6404C8D1Ev,_ZThn56_N7S6404C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6404C7D0Ev,_ZTv0_n32_N7S6404C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6404C7D0Ev,_ZThn60_N7S6404C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6404C7D1Ev,_ZTv0_n32_N7S6404C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6404C7D1Ev,_ZThn60_N7S6404C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C7D0Ev,_ZTv0_n12_N7S6404C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6404C7D0Ev,_ZThn56_N7S6404C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C7D1Ev,_ZTv0_n12_N7S6404C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6404C7D1Ev,_ZThn56_N7S6404C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6404C7 = {  "S6404C7", // class name
  bases_S6404C7, 8,
  &(vtc_S6404C7[0]), // expected_vtbl_contents
  &(vtt_S6404C7[0]), // expected_vtt_contents
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI7S6404C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6404C7),72, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6404C7),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names138,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6404C1  : S6404C2 , S6404C4 , virtual S6404C5 , virtual S6404C7 {
  int s6404c1f0;
  ~S6404C1(); // tgen
  S6404C1(); // tgen
};
//SIG(1 S6404C1) C1{ BC2{ v1 v2 v3 v4 v5 FC3{ vd v12} Fi} BC4{ v6 v7 v8 v9 v10 Fl} VBC5{ BC4 BC6{ vd v11} BC3 vd v13} VBC7{ BC8{ VBC6 VBC5 BC9{ VBC4 vd v14 v15 v16 v17 Fi} vd v18 v19 v20 v21 v22 v23 Fi[10] Fc Fi Fc:0} vd v24 v25 v26 v27 v28 v29 v30} Fi}


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

static void Test_S6404C1()
{
  extern Class_Descriptor cd_S6404C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,28)];
    init_test(&cd_S6404C1, buf);
    S6404C1 *dp, &lv = *(dp=new (buf) S6404C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,108), "sizeof(S6404C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6404C1)");
    check_base_class_offset(lv, (S6404C2*), 0, "S6404C1");
    /*is_ambiguous_... S6404C1::S6404C4 */ AMB_check_base_class_offset(lv, (S6404C4*), ABISELECT(24,12), "S6404C1");
    check_base_class_offset(lv, (S6404C4*)(S6404C5*), ABISELECT(48,24), "S6404C1");
    check_base_class_offset(lv, (S6404C6*)(S6404C5*), ABISELECT(64,32), "S6404C1");
    check_base_class_offset(lv, (S6404C3*)(S6404C5*), ABISELECT(72,36), "S6404C1");
    check_base_class_offset(lv, (S6404C5*), ABISELECT(48,24), "S6404C1");
    check_base_class_offset(lv, (S6404C5*)(S6404C8*)(S6404C7*), ABISELECT(48,24), "S6404C1");
    /*is_ambiguous_... S6404C8::S6404C6 */ AMB_check_base_class_offset(lv, (S6404C6*)(S6404C8*)(S6404C7*), ABISELECT(144,96), "S6404C1");
    check_base_class_offset(lv, (S6404C4*)(S6404C9*)(S6404C8*)(S6404C7*), ABISELECT(152,100), "S6404C1");
    check_base_class_offset(lv, (S6404C9*)(S6404C8*)(S6404C7*), ABISELECT(80,40), "S6404C1");
    check_base_class_offset(lv, (S6404C8*)(S6404C7*), ABISELECT(80,40), "S6404C1");
    check_base_class_offset(lv, (S6404C7*), ABISELECT(80,40), "S6404C1");
    check_field_offset(lv, s6404c1f0, ABISELECT(40,20), "S6404C1.s6404c1f0");
    test_class_info(&lv, &cd_S6404C1);
    dp->~S6404C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6404C1(Test_S6404C1, "S6404C1", ABISELECT(168,108));

#else // __cplusplus

extern void _ZN7S6404C1C1Ev();
extern void _ZN7S6404C1D1Ev();
Name_Map name_map_S6404C1[] = {
  NSPAIR(_ZN7S6404C1C1Ev),
  NSPAIR(_ZN7S6404C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6404C2;
extern VTBL_ENTRY _ZTI7S6404C2[];
extern  VTBL_ENTRY _ZTV7S6404C2[];
extern Class_Descriptor cd_S6404C4;
extern VTBL_ENTRY _ZTI7S6404C4[];
extern  VTBL_ENTRY _ZTV7S6404C4[];
extern Class_Descriptor cd_S6404C4;
extern VTBL_ENTRY _ZTI7S6404C4[];
extern  VTBL_ENTRY _ZTV7S6404C4[];
extern Class_Descriptor cd_S6404C6;
extern VTBL_ENTRY _ZTI7S6404C6[];
extern  VTBL_ENTRY _ZTV7S6404C6[];
extern Class_Descriptor cd_S6404C3;
extern VTBL_ENTRY _ZTI7S6404C3[];
extern  VTBL_ENTRY _ZTV7S6404C3[];
extern Class_Descriptor cd_S6404C5;
extern VTBL_ENTRY _ZTI7S6404C5[];
extern  VTBL_ENTRY _ZTV7S6404C5[];
extern Class_Descriptor cd_S6404C6;
extern VTBL_ENTRY _ZTI7S6404C6[];
extern  VTBL_ENTRY _ZTV7S6404C6[];
extern Class_Descriptor cd_S6404C4;
extern VTBL_ENTRY _ZTI7S6404C4[];
extern  VTBL_ENTRY _ZTV7S6404C4[];
extern Class_Descriptor cd_S6404C9;
extern VTBL_ENTRY _ZTI7S6404C9[];
extern  VTBL_ENTRY _ZTV7S6404C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6404C9[];
extern Class_Descriptor cd_S6404C8;
extern VTBL_ENTRY _ZTI7S6404C8[];
extern  VTBL_ENTRY _ZTV7S6404C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6404C8[];
extern Class_Descriptor cd_S6404C7;
extern VTBL_ENTRY _ZTI7S6404C7[];
extern  VTBL_ENTRY _ZTV7S6404C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6404C7[];
static Base_Class bases_S6404C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6404C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6404C4,    ABISELECT(24,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6404C4,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6404C6,    ABISELECT(64,32), //bcp->offset
    39, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6404C3,    ABISELECT(72,36), //bcp->offset
    44, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6404C5,    ABISELECT(48,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6404C6,    ABISELECT(144,96), //bcp->offset
    91, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6404C4,    ABISELECT(152,100), //bcp->offset
    98, //bcp->virtual_function_table_offset
    7, //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
    8, //immediately_derived
  0, 1},
  {&cd_S6404C9,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6404C8,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6404C7,    ABISELECT(80,40), //bcp->offset
    49, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6404C1[];
extern void _ZN7S6404C22v1Ev();
extern void _ZN7S6404C22v2Ev();
extern void _ZN7S6404C22v3Ev();
extern void _ZN7S6404C22v4Ev();
extern void _ZN7S6404C22v5Ev();
extern void _ZN7S6404C1D1Ev();
extern void _ZN7S6404C1D0Ev();
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
extern void ABISELECT(_ZTv0_n64_N7S6404C1D1Ev,_ZTv0_n32_N7S6404C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S6404C1D1Ev,_ZThn24_N7S6404C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6404C1D0Ev,_ZTv0_n32_N7S6404C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S6404C1D0Ev,_ZThn24_N7S6404C1D0Ev)() __attribute__((weak));
extern void _ZN7S6404C53v13Ev();
extern void ABISELECT(_ZTvn16_n64_N7S6404C1D1Ev,_ZTvn8_n32_N7S6404C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S6404C1D0Ev,_ZTvn8_n32_N7S6404C1D0Ev)();
extern void _ZN7S6404C63v11Ev();
extern void ABISELECT(_ZTvn24_n64_N7S6404C1D1Ev,_ZTvn12_n32_N7S6404C1D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S6404C1D0Ev,_ZTvn12_n32_N7S6404C1D0Ev)();
extern void _ZN7S6404C33v12Ev();
extern void ABISELECT(_ZTv0_n48_N7S6404C1D1Ev,_ZTv0_n24_N7S6404C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S6404C1D1Ev,_ZThn40_N7S6404C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6404C1D0Ev,_ZTv0_n24_N7S6404C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S6404C1D0Ev,_ZThn40_N7S6404C1D0Ev)() __attribute__((weak));
extern void _ZN7S6404C93v14Ev();
extern void _ZN7S6404C93v15Ev();
extern void _ZN7S6404C93v16Ev();
extern void _ZN7S6404C93v17Ev();
extern void _ZN7S6404C83v18Ev();
extern void _ZN7S6404C83v19Ev();
extern void _ZN7S6404C83v20Ev();
extern void _ZN7S6404C83v21Ev();
extern void _ZN7S6404C83v22Ev();
extern void _ZN7S6404C83v23Ev();
extern void _ZN7S6404C73v24Ev();
extern void _ZN7S6404C73v25Ev();
extern void _ZN7S6404C73v26Ev();
extern void _ZN7S6404C73v27Ev();
extern void _ZN7S6404C73v28Ev();
extern void _ZN7S6404C73v29Ev();
extern void _ZN7S6404C73v30Ev();
extern void ABISELECT(_ZTv0_n24_N7S6404C1D1Ev,_ZTv0_n12_N7S6404C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S6404C1D1Ev,_ZThn96_N7S6404C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6404C1D0Ev,_ZTv0_n12_N7S6404C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S6404C1D0Ev,_ZThn96_N7S6404C1D0Ev)() __attribute__((weak));
extern void _ZN7S6404C63v11Ev();
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY vtc_S6404C1[] = {
  ABISELECT(152,100),
  ABISELECT(144,96),
  ABISELECT(80,40),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C1[0]),
  (VTBL_ENTRY)&_ZN7S6404C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6404C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6404C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6404C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6404C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6404C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C1D0Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6404C1[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-48,-24),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S6404C1[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C1D1Ev,_ZTv0_n32_N7S6404C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C1D0Ev,_ZTv0_n32_N7S6404C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C53v13Ev,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S6404C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C1D1Ev,_ZTvn8_n32_N7S6404C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C1D0Ev,_ZTvn8_n32_N7S6404C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S6404C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C1D1Ev,_ZTvn12_n32_N7S6404C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C1D0Ev,_ZTvn12_n32_N7S6404C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C33v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(64,56),
  ABISELECT(72,60),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S6404C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6404C1D1Ev,_ZTv0_n24_N7S6404C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6404C1D0Ev,_ZTv0_n24_N7S6404C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v15Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v16Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v17Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v18Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v19Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v20Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v21Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v22Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v23Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v24Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v25Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v26Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v27Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v28Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v29Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v30Ev,
  0,
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S6404C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C1D1Ev,_ZTv0_n12_N7S6404C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C1D0Ev,_ZTv0_n12_N7S6404C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S6404C1[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
extern VTBL_ENTRY _ZTV7S6404C1[];
extern void _ZN7S6404C7D1Ev();
extern void _ZN7S6404C7D0Ev();
extern void _ZN7S6404C93v14Ev();
extern void _ZN7S6404C93v15Ev();
extern void _ZN7S6404C93v16Ev();
extern void _ZN7S6404C93v17Ev();
extern void _ZN7S6404C83v18Ev();
extern void _ZN7S6404C83v19Ev();
extern void _ZN7S6404C83v20Ev();
extern void _ZN7S6404C83v21Ev();
extern void _ZN7S6404C83v22Ev();
extern void _ZN7S6404C83v23Ev();
extern void _ZN7S6404C73v24Ev();
extern void _ZN7S6404C73v25Ev();
extern void _ZN7S6404C73v26Ev();
extern void _ZN7S6404C73v27Ev();
extern void _ZN7S6404C73v28Ev();
extern void _ZN7S6404C73v29Ev();
extern void _ZN7S6404C73v30Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C7__7S6404C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(64,56),
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&_ZN7S6404C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v15Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v16Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v17Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v18Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v19Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v20Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v21Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v22Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v23Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v24Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v25Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v26Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v27Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v28Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v29Ev,
  (VTBL_ENTRY)&_ZN7S6404C73v30Ev,
};
extern void _ZN7S6404C8D1Ev();
extern void _ZN7S6404C8D0Ev();
extern void _ZN7S6404C93v14Ev();
extern void _ZN7S6404C93v15Ev();
extern void _ZN7S6404C93v16Ev();
extern void _ZN7S6404C93v17Ev();
extern void _ZN7S6404C83v18Ev();
extern void _ZN7S6404C83v19Ev();
extern void _ZN7S6404C83v20Ev();
extern void _ZN7S6404C83v21Ev();
extern void _ZN7S6404C83v22Ev();
extern void _ZN7S6404C83v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C87S6404C7__7S6404C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(64,56),
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&_ZN7S6404C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v15Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v16Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v17Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v18Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v19Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v20Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v21Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v22Ev,
  (VTBL_ENTRY)&_ZN7S6404C83v23Ev,
};
extern void _ZN7S6404C9D1Ev();
extern void _ZN7S6404C9D0Ev();
extern void _ZN7S6404C93v14Ev();
extern void _ZN7S6404C93v15Ev();
extern void _ZN7S6404C93v16Ev();
extern void _ZN7S6404C93v17Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C97S6404C87S6404C7__7S6404C1[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S6404C9[0]),
  (VTBL_ENTRY)&_ZN7S6404C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6404C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v14Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v15Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v16Ev,
  (VTBL_ENTRY)&_ZN7S6404C93v17Ev,
};
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C4__7S6404C97S6404C87S6404C7__7S6404C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S6404C9[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6404C8D1Ev,_ZTv0_n12_N7S6404C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S6404C8D1Ev,_ZThn56_N7S6404C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6404C8D0Ev,_ZTv0_n12_N7S6404C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S6404C8D0Ev,_ZThn56_N7S6404C8D0Ev)() __attribute__((weak));
extern void _ZN7S6404C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C6__7S6404C87S6404C7__7S6404C1[] = {
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C8D1Ev,_ZTv0_n12_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C8D0Ev,_ZTv0_n12_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
};
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
extern void ABISELECT(_ZTv0_n64_N7S6404C8D1Ev,_ZTv0_n32_N7S6404C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S6404C8D0Ev,_ZTv0_n32_N7S6404C8D0Ev)();
extern void _ZN7S6404C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C5__7S6404C87S6404C7__7S6404C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C8D1Ev,_ZTv0_n32_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C8D0Ev,_ZTv0_n32_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C53v13Ev,
};
extern void ABISELECT(_ZTvn16_n64_N7S6404C8D1Ev,_ZTvn8_n32_N7S6404C8D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S6404C8D0Ev,_ZTvn8_n32_N7S6404C8D0Ev)();
extern void _ZN7S6404C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C67S6404C5__A1__7S6404C87S6404C7__7S6404C1[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C8D1Ev,_ZTvn8_n32_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C8D0Ev,_ZTvn8_n32_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
};
extern void ABISELECT(_ZTvn24_n64_N7S6404C8D1Ev,_ZTvn12_n32_N7S6404C8D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S6404C8D0Ev,_ZTvn12_n32_N7S6404C8D0Ev)();
extern void _ZN7S6404C33v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C37S6404C5__7S6404C87S6404C7__7S6404C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C8D1Ev,_ZTvn12_n32_N7S6404C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C8D0Ev,_ZTvn12_n32_N7S6404C8D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C33v12Ev,
};
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C4__A1__7S6404C87S6404C7__7S6404C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S6404C8[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6404C7D1Ev,_ZTv0_n12_N7S6404C7D1Ev)();
extern void ABISELECT(_ZThn64_N7S6404C7D1Ev,_ZThn56_N7S6404C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6404C7D0Ev,_ZTv0_n12_N7S6404C7D0Ev)();
extern void ABISELECT(_ZThn64_N7S6404C7D0Ev,_ZThn56_N7S6404C7D0Ev)() __attribute__((weak));
extern void _ZN7S6404C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C6__7S6404C7__7S6404C1[] = {
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C7D1Ev,_ZTv0_n12_N7S6404C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6404C7D0Ev,_ZTv0_n12_N7S6404C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
};
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
extern void ABISELECT(_ZTv0_n64_N7S6404C7D1Ev,_ZTv0_n32_N7S6404C7D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S6404C7D0Ev,_ZTv0_n32_N7S6404C7D0Ev)();
extern void _ZN7S6404C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C5__7S6404C7__7S6404C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C7D1Ev,_ZTv0_n32_N7S6404C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6404C7D0Ev,_ZTv0_n32_N7S6404C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C53v13Ev,
};
extern void ABISELECT(_ZTvn16_n64_N7S6404C7D1Ev,_ZTvn8_n32_N7S6404C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S6404C7D0Ev,_ZTvn8_n32_N7S6404C7D0Ev)();
extern void _ZN7S6404C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C67S6404C5__A1__7S6404C7__7S6404C1[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C7D1Ev,_ZTvn8_n32_N7S6404C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S6404C7D0Ev,_ZTvn8_n32_N7S6404C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C63v11Ev,
};
extern void ABISELECT(_ZTvn24_n64_N7S6404C7D1Ev,_ZTvn12_n32_N7S6404C7D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S6404C7D0Ev,_ZTvn12_n32_N7S6404C7D0Ev)();
extern void _ZN7S6404C33v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C37S6404C5__7S6404C7__7S6404C1[] = {
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C7D1Ev,_ZTvn12_n32_N7S6404C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S6404C7D0Ev,_ZTvn12_n32_N7S6404C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6404C33v12Ev,
};
extern void _ZN7S6404C42v6Ev();
extern void _ZN7S6404C42v7Ev();
extern void _ZN7S6404C42v8Ev();
extern void _ZN7S6404C42v9Ev();
extern void _ZN7S6404C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S6404C4__A1__7S6404C7__7S6404C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S6404C7[0]),
  (VTBL_ENTRY)&_ZN7S6404C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v8Ev,
  (VTBL_ENTRY)&_ZN7S6404C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6404C43v10Ev,
};
static  VTT_ENTRY vtt_S6404C1[] = {
  {&(_ZTV7S6404C1[6]),  6,110},
  {&(_ZTV7S6404C1[31]),  31,110},
  {&(_ZTV7S6404C1[41]),  41,110},
  {&(_ZTV7S6404C1[46]),  46,110},
  {&(_ZTV7S6404C1[72]),  72,110},
  {&(_ZTV7S6404C1[95]),  95,110},
  {&(_ZTV7S6404C1[105]),  105,110},
  {&(_tg__ZTV7S6404C7__7S6404C1[5]),  5,24},
  {&(_tg__ZTV7S6404C87S6404C7__7S6404C1[5]),  5,17},
  {&(_tg__ZTV7S6404C97S6404C87S6404C7__7S6404C1[3]),  3,9},
  {&(_tg__ZTV7S6404C4__7S6404C97S6404C87S6404C7__7S6404C1[7]),  7,12},
  {&(_tg__ZTV7S6404C6__7S6404C87S6404C7__7S6404C1[4]),  4,7},
  {&(_tg__ZTV7S6404C5__7S6404C87S6404C7__7S6404C1[11]),  11,19},
  {&(_tg__ZTV7S6404C67S6404C5__A1__7S6404C87S6404C7__7S6404C1[2]),  2,5},
  {&(_tg__ZTV7S6404C37S6404C5__7S6404C87S6404C7__7S6404C1[2]),  2,5},
  {&(_tg__ZTV7S6404C4__A1__7S6404C87S6404C7__7S6404C1[7]),  7,12},
  {&(_tg__ZTV7S6404C6__7S6404C7__7S6404C1[4]),  4,7},
  {&(_tg__ZTV7S6404C5__7S6404C7__7S6404C1[11]),  11,19},
  {&(_tg__ZTV7S6404C67S6404C5__A1__7S6404C7__7S6404C1[2]),  2,5},
  {&(_tg__ZTV7S6404C37S6404C5__7S6404C7__7S6404C1[2]),  2,5},
  {&(_tg__ZTV7S6404C4__A1__7S6404C7__7S6404C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S6404C1[];
extern  VTBL_ENTRY _ZTV7S6404C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6404C1[];
static VTBL_ENTRY alt_thunk_names139[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C7D0Ev,_ZTv0_n12_N7S6404C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6404C7D0Ev,_ZThn56_N7S6404C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C7D1Ev,_ZTv0_n12_N7S6404C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6404C7D1Ev,_ZThn56_N7S6404C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C8D0Ev,_ZTv0_n12_N7S6404C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6404C8D0Ev,_ZThn56_N7S6404C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C8D1Ev,_ZTv0_n12_N7S6404C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6404C8D1Ev,_ZThn56_N7S6404C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C1D0Ev,_ZTv0_n12_N7S6404C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6404C1D0Ev,_ZThn96_N7S6404C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6404C1D1Ev,_ZTv0_n12_N7S6404C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6404C1D1Ev,_ZThn96_N7S6404C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6404C1D0Ev,_ZTv0_n24_N7S6404C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6404C1D0Ev,_ZThn40_N7S6404C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6404C1D1Ev,_ZTv0_n24_N7S6404C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6404C1D1Ev,_ZThn40_N7S6404C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6404C1D0Ev,_ZTv0_n32_N7S6404C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6404C1D0Ev,_ZThn24_N7S6404C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6404C1D1Ev,_ZTv0_n32_N7S6404C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6404C1D1Ev,_ZThn24_N7S6404C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6404C1 = {  "S6404C1", // class name
  bases_S6404C1, 11,
  &(vtc_S6404C1[0]), // expected_vtbl_contents
  &(vtt_S6404C1[0]), // expected_vtt_contents
  ABISELECT(168,108), // object size
  NSPAIRA(_ZTI7S6404C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6404C1),110, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6404C1),21, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names139,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5301C3  {
  int s5301c3f0;
  char s5301c3f1[3];
  virtual  ~S5301C3(); // _ZN7S5301C3D1Ev
  virtual void  v6(); // _ZN7S5301C32v6Ev
  virtual void  v7(); // _ZN7S5301C32v7Ev
  S5301C3(); // tgen
};
//SIG(-1 S5301C3) C1{ vd v1 v2 Fi Fc[3]}


 S5301C3 ::~S5301C3(){ note_dtor("S5301C3", this);}
void  S5301C3 ::v6(){vfunc_called(this, "_ZN7S5301C32v6Ev");}
void  S5301C3 ::v7(){vfunc_called(this, "_ZN7S5301C32v7Ev");}
S5301C3 ::S5301C3(){ note_ctor("S5301C3", this);} // tgen

static void Test_S5301C3()
{
  extern Class_Descriptor cd_S5301C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5301C3, buf);
    S5301C3 *dp, &lv = *(dp=new (buf) S5301C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5301C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5301C3)");
    check_field_offset(lv, s5301c3f0, ABISELECT(8,4), "S5301C3.s5301c3f0");
    check_field_offset(lv, s5301c3f1, ABISELECT(12,8), "S5301C3.s5301c3f1");
    test_class_info(&lv, &cd_S5301C3);
    dp->~S5301C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5301C3(Test_S5301C3, "S5301C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S5301C3C1Ev();
extern void _ZN7S5301C3D1Ev();
Name_Map name_map_S5301C3[] = {
  NSPAIR(_ZN7S5301C3C1Ev),
  NSPAIR(_ZN7S5301C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5301C3[];
extern void _ZN7S5301C3D1Ev();
extern void _ZN7S5301C3D0Ev();
extern void _ZN7S5301C32v6Ev();
extern void _ZN7S5301C32v7Ev();
static  VTBL_ENTRY vtc_S5301C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5301C3[0]),
  (VTBL_ENTRY)&_ZN7S5301C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5301C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5301C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5301C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S5301C3[];
extern  VTBL_ENTRY _ZTV7S5301C3[];
Class_Descriptor cd_S5301C3 = {  "S5301C3", // class name
  0,0,//no base classes
  &(vtc_S5301C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S5301C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5301C3),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  S5301C2  : S5301C3 , S5228C4_nt {
  ::S5228C5 s5301c2f0;
  ::S5228C7 s5301c2f1;
  void *s5301c2f2;
  char s5301c2f3;
  virtual  ~S5301C2(); // _ZN7S5301C2D1Ev
  virtual void  v8(); // _ZN7S5301C22v8Ev
  virtual void  v9(); // _ZN7S5301C22v9Ev
  virtual void  v10(); // _ZN7S5301C23v10Ev
  virtual void  v11(); // _ZN7S5301C23v11Ev
  virtual void  v12(); // _ZN7S5301C23v12Ev
  virtual void  v13(); // _ZN7S5301C23v13Ev
  virtual void  v14(); // _ZN7S5301C23v14Ev
  virtual void  v15(); // _ZN7S5301C23v15Ev
  virtual void  v16(); // _ZN7S5301C23v16Ev
  S5301C2(); // tgen
};
//SIG(-1 S5301C2) C1{ BC2{ vd v10 v11 Fi Fc[3]} BC3{ vd m} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ BC5{ vd v20 v21 v22 v23 v24 v25 v26 v27 v28 Fp} vd v12 v13 v14 v15 v16 v17 v18 v19 Fi[2] Fp} FC6{ m Fi[3] Fc} Fp Fc}


 S5301C2 ::~S5301C2(){ note_dtor("S5301C2", this);}
void  S5301C2 ::v8(){vfunc_called(this, "_ZN7S5301C22v8Ev");}
void  S5301C2 ::v9(){vfunc_called(this, "_ZN7S5301C22v9Ev");}
void  S5301C2 ::v10(){vfunc_called(this, "_ZN7S5301C23v10Ev");}
void  S5301C2 ::v11(){vfunc_called(this, "_ZN7S5301C23v11Ev");}
void  S5301C2 ::v12(){vfunc_called(this, "_ZN7S5301C23v12Ev");}
void  S5301C2 ::v13(){vfunc_called(this, "_ZN7S5301C23v13Ev");}
void  S5301C2 ::v14(){vfunc_called(this, "_ZN7S5301C23v14Ev");}
void  S5301C2 ::v15(){vfunc_called(this, "_ZN7S5301C23v15Ev");}
void  S5301C2 ::v16(){vfunc_called(this, "_ZN7S5301C23v16Ev");}
S5301C2 ::S5301C2(){ note_ctor("S5301C2", this);} // tgen

static void Test_S5301C2()
{
  extern Class_Descriptor cd_S5301C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S5301C2, buf);
    S5301C2 *dp, &lv = *(dp=new (buf) S5301C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S5301C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5301C2)");
    check_base_class_offset(lv, (S5301C3*), 0, "S5301C2");
    check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(16,12), "S5301C2");
    check_field_offset(lv, s5301c2f0, ABISELECT(24,16), "S5301C2.s5301c2f0");
    check_field_offset(lv, s5301c2f1, ABISELECT(56,36), "S5301C2.s5301c2f1");
    check_field_offset(lv, s5301c2f2, ABISELECT(72,52), "S5301C2.s5301c2f2");
    check_field_offset(lv, s5301c2f3, ABISELECT(80,56), "S5301C2.s5301c2f3");
    test_class_info(&lv, &cd_S5301C2);
    dp->~S5301C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5301C2(Test_S5301C2, "S5301C2", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S5301C2C1Ev();
extern void _ZN7S5301C2D1Ev();
Name_Map name_map_S5301C2[] = {
  NSPAIR(_ZN7S5301C2C1Ev),
  NSPAIR(_ZN7S5301C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5301C3;
extern VTBL_ENTRY _ZTI7S5301C3[];
extern  VTBL_ENTRY _ZTV7S5301C3[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S5301C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5301C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5301C2[];
extern void _ZN7S5301C2D1Ev();
extern void _ZN7S5301C2D0Ev();
extern void _ZN7S5301C32v6Ev();
extern void _ZN7S5301C32v7Ev();
extern void _ZN7S5301C22v8Ev();
extern void _ZN7S5301C22v9Ev();
extern void _ZN7S5301C23v10Ev();
extern void _ZN7S5301C23v11Ev();
extern void _ZN7S5301C23v12Ev();
extern void _ZN7S5301C23v13Ev();
extern void _ZN7S5301C23v14Ev();
extern void _ZN7S5301C23v15Ev();
extern void _ZN7S5301C23v16Ev();
extern void ABISELECT(_ZThn16_N7S5301C2D1Ev,_ZThn12_N7S5301C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S5301C2D0Ev,_ZThn12_N7S5301C2D0Ev)();
static  VTBL_ENTRY vtc_S5301C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5301C2[0]),
  (VTBL_ENTRY)&_ZN7S5301C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5301C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5301C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5301C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5301C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5301C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v15Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v16Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5301C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5301C2D1Ev,_ZThn12_N7S5301C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5301C2D0Ev,_ZThn12_N7S5301C2D0Ev),
};
extern VTBL_ENTRY _ZTI7S5301C2[];
extern  VTBL_ENTRY _ZTV7S5301C2[];
Class_Descriptor cd_S5301C2 = {  "S5301C2", // class name
  bases_S5301C2, 2,
  &(vtc_S5301C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S5301C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5301C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5301C1  : S5301C2 {
  void *s5301c1f0[2];
  virtual  ~S5301C1(); // _ZN7S5301C1D1Ev
  virtual void  v1(); // _ZN7S5301C12v1Ev
  virtual void  v2(); // _ZN7S5301C12v2Ev
  virtual void  v3(); // _ZN7S5301C12v3Ev
  virtual void  v4(); // _ZN7S5301C12v4Ev
  virtual void  v5(); // _ZN7S5301C12v5Ev
  S5301C1(); // tgen
};
//SIG(1 S5301C1) C1{ BC2{ BC3{ vd v6 v7 Fi Fc[3]} BC4{ vd m} vd v8 v9 v10 v11 v12 v13 v14 v15 v16 FC5{ BC6{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp} vd v17 v18 v19 v20 v21 v22 v23 v24 Fi[2] Fp} FC7{ m Fi[3] Fc} Fp Fc} vd v1 v2 v3 v4 v5 Fp[2]}


 S5301C1 ::~S5301C1(){ note_dtor("S5301C1", this);}
void  S5301C1 ::v1(){vfunc_called(this, "_ZN7S5301C12v1Ev");}
void  S5301C1 ::v2(){vfunc_called(this, "_ZN7S5301C12v2Ev");}
void  S5301C1 ::v3(){vfunc_called(this, "_ZN7S5301C12v3Ev");}
void  S5301C1 ::v4(){vfunc_called(this, "_ZN7S5301C12v4Ev");}
void  S5301C1 ::v5(){vfunc_called(this, "_ZN7S5301C12v5Ev");}
S5301C1 ::S5301C1(){ note_ctor("S5301C1", this);} // tgen

static void Test_S5301C1()
{
  extern Class_Descriptor cd_S5301C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,18)];
    init_test(&cd_S5301C1, buf);
    S5301C1 *dp, &lv = *(dp=new (buf) S5301C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S5301C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5301C1)");
    check_base_class_offset(lv, (S5301C3*)(S5301C2*), 0, "S5301C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S5301C2*), ABISELECT(16,12), "S5301C1");
    check_base_class_offset(lv, (S5301C2*), 0, "S5301C1");
    check_field_offset(lv, s5301c1f0, ABISELECT(88,60), "S5301C1.s5301c1f0");
    test_class_info(&lv, &cd_S5301C1);
    dp->~S5301C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5301C1(Test_S5301C1, "S5301C1", ABISELECT(104,68));

#else // __cplusplus

extern void _ZN7S5301C1C1Ev();
extern void _ZN7S5301C1D1Ev();
Name_Map name_map_S5301C1[] = {
  NSPAIR(_ZN7S5301C1C1Ev),
  NSPAIR(_ZN7S5301C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5301C3;
extern VTBL_ENTRY _ZTI7S5301C3[];
extern  VTBL_ENTRY _ZTV7S5301C3[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5301C2;
extern VTBL_ENTRY _ZTI7S5301C2[];
extern  VTBL_ENTRY _ZTV7S5301C2[];
static Base_Class bases_S5301C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5301C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,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
    2, //immediately_derived
  0, 0},
  {&cd_S5301C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5301C1[];
extern void _ZN7S5301C1D1Ev();
extern void _ZN7S5301C1D0Ev();
extern void _ZN7S5301C32v6Ev();
extern void _ZN7S5301C32v7Ev();
extern void _ZN7S5301C22v8Ev();
extern void _ZN7S5301C22v9Ev();
extern void _ZN7S5301C23v10Ev();
extern void _ZN7S5301C23v11Ev();
extern void _ZN7S5301C23v12Ev();
extern void _ZN7S5301C23v13Ev();
extern void _ZN7S5301C23v14Ev();
extern void _ZN7S5301C23v15Ev();
extern void _ZN7S5301C23v16Ev();
extern void _ZN7S5301C12v1Ev();
extern void _ZN7S5301C12v2Ev();
extern void _ZN7S5301C12v3Ev();
extern void _ZN7S5301C12v4Ev();
extern void _ZN7S5301C12v5Ev();
extern void ABISELECT(_ZThn16_N7S5301C1D1Ev,_ZThn12_N7S5301C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S5301C1D0Ev,_ZThn12_N7S5301C1D0Ev)();
static  VTBL_ENTRY vtc_S5301C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5301C1[0]),
  (VTBL_ENTRY)&_ZN7S5301C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5301C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5301C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5301C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5301C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5301C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v15Ev,
  (VTBL_ENTRY)&_ZN7S5301C23v16Ev,
  (VTBL_ENTRY)&_ZN7S5301C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5301C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5301C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5301C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5301C12v5Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5301C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5301C1D1Ev,_ZThn12_N7S5301C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5301C1D0Ev,_ZThn12_N7S5301C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S5301C1[];
extern  VTBL_ENTRY _ZTV7S5301C1[];
Class_Descriptor cd_S5301C1 = {  "S5301C1", // class name
  bases_S5301C1, 3,
  &(vtc_S5301C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,68), // object size
  NSPAIRA(_ZTI7S5301C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5301C1),24, //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  S2231C4  {
  int s2231c4f0;
  char s2231c4f1[3];
  virtual  ~S2231C4(); // _ZN7S2231C4D1Ev
  virtual void  v4(); // _ZN7S2231C42v4Ev
  virtual void  v5(); // _ZN7S2231C42v5Ev
  S2231C4(); // tgen
};
//SIG(-1 S2231C4) C1{ vd v1 v2 Fi Fc[3]}


 S2231C4 ::~S2231C4(){ note_dtor("S2231C4", this);}
void  S2231C4 ::v4(){vfunc_called(this, "_ZN7S2231C42v4Ev");}
void  S2231C4 ::v5(){vfunc_called(this, "_ZN7S2231C42v5Ev");}
S2231C4 ::S2231C4(){ note_ctor("S2231C4", this);} // tgen

static void Test_S2231C4()
{
  extern Class_Descriptor cd_S2231C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2231C4, buf);
    S2231C4 *dp, &lv = *(dp=new (buf) S2231C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2231C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2231C4)");
    check_field_offset(lv, s2231c4f0, ABISELECT(8,4), "S2231C4.s2231c4f0");
    check_field_offset(lv, s2231c4f1, ABISELECT(12,8), "S2231C4.s2231c4f1");
    test_class_info(&lv, &cd_S2231C4);
    dp->~S2231C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2231C4(Test_S2231C4, "S2231C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2231C4C1Ev();
extern void _ZN7S2231C4D1Ev();
Name_Map name_map_S2231C4[] = {
  NSPAIR(_ZN7S2231C4C1Ev),
  NSPAIR(_ZN7S2231C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2231C4[];
extern void _ZN7S2231C4D1Ev();
extern void _ZN7S2231C4D0Ev();
extern void _ZN7S2231C42v4Ev();
extern void _ZN7S2231C42v5Ev();
static  VTBL_ENTRY vtc_S2231C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2231C4[0]),
  (VTBL_ENTRY)&_ZN7S2231C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2231C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2231C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2231C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2231C4[];
extern  VTBL_ENTRY _ZTV7S2231C4[];
Class_Descriptor cd_S2231C4 = {  "S2231C4", // class name
  0,0,//no base classes
  &(vtc_S2231C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2231C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2231C4),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  S2231C3  : S2231C4 , S5228C4_nt {
  ::S5228C5 s2231c3f0;
  ::S5228C7 s2231c3f1;
  void *s2231c3f2;
  char s2231c3f3;
  virtual  ~S2231C3(); // _ZN7S2231C3D1Ev
  virtual void  v6(); // _ZN7S2231C32v6Ev
  virtual void  v7(); // _ZN7S2231C32v7Ev
  virtual void  v8(); // _ZN7S2231C32v8Ev
  virtual void  v9(); // _ZN7S2231C32v9Ev
  virtual void  v10(); // _ZN7S2231C33v10Ev
  virtual void  v11(); // _ZN7S2231C33v11Ev
  virtual void  v12(); // _ZN7S2231C33v12Ev
  virtual void  v13(); // _ZN7S2231C33v13Ev
  virtual void  v14(); // _ZN7S2231C33v14Ev
  S2231C3(); // tgen
};
//SIG(-1 S2231C3) C1{ BC2{ vd v10 v11 Fi Fc[3]} BC3{ vd m} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ BC5{ vd v20 v21 v22 v23 v24 v25 v26 v27 v28 Fp} vd v12 v13 v14 v15 v16 v17 v18 v19 Fi[2] Fp} FC6{ m Fi[3] Fc} Fp Fc}


 S2231C3 ::~S2231C3(){ note_dtor("S2231C3", this);}
void  S2231C3 ::v6(){vfunc_called(this, "_ZN7S2231C32v6Ev");}
void  S2231C3 ::v7(){vfunc_called(this, "_ZN7S2231C32v7Ev");}
void  S2231C3 ::v8(){vfunc_called(this, "_ZN7S2231C32v8Ev");}
void  S2231C3 ::v9(){vfunc_called(this, "_ZN7S2231C32v9Ev");}
void  S2231C3 ::v10(){vfunc_called(this, "_ZN7S2231C33v10Ev");}
void  S2231C3 ::v11(){vfunc_called(this, "_ZN7S2231C33v11Ev");}
void  S2231C3 ::v12(){vfunc_called(this, "_ZN7S2231C33v12Ev");}
void  S2231C3 ::v13(){vfunc_called(this, "_ZN7S2231C33v13Ev");}
void  S2231C3 ::v14(){vfunc_called(this, "_ZN7S2231C33v14Ev");}
S2231C3 ::S2231C3(){ note_ctor("S2231C3", this);} // tgen

static void Test_S2231C3()
{
  extern Class_Descriptor cd_S2231C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S2231C3, buf);
    S2231C3 *dp, &lv = *(dp=new (buf) S2231C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S2231C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2231C3)");
    check_base_class_offset(lv, (S2231C4*), 0, "S2231C3");
    check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(16,12), "S2231C3");
    check_field_offset(lv, s2231c3f0, ABISELECT(24,16), "S2231C3.s2231c3f0");
    check_field_offset(lv, s2231c3f1, ABISELECT(56,36), "S2231C3.s2231c3f1");
    check_field_offset(lv, s2231c3f2, ABISELECT(72,52), "S2231C3.s2231c3f2");
    check_field_offset(lv, s2231c3f3, ABISELECT(80,56), "S2231C3.s2231c3f3");
    test_class_info(&lv, &cd_S2231C3);
    dp->~S2231C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2231C3(Test_S2231C3, "S2231C3", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S2231C3C1Ev();
extern void _ZN7S2231C3D1Ev();
Name_Map name_map_S2231C3[] = {
  NSPAIR(_ZN7S2231C3C1Ev),
  NSPAIR(_ZN7S2231C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2231C4;
extern VTBL_ENTRY _ZTI7S2231C4[];
extern  VTBL_ENTRY _ZTV7S2231C4[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S2231C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2231C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2231C3[];
extern void _ZN7S2231C3D1Ev();
extern void _ZN7S2231C3D0Ev();
extern void _ZN7S2231C42v4Ev();
extern void _ZN7S2231C42v5Ev();
extern void _ZN7S2231C32v6Ev();
extern void _ZN7S2231C32v7Ev();
extern void _ZN7S2231C32v8Ev();
extern void _ZN7S2231C32v9Ev();
extern void _ZN7S2231C33v10Ev();
extern void _ZN7S2231C33v11Ev();
extern void _ZN7S2231C33v12Ev();
extern void _ZN7S2231C33v13Ev();
extern void _ZN7S2231C33v14Ev();
extern void ABISELECT(_ZThn16_N7S2231C3D1Ev,_ZThn12_N7S2231C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S2231C3D0Ev,_ZThn12_N7S2231C3D0Ev)();
static  VTBL_ENTRY vtc_S2231C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2231C3[0]),
  (VTBL_ENTRY)&_ZN7S2231C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2231C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2231C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2231C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v14Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2231C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2231C3D1Ev,_ZThn12_N7S2231C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2231C3D0Ev,_ZThn12_N7S2231C3D0Ev),
};
extern VTBL_ENTRY _ZTI7S2231C3[];
extern  VTBL_ENTRY _ZTV7S2231C3[];
Class_Descriptor cd_S2231C3 = {  "S2231C3", // class name
  bases_S2231C3, 2,
  &(vtc_S2231C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S2231C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2231C3),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2231C2  : S2231C3 {
  virtual  ~S2231C2(); // _ZN7S2231C2D1Ev
  S2231C2(); // tgen
};
//SIG(-1 S2231C2) C1{ BC2{ BC3{ vd v1 v2 Fi Fc[3]} BC4{ vd m} vd v3 v4 v5 v6 v7 v8 v9 v10 v11 FC5{ BC6{ vd v20 v21 v22 v23 v24 v25 v26 v27 v28 Fp} vd v12 v13 v14 v15 v16 v17 v18 v19 Fi[2] Fp} FC7{ m Fi[3] Fc} Fp Fc} vd}


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

static void Test_S2231C2()
{
  extern Class_Descriptor cd_S2231C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S2231C2, buf);
    S2231C2 *dp, &lv = *(dp=new (buf) S2231C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S2231C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2231C2)");
    check_base_class_offset(lv, (S2231C4*)(S2231C3*), 0, "S2231C2");
    check_base_class_offset(lv, (S5228C4_nt*)(S2231C3*), ABISELECT(16,12), "S2231C2");
    check_base_class_offset(lv, (S2231C3*), 0, "S2231C2");
    test_class_info(&lv, &cd_S2231C2);
    dp->~S2231C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2231C2(Test_S2231C2, "S2231C2", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S2231C2C1Ev();
extern void _ZN7S2231C2D1Ev();
Name_Map name_map_S2231C2[] = {
  NSPAIR(_ZN7S2231C2C1Ev),
  NSPAIR(_ZN7S2231C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2231C4;
extern VTBL_ENTRY _ZTI7S2231C4[];
extern  VTBL_ENTRY _ZTV7S2231C4[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2231C3;
extern VTBL_ENTRY _ZTI7S2231C3[];
extern  VTBL_ENTRY _ZTV7S2231C3[];
static Base_Class bases_S2231C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2231C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2231C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2231C2[];
extern void _ZN7S2231C2D1Ev();
extern void _ZN7S2231C2D0Ev();
extern void _ZN7S2231C42v4Ev();
extern void _ZN7S2231C42v5Ev();
extern void _ZN7S2231C32v6Ev();
extern void _ZN7S2231C32v7Ev();
extern void _ZN7S2231C32v8Ev();
extern void _ZN7S2231C32v9Ev();
extern void _ZN7S2231C33v10Ev();
extern void _ZN7S2231C33v11Ev();
extern void _ZN7S2231C33v12Ev();
extern void _ZN7S2231C33v13Ev();
extern void _ZN7S2231C33v14Ev();
extern void ABISELECT(_ZThn16_N7S2231C2D1Ev,_ZThn12_N7S2231C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S2231C2D0Ev,_ZThn12_N7S2231C2D0Ev)();
static  VTBL_ENTRY vtc_S2231C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2231C2[0]),
  (VTBL_ENTRY)&_ZN7S2231C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2231C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2231C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2231C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v14Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2231C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2231C2D1Ev,_ZThn12_N7S2231C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2231C2D0Ev,_ZThn12_N7S2231C2D0Ev),
};
extern VTBL_ENTRY _ZTI7S2231C2[];
extern  VTBL_ENTRY _ZTV7S2231C2[];
Class_Descriptor cd_S2231C2 = {  "S2231C2", // class name
  bases_S2231C2, 3,
  &(vtc_S2231C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S2231C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2231C2),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  S2231C1  : S2231C2 {
  void *s2231c1f0[2];
  virtual  ~S2231C1(); // _ZN7S2231C1D1Ev
  virtual void  v1(); // _ZN7S2231C12v1Ev
  virtual void  v2(); // _ZN7S2231C12v2Ev
  virtual void  v3(); // _ZN7S2231C12v3Ev
  S2231C1(); // tgen
};
//SIG(1 S2231C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 Fi Fc[3]} BC5{ vd m} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 FC6{ BC7{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 Fp} vd v15 v16 v17 v18 v19 v20 v21 v22 Fi[2] Fp} FC8{ m Fi[3] Fc} Fp Fc} vd} vd v1 v2 v3 Fp[2]}


 S2231C1 ::~S2231C1(){ note_dtor("S2231C1", this);}
void  S2231C1 ::v1(){vfunc_called(this, "_ZN7S2231C12v1Ev");}
void  S2231C1 ::v2(){vfunc_called(this, "_ZN7S2231C12v2Ev");}
void  S2231C1 ::v3(){vfunc_called(this, "_ZN7S2231C12v3Ev");}
S2231C1 ::S2231C1(){ note_ctor("S2231C1", this);} // tgen

static void Test_S2231C1()
{
  extern Class_Descriptor cd_S2231C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,18)];
    init_test(&cd_S2231C1, buf);
    S2231C1 *dp, &lv = *(dp=new (buf) S2231C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S2231C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2231C1)");
    check_base_class_offset(lv, (S2231C4*)(S2231C3*)(S2231C2*), 0, "S2231C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S2231C3*)(S2231C2*), ABISELECT(16,12), "S2231C1");
    check_base_class_offset(lv, (S2231C3*)(S2231C2*), 0, "S2231C1");
    check_base_class_offset(lv, (S2231C2*), 0, "S2231C1");
    check_field_offset(lv, s2231c1f0, ABISELECT(88,60), "S2231C1.s2231c1f0");
    test_class_info(&lv, &cd_S2231C1);
    dp->~S2231C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2231C1(Test_S2231C1, "S2231C1", ABISELECT(104,68));

#else // __cplusplus

extern void _ZN7S2231C1C1Ev();
extern void _ZN7S2231C1D1Ev();
Name_Map name_map_S2231C1[] = {
  NSPAIR(_ZN7S2231C1C1Ev),
  NSPAIR(_ZN7S2231C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2231C4;
extern VTBL_ENTRY _ZTI7S2231C4[];
extern  VTBL_ENTRY _ZTV7S2231C4[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2231C3;
extern VTBL_ENTRY _ZTI7S2231C3[];
extern  VTBL_ENTRY _ZTV7S2231C3[];
extern Class_Descriptor cd_S2231C2;
extern VTBL_ENTRY _ZTI7S2231C2[];
extern  VTBL_ENTRY _ZTV7S2231C2[];
static Base_Class bases_S2231C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2231C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2231C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2231C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2231C1[];
extern void _ZN7S2231C1D1Ev();
extern void _ZN7S2231C1D0Ev();
extern void _ZN7S2231C42v4Ev();
extern void _ZN7S2231C42v5Ev();
extern void _ZN7S2231C32v6Ev();
extern void _ZN7S2231C32v7Ev();
extern void _ZN7S2231C32v8Ev();
extern void _ZN7S2231C32v9Ev();
extern void _ZN7S2231C33v10Ev();
extern void _ZN7S2231C33v11Ev();
extern void _ZN7S2231C33v12Ev();
extern void _ZN7S2231C33v13Ev();
extern void _ZN7S2231C33v14Ev();
extern void _ZN7S2231C12v1Ev();
extern void _ZN7S2231C12v2Ev();
extern void _ZN7S2231C12v3Ev();
extern void ABISELECT(_ZThn16_N7S2231C1D1Ev,_ZThn12_N7S2231C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S2231C1D0Ev,_ZThn12_N7S2231C1D0Ev)();
static  VTBL_ENTRY vtc_S2231C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2231C1[0]),
  (VTBL_ENTRY)&_ZN7S2231C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2231C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2231C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2231C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2231C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v11Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2231C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2231C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2231C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2231C12v3Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2231C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2231C1D1Ev,_ZThn12_N7S2231C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2231C1D0Ev,_ZThn12_N7S2231C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S2231C1[];
extern  VTBL_ENTRY _ZTV7S2231C1[];
Class_Descriptor cd_S2231C1 = {  "S2231C1", // class name
  bases_S2231C1, 4,
  &(vtc_S2231C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,68), // object size
  NSPAIRA(_ZTI7S2231C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2231C1),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5227C3  {
  int s5227c3f0;
  char s5227c3f1[3];
  virtual  ~S5227C3(); // _ZN7S5227C3D1Ev
  virtual void  v5(); // _ZN7S5227C32v5Ev
  virtual void  v6(); // _ZN7S5227C32v6Ev
  S5227C3(); // tgen
};
//SIG(-1 S5227C3) C1{ vd v1 v2 Fi Fc[3]}


 S5227C3 ::~S5227C3(){ note_dtor("S5227C3", this);}
void  S5227C3 ::v5(){vfunc_called(this, "_ZN7S5227C32v5Ev");}
void  S5227C3 ::v6(){vfunc_called(this, "_ZN7S5227C32v6Ev");}
S5227C3 ::S5227C3(){ note_ctor("S5227C3", this);} // tgen

static void Test_S5227C3()
{
  extern Class_Descriptor cd_S5227C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5227C3, buf);
    S5227C3 *dp, &lv = *(dp=new (buf) S5227C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5227C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5227C3)");
    check_field_offset(lv, s5227c3f0, ABISELECT(8,4), "S5227C3.s5227c3f0");
    check_field_offset(lv, s5227c3f1, ABISELECT(12,8), "S5227C3.s5227c3f1");
    test_class_info(&lv, &cd_S5227C3);
    dp->~S5227C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5227C3(Test_S5227C3, "S5227C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S5227C3C1Ev();
extern void _ZN7S5227C3D1Ev();
Name_Map name_map_S5227C3[] = {
  NSPAIR(_ZN7S5227C3C1Ev),
  NSPAIR(_ZN7S5227C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5227C3[];
extern void _ZN7S5227C3D1Ev();
extern void _ZN7S5227C3D0Ev();
extern void _ZN7S5227C32v5Ev();
extern void _ZN7S5227C32v6Ev();
static  VTBL_ENTRY vtc_S5227C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5227C3[0]),
  (VTBL_ENTRY)&_ZN7S5227C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5227C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5227C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5227C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S5227C3[];
extern  VTBL_ENTRY _ZTV7S5227C3[];
Class_Descriptor cd_S5227C3 = {  "S5227C3", // class name
  0,0,//no base classes
  &(vtc_S5227C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S5227C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5227C3),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  S5227C2  : S5227C3 , S5228C4_nt {
  ::S5228C5 s5227c2f0;
  ::S5228C7 s5227c2f1;
  void *s5227c2f2;
  char s5227c2f3;
  virtual  ~S5227C2(); // _ZN7S5227C2D1Ev
  virtual void  v7(); // _ZN7S5227C22v7Ev
  virtual void  v8(); // _ZN7S5227C22v8Ev
  virtual void  v9(); // _ZN7S5227C22v9Ev
  virtual void  v10(); // _ZN7S5227C23v10Ev
  virtual void  v11(); // _ZN7S5227C23v11Ev
  virtual void  v12(); // _ZN7S5227C23v12Ev
  virtual void  v13(); // _ZN7S5227C23v13Ev
  virtual void  v14(); // _ZN7S5227C23v14Ev
  virtual void  v15(); // _ZN7S5227C23v15Ev
  S5227C2(); // tgen
};
//SIG(-1 S5227C2) C1{ BC2{ vd v10 v11 Fi Fc[3]} BC3{ vd m} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ BC5{ vd v20 v21 v22 v23 v24 v25 v26 v27 v28 Fp} vd v12 v13 v14 v15 v16 v17 v18 v19 Fi[2] Fp} FC6{ m Fi[3] Fc} Fp Fc}


 S5227C2 ::~S5227C2(){ note_dtor("S5227C2", this);}
void  S5227C2 ::v7(){vfunc_called(this, "_ZN7S5227C22v7Ev");}
void  S5227C2 ::v8(){vfunc_called(this, "_ZN7S5227C22v8Ev");}
void  S5227C2 ::v9(){vfunc_called(this, "_ZN7S5227C22v9Ev");}
void  S5227C2 ::v10(){vfunc_called(this, "_ZN7S5227C23v10Ev");}
void  S5227C2 ::v11(){vfunc_called(this, "_ZN7S5227C23v11Ev");}
void  S5227C2 ::v12(){vfunc_called(this, "_ZN7S5227C23v12Ev");}
void  S5227C2 ::v13(){vfunc_called(this, "_ZN7S5227C23v13Ev");}
void  S5227C2 ::v14(){vfunc_called(this, "_ZN7S5227C23v14Ev");}
void  S5227C2 ::v15(){vfunc_called(this, "_ZN7S5227C23v15Ev");}
S5227C2 ::S5227C2(){ note_ctor("S5227C2", this);} // tgen

static void Test_S5227C2()
{
  extern Class_Descriptor cd_S5227C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S5227C2, buf);
    S5227C2 *dp, &lv = *(dp=new (buf) S5227C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S5227C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5227C2)");
    check_base_class_offset(lv, (S5227C3*), 0, "S5227C2");
    check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(16,12), "S5227C2");
    check_field_offset(lv, s5227c2f0, ABISELECT(24,16), "S5227C2.s5227c2f0");
    check_field_offset(lv, s5227c2f1, ABISELECT(56,36), "S5227C2.s5227c2f1");
    check_field_offset(lv, s5227c2f2, ABISELECT(72,52), "S5227C2.s5227c2f2");
    check_field_offset(lv, s5227c2f3, ABISELECT(80,56), "S5227C2.s5227c2f3");
    test_class_info(&lv, &cd_S5227C2);
    dp->~S5227C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5227C2(Test_S5227C2, "S5227C2", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S5227C2C1Ev();
extern void _ZN7S5227C2D1Ev();
Name_Map name_map_S5227C2[] = {
  NSPAIR(_ZN7S5227C2C1Ev),
  NSPAIR(_ZN7S5227C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5227C3;
extern VTBL_ENTRY _ZTI7S5227C3[];
extern  VTBL_ENTRY _ZTV7S5227C3[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S5227C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5227C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5227C2[];
extern void _ZN7S5227C2D1Ev();
extern void _ZN7S5227C2D0Ev();
extern void _ZN7S5227C32v5Ev();
extern void _ZN7S5227C32v6Ev();
extern void _ZN7S5227C22v7Ev();
extern void _ZN7S5227C22v8Ev();
extern void _ZN7S5227C22v9Ev();
extern void _ZN7S5227C23v10Ev();
extern void _ZN7S5227C23v11Ev();
extern void _ZN7S5227C23v12Ev();
extern void _ZN7S5227C23v13Ev();
extern void _ZN7S5227C23v14Ev();
extern void _ZN7S5227C23v15Ev();
extern void ABISELECT(_ZThn16_N7S5227C2D1Ev,_ZThn12_N7S5227C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S5227C2D0Ev,_ZThn12_N7S5227C2D0Ev)();
static  VTBL_ENTRY vtc_S5227C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5227C2[0]),
  (VTBL_ENTRY)&_ZN7S5227C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5227C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5227C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5227C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5227C22v7Ev,
  (VTBL_ENTRY)&_ZN7S5227C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5227C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v15Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5227C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5227C2D1Ev,_ZThn12_N7S5227C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5227C2D0Ev,_ZThn12_N7S5227C2D0Ev),
};
extern VTBL_ENTRY _ZTI7S5227C2[];
extern  VTBL_ENTRY _ZTV7S5227C2[];
Class_Descriptor cd_S5227C2 = {  "S5227C2", // class name
  bases_S5227C2, 2,
  &(vtc_S5227C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S5227C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5227C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5227C1  : S5227C2 {
  void *s5227c1f0[2];
  virtual  ~S5227C1(); // _ZN7S5227C1D1Ev
  virtual void  v1(); // _ZN7S5227C12v1Ev
  virtual void  v2(); // _ZN7S5227C12v2Ev
  virtual void  v3(); // _ZN7S5227C12v3Ev
  virtual void  v4(); // _ZN7S5227C12v4Ev
  S5227C1(); // tgen
};
//SIG(1 S5227C1) C1{ BC2{ BC3{ vd v5 v6 Fi Fc[3]} BC4{ vd m} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 FC5{ BC6{ vd v24 v25 v26 v27 v28 v29 v30 v31 v32 Fp} vd v16 v17 v18 v19 v20 v21 v22 v23 Fi[2] Fp} FC7{ m Fi[3] Fc} Fp Fc} vd v1 v2 v3 v4 Fp[2]}


 S5227C1 ::~S5227C1(){ note_dtor("S5227C1", this);}
void  S5227C1 ::v1(){vfunc_called(this, "_ZN7S5227C12v1Ev");}
void  S5227C1 ::v2(){vfunc_called(this, "_ZN7S5227C12v2Ev");}
void  S5227C1 ::v3(){vfunc_called(this, "_ZN7S5227C12v3Ev");}
void  S5227C1 ::v4(){vfunc_called(this, "_ZN7S5227C12v4Ev");}
S5227C1 ::S5227C1(){ note_ctor("S5227C1", this);} // tgen

static void Test_S5227C1()
{
  extern Class_Descriptor cd_S5227C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,18)];
    init_test(&cd_S5227C1, buf);
    S5227C1 *dp, &lv = *(dp=new (buf) S5227C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S5227C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5227C1)");
    check_base_class_offset(lv, (S5227C3*)(S5227C2*), 0, "S5227C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S5227C2*), ABISELECT(16,12), "S5227C1");
    check_base_class_offset(lv, (S5227C2*), 0, "S5227C1");
    check_field_offset(lv, s5227c1f0, ABISELECT(88,60), "S5227C1.s5227c1f0");
    test_class_info(&lv, &cd_S5227C1);
    dp->~S5227C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5227C1(Test_S5227C1, "S5227C1", ABISELECT(104,68));

#else // __cplusplus

extern void _ZN7S5227C1C1Ev();
extern void _ZN7S5227C1D1Ev();
Name_Map name_map_S5227C1[] = {
  NSPAIR(_ZN7S5227C1C1Ev),
  NSPAIR(_ZN7S5227C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5227C3;
extern VTBL_ENTRY _ZTI7S5227C3[];
extern  VTBL_ENTRY _ZTV7S5227C3[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5227C2;
extern VTBL_ENTRY _ZTI7S5227C2[];
extern  VTBL_ENTRY _ZTV7S5227C2[];
static Base_Class bases_S5227C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5227C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,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
    2, //immediately_derived
  0, 0},
  {&cd_S5227C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5227C1[];
extern void _ZN7S5227C1D1Ev();
extern void _ZN7S5227C1D0Ev();
extern void _ZN7S5227C32v5Ev();
extern void _ZN7S5227C32v6Ev();
extern void _ZN7S5227C22v7Ev();
extern void _ZN7S5227C22v8Ev();
extern void _ZN7S5227C22v9Ev();
extern void _ZN7S5227C23v10Ev();
extern void _ZN7S5227C23v11Ev();
extern void _ZN7S5227C23v12Ev();
extern void _ZN7S5227C23v13Ev();
extern void _ZN7S5227C23v14Ev();
extern void _ZN7S5227C23v15Ev();
extern void _ZN7S5227C12v1Ev();
extern void _ZN7S5227C12v2Ev();
extern void _ZN7S5227C12v3Ev();
extern void _ZN7S5227C12v4Ev();
extern void ABISELECT(_ZThn16_N7S5227C1D1Ev,_ZThn12_N7S5227C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S5227C1D0Ev,_ZThn12_N7S5227C1D0Ev)();
static  VTBL_ENTRY vtc_S5227C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5227C1[0]),
  (VTBL_ENTRY)&_ZN7S5227C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5227C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5227C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5227C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5227C22v7Ev,
  (VTBL_ENTRY)&_ZN7S5227C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5227C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5227C23v15Ev,
  (VTBL_ENTRY)&_ZN7S5227C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5227C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5227C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5227C12v4Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5227C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5227C1D1Ev,_ZThn12_N7S5227C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5227C1D0Ev,_ZThn12_N7S5227C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S5227C1[];
extern  VTBL_ENTRY _ZTV7S5227C1[];
Class_Descriptor cd_S5227C1 = {  "S5227C1", // class name
  bases_S5227C1, 3,
  &(vtc_S5227C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,68), // object size
  NSPAIRA(_ZTI7S5227C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5227C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7655C3  {
  long s7655c3f0;
  virtual void  v7(); // _ZN7S7655C32v7Ev
  virtual void  v8(); // _ZN7S7655C32v8Ev
  virtual void  v9(); // _ZN7S7655C32v9Ev
  virtual void  v10(); // _ZN7S7655C33v10Ev
  virtual void  v11(); // _ZN7S7655C33v11Ev
  ~S7655C3(); // tgen
  S7655C3(); // tgen
};
//SIG(-1 S7655C3) C1{ v1 v2 v3 v4 v5 Fl}


void  S7655C3 ::v7(){vfunc_called(this, "_ZN7S7655C32v7Ev");}
void  S7655C3 ::v8(){vfunc_called(this, "_ZN7S7655C32v8Ev");}
void  S7655C3 ::v9(){vfunc_called(this, "_ZN7S7655C32v9Ev");}
void  S7655C3 ::v10(){vfunc_called(this, "_ZN7S7655C33v10Ev");}
void  S7655C3 ::v11(){vfunc_called(this, "_ZN7S7655C33v11Ev");}
S7655C3 ::~S7655C3(){ note_dtor("S7655C3", this);} // tgen
S7655C3 ::S7655C3(){ note_ctor("S7655C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7655C3C1Ev();
extern void _ZN7S7655C3D1Ev();
Name_Map name_map_S7655C3[] = {
  NSPAIR(_ZN7S7655C3C1Ev),
  NSPAIR(_ZN7S7655C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7655C3[];
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
static  VTBL_ENTRY vtc_S7655C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C3[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
};
extern VTBL_ENTRY _ZTI7S7655C3[];
extern  VTBL_ENTRY _ZTV7S7655C3[];
Class_Descriptor cd_S7655C3 = {  "S7655C3", // class name
  0,0,//no base classes
  &(vtc_S7655C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7655C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7655C3),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  S7655C2  : virtual S7655C3 {
  int s7655c2f0;
  virtual  ~S7655C2(); // _ZN7S7655C2D2Ev
  virtual void  v12(); // _ZN7S7655C23v12Ev
  virtual void  v13(); // _ZN7S7655C23v13Ev
  virtual void  v14(); // _ZN7S7655C23v14Ev
  virtual void  v15(); // _ZN7S7655C23v15Ev
  S7655C2(); // tgen
};
//SIG(-1 S7655C2) C1{ VBC2{ v5 v6 v7 v8 v9 Fl} vd v1 v2 v3 v4 Fi}


 S7655C2 ::~S7655C2(){ note_dtor("S7655C2", this);}
void  S7655C2 ::v12(){vfunc_called(this, "_ZN7S7655C23v12Ev");}
void  S7655C2 ::v13(){vfunc_called(this, "_ZN7S7655C23v13Ev");}
void  S7655C2 ::v14(){vfunc_called(this, "_ZN7S7655C23v14Ev");}
void  S7655C2 ::v15(){vfunc_called(this, "_ZN7S7655C23v15Ev");}
S7655C2 ::S7655C2(){ note_ctor("S7655C2", this);} // tgen

static void Test_S7655C2()
{
  extern Class_Descriptor cd_S7655C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7655C2, buf);
    S7655C2 *dp, &lv = *(dp=new (buf) S7655C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7655C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7655C2)");
    check_base_class_offset(lv, (S7655C3*), ABISELECT(16,8), "S7655C2");
    check_field_offset(lv, s7655c2f0, ABISELECT(8,4), "S7655C2.s7655c2f0");
    test_class_info(&lv, &cd_S7655C2);
    dp->~S7655C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7655C2(Test_S7655C2, "S7655C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7655C2C1Ev();
extern void _ZN7S7655C2D2Ev();
Name_Map name_map_S7655C2[] = {
  NSPAIR(_ZN7S7655C2C1Ev),
  NSPAIR(_ZN7S7655C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7655C3;
extern VTBL_ENTRY _ZTI7S7655C3[];
extern  VTBL_ENTRY _ZTV7S7655C3[];
static Base_Class bases_S7655C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7655C3,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7655C2[];
extern void _ZN7S7655C2D1Ev();
extern void _ZN7S7655C2D0Ev();
extern void _ZN7S7655C23v12Ev();
extern void _ZN7S7655C23v13Ev();
extern void _ZN7S7655C23v14Ev();
extern void _ZN7S7655C23v15Ev();
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
static  VTBL_ENTRY vtc_S7655C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C2[0]),
  (VTBL_ENTRY)&_ZN7S7655C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7655C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7655C2[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
};
extern VTBL_ENTRY _ZTV7S7655C2[];
static  VTT_ENTRY vtt_S7655C2[] = {
  {&(_ZTV7S7655C2[3]),  3,21},
  {&(_ZTV7S7655C2[16]),  16,21},
};
extern VTBL_ENTRY _ZTI7S7655C2[];
extern  VTBL_ENTRY _ZTV7S7655C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7655C2[];
Class_Descriptor cd_S7655C2 = {  "S7655C2", // class name
  bases_S7655C2, 1,
  &(vtc_S7655C2[0]), // expected_vtbl_contents
  &(vtt_S7655C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7655C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7655C2),21, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7655C2),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  S7655C5  {
  virtual  ~S7655C5(); // _ZN7S7655C5D1Ev
  virtual void  v16(); // _ZN7S7655C53v16Ev
  S7655C5(); // tgen
};
//SIG(-1 S7655C5) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S7655C5C1Ev();
extern void _ZN7S7655C5D1Ev();
Name_Map name_map_S7655C5[] = {
  NSPAIR(_ZN7S7655C5C1Ev),
  NSPAIR(_ZN7S7655C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7655C5[];
extern void _ZN7S7655C5D1Ev();
extern void _ZN7S7655C5D0Ev();
extern void _ZN7S7655C53v16Ev();
static  VTBL_ENTRY vtc_S7655C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C5[0]),
  (VTBL_ENTRY)&_ZN7S7655C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7655C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7655C53v16Ev,
};
extern VTBL_ENTRY _ZTI7S7655C5[];
extern  VTBL_ENTRY _ZTV7S7655C5[];
Class_Descriptor cd_S7655C5 = {  "S7655C5", // class name
  0,0,//no base classes
  &(vtc_S7655C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7655C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7655C5),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  S7655C7  {
  virtual  ~S7655C7(); // _ZN7S7655C7D1Ev
  virtual void  v17(); // _ZN7S7655C73v17Ev
  S7655C7(); // tgen
};
//SIG(-1 S7655C7) C1{ vd v1}


 S7655C7 ::~S7655C7(){ note_dtor("S7655C7", this);}
void  S7655C7 ::v17(){vfunc_called(this, "_ZN7S7655C73v17Ev");}
S7655C7 ::S7655C7(){ note_ctor("S7655C7", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7655C7C1Ev();
extern void _ZN7S7655C7D1Ev();
Name_Map name_map_S7655C7[] = {
  NSPAIR(_ZN7S7655C7C1Ev),
  NSPAIR(_ZN7S7655C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7655C7[];
extern void _ZN7S7655C7D1Ev();
extern void _ZN7S7655C7D0Ev();
extern void _ZN7S7655C73v17Ev();
static  VTBL_ENTRY vtc_S7655C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C7[0]),
  (VTBL_ENTRY)&_ZN7S7655C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7655C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7655C73v17Ev,
};
extern VTBL_ENTRY _ZTI7S7655C7[];
extern  VTBL_ENTRY _ZTV7S7655C7[];
Class_Descriptor cd_S7655C7 = {  "S7655C7", // class name
  0,0,//no base classes
  &(vtc_S7655C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7655C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7655C7),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  S7655C6  : S7655C3 , S7655C5 , S7655C7 {
  virtual  ~S7655C6(); // _ZN7S7655C6D1Ev
  virtual void  v18(); // _ZN7S7655C63v18Ev
  S7655C6(); // tgen
};
//SIG(-1 S7655C6) C1{ BC2{ v2 v3 v4 v5 v6 Fl} BC3{ vd v7} BC4{ vd v8} vd v1}


 S7655C6 ::~S7655C6(){ note_dtor("S7655C6", this);}
void  S7655C6 ::v18(){vfunc_called(this, "_ZN7S7655C63v18Ev");}
S7655C6 ::S7655C6(){ note_ctor("S7655C6", this);} // tgen

static void Test_S7655C6()
{
  extern Class_Descriptor cd_S7655C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7655C6, buf);
    S7655C6 *dp, &lv = *(dp=new (buf) S7655C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7655C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7655C6)");
    check_base_class_offset(lv, (S7655C3*), 0, "S7655C6");
    check_base_class_offset(lv, (S7655C5*), ABISELECT(16,8), "S7655C6");
    check_base_class_offset(lv, (S7655C7*), ABISELECT(24,12), "S7655C6");
    test_class_info(&lv, &cd_S7655C6);
    dp->~S7655C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7655C6(Test_S7655C6, "S7655C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7655C6C1Ev();
extern void _ZN7S7655C6D1Ev();
Name_Map name_map_S7655C6[] = {
  NSPAIR(_ZN7S7655C6C1Ev),
  NSPAIR(_ZN7S7655C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7655C3;
extern VTBL_ENTRY _ZTI7S7655C3[];
extern  VTBL_ENTRY _ZTV7S7655C3[];
extern Class_Descriptor cd_S7655C5;
extern VTBL_ENTRY _ZTI7S7655C5[];
extern  VTBL_ENTRY _ZTV7S7655C5[];
extern Class_Descriptor cd_S7655C7;
extern VTBL_ENTRY _ZTI7S7655C7[];
extern  VTBL_ENTRY _ZTV7S7655C7[];
static Base_Class bases_S7655C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7655C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7655C5,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7655C7,    ABISELECT(24,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7655C6[];
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
extern void _ZN7S7655C6D1Ev();
extern void _ZN7S7655C6D0Ev();
extern void _ZN7S7655C63v18Ev();
extern void ABISELECT(_ZThn16_N7S7655C6D1Ev,_ZThn8_N7S7655C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7655C6D0Ev,_ZThn8_N7S7655C6D0Ev)();
extern void _ZN7S7655C53v16Ev();
extern void ABISELECT(_ZThn24_N7S7655C6D1Ev,_ZThn12_N7S7655C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7655C6D0Ev,_ZThn12_N7S7655C6D0Ev)();
extern void _ZN7S7655C73v17Ev();
static  VTBL_ENTRY vtc_S7655C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C6[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7655C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7655C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7655C63v18Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7655C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7655C6D1Ev,_ZThn8_N7S7655C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7655C6D0Ev,_ZThn8_N7S7655C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C53v16Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7655C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7655C6D1Ev,_ZThn12_N7S7655C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7655C6D0Ev,_ZThn12_N7S7655C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C73v17Ev,
};
extern VTBL_ENTRY _ZTI7S7655C6[];
extern  VTBL_ENTRY _ZTV7S7655C6[];
Class_Descriptor cd_S7655C6 = {  "S7655C6", // class name
  bases_S7655C6, 3,
  &(vtc_S7655C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7655C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7655C6),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7655C4  : virtual S7655C5 , virtual S7655C6 , S7655C2 {
  int s7655c4f0[10];
  char s7655c4f1;
  int s7655c4f2;
  char  :0;
  virtual  ~S7655C4(); // _ZN7S7655C4D2Ev
  virtual void  v19(); // _ZN7S7655C43v19Ev
  virtual void  v20(); // _ZN7S7655C43v20Ev
  virtual void  v21(); // _ZN7S7655C43v21Ev
  virtual void  v22(); // _ZN7S7655C43v22Ev
  virtual void  v23(); // _ZN7S7655C43v23Ev
  virtual void  v24(); // _ZN7S7655C43v24Ev
  S7655C4(); // tgen
};
//SIG(-1 S7655C4) C1{ VBC2{ vd v7} VBC3{ BC4{ v8 v9 v10 v11 v12 Fl} BC2 BC5{ vd v13} vd v14} BC6{ VBC4 vd v15 v16 v17 v18 Fi} vd v1 v2 v3 v4 v5 v6 Fi[10] Fc Fi Fc:0}


 S7655C4 ::~S7655C4(){ note_dtor("S7655C4", this);}
void  S7655C4 ::v19(){vfunc_called(this, "_ZN7S7655C43v19Ev");}
void  S7655C4 ::v20(){vfunc_called(this, "_ZN7S7655C43v20Ev");}
void  S7655C4 ::v21(){vfunc_called(this, "_ZN7S7655C43v21Ev");}
void  S7655C4 ::v22(){vfunc_called(this, "_ZN7S7655C43v22Ev");}
void  S7655C4 ::v23(){vfunc_called(this, "_ZN7S7655C43v23Ev");}
void  S7655C4 ::v24(){vfunc_called(this, "_ZN7S7655C43v24Ev");}
S7655C4 ::S7655C4(){ note_ctor("S7655C4", this);} // tgen

static void Test_S7655C4()
{
  extern Class_Descriptor cd_S7655C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S7655C4, buf);
    S7655C4 *dp, &lv = *(dp=new (buf) S7655C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S7655C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7655C4)");
    /*is_ambiguous_... S7655C4::S7655C5 */ AMB_check_base_class_offset(lv, (S7655C5*), ABISELECT(64,56), "S7655C4");
    check_base_class_offset(lv, (S7655C3*)(S7655C6*), ABISELECT(72,60), "S7655C4");
    check_base_class_offset(lv, (S7655C5*)(S7655C6*), ABISELECT(88,68), "S7655C4");
    check_base_class_offset(lv, (S7655C7*)(S7655C6*), ABISELECT(96,72), "S7655C4");
    check_base_class_offset(lv, (S7655C6*), ABISELECT(72,60), "S7655C4");
    check_base_class_offset(lv, (S7655C3*)(S7655C2*), ABISELECT(104,76), "S7655C4");
    check_base_class_offset(lv, (S7655C2*), 0, "S7655C4");
    check_field_offset(lv, s7655c4f0, ABISELECT(12,8), "S7655C4.s7655c4f0");
    check_field_offset(lv, s7655c4f1, ABISELECT(52,48), "S7655C4.s7655c4f1");
    check_field_offset(lv, s7655c4f2, ABISELECT(56,52), "S7655C4.s7655c4f2");
    test_class_info(&lv, &cd_S7655C4);
    dp->~S7655C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7655C4(Test_S7655C4, "S7655C4", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN7S7655C4C1Ev();
extern void _ZN7S7655C4D2Ev();
Name_Map name_map_S7655C4[] = {
  NSPAIR(_ZN7S7655C4C1Ev),
  NSPAIR(_ZN7S7655C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7655C5;
extern VTBL_ENTRY _ZTI7S7655C5[];
extern  VTBL_ENTRY _ZTV7S7655C5[];
extern Class_Descriptor cd_S7655C3;
extern VTBL_ENTRY _ZTI7S7655C3[];
extern  VTBL_ENTRY _ZTV7S7655C3[];
extern Class_Descriptor cd_S7655C5;
extern VTBL_ENTRY _ZTI7S7655C5[];
extern  VTBL_ENTRY _ZTV7S7655C5[];
extern Class_Descriptor cd_S7655C7;
extern VTBL_ENTRY _ZTI7S7655C7[];
extern  VTBL_ENTRY _ZTV7S7655C7[];
extern Class_Descriptor cd_S7655C6;
extern VTBL_ENTRY _ZTI7S7655C6[];
extern  VTBL_ENTRY _ZTV7S7655C6[];
extern Class_Descriptor cd_S7655C3;
extern VTBL_ENTRY _ZTI7S7655C3[];
extern  VTBL_ENTRY _ZTV7S7655C3[];
extern Class_Descriptor cd_S7655C2;
extern VTBL_ENTRY _ZTI7S7655C2[];
extern  VTBL_ENTRY _ZTV7S7655C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7655C2[];
static Base_Class bases_S7655C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7655C5,    ABISELECT(64,56), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7655C3,    ABISELECT(72,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7655C5,    ABISELECT(88,68), //bcp->offset
    43, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7655C7,    ABISELECT(96,72), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7655C6,    ABISELECT(72,60), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7655C3,    ABISELECT(104,76), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7655C2,    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 _ZTI7S7655C4[];
extern void _ZN7S7655C4D1Ev();
extern void _ZN7S7655C4D0Ev();
extern void _ZN7S7655C23v12Ev();
extern void _ZN7S7655C23v13Ev();
extern void _ZN7S7655C23v14Ev();
extern void _ZN7S7655C23v15Ev();
extern void _ZN7S7655C43v19Ev();
extern void _ZN7S7655C43v20Ev();
extern void _ZN7S7655C43v21Ev();
extern void _ZN7S7655C43v22Ev();
extern void _ZN7S7655C43v23Ev();
extern void _ZN7S7655C43v24Ev();
extern void ABISELECT(_ZTv0_n24_N7S7655C4D1Ev,_ZTv0_n12_N7S7655C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7655C4D1Ev,_ZThn56_N7S7655C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7655C4D0Ev,_ZTv0_n12_N7S7655C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7655C4D0Ev,_ZThn56_N7S7655C4D0Ev)() __attribute__((weak));
extern void _ZN7S7655C53v16Ev();
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
extern void ABISELECT(_ZTv0_n64_N7S7655C4D1Ev,_ZTv0_n32_N7S7655C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7655C4D1Ev,_ZThn60_N7S7655C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7655C4D0Ev,_ZTv0_n32_N7S7655C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7655C4D0Ev,_ZThn60_N7S7655C4D0Ev)() __attribute__((weak));
extern void _ZN7S7655C63v18Ev();
extern void ABISELECT(_ZTvn16_n64_N7S7655C4D1Ev,_ZTvn8_n32_N7S7655C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7655C4D0Ev,_ZTvn8_n32_N7S7655C4D0Ev)();
extern void _ZN7S7655C53v16Ev();
extern void ABISELECT(_ZTvn24_n64_N7S7655C4D1Ev,_ZTvn12_n32_N7S7655C4D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S7655C4D0Ev,_ZTvn12_n32_N7S7655C4D0Ev)();
extern void _ZN7S7655C73v17Ev();
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
static  VTBL_ENTRY vtc_S7655C4[] = {
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&_ZN7S7655C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7655C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v24Ev,
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7655C4D1Ev,_ZTv0_n12_N7S7655C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7655C4D0Ev,_ZTv0_n12_N7S7655C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C53v16Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-60),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7655C4D1Ev,_ZTv0_n32_N7S7655C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7655C4D0Ev,_ZTv0_n32_N7S7655C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C63v18Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7655C4D1Ev,_ZTvn8_n32_N7S7655C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7655C4D0Ev,_ZTvn8_n32_N7S7655C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C53v16Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7655C4D1Ev,_ZTvn12_n32_N7S7655C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7655C4D0Ev,_ZTvn12_n32_N7S7655C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C73v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
};
extern VTBL_ENTRY _ZTV7S7655C4[];
extern void _ZN7S7655C2D1Ev();
extern void _ZN7S7655C2D0Ev();
extern void _ZN7S7655C23v12Ev();
extern void _ZN7S7655C23v13Ev();
extern void _ZN7S7655C23v14Ev();
extern void _ZN7S7655C23v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C2__7S7655C4[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C2[0]),
  (VTBL_ENTRY)&_ZN7S7655C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7655C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v15Ev,
};
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C3__7S7655C2__7S7655C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S7655C2[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
};
static  VTT_ENTRY vtt_S7655C4[] = {
  {&(_ZTV7S7655C4[5]),  5,65},
  {&(_tg__ZTV7S7655C2__7S7655C4[3]),  3,9},
  {&(_tg__ZTV7S7655C3__7S7655C2__7S7655C4[7]),  7,12},
  {&(_ZTV7S7655C4[21]),  21,65},
  {&(_ZTV7S7655C4[35]),  35,65},
  {&(_ZTV7S7655C4[45]),  45,65},
  {&(_ZTV7S7655C4[50]),  50,65},
  {&(_ZTV7S7655C4[60]),  60,65},
};
extern VTBL_ENTRY _ZTI7S7655C4[];
extern  VTBL_ENTRY _ZTV7S7655C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7655C4[];
static VTBL_ENTRY alt_thunk_names140[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7655C4D0Ev,_ZTv0_n32_N7S7655C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7655C4D0Ev,_ZThn60_N7S7655C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7655C4D1Ev,_ZTv0_n32_N7S7655C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7655C4D1Ev,_ZThn60_N7S7655C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7655C4D0Ev,_ZTv0_n12_N7S7655C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7655C4D0Ev,_ZThn56_N7S7655C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7655C4D1Ev,_ZTv0_n12_N7S7655C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7655C4D1Ev,_ZThn56_N7S7655C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7655C4 = {  "S7655C4", // class name
  bases_S7655C4, 7,
  &(vtc_S7655C4[0]), // expected_vtbl_contents
  &(vtt_S7655C4[0]), // expected_vtt_contents
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI7S7655C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7655C4),65, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7655C4),8, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names140,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7655C1  : S7655C2 , virtual S7655C4 {
  ::S20567C11 s7655c1f0[6];
  virtual  ~S7655C1(); // _ZN7S7655C1D2Ev
  virtual void  v1(); // _ZN7S7655C12v1Ev
  virtual void  v2(); // _ZN7S7655C12v2Ev
  virtual void  v3(); // _ZN7S7655C12v3Ev
  virtual void  v4(); // _ZN7S7655C12v4Ev
  virtual void  v5(); // _ZN7S7655C12v5Ev
  virtual void  v6(); // _ZN7S7655C12v6Ev
  S7655C1(); // tgen
};
//SIG(1 S7655C1) C1{ BC2{ VBC3{ v7 v8 v9 v10 v11 Fl} vd v12 v13 v14 v15 Fi} VBC4{ VBC5{ vd v16} VBC6{ BC3 BC5 BC7{ vd v17} vd v18} BC2 vd v19 v20 v21 v22 v23 v24 Fi[10] Fc Fi Fc:0} vd v1 v2 v3 v4 v5 v6 FC8{ v25 v26 v27 v28 v29 FC9{ vd v30} Fi}[6]}


 S7655C1 ::~S7655C1(){ note_dtor("S7655C1", this);}
void  S7655C1 ::v1(){vfunc_called(this, "_ZN7S7655C12v1Ev");}
void  S7655C1 ::v2(){vfunc_called(this, "_ZN7S7655C12v2Ev");}
void  S7655C1 ::v3(){vfunc_called(this, "_ZN7S7655C12v3Ev");}
void  S7655C1 ::v4(){vfunc_called(this, "_ZN7S7655C12v4Ev");}
void  S7655C1 ::v5(){vfunc_called(this, "_ZN7S7655C12v5Ev");}
void  S7655C1 ::v6(){vfunc_called(this, "_ZN7S7655C12v6Ev");}
S7655C1 ::S7655C1(){ note_ctor("S7655C1", this);} // tgen

static void Test_S7655C1()
{
  extern Class_Descriptor cd_S7655C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,42)];
    init_test(&cd_S7655C1, buf);
    S7655C1 *dp, &lv = *(dp=new (buf) S7655C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,164), "sizeof(S7655C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7655C1)");
    /*is_ambiguous_... S7655C1::S7655C2 */ AMB_check_base_class_offset(lv, (S7655C3*)(S7655C2*), ABISELECT(160,80), "S7655C1");
    check_base_class_offset(lv, (S7655C3*)(S7655C2*)(S7655C4*), ABISELECT(160,80), "S7655C1");
    /*is_ambiguous_... S7655C1::S7655C2 */ AMB_check_base_class_offset(lv, (S7655C2*), 0, "S7655C1");
    /*is_ambiguous_... S7655C4::S7655C5 */ AMB_check_base_class_offset(lv, (S7655C5*)(S7655C4*), ABISELECT(240,144), "S7655C1");
    check_base_class_offset(lv, (S7655C3*)(S7655C6*), ABISELECT(248,148), "S7655C1");
    check_base_class_offset(lv, (S7655C5*)(S7655C6*), ABISELECT(264,156), "S7655C1");
    check_base_class_offset(lv, (S7655C7*)(S7655C6*), ABISELECT(272,160), "S7655C1");
    check_base_class_offset(lv, (S7655C6*)(S7655C4*), ABISELECT(248,148), "S7655C1");
    check_base_class_offset(lv, (S7655C2*)(S7655C4*), ABISELECT(176,88), "S7655C1");
    check_base_class_offset(lv, (S7655C4*), ABISELECT(176,88), "S7655C1");
    check_field_offset(lv, s7655c1f0, ABISELECT(16,8), "S7655C1.s7655c1f0");
    test_class_info(&lv, &cd_S7655C1);
    dp->~S7655C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7655C1(Test_S7655C1, "S7655C1", ABISELECT(280,164));

#else // __cplusplus

extern void _ZN7S7655C1C1Ev();
extern void _ZN7S7655C1D2Ev();
Name_Map name_map_S7655C1[] = {
  NSPAIR(_ZN7S7655C1C1Ev),
  NSPAIR(_ZN7S7655C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7655C3;
extern VTBL_ENTRY _ZTI7S7655C3[];
extern  VTBL_ENTRY _ZTV7S7655C3[];
extern Class_Descriptor cd_S7655C2;
extern VTBL_ENTRY _ZTI7S7655C2[];
extern  VTBL_ENTRY _ZTV7S7655C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7655C2[];
extern Class_Descriptor cd_S7655C5;
extern VTBL_ENTRY _ZTI7S7655C5[];
extern  VTBL_ENTRY _ZTV7S7655C5[];
extern Class_Descriptor cd_S7655C3;
extern VTBL_ENTRY _ZTI7S7655C3[];
extern  VTBL_ENTRY _ZTV7S7655C3[];
extern Class_Descriptor cd_S7655C5;
extern VTBL_ENTRY _ZTI7S7655C5[];
extern  VTBL_ENTRY _ZTV7S7655C5[];
extern Class_Descriptor cd_S7655C7;
extern VTBL_ENTRY _ZTI7S7655C7[];
extern  VTBL_ENTRY _ZTV7S7655C7[];
extern Class_Descriptor cd_S7655C6;
extern VTBL_ENTRY _ZTI7S7655C6[];
extern  VTBL_ENTRY _ZTV7S7655C6[];
extern Class_Descriptor cd_S7655C2;
extern VTBL_ENTRY _ZTI7S7655C2[];
extern  VTBL_ENTRY _ZTV7S7655C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7655C2[];
extern Class_Descriptor cd_S7655C4;
extern VTBL_ENTRY _ZTI7S7655C4[];
extern  VTBL_ENTRY _ZTV7S7655C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7655C4[];
static Base_Class bases_S7655C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7655C3,    ABISELECT(160,80), //bcp->offset
    18, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7655C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7655C5,    ABISELECT(240,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7655C3,    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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7655C5,    ABISELECT(264,156), //bcp->offset
    84, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7655C7,    ABISELECT(272,160), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7655C6,    ABISELECT(248,148), //bcp->offset
    65, //bcp->virtual_function_table_offset
    11, //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
    8, //immediately_derived
  0, 1},
  {&cd_S7655C2,    ABISELECT(176,88), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7655C4,    ABISELECT(176,88), //bcp->offset
    30, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7655C1[];
extern void _ZN7S7655C1D1Ev();
extern void _ZN7S7655C1D0Ev();
extern void _ZN7S7655C23v12Ev();
extern void _ZN7S7655C23v13Ev();
extern void _ZN7S7655C23v14Ev();
extern void _ZN7S7655C23v15Ev();
extern void _ZN7S7655C12v1Ev();
extern void _ZN7S7655C12v2Ev();
extern void _ZN7S7655C12v3Ev();
extern void _ZN7S7655C12v4Ev();
extern void _ZN7S7655C12v5Ev();
extern void _ZN7S7655C12v6Ev();
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
extern void ABISELECT(_ZTv0_n48_N7S7655C1D1Ev,_ZTv0_n24_N7S7655C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S7655C1D1Ev,_ZThn88_N7S7655C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7655C1D0Ev,_ZTv0_n24_N7S7655C1D0Ev)();
extern void ABISELECT(_ZThn176_N7S7655C1D0Ev,_ZThn88_N7S7655C1D0Ev)() __attribute__((weak));
extern void _ZN7S7655C23v12Ev();
extern void _ZN7S7655C23v13Ev();
extern void _ZN7S7655C23v14Ev();
extern void _ZN7S7655C23v15Ev();
extern void _ZN7S7655C43v19Ev();
extern void _ZN7S7655C43v20Ev();
extern void _ZN7S7655C43v21Ev();
extern void _ZN7S7655C43v22Ev();
extern void _ZN7S7655C43v23Ev();
extern void _ZN7S7655C43v24Ev();
extern void ABISELECT(_ZTv0_n24_N7S7655C1D1Ev,_ZTv0_n12_N7S7655C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S7655C1D1Ev,_ZThn144_N7S7655C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7655C1D0Ev,_ZTv0_n12_N7S7655C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S7655C1D0Ev,_ZThn144_N7S7655C1D0Ev)() __attribute__((weak));
extern void _ZN7S7655C53v16Ev();
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
extern void ABISELECT(_ZTv0_n64_N7S7655C1D1Ev,_ZTv0_n32_N7S7655C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S7655C1D1Ev,_ZThn148_N7S7655C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7655C1D0Ev,_ZTv0_n32_N7S7655C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S7655C1D0Ev,_ZThn148_N7S7655C1D0Ev)() __attribute__((weak));
extern void _ZN7S7655C63v18Ev();
extern void ABISELECT(_ZTvn16_n64_N7S7655C1D1Ev,_ZTvn8_n32_N7S7655C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7655C1D0Ev,_ZTvn8_n32_N7S7655C1D0Ev)();
extern void _ZN7S7655C53v16Ev();
extern void ABISELECT(_ZTvn24_n64_N7S7655C1D1Ev,_ZTvn12_n32_N7S7655C1D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S7655C1D0Ev,_ZTvn12_n32_N7S7655C1D0Ev)();
extern void _ZN7S7655C73v17Ev();
static  VTBL_ENTRY vtc_S7655C1[] = {
  ABISELECT(248,148),
  ABISELECT(240,144),
  ABISELECT(176,88),
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C1[0]),
  (VTBL_ENTRY)&_ZN7S7655C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7655C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7655C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7655C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7655C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7655C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7655C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7655C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI7S7655C1[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-88),
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(-16,-8),
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI7S7655C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7655C1D1Ev,_ZTv0_n24_N7S7655C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7655C1D0Ev,_ZTv0_n24_N7S7655C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v24Ev,
  0,
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI7S7655C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7655C1D1Ev,_ZTv0_n12_N7S7655C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7655C1D0Ev,_ZTv0_n12_N7S7655C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C53v16Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-248,-148),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-148),
  (VTBL_ENTRY)&(_ZTI7S7655C1[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7655C1D1Ev,_ZTv0_n32_N7S7655C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7655C1D0Ev,_ZTv0_n32_N7S7655C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C63v18Ev,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7655C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7655C1D1Ev,_ZTvn8_n32_N7S7655C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7655C1D0Ev,_ZTvn8_n32_N7S7655C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C53v16Ev,
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI7S7655C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7655C1D1Ev,_ZTvn12_n32_N7S7655C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7655C1D0Ev,_ZTvn12_n32_N7S7655C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C73v17Ev,
};
extern VTBL_ENTRY _ZTV7S7655C1[];
extern void _ZN7S7655C2D1Ev();
extern void _ZN7S7655C2D0Ev();
extern void _ZN7S7655C23v12Ev();
extern void _ZN7S7655C23v13Ev();
extern void _ZN7S7655C23v14Ev();
extern void _ZN7S7655C23v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C2__7S7655C1[] = {
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C2[0]),
  (VTBL_ENTRY)&_ZN7S7655C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7655C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v15Ev,
};
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C3__7S7655C2__7S7655C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI7S7655C2[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
};
extern void _ZN7S7655C4D1Ev();
extern void _ZN7S7655C4D0Ev();
extern void _ZN7S7655C23v12Ev();
extern void _ZN7S7655C23v13Ev();
extern void _ZN7S7655C23v14Ev();
extern void _ZN7S7655C23v15Ev();
extern void _ZN7S7655C43v19Ev();
extern void _ZN7S7655C43v20Ev();
extern void _ZN7S7655C43v21Ev();
extern void _ZN7S7655C43v22Ev();
extern void _ZN7S7655C43v23Ev();
extern void _ZN7S7655C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C4__7S7655C1[] = {
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&_ZN7S7655C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7655C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7655C43v24Ev,
};
extern void _ZN7S7655C2D1Ev();
extern void _ZN7S7655C2D0Ev();
extern void _ZN7S7655C23v12Ev();
extern void _ZN7S7655C23v13Ev();
extern void _ZN7S7655C23v14Ev();
extern void _ZN7S7655C23v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C27S7655C4__A1__7S7655C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7655C2[0]),
  (VTBL_ENTRY)&_ZN7S7655C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7655C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7655C23v15Ev,
};
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C3__7S7655C27S7655C4__A1__7S7655C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7655C2[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7655C4D1Ev,_ZTv0_n12_N7S7655C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7655C4D1Ev,_ZThn56_N7S7655C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7655C4D0Ev,_ZTv0_n12_N7S7655C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7655C4D0Ev,_ZThn56_N7S7655C4D0Ev)() __attribute__((weak));
extern void _ZN7S7655C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C5__7S7655C4__7S7655C1[] = {
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7655C4D1Ev,_ZTv0_n12_N7S7655C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7655C4D0Ev,_ZTv0_n12_N7S7655C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C53v16Ev,
};
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
extern void ABISELECT(_ZTv0_n64_N7S7655C4D1Ev,_ZTv0_n32_N7S7655C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7655C4D1Ev,_ZThn60_N7S7655C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7655C4D0Ev,_ZTv0_n32_N7S7655C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7655C4D0Ev,_ZThn60_N7S7655C4D0Ev)() __attribute__((weak));
extern void _ZN7S7655C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C6__7S7655C4__7S7655C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-60),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7655C4D1Ev,_ZTv0_n32_N7S7655C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7655C4D0Ev,_ZTv0_n32_N7S7655C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C63v18Ev,
};
extern void ABISELECT(_ZTvn16_n64_N7S7655C4D1Ev,_ZTvn8_n32_N7S7655C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7655C4D0Ev,_ZTvn8_n32_N7S7655C4D0Ev)();
extern void _ZN7S7655C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C57S7655C6__A1__7S7655C4__7S7655C1[] = {
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7655C4D1Ev,_ZTvn8_n32_N7S7655C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7655C4D0Ev,_ZTvn8_n32_N7S7655C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C53v16Ev,
};
extern void ABISELECT(_ZTvn24_n64_N7S7655C4D1Ev,_ZTvn12_n32_N7S7655C4D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N7S7655C4D0Ev,_ZTvn12_n32_N7S7655C4D0Ev)();
extern void _ZN7S7655C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C77S7655C6__7S7655C4__7S7655C1[] = {
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7655C4D1Ev,_ZTvn12_n32_N7S7655C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N7S7655C4D0Ev,_ZTvn12_n32_N7S7655C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7655C73v17Ev,
};
extern void _ZN7S7655C32v7Ev();
extern void _ZN7S7655C32v8Ev();
extern void _ZN7S7655C32v9Ev();
extern void _ZN7S7655C33v10Ev();
extern void _ZN7S7655C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7655C3__A1__7S7655C4__7S7655C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7655C4[0]),
  (VTBL_ENTRY)&_ZN7S7655C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7655C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7655C33v11Ev,
};
static  VTT_ENTRY vtt_S7655C1[] = {
  {&(_ZTV7S7655C1[6]),  6,94},
  {&(_tg__ZTV7S7655C2__7S7655C1[3]),  3,9},
  {&(_tg__ZTV7S7655C3__7S7655C2__7S7655C1[7]),  7,12},
  {&(_ZTV7S7655C1[25]),  25,94},
  {&(_ZTV7S7655C1[46]),  46,94},
  {&(_ZTV7S7655C1[62]),  62,94},
  {&(_ZTV7S7655C1[76]),  76,94},
  {&(_ZTV7S7655C1[86]),  86,94},
  {&(_ZTV7S7655C1[91]),  91,94},
  {&(_tg__ZTV7S7655C4__7S7655C1[5]),  5,17},
  {&(_tg__ZTV7S7655C27S7655C4__A1__7S7655C1[3]),  3,9},
  {&(_tg__ZTV7S7655C3__7S7655C27S7655C4__A1__7S7655C1[7]),  7,12},
  {&(_tg__ZTV7S7655C5__7S7655C4__7S7655C1[4]),  4,7},
  {&(_tg__ZTV7S7655C6__7S7655C4__7S7655C1[11]),  11,19},
  {&(_tg__ZTV7S7655C57S7655C6__A1__7S7655C4__7S7655C1[2]),  2,5},
  {&(_tg__ZTV7S7655C77S7655C6__7S7655C4__7S7655C1[2]),  2,5},
  {&(_tg__ZTV7S7655C3__A1__7S7655C4__7S7655C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7655C1[];
extern  VTBL_ENTRY _ZTV7S7655C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7655C1[];
static VTBL_ENTRY alt_thunk_names141[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7655C4D0Ev,_ZTv0_n32_N7S7655C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7655C4D0Ev,_ZThn60_N7S7655C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7655C4D1Ev,_ZTv0_n32_N7S7655C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7655C4D1Ev,_ZThn60_N7S7655C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7655C4D0Ev,_ZTv0_n12_N7S7655C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7655C4D0Ev,_ZThn56_N7S7655C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7655C4D1Ev,_ZTv0_n12_N7S7655C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7655C4D1Ev,_ZThn56_N7S7655C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7655C1D0Ev,_ZTv0_n32_N7S7655C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7655C1D0Ev,_ZThn148_N7S7655C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7655C1D1Ev,_ZTv0_n32_N7S7655C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7655C1D1Ev,_ZThn148_N7S7655C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7655C1D0Ev,_ZTv0_n12_N7S7655C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7655C1D0Ev,_ZThn144_N7S7655C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7655C1D1Ev,_ZTv0_n12_N7S7655C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7655C1D1Ev,_ZThn144_N7S7655C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7655C1D0Ev,_ZTv0_n24_N7S7655C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7655C1D0Ev,_ZThn88_N7S7655C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7655C1D1Ev,_ZTv0_n24_N7S7655C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7655C1D1Ev,_ZThn88_N7S7655C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7655C1 = {  "S7655C1", // class name
  bases_S7655C1, 9,
  &(vtc_S7655C1[0]), // expected_vtbl_contents
  &(vtt_S7655C1[0]), // expected_vtt_contents
  ABISELECT(280,164), // object size
  NSPAIRA(_ZTI7S7655C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7655C1),94, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7655C1),17, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names141,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5030C3  {
  int s5030c3f0;
  char s5030c3f1[3];
  virtual  ~S5030C3(); // _ZN7S5030C3D1Ev
  virtual void  v4(); // _ZN7S5030C32v4Ev
  virtual void  v5(); // _ZN7S5030C32v5Ev
  S5030C3(); // tgen
};
//SIG(-1 S5030C3) C1{ vd v1 v2 Fi Fc[3]}


 S5030C3 ::~S5030C3(){ note_dtor("S5030C3", this);}
void  S5030C3 ::v4(){vfunc_called(this, "_ZN7S5030C32v4Ev");}
void  S5030C3 ::v5(){vfunc_called(this, "_ZN7S5030C32v5Ev");}
S5030C3 ::S5030C3(){ note_ctor("S5030C3", this);} // tgen

static void Test_S5030C3()
{
  extern Class_Descriptor cd_S5030C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5030C3, buf);
    S5030C3 *dp, &lv = *(dp=new (buf) S5030C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5030C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5030C3)");
    check_field_offset(lv, s5030c3f0, ABISELECT(8,4), "S5030C3.s5030c3f0");
    check_field_offset(lv, s5030c3f1, ABISELECT(12,8), "S5030C3.s5030c3f1");
    test_class_info(&lv, &cd_S5030C3);
    dp->~S5030C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5030C3(Test_S5030C3, "S5030C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S5030C3C1Ev();
extern void _ZN7S5030C3D1Ev();
Name_Map name_map_S5030C3[] = {
  NSPAIR(_ZN7S5030C3C1Ev),
  NSPAIR(_ZN7S5030C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5030C3[];
extern void _ZN7S5030C3D1Ev();
extern void _ZN7S5030C3D0Ev();
extern void _ZN7S5030C32v4Ev();
extern void _ZN7S5030C32v5Ev();
static  VTBL_ENTRY vtc_S5030C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5030C3[0]),
  (VTBL_ENTRY)&_ZN7S5030C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5030C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5030C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5030C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S5030C3[];
extern  VTBL_ENTRY _ZTV7S5030C3[];
Class_Descriptor cd_S5030C3 = {  "S5030C3", // class name
  0,0,//no base classes
  &(vtc_S5030C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S5030C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5030C3),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  S5030C2  : S5030C3 , S5228C4_nt {
  ::S5228C5 s5030c2f0;
  ::S5228C7 s5030c2f1;
  void *s5030c2f2;
  char s5030c2f3;
  virtual  ~S5030C2(); // _ZN7S5030C2D1Ev
  virtual void  v6(); // _ZN7S5030C22v6Ev
  virtual void  v7(); // _ZN7S5030C22v7Ev
  virtual void  v8(); // _ZN7S5030C22v8Ev
  virtual void  v9(); // _ZN7S5030C22v9Ev
  virtual void  v10(); // _ZN7S5030C23v10Ev
  virtual void  v11(); // _ZN7S5030C23v11Ev
  virtual void  v12(); // _ZN7S5030C23v12Ev
  virtual void  v13(); // _ZN7S5030C23v13Ev
  virtual void  v14(); // _ZN7S5030C23v14Ev
  S5030C2(); // tgen
};
//SIG(-1 S5030C2) C1{ BC2{ vd v10 v11 Fi Fc[3]} BC3{ vd m} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ BC5{ vd v20 v21 v22 v23 v24 v25 v26 v27 v28 Fp} vd v12 v13 v14 v15 v16 v17 v18 v19 Fi[2] Fp} FC6{ m Fi[3] Fc} Fp Fc}


 S5030C2 ::~S5030C2(){ note_dtor("S5030C2", this);}
void  S5030C2 ::v6(){vfunc_called(this, "_ZN7S5030C22v6Ev");}
void  S5030C2 ::v7(){vfunc_called(this, "_ZN7S5030C22v7Ev");}
void  S5030C2 ::v8(){vfunc_called(this, "_ZN7S5030C22v8Ev");}
void  S5030C2 ::v9(){vfunc_called(this, "_ZN7S5030C22v9Ev");}
void  S5030C2 ::v10(){vfunc_called(this, "_ZN7S5030C23v10Ev");}
void  S5030C2 ::v11(){vfunc_called(this, "_ZN7S5030C23v11Ev");}
void  S5030C2 ::v12(){vfunc_called(this, "_ZN7S5030C23v12Ev");}
void  S5030C2 ::v13(){vfunc_called(this, "_ZN7S5030C23v13Ev");}
void  S5030C2 ::v14(){vfunc_called(this, "_ZN7S5030C23v14Ev");}
S5030C2 ::S5030C2(){ note_ctor("S5030C2", this);} // tgen

static void Test_S5030C2()
{
  extern Class_Descriptor cd_S5030C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S5030C2, buf);
    S5030C2 *dp, &lv = *(dp=new (buf) S5030C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S5030C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5030C2)");
    check_base_class_offset(lv, (S5030C3*), 0, "S5030C2");
    check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(16,12), "S5030C2");
    check_field_offset(lv, s5030c2f0, ABISELECT(24,16), "S5030C2.s5030c2f0");
    check_field_offset(lv, s5030c2f1, ABISELECT(56,36), "S5030C2.s5030c2f1");
    check_field_offset(lv, s5030c2f2, ABISELECT(72,52), "S5030C2.s5030c2f2");
    check_field_offset(lv, s5030c2f3, ABISELECT(80,56), "S5030C2.s5030c2f3");
    test_class_info(&lv, &cd_S5030C2);
    dp->~S5030C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5030C2(Test_S5030C2, "S5030C2", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S5030C2C1Ev();
extern void _ZN7S5030C2D1Ev();
Name_Map name_map_S5030C2[] = {
  NSPAIR(_ZN7S5030C2C1Ev),
  NSPAIR(_ZN7S5030C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5030C3;
extern VTBL_ENTRY _ZTI7S5030C3[];
extern  VTBL_ENTRY _ZTV7S5030C3[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S5030C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5030C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5030C2[];
extern void _ZN7S5030C2D1Ev();
extern void _ZN7S5030C2D0Ev();
extern void _ZN7S5030C32v4Ev();
extern void _ZN7S5030C32v5Ev();
extern void _ZN7S5030C22v6Ev();
extern void _ZN7S5030C22v7Ev();
extern void _ZN7S5030C22v8Ev();
extern void _ZN7S5030C22v9Ev();
extern void _ZN7S5030C23v10Ev();
extern void _ZN7S5030C23v11Ev();
extern void _ZN7S5030C23v12Ev();
extern void _ZN7S5030C23v13Ev();
extern void _ZN7S5030C23v14Ev();
extern void ABISELECT(_ZThn16_N7S5030C2D1Ev,_ZThn12_N7S5030C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S5030C2D0Ev,_ZThn12_N7S5030C2D0Ev)();
static  VTBL_ENTRY vtc_S5030C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5030C2[0]),
  (VTBL_ENTRY)&_ZN7S5030C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5030C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5030C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5030C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5030C22v6Ev,
  (VTBL_ENTRY)&_ZN7S5030C22v7Ev,
  (VTBL_ENTRY)&_ZN7S5030C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5030C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5030C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5030C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5030C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5030C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5030C23v14Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5030C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5030C2D1Ev,_ZThn12_N7S5030C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5030C2D0Ev,_ZThn12_N7S5030C2D0Ev),
};
extern VTBL_ENTRY _ZTI7S5030C2[];
extern  VTBL_ENTRY _ZTV7S5030C2[];
Class_Descriptor cd_S5030C2 = {  "S5030C2", // class name
  bases_S5030C2, 2,
  &(vtc_S5030C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S5030C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5030C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5030C1  : S5030C2 {
  void *s5030c1f0[2];
  virtual  ~S5030C1(); // _ZN7S5030C1D1Ev
  virtual void  v1(); // _ZN7S5030C12v1Ev
  virtual void  v2(); // _ZN7S5030C12v2Ev
  virtual void  v3(); // _ZN7S5030C12v3Ev
  S5030C1(); // tgen
};
//SIG(1 S5030C1) C1{ BC2{ BC3{ vd v4 v5 Fi Fc[3]} BC4{ vd m} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 FC5{ BC6{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 Fp} vd v15 v16 v17 v18 v19 v20 v21 v22 Fi[2] Fp} FC7{ m Fi[3] Fc} Fp Fc} vd v1 v2 v3 Fp[2]}


 S5030C1 ::~S5030C1(){ note_dtor("S5030C1", this);}
void  S5030C1 ::v1(){vfunc_called(this, "_ZN7S5030C12v1Ev");}
void  S5030C1 ::v2(){vfunc_called(this, "_ZN7S5030C12v2Ev");}
void  S5030C1 ::v3(){vfunc_called(this, "_ZN7S5030C12v3Ev");}
S5030C1 ::S5030C1(){ note_ctor("S5030C1", this);} // tgen

static void Test_S5030C1()
{
  extern Class_Descriptor cd_S5030C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,18)];
    init_test(&cd_S5030C1, buf);
    S5030C1 *dp, &lv = *(dp=new (buf) S5030C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S5030C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5030C1)");
    check_base_class_offset(lv, (S5030C3*)(S5030C2*), 0, "S5030C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S5030C2*), ABISELECT(16,12), "S5030C1");
    check_base_class_offset(lv, (S5030C2*), 0, "S5030C1");
    check_field_offset(lv, s5030c1f0, ABISELECT(88,60), "S5030C1.s5030c1f0");
    test_class_info(&lv, &cd_S5030C1);
    dp->~S5030C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5030C1(Test_S5030C1, "S5030C1", ABISELECT(104,68));

#else // __cplusplus

extern void _ZN7S5030C1C1Ev();
extern void _ZN7S5030C1D1Ev();
Name_Map name_map_S5030C1[] = {
  NSPAIR(_ZN7S5030C1C1Ev),
  NSPAIR(_ZN7S5030C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5030C3;
extern VTBL_ENTRY _ZTI7S5030C3[];
extern  VTBL_ENTRY _ZTV7S5030C3[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5030C2;
extern VTBL_ENTRY _ZTI7S5030C2[];
extern  VTBL_ENTRY _ZTV7S5030C2[];
static Base_Class bases_S5030C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5030C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(16,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5030C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5030C1[];
extern void _ZN7S5030C1D1Ev();
extern void _ZN7S5030C1D0Ev();
extern void _ZN7S5030C32v4Ev();
extern void _ZN7S5030C32v5Ev();
extern void _ZN7S5030C22v6Ev();
extern void _ZN7S5030C22v7Ev();
extern void _ZN7S5030C22v8Ev();
extern void _ZN7S5030C22v9Ev();
extern void _ZN7S5030C23v10Ev();
extern void _ZN7S5030C23v11Ev();
extern void _ZN7S5030C23v12Ev();
extern void _ZN7S5030C23v13Ev();
extern void _ZN7S5030C23v14Ev();
extern void _ZN7S5030C12v1Ev();
extern void _ZN7S5030C12v2Ev();
extern void _ZN7S5030C12v3Ev();
extern void ABISELECT(_ZThn16_N7S5030C1D1Ev,_ZThn12_N7S5030C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S5030C1D0Ev,_ZThn12_N7S5030C1D0Ev)();
static  VTBL_ENTRY vtc_S5030C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5030C1[0]),
  (VTBL_ENTRY)&_ZN7S5030C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5030C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5030C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5030C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5030C22v6Ev,
  (VTBL_ENTRY)&_ZN7S5030C22v7Ev,
  (VTBL_ENTRY)&_ZN7S5030C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5030C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5030C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5030C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5030C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5030C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5030C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5030C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5030C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5030C12v3Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S5030C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5030C1D1Ev,_ZThn12_N7S5030C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S5030C1D0Ev,_ZThn12_N7S5030C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S5030C1[];
extern  VTBL_ENTRY _ZTV7S5030C1[];
Class_Descriptor cd_S5030C1 = {  "S5030C1", // class name
  bases_S5030C1, 3,
  &(vtc_S5030C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,68), // object size
  NSPAIRA(_ZTI7S5030C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5030C1),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5419C3_nt  {
  virtual  ~S5419C3_nt(); // _ZN10S5419C3_ntD1Ev
  virtual void  v8(); // _ZN10S5419C3_nt2v8Ev
  virtual void  v9(); // _ZN10S5419C3_nt2v9Ev
  virtual void  v10(); // _ZN10S5419C3_nt3v10Ev
  virtual void  v11(); // _ZN10S5419C3_nt3v11Ev
  virtual void  v12(); // _ZN10S5419C3_nt3v12Ev
  virtual void  v13(); // _ZN10S5419C3_nt3v13Ev
  virtual void  v14(); // _ZN10S5419C3_nt3v14Ev
  virtual void  v15(); // _ZN10S5419C3_nt3v15Ev
  virtual void  v16(); // _ZN10S5419C3_nt3v16Ev
  virtual void  v17(); // _ZN10S5419C3_nt3v17Ev
  virtual void  v18(); // _ZN10S5419C3_nt3v18Ev
  virtual void  v19(); // _ZN10S5419C3_nt3v19Ev
  virtual void  v20(); // _ZN10S5419C3_nt3v20Ev
  virtual void  v21(); // _ZN10S5419C3_nt3v21Ev
  S5419C3_nt(); // tgen
};
//SIG(-1 S5419C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14}


 S5419C3_nt ::~S5419C3_nt(){ note_dtor("S5419C3_nt", this);}
void  S5419C3_nt ::v8(){vfunc_called(this, "_ZN10S5419C3_nt2v8Ev");}
void  S5419C3_nt ::v9(){vfunc_called(this, "_ZN10S5419C3_nt2v9Ev");}
void  S5419C3_nt ::v10(){vfunc_called(this, "_ZN10S5419C3_nt3v10Ev");}
void  S5419C3_nt ::v11(){vfunc_called(this, "_ZN10S5419C3_nt3v11Ev");}
void  S5419C3_nt ::v12(){vfunc_called(this, "_ZN10S5419C3_nt3v12Ev");}
void  S5419C3_nt ::v13(){vfunc_called(this, "_ZN10S5419C3_nt3v13Ev");}
void  S5419C3_nt ::v14(){vfunc_called(this, "_ZN10S5419C3_nt3v14Ev");}
void  S5419C3_nt ::v15(){vfunc_called(this, "_ZN10S5419C3_nt3v15Ev");}
void  S5419C3_nt ::v16(){vfunc_called(this, "_ZN10S5419C3_nt3v16Ev");}
void  S5419C3_nt ::v17(){vfunc_called(this, "_ZN10S5419C3_nt3v17Ev");}
void  S5419C3_nt ::v18(){vfunc_called(this, "_ZN10S5419C3_nt3v18Ev");}
void  S5419C3_nt ::v19(){vfunc_called(this, "_ZN10S5419C3_nt3v19Ev");}
void  S5419C3_nt ::v20(){vfunc_called(this, "_ZN10S5419C3_nt3v20Ev");}
void  S5419C3_nt ::v21(){vfunc_called(this, "_ZN10S5419C3_nt3v21Ev");}
S5419C3_nt ::S5419C3_nt(){ note_ctor("S5419C3_nt", this);} // tgen

//skip512 S5419C3_nt

#else // __cplusplus

extern void _ZN10S5419C3_ntC1Ev();
extern void _ZN10S5419C3_ntD1Ev();
Name_Map name_map_S5419C3_nt[] = {
  NSPAIR(_ZN10S5419C3_ntC1Ev),
  NSPAIR(_ZN10S5419C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5419C3_nt[];
extern void _ZN10S5419C3_ntD1Ev();
extern void _ZN10S5419C3_ntD0Ev();
extern void _ZN10S5419C3_nt2v8Ev();
extern void _ZN10S5419C3_nt2v9Ev();
extern void _ZN10S5419C3_nt3v10Ev();
extern void _ZN10S5419C3_nt3v11Ev();
extern void _ZN10S5419C3_nt3v12Ev();
extern void _ZN10S5419C3_nt3v13Ev();
extern void _ZN10S5419C3_nt3v14Ev();
extern void _ZN10S5419C3_nt3v15Ev();
extern void _ZN10S5419C3_nt3v16Ev();
extern void _ZN10S5419C3_nt3v17Ev();
extern void _ZN10S5419C3_nt3v18Ev();
extern void _ZN10S5419C3_nt3v19Ev();
extern void _ZN10S5419C3_nt3v20Ev();
extern void _ZN10S5419C3_nt3v21Ev();
static  VTBL_ENTRY vtc_S5419C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5419C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S5419C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v21Ev,
};
extern VTBL_ENTRY _ZTI10S5419C3_nt[];
VTBL_ENTRY *P__ZTI10S5419C3_nt = _ZTI10S5419C3_nt; 
extern  VTBL_ENTRY _ZTV10S5419C3_nt[];
Class_Descriptor cd_S5419C3_nt = {  "S5419C3_nt", // class name
  0,0,//no base classes
  &(vtc_S5419C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S5419C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5419C3_nt),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5419C2  : S5419C3_nt {
  void *s5419c2f0[2];
  char s5419c2f1;
  ::S2213C20_nt s5419c2f2[2];
  int s5419c2f3[2];
  char s5419c2f4;
  virtual  ~S5419C2(); // _ZN7S5419C2D1Ev
  virtual void  v22(); // _ZN7S5419C23v22Ev
  virtual void  v23(); // _ZN7S5419C23v23Ev
  virtual void  v24(); // _ZN7S5419C23v24Ev
  virtual void  v25(); // _ZN7S5419C23v25Ev
  virtual void  v26(); // _ZN7S5419C23v26Ev
  virtual void  v27(); // _ZN7S5419C23v27Ev
  virtual void  v28(); // _ZN7S5419C23v28Ev
  virtual void  v29(); // _ZN7S5419C23v29Ev
  virtual void  v30(); // _ZN7S5419C23v30Ev
  virtual void  v31(); // _ZN7S5419C23v31Ev
  virtual void  v32(); // _ZN7S5419C23v32Ev
  virtual void  v33(); // _ZN7S5419C23v33Ev
  virtual void  v34(); // _ZN7S5419C23v34Ev
  virtual void  v35(); // _ZN7S5419C23v35Ev
  S5419C2(); // tgen
};
//SIG(-1 S5419C2) C1{ BC2{ vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2] Fc FC3{ m Fp Fi FC4{ m}}[2] Fi[2] Fc}


 S5419C2 ::~S5419C2(){ note_dtor("S5419C2", this);}
void  S5419C2 ::v22(){vfunc_called(this, "_ZN7S5419C23v22Ev");}
void  S5419C2 ::v23(){vfunc_called(this, "_ZN7S5419C23v23Ev");}
void  S5419C2 ::v24(){vfunc_called(this, "_ZN7S5419C23v24Ev");}
void  S5419C2 ::v25(){vfunc_called(this, "_ZN7S5419C23v25Ev");}
void  S5419C2 ::v26(){vfunc_called(this, "_ZN7S5419C23v26Ev");}
void  S5419C2 ::v27(){vfunc_called(this, "_ZN7S5419C23v27Ev");}
void  S5419C2 ::v28(){vfunc_called(this, "_ZN7S5419C23v28Ev");}
void  S5419C2 ::v29(){vfunc_called(this, "_ZN7S5419C23v29Ev");}
void  S5419C2 ::v30(){vfunc_called(this, "_ZN7S5419C23v30Ev");}
void  S5419C2 ::v31(){vfunc_called(this, "_ZN7S5419C23v31Ev");}
void  S5419C2 ::v32(){vfunc_called(this, "_ZN7S5419C23v32Ev");}
void  S5419C2 ::v33(){vfunc_called(this, "_ZN7S5419C23v33Ev");}
void  S5419C2 ::v34(){vfunc_called(this, "_ZN7S5419C23v34Ev");}
void  S5419C2 ::v35(){vfunc_called(this, "_ZN7S5419C23v35Ev");}
S5419C2 ::S5419C2(){ note_ctor("S5419C2", this);} // tgen

static void Test_S5419C2()
{
  extern Class_Descriptor cd_S5419C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S5419C2, buf);
    S5419C2 *dp, &lv = *(dp=new (buf) S5419C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S5419C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5419C2)");
    check_base_class_offset(lv, (S5419C3_nt*), 0, "S5419C2");
    check_field_offset(lv, s5419c2f0, ABISELECT(8,4), "S5419C2.s5419c2f0");
    check_field_offset(lv, s5419c2f1, ABISELECT(24,12), "S5419C2.s5419c2f1");
    check_field_offset(lv, s5419c2f2, ABISELECT(32,16), "S5419C2.s5419c2f2");
    check_field_offset(lv, s5419c2f3, ABISELECT(64,40), "S5419C2.s5419c2f3");
    check_field_offset(lv, s5419c2f4, ABISELECT(72,48), "S5419C2.s5419c2f4");
    test_class_info(&lv, &cd_S5419C2);
    dp->~S5419C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5419C2(Test_S5419C2, "S5419C2", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S5419C2C1Ev();
extern void _ZN7S5419C2D1Ev();
Name_Map name_map_S5419C2[] = {
  NSPAIR(_ZN7S5419C2C1Ev),
  NSPAIR(_ZN7S5419C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5419C3_nt;
extern VTBL_ENTRY _ZTI10S5419C3_nt[];
extern  VTBL_ENTRY _ZTV10S5419C3_nt[];
static Base_Class bases_S5419C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5419C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5419C2[];
extern void _ZN7S5419C2D1Ev();
extern void _ZN7S5419C2D0Ev();
extern void _ZN10S5419C3_nt2v8Ev();
extern void _ZN10S5419C3_nt2v9Ev();
extern void _ZN10S5419C3_nt3v10Ev();
extern void _ZN10S5419C3_nt3v11Ev();
extern void _ZN10S5419C3_nt3v12Ev();
extern void _ZN10S5419C3_nt3v13Ev();
extern void _ZN10S5419C3_nt3v14Ev();
extern void _ZN10S5419C3_nt3v15Ev();
extern void _ZN10S5419C3_nt3v16Ev();
extern void _ZN10S5419C3_nt3v17Ev();
extern void _ZN10S5419C3_nt3v18Ev();
extern void _ZN10S5419C3_nt3v19Ev();
extern void _ZN10S5419C3_nt3v20Ev();
extern void _ZN10S5419C3_nt3v21Ev();
extern void _ZN7S5419C23v22Ev();
extern void _ZN7S5419C23v23Ev();
extern void _ZN7S5419C23v24Ev();
extern void _ZN7S5419C23v25Ev();
extern void _ZN7S5419C23v26Ev();
extern void _ZN7S5419C23v27Ev();
extern void _ZN7S5419C23v28Ev();
extern void _ZN7S5419C23v29Ev();
extern void _ZN7S5419C23v30Ev();
extern void _ZN7S5419C23v31Ev();
extern void _ZN7S5419C23v32Ev();
extern void _ZN7S5419C23v33Ev();
extern void _ZN7S5419C23v34Ev();
extern void _ZN7S5419C23v35Ev();
static  VTBL_ENTRY vtc_S5419C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5419C2[0]),
  (VTBL_ENTRY)&_ZN7S5419C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5419C2D0Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v22Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v25Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v35Ev,
};
extern VTBL_ENTRY _ZTI7S5419C2[];
extern  VTBL_ENTRY _ZTV7S5419C2[];
Class_Descriptor cd_S5419C2 = {  "S5419C2", // class name
  bases_S5419C2, 1,
  &(vtc_S5419C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S5419C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5419C2),32, //virtual function table var
  2, // 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  S5419C1  : S5419C2 {
  virtual  ~S5419C1(); // _ZN7S5419C1D1Ev
  virtual void  v1(); // _ZN7S5419C12v1Ev
  virtual void  v2(); // _ZN7S5419C12v2Ev
  virtual void  v3(); // _ZN7S5419C12v3Ev
  virtual void  v4(); // _ZN7S5419C12v4Ev
  virtual void  v5(); // _ZN7S5419C12v5Ev
  virtual void  v6(); // _ZN7S5419C12v6Ev
  virtual void  v7(); // _ZN7S5419C12v7Ev
  S5419C1(); // tgen
};
//SIG(1 S5419C1) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21} vd v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 Fp[2] Fc FC4{ m Fp Fi FC5{ m}}[2] Fi[2] Fc} vd v1 v2 v3 v4 v5 v6 v7}


 S5419C1 ::~S5419C1(){ note_dtor("S5419C1", this);}
void  S5419C1 ::v1(){vfunc_called(this, "_ZN7S5419C12v1Ev");}
void  S5419C1 ::v2(){vfunc_called(this, "_ZN7S5419C12v2Ev");}
void  S5419C1 ::v3(){vfunc_called(this, "_ZN7S5419C12v3Ev");}
void  S5419C1 ::v4(){vfunc_called(this, "_ZN7S5419C12v4Ev");}
void  S5419C1 ::v5(){vfunc_called(this, "_ZN7S5419C12v5Ev");}
void  S5419C1 ::v6(){vfunc_called(this, "_ZN7S5419C12v6Ev");}
void  S5419C1 ::v7(){vfunc_called(this, "_ZN7S5419C12v7Ev");}
S5419C1 ::S5419C1(){ note_ctor("S5419C1", this);} // tgen

static void Test_S5419C1()
{
  extern Class_Descriptor cd_S5419C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S5419C1, buf);
    S5419C1 *dp, &lv = *(dp=new (buf) S5419C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S5419C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5419C1)");
    check_base_class_offset(lv, (S5419C3_nt*)(S5419C2*), 0, "S5419C1");
    check_base_class_offset(lv, (S5419C2*), 0, "S5419C1");
    test_class_info(&lv, &cd_S5419C1);
    dp->~S5419C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5419C1(Test_S5419C1, "S5419C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S5419C1C1Ev();
extern void _ZN7S5419C1D1Ev();
Name_Map name_map_S5419C1[] = {
  NSPAIR(_ZN7S5419C1C1Ev),
  NSPAIR(_ZN7S5419C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5419C3_nt;
extern VTBL_ENTRY _ZTI10S5419C3_nt[];
extern  VTBL_ENTRY _ZTV10S5419C3_nt[];
extern Class_Descriptor cd_S5419C2;
extern VTBL_ENTRY _ZTI7S5419C2[];
extern  VTBL_ENTRY _ZTV7S5419C2[];
static Base_Class bases_S5419C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5419C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5419C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5419C1[];
extern void _ZN7S5419C1D1Ev();
extern void _ZN7S5419C1D0Ev();
extern void _ZN10S5419C3_nt2v8Ev();
extern void _ZN10S5419C3_nt2v9Ev();
extern void _ZN10S5419C3_nt3v10Ev();
extern void _ZN10S5419C3_nt3v11Ev();
extern void _ZN10S5419C3_nt3v12Ev();
extern void _ZN10S5419C3_nt3v13Ev();
extern void _ZN10S5419C3_nt3v14Ev();
extern void _ZN10S5419C3_nt3v15Ev();
extern void _ZN10S5419C3_nt3v16Ev();
extern void _ZN10S5419C3_nt3v17Ev();
extern void _ZN10S5419C3_nt3v18Ev();
extern void _ZN10S5419C3_nt3v19Ev();
extern void _ZN10S5419C3_nt3v20Ev();
extern void _ZN10S5419C3_nt3v21Ev();
extern void _ZN7S5419C23v22Ev();
extern void _ZN7S5419C23v23Ev();
extern void _ZN7S5419C23v24Ev();
extern void _ZN7S5419C23v25Ev();
extern void _ZN7S5419C23v26Ev();
extern void _ZN7S5419C23v27Ev();
extern void _ZN7S5419C23v28Ev();
extern void _ZN7S5419C23v29Ev();
extern void _ZN7S5419C23v30Ev();
extern void _ZN7S5419C23v31Ev();
extern void _ZN7S5419C23v32Ev();
extern void _ZN7S5419C23v33Ev();
extern void _ZN7S5419C23v34Ev();
extern void _ZN7S5419C23v35Ev();
extern void _ZN7S5419C12v1Ev();
extern void _ZN7S5419C12v2Ev();
extern void _ZN7S5419C12v3Ev();
extern void _ZN7S5419C12v4Ev();
extern void _ZN7S5419C12v5Ev();
extern void _ZN7S5419C12v6Ev();
extern void _ZN7S5419C12v7Ev();
static  VTBL_ENTRY vtc_S5419C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5419C1[0]),
  (VTBL_ENTRY)&_ZN7S5419C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5419C1D0Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S5419C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v22Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v25Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5419C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5419C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5419C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5419C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5419C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5419C12v5Ev,
  (VTBL_ENTRY)&_ZN7S5419C12v6Ev,
  (VTBL_ENTRY)&_ZN7S5419C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S5419C1[];
extern  VTBL_ENTRY _ZTV7S5419C1[];
Class_Descriptor cd_S5419C1 = {  "S5419C1", // class name
  bases_S5419C1, 2,
  &(vtc_S5419C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S5419C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5419C1),39, //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  S7603C3  {
  short s7603c3f0[5];
  virtual void  v4(); // _ZN7S7603C32v4Ev
  virtual void  v5(); // _ZN7S7603C32v5Ev
  virtual void  v6(); // _ZN7S7603C32v6Ev
  virtual void  v7(); // _ZN7S7603C32v7Ev
  virtual void  v8(); // _ZN7S7603C32v8Ev
  ~S7603C3(); // tgen
  S7603C3(); // tgen
};
//SIG(-1 S7603C3) C1{ v1 v2 v3 v4 v5 Fs[5]}


void  S7603C3 ::v4(){vfunc_called(this, "_ZN7S7603C32v4Ev");}
void  S7603C3 ::v5(){vfunc_called(this, "_ZN7S7603C32v5Ev");}
void  S7603C3 ::v6(){vfunc_called(this, "_ZN7S7603C32v6Ev");}
void  S7603C3 ::v7(){vfunc_called(this, "_ZN7S7603C32v7Ev");}
void  S7603C3 ::v8(){vfunc_called(this, "_ZN7S7603C32v8Ev");}
S7603C3 ::~S7603C3(){ note_dtor("S7603C3", this);} // tgen
S7603C3 ::S7603C3(){ note_ctor("S7603C3", this);} // tgen

static void Test_S7603C3()
{
  extern Class_Descriptor cd_S7603C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7603C3, buf);
    S7603C3 *dp, &lv = *(dp=new (buf) S7603C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7603C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7603C3)");
    check_field_offset(lv, s7603c3f0, ABISELECT(8,4), "S7603C3.s7603c3f0");
    test_class_info(&lv, &cd_S7603C3);
    dp->~S7603C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7603C3(Test_S7603C3, "S7603C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7603C3C1Ev();
extern void _ZN7S7603C3D1Ev();
Name_Map name_map_S7603C3[] = {
  NSPAIR(_ZN7S7603C3C1Ev),
  NSPAIR(_ZN7S7603C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7603C3[];
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY vtc_S7603C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C3[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
Class_Descriptor cd_S7603C3 = {  "S7603C3", // class name
  0,0,//no base classes
  &(vtc_S7603C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7603C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7603C3),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  S7603C2  : virtual S7603C3 {
  virtual void  v9(); // _ZN7S7603C22v9Ev
  virtual void  v10(); // _ZN7S7603C23v10Ev
  ~S7603C2(); // tgen
  S7603C2(); // tgen
};
//SIG(-1 S7603C2) C1{ VBC2{ v3 v4 v5 v6 v7 Fs[5]} v1 v2}


void  S7603C2 ::v9(){vfunc_called(this, "_ZN7S7603C22v9Ev");}
void  S7603C2 ::v10(){vfunc_called(this, "_ZN7S7603C23v10Ev");}
S7603C2 ::~S7603C2(){ note_dtor("S7603C2", this);} // tgen
S7603C2 ::S7603C2(){ note_ctor("S7603C2", this);} // tgen

static void Test_S7603C2()
{
  extern Class_Descriptor cd_S7603C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7603C2, buf);
    S7603C2 *dp, &lv = *(dp=new (buf) S7603C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7603C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7603C2)");
    check_base_class_offset(lv, (S7603C3*), ABISELECT(8,4), "S7603C2");
    test_class_info(&lv, &cd_S7603C2);
    dp->~S7603C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7603C2(Test_S7603C2, "S7603C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7603C2C1Ev();
extern void _ZN7S7603C2D1Ev();
Name_Map name_map_S7603C2[] = {
  NSPAIR(_ZN7S7603C2C1Ev),
  NSPAIR(_ZN7S7603C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
static Base_Class bases_S7603C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7603C3,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7603C2[];
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY vtc_S7603C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S7603C2[];
static  VTT_ENTRY vtt_S7603C2[] = {
  {&(_ZTV7S7603C2[3]),  3,17},
  {&(_ZTV7S7603C2[12]),  12,17},
};
extern VTBL_ENTRY _ZTI7S7603C2[];
extern  VTBL_ENTRY _ZTV7S7603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C2[];
Class_Descriptor cd_S7603C2 = {  "S7603C2", // class name
  bases_S7603C2, 1,
  &(vtc_S7603C2[0]), // expected_vtbl_contents
  &(vtt_S7603C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7603C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7603C2),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7603C2),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  S7603C6  : S7603C3 , virtual S7603C2 {
  int s7603c6f0[2];
  virtual void  v11(); // _ZN7S7603C63v11Ev
  ~S7603C6(); // tgen
  S7603C6(); // tgen
};
//SIG(-1 S7603C6) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} v1 Fi[2]}


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

static void Test_S7603C6()
{
  extern Class_Descriptor cd_S7603C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S7603C6, buf);
    S7603C6 *dp, &lv = *(dp=new (buf) S7603C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S7603C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7603C6)");
    /*is_ambiguous_... S7603C6::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*), 0, "S7603C6");
    check_base_class_offset(lv, (S7603C3*)(S7603C2*), ABISELECT(40,28), "S7603C6");
    check_base_class_offset(lv, (S7603C2*), ABISELECT(32,24), "S7603C6");
    check_field_offset(lv, s7603c6f0, ABISELECT(20,16), "S7603C6.s7603c6f0");
    test_class_info(&lv, &cd_S7603C6);
    dp->~S7603C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7603C6(Test_S7603C6, "S7603C6", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S7603C6C1Ev();
extern void _ZN7S7603C6D1Ev();
Name_Map name_map_S7603C6[] = {
  NSPAIR(_ZN7S7603C6C1Ev),
  NSPAIR(_ZN7S7603C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C2;
extern VTBL_ENTRY _ZTI7S7603C2[];
extern  VTBL_ENTRY _ZTV7S7603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C2[];
static Base_Class bases_S7603C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7603C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7603C3,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7603C2,    ABISELECT(32,24), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7603C6[];
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY vtc_S7603C6[] = {
  ABISELECT(40,28),
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S7603C6[];
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C2__7S7603C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
static  VTT_ENTRY vtt_S7603C6[] = {
  {&(_ZTV7S7603C6[4]),  4,29},
  {&(_ZTV7S7603C6[15]),  15,29},
  {&(_ZTV7S7603C6[24]),  24,29},
  {&(_tg__ZTV7S7603C2__7S7603C6[3]),  3,5},
  {&(_tg__ZTV7S7603C3__7S7603C2__7S7603C6[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7603C6[];
extern  VTBL_ENTRY _ZTV7S7603C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C6[];
Class_Descriptor cd_S7603C6 = {  "S7603C6", // class name
  bases_S7603C6, 3,
  &(vtc_S7603C6[0]), // expected_vtbl_contents
  &(vtt_S7603C6[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S7603C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7603C6),29, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7603C6),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  S7603C5  : S7603C3 , virtual S7603C2 , S7603C6 {
  int s7603c5f0;
  virtual void  v12(); // _ZN7S7603C53v12Ev
  ~S7603C5(); // tgen
  S7603C5(); // tgen
};
//SIG(-1 S7603C5) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} BC4{ BC2 VBC3 v9 Fi[2]} v1 Fi}


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

static void Test_S7603C5()
{
  extern Class_Descriptor cd_S7603C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S7603C5, buf);
    S7603C5 *dp, &lv = *(dp=new (buf) S7603C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S7603C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7603C5)");
    /*is_ambiguous_... S7603C5::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*), 0, "S7603C5");
    check_base_class_offset(lv, (S7603C3*)(S7603C2*), ABISELECT(64,48), "S7603C5");
    check_base_class_offset(lv, (S7603C2*), ABISELECT(56,44), "S7603C5");
    check_base_class_offset(lv, (S7603C2*)(S7603C6*), ABISELECT(56,44), "S7603C5");
    /*is_ambiguous_... S7603C6::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C6*), ABISELECT(24,16), "S7603C5");
    check_base_class_offset(lv, (S7603C6*), ABISELECT(24,16), "S7603C5");
    check_field_offset(lv, s7603c5f0, ABISELECT(52,40), "S7603C5.s7603c5f0");
    test_class_info(&lv, &cd_S7603C5);
    dp->~S7603C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7603C5(Test_S7603C5, "S7603C5", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S7603C5C1Ev();
extern void _ZN7S7603C5D1Ev();
Name_Map name_map_S7603C5[] = {
  NSPAIR(_ZN7S7603C5C1Ev),
  NSPAIR(_ZN7S7603C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C2;
extern VTBL_ENTRY _ZTI7S7603C2[];
extern  VTBL_ENTRY _ZTV7S7603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C2[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C6;
extern VTBL_ENTRY _ZTI7S7603C6[];
extern  VTBL_ENTRY _ZTV7S7603C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C6[];
static Base_Class bases_S7603C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7603C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7603C3,    ABISELECT(64,48), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7603C2,    ABISELECT(56,44), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7603C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7603C6,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7603C5[];
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C53v12Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY vtc_S7603C5[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C53v12Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S7603C5[];
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C6__7S7603C5[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C6__7S7603C5[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__A1__7S7603C6__7S7603C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C2__7S7603C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
static  VTT_ENTRY vtt_S7603C5[] = {
  {&(_ZTV7S7603C5[4]),  4,39},
  {&(_tg__ZTV7S7603C6__7S7603C5[4]),  4,10},
  {&(_tg__ZTV7S7603C2__7S7603C6__7S7603C5[5]),  5,7},
  {&(_tg__ZTV7S7603C3__A1__7S7603C6__7S7603C5[7]),  7,12},
  {&(_ZTV7S7603C5[25]),  25,39},
  {&(_ZTV7S7603C5[34]),  34,39},
  {&(_ZTV7S7603C5[14]),  14,39},
  {&(_tg__ZTV7S7603C2__7S7603C5[3]),  3,5},
  {&(_tg__ZTV7S7603C3__7S7603C2__7S7603C5[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7603C5[];
extern  VTBL_ENTRY _ZTV7S7603C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C5[];
Class_Descriptor cd_S7603C5 = {  "S7603C5", // class name
  bases_S7603C5, 5,
  &(vtc_S7603C5[0]), // expected_vtbl_contents
  &(vtt_S7603C5[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S7603C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7603C5),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7603C5),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7603C4  : virtual S7603C5 , S7603C3 , S7603C2 {
  char s7603c4f0;
  void *s7603c4f1;
  virtual void  v13(); // _ZN7S7603C43v13Ev
  virtual void  v14(); // _ZN7S7603C43v14Ev
  virtual void  v15(); // _ZN7S7603C43v15Ev
  virtual void  v16(); // _ZN7S7603C43v16Ev
  virtual void  v17(); // _ZN7S7603C43v17Ev
  ~S7603C4(); // tgen
  S7603C4(); // tgen
};
//SIG(-1 S7603C4) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 Fs[5]} VBC4{ VBC3 v11 v12} BC5{ BC3 VBC4 v13 Fi[2]} v14 Fi} BC3 BC4 v1 v2 v3 v4 v5 Fc Fp}


void  S7603C4 ::v13(){vfunc_called(this, "_ZN7S7603C43v13Ev");}
void  S7603C4 ::v14(){vfunc_called(this, "_ZN7S7603C43v14Ev");}
void  S7603C4 ::v15(){vfunc_called(this, "_ZN7S7603C43v15Ev");}
void  S7603C4 ::v16(){vfunc_called(this, "_ZN7S7603C43v16Ev");}
void  S7603C4 ::v17(){vfunc_called(this, "_ZN7S7603C43v17Ev");}
S7603C4 ::~S7603C4(){ note_dtor("S7603C4", this);} // tgen
S7603C4 ::S7603C4(){ note_ctor("S7603C4", this);} // tgen

static void Test_S7603C4()
{
  extern Class_Descriptor cd_S7603C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S7603C4, buf);
    S7603C4 *dp, &lv = *(dp=new (buf) S7603C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S7603C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7603C4)");
    /*is_ambiguous_... S7603C5::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C5*), ABISELECT(48,28), "S7603C4");
    /*is_ambiguous_... S7603C4::S7603C2 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C2*), ABISELECT(112,76), "S7603C4");
    /*is_ambiguous_... S7603C4::S7603C2 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C2*), ABISELECT(112,76), "S7603C4");
    check_base_class_offset(lv, (S7603C2*)(S7603C5*), ABISELECT(104,72), "S7603C4");
    check_base_class_offset(lv, (S7603C2*)(S7603C6*)(S7603C5*), ABISELECT(104,72), "S7603C4");
    /*is_ambiguous_... S7603C6::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C6*)(S7603C5*), ABISELECT(72,44), "S7603C4");
    check_base_class_offset(lv, (S7603C6*)(S7603C5*), ABISELECT(72,44), "S7603C4");
    check_base_class_offset(lv, (S7603C5*), ABISELECT(48,28), "S7603C4");
    /*is_ambiguous_... S7603C4::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*), 0, "S7603C4");
    /*is_ambiguous_... S7603C4::S7603C2 */ AMB_check_base_class_offset(lv, (S7603C2*), ABISELECT(24,16), "S7603C4");
    check_field_offset(lv, s7603c4f0, ABISELECT(32,20), "S7603C4.s7603c4f0");
    check_field_offset(lv, s7603c4f1, ABISELECT(40,24), "S7603C4.s7603c4f1");
    test_class_info(&lv, &cd_S7603C4);
    dp->~S7603C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7603C4(Test_S7603C4, "S7603C4", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN7S7603C4C1Ev();
extern void _ZN7S7603C4D1Ev();
Name_Map name_map_S7603C4[] = {
  NSPAIR(_ZN7S7603C4C1Ev),
  NSPAIR(_ZN7S7603C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C2;
extern VTBL_ENTRY _ZTI7S7603C2[];
extern  VTBL_ENTRY _ZTV7S7603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C2[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C6;
extern VTBL_ENTRY _ZTI7S7603C6[];
extern  VTBL_ENTRY _ZTV7S7603C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C6[];
extern Class_Descriptor cd_S7603C5;
extern VTBL_ENTRY _ZTI7S7603C5[];
extern  VTBL_ENTRY _ZTV7S7603C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C5[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C2;
extern VTBL_ENTRY _ZTI7S7603C2[];
extern  VTBL_ENTRY _ZTV7S7603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C2[];
static Base_Class bases_S7603C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7603C3,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7603C3,    ABISELECT(112,76), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7603C2,    ABISELECT(104,72), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7603C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7603C6,    ABISELECT(72,44), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7603C5,    ABISELECT(48,28), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7603C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7603C2,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7603C4[];
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C43v13Ev();
extern void _ZN7S7603C43v14Ev();
extern void _ZN7S7603C43v15Ev();
extern void _ZN7S7603C43v16Ev();
extern void _ZN7S7603C43v17Ev();
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C53v12Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY vtc_S7603C4[] = {
  ABISELECT(112,76),
  ABISELECT(104,72),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v17Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,48),
  ABISELECT(56,44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C53v12Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S7603C4[];
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__A__7S7603C4[] = {
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C2__A__7S7603C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C5__7S7603C4[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C53v12Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C67S7603C5__7S7603C4[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C67S7603C5__7S7603C4[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__A1__7S7603C67S7603C5__7S7603C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C5__7S7603C4[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__A1__7S7603C5__7S7603C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C6__7S7603C5__7S7603C4[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C2__7S7603C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
static  VTT_ENTRY vtt_S7603C4[] = {
  {&(_ZTV7S7603C4[5]),  5,66},
  {&(_tg__ZTV7S7603C2__A__7S7603C4[3]),  3,5},
  {&(_tg__ZTV7S7603C3__7S7603C2__A__7S7603C4[7]),  7,12},
  {&(_ZTV7S7603C4[31]),  31,66},
  {&(_ZTV7S7603C4[52]),  52,66},
  {&(_ZTV7S7603C4[61]),  61,66},
  {&(_ZTV7S7603C4[41]),  41,66},
  {&(_ZTV7S7603C4[18]),  18,66},
  {&(_tg__ZTV7S7603C5__7S7603C4[4]),  4,10},
  {&(_tg__ZTV7S7603C67S7603C5__7S7603C4[4]),  4,10},
  {&(_tg__ZTV7S7603C2__7S7603C67S7603C5__7S7603C4[5]),  5,7},
  {&(_tg__ZTV7S7603C3__A1__7S7603C67S7603C5__7S7603C4[7]),  7,12},
  {&(_tg__ZTV7S7603C2__7S7603C5__7S7603C4[5]),  5,7},
  {&(_tg__ZTV7S7603C3__A1__7S7603C5__7S7603C4[7]),  7,12},
  {&(_tg__ZTV7S7603C6__7S7603C5__7S7603C4[4]),  4,10},
  {&(_tg__ZTV7S7603C2__7S7603C4[3]),  3,5},
  {&(_tg__ZTV7S7603C3__7S7603C2__7S7603C4[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7603C4[];
extern  VTBL_ENTRY _ZTV7S7603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C4[];
Class_Descriptor cd_S7603C4 = {  "S7603C4", // class name
  bases_S7603C4, 8,
  &(vtc_S7603C4[0]), // expected_vtbl_contents
  &(vtt_S7603C4[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI7S7603C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7603C4),66, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7603C4),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7603C8  : virtual S7603C2 , S7603C6 {
  int s7603c8f0[3];
  void *s7603c8f1;
  virtual void  v18(); // _ZN7S7603C83v18Ev
  virtual void  v19(); // _ZN7S7603C83v19Ev
  virtual void  v20(); // _ZN7S7603C83v20Ev
  virtual void  v21(); // _ZN7S7603C83v21Ev
  ~S7603C8(); // tgen
  S7603C8(); // tgen
};
//SIG(-1 S7603C8) C1{ VBC2{ VBC3{ v5 v6 v7 v8 v9 Fs[5]} v10 v11} BC4{ BC3 VBC2 v12 Fi[2]} v1 v2 v3 v4 Fi[3] Fp}


void  S7603C8 ::v18(){vfunc_called(this, "_ZN7S7603C83v18Ev");}
void  S7603C8 ::v19(){vfunc_called(this, "_ZN7S7603C83v19Ev");}
void  S7603C8 ::v20(){vfunc_called(this, "_ZN7S7603C83v20Ev");}
void  S7603C8 ::v21(){vfunc_called(this, "_ZN7S7603C83v21Ev");}
S7603C8 ::~S7603C8(){ note_dtor("S7603C8", this);} // tgen
S7603C8 ::S7603C8(){ note_ctor("S7603C8", this);} // tgen

static void Test_S7603C8()
{
  extern Class_Descriptor cd_S7603C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S7603C8, buf);
    S7603C8 *dp, &lv = *(dp=new (buf) S7603C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S7603C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7603C8)");
    check_base_class_offset(lv, (S7603C3*)(S7603C2*), ABISELECT(56,44), "S7603C8");
    check_base_class_offset(lv, (S7603C2*), ABISELECT(48,40), "S7603C8");
    check_base_class_offset(lv, (S7603C2*)(S7603C6*), ABISELECT(48,40), "S7603C8");
    /*is_ambiguous_... S7603C6::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C6*), 0, "S7603C8");
    check_base_class_offset(lv, (S7603C6*), 0, "S7603C8");
    check_field_offset(lv, s7603c8f0, ABISELECT(28,24), "S7603C8.s7603c8f0");
    check_field_offset(lv, s7603c8f1, ABISELECT(40,36), "S7603C8.s7603c8f1");
    test_class_info(&lv, &cd_S7603C8);
    dp->~S7603C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7603C8(Test_S7603C8, "S7603C8", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN7S7603C8C1Ev();
extern void _ZN7S7603C8D1Ev();
Name_Map name_map_S7603C8[] = {
  NSPAIR(_ZN7S7603C8C1Ev),
  NSPAIR(_ZN7S7603C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C2;
extern VTBL_ENTRY _ZTI7S7603C2[];
extern  VTBL_ENTRY _ZTV7S7603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C2[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C6;
extern VTBL_ENTRY _ZTI7S7603C6[];
extern  VTBL_ENTRY _ZTV7S7603C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C6[];
static Base_Class bases_S7603C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7603C3,    ABISELECT(56,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7603C2,    ABISELECT(48,40), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7603C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7603C6,    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 _ZTI7S7603C8[];
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
extern void _ZN7S7603C83v18Ev();
extern void _ZN7S7603C83v19Ev();
extern void _ZN7S7603C83v20Ev();
extern void _ZN7S7603C83v21Ev();
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY vtc_S7603C8[] = {
  ABISELECT(56,44),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C8[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v21Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7603C8[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7603C8[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S7603C8[];
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C6__7S7603C8[] = {
  ABISELECT(56,44),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C6__7S7603C8[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__A1__7S7603C6__7S7603C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C2__7S7603C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
static  VTT_ENTRY vtt_S7603C8[] = {
  {&(_ZTV7S7603C8[4]),  4,33},
  {&(_tg__ZTV7S7603C6__7S7603C8[4]),  4,10},
  {&(_tg__ZTV7S7603C2__7S7603C6__7S7603C8[5]),  5,7},
  {&(_tg__ZTV7S7603C3__A1__7S7603C6__7S7603C8[7]),  7,12},
  {&(_ZTV7S7603C8[19]),  19,33},
  {&(_ZTV7S7603C8[28]),  28,33},
  {&(_tg__ZTV7S7603C2__7S7603C8[3]),  3,5},
  {&(_tg__ZTV7S7603C3__7S7603C2__7S7603C8[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7603C8[];
extern  VTBL_ENTRY _ZTV7S7603C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C8[];
Class_Descriptor cd_S7603C8 = {  "S7603C8", // class name
  bases_S7603C8, 4,
  &(vtc_S7603C8[0]), // expected_vtbl_contents
  &(vtt_S7603C8[0]), // expected_vtt_contents
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI7S7603C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7603C8),33, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7603C8),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7603C7  : virtual S7603C8 {
  __tsi64 s7603c7f0;
  ~S7603C7(); // tgen
  S7603C7(); // tgen
};
//SIG(-1 S7603C7) C1{ VBC2{ VBC3{ VBC4{ v1 v2 v3 v4 v5 Fs[5]} v6 v7} BC5{ BC4 VBC3 v8 Fi[2]} v9 v10 v11 v12 Fi[3] Fp} FL}


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

static void Test_S7603C7()
{
  extern Class_Descriptor cd_S7603C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S7603C7, buf);
    S7603C7 *dp, &lv = *(dp=new (buf) S7603C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S7603C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7603C7)");
    check_base_class_offset(lv, (S7603C3*)(S7603C2*), ABISELECT(64,52), "S7603C7");
    check_base_class_offset(lv, (S7603C2*)(S7603C8*), 0, "S7603C7");
    check_base_class_offset(lv, (S7603C2*)(S7603C6*)(S7603C8*), 0, "S7603C7");
    /*is_ambiguous_... S7603C6::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C6*)(S7603C8*), ABISELECT(16,12), "S7603C7");
    check_base_class_offset(lv, (S7603C6*)(S7603C8*), ABISELECT(16,12), "S7603C7");
    check_base_class_offset(lv, (S7603C8*), ABISELECT(16,12), "S7603C7");
    check_field_offset(lv, s7603c7f0, ABISELECT(8,4), "S7603C7.s7603c7f0");
    test_class_info(&lv, &cd_S7603C7);
    dp->~S7603C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7603C7(Test_S7603C7, "S7603C7", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN7S7603C7C1Ev();
extern void _ZN7S7603C7D1Ev();
Name_Map name_map_S7603C7[] = {
  NSPAIR(_ZN7S7603C7C1Ev),
  NSPAIR(_ZN7S7603C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C2;
extern VTBL_ENTRY _ZTI7S7603C2[];
extern  VTBL_ENTRY _ZTV7S7603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C2[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C6;
extern VTBL_ENTRY _ZTI7S7603C6[];
extern  VTBL_ENTRY _ZTV7S7603C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C6[];
extern Class_Descriptor cd_S7603C8;
extern VTBL_ENTRY _ZTI7S7603C8[];
extern  VTBL_ENTRY _ZTV7S7603C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C8[];
static Base_Class bases_S7603C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7603C3,    ABISELECT(64,52), //bcp->offset
    33, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7603C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7603C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7603C6,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7603C8,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7603C7[];
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
extern void _ZN7S7603C83v18Ev();
extern void _ZN7S7603C83v19Ev();
extern void _ZN7S7603C83v20Ev();
extern void _ZN7S7603C83v21Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY vtc_S7603C7[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(64,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C7[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,40),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7603C7[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v21Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI7S7603C7[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S7603C7[];
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
extern void _ZN7S7603C83v18Ev();
extern void _ZN7S7603C83v19Ev();
extern void _ZN7S7603C83v20Ev();
extern void _ZN7S7603C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C8__7S7603C7[] = {
  ABISELECT(48,40),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C8[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v21Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C67S7603C8__7S7603C7[] = {
  ABISELECT(48,40),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C67S7603C8__7S7603C7[] = {
  0,
  0,
  ABISELECT(64,52),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__A1__7S7603C67S7603C8__7S7603C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C8__7S7603C7[] = {
  0,
  0,
  ABISELECT(64,52),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7603C8[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C8__7S7603C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7603C8[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C7[] = {
  ABISELECT(64,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C2__7S7603C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
static  VTT_ENTRY vtt_S7603C7[] = {
  {&(_ZTV7S7603C7[7]),  7,45},
  {&(_ZTV7S7603C7[23]),  23,45},
  {&(_ZTV7S7603C7[7]),  7,45},
  {&(_ZTV7S7603C7[40]),  40,45},
  {&(_tg__ZTV7S7603C8__7S7603C7[4]),  4,14},
  {&(_tg__ZTV7S7603C67S7603C8__7S7603C7[4]),  4,10},
  {&(_tg__ZTV7S7603C2__7S7603C67S7603C8__7S7603C7[5]),  5,7},
  {&(_tg__ZTV7S7603C3__A1__7S7603C67S7603C8__7S7603C7[7]),  7,12},
  {&(_tg__ZTV7S7603C2__7S7603C8__7S7603C7[5]),  5,7},
  {&(_tg__ZTV7S7603C3__7S7603C8__7S7603C7[7]),  7,12},
  {&(_tg__ZTV7S7603C2__7S7603C7[3]),  3,5},
  {&(_tg__ZTV7S7603C3__7S7603C2__7S7603C7[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7603C7[];
extern  VTBL_ENTRY _ZTV7S7603C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C7[];
Class_Descriptor cd_S7603C7 = {  "S7603C7", // class name
  bases_S7603C7, 5,
  &(vtc_S7603C7[0]), // expected_vtbl_contents
  &(vtt_S7603C7[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI7S7603C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7603C7),45, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7603C7),12, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7603C1  : S7603C2 , virtual S7603C4 , virtual S7603C7 {
  __tsi64 s7603c1f0;
  ::S7656C13_nt s7603c1f1;
  virtual void  v1(); // _ZN7S7603C12v1Ev
  virtual void  v2(); // _ZN7S7603C12v2Ev
  virtual void  v3(); // _ZN7S7603C12v3Ev
  ~S7603C1(); // tgen
  S7603C1(); // tgen
};
//SIG(1 S7603C1) C1{ BC2{ VBC3{ v4 v5 v6 v7 v8 Fs[5]} v9 v10} VBC4{ VBC5{ BC3 VBC2 BC6{ BC3 VBC2 v11 Fi[2]} v12 Fi} BC3 BC2 v13 v14 v15 v16 v17 Fc Fp} VBC7{ VBC8{ VBC2 BC6 v18 v19 v20 v21 Fi[3] Fp} FL} v1 v2 v3 FL FU9{ m}}


void  S7603C1 ::v1(){vfunc_called(this, "_ZN7S7603C12v1Ev");}
void  S7603C1 ::v2(){vfunc_called(this, "_ZN7S7603C12v2Ev");}
void  S7603C1 ::v3(){vfunc_called(this, "_ZN7S7603C12v3Ev");}
S7603C1 ::~S7603C1(){ note_dtor("S7603C1", this);} // tgen
S7603C1 ::S7603C1(){ note_ctor("S7603C1", this);} // tgen

static void Test_S7603C1()
{
  extern Class_Descriptor cd_S7603C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,40)];
    init_test(&cd_S7603C1, buf);
    S7603C1 *dp, &lv = *(dp=new (buf) S7603C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,156), "sizeof(S7603C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7603C1)");
    /*is_ambiguous_... S7603C1::S7603C2 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C2*), ABISELECT(24,16), "S7603C1");
    /*is_ambiguous_... S7603C1::S7603C2 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C2*), ABISELECT(24,16), "S7603C1");
    /*is_ambiguous_... S7603C4::S7603C2 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C2*)(S7603C4*), ABISELECT(24,16), "S7603C1");
    /*is_ambiguous_... S7603C1::S7603C2 */ AMB_check_base_class_offset(lv, (S7603C2*), 0, "S7603C1");
    /*is_ambiguous_... S7603C5::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C5*), ABISELECT(96,60), "S7603C1");
    check_base_class_offset(lv, (S7603C2*)(S7603C5*), ABISELECT(152,104), "S7603C1");
    check_base_class_offset(lv, (S7603C2*)(S7603C6*)(S7603C5*), ABISELECT(152,104), "S7603C1");
    check_base_class_offset(lv, (S7603C2*)(S7603C8*), ABISELECT(152,104), "S7603C1");
    check_base_class_offset(lv, (S7603C2*)(S7603C6*)(S7603C8*), ABISELECT(152,104), "S7603C1");
    /*is_ambiguous_... S7603C6::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C6*)(S7603C5*), ABISELECT(120,76), "S7603C1");
    check_base_class_offset(lv, (S7603C6*)(S7603C5*), ABISELECT(120,76), "S7603C1");
    check_base_class_offset(lv, (S7603C5*)(S7603C4*), ABISELECT(96,60), "S7603C1");
    /*is_ambiguous_... S7603C4::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C4*), ABISELECT(48,32), "S7603C1");
    /*is_ambiguous_... S7603C4::S7603C2 */ AMB_check_base_class_offset(lv, (S7603C2*)(S7603C4*), ABISELECT(72,48), "S7603C1");
    check_base_class_offset(lv, (S7603C4*), ABISELECT(48,32), "S7603C1");
    /*is_ambiguous_... S7603C6::S7603C3 */ AMB_check_base_class_offset(lv, (S7603C3*)(S7603C6*)(S7603C8*), ABISELECT(168,116), "S7603C1");
    check_base_class_offset(lv, (S7603C6*)(S7603C8*), ABISELECT(168,116), "S7603C1");
    check_base_class_offset(lv, (S7603C8*)(S7603C7*), ABISELECT(168,116), "S7603C1");
    check_base_class_offset(lv, (S7603C7*), ABISELECT(152,104), "S7603C1");
    check_field_offset(lv, s7603c1f0, ABISELECT(8,4), "S7603C1.s7603c1f0");
    check_field_offset(lv, s7603c1f1, ABISELECT(16,12), "S7603C1.s7603c1f1");
    test_class_info(&lv, &cd_S7603C1);
    dp->~S7603C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7603C1(Test_S7603C1, "S7603C1", ABISELECT(216,156));

#else // __cplusplus

extern void _ZN7S7603C1C1Ev();
extern void _ZN7S7603C1D1Ev();
Name_Map name_map_S7603C1[] = {
  NSPAIR(_ZN7S7603C1C1Ev),
  NSPAIR(_ZN7S7603C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C2;
extern VTBL_ENTRY _ZTI7S7603C2[];
extern  VTBL_ENTRY _ZTV7S7603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C2[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C2;
extern VTBL_ENTRY _ZTI7S7603C2[];
extern  VTBL_ENTRY _ZTV7S7603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C2[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C6;
extern VTBL_ENTRY _ZTI7S7603C6[];
extern  VTBL_ENTRY _ZTV7S7603C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C6[];
extern Class_Descriptor cd_S7603C5;
extern VTBL_ENTRY _ZTI7S7603C5[];
extern  VTBL_ENTRY _ZTV7S7603C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C5[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C2;
extern VTBL_ENTRY _ZTI7S7603C2[];
extern  VTBL_ENTRY _ZTV7S7603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C2[];
extern Class_Descriptor cd_S7603C4;
extern VTBL_ENTRY _ZTI7S7603C4[];
extern  VTBL_ENTRY _ZTV7S7603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C4[];
extern Class_Descriptor cd_S7603C3;
extern VTBL_ENTRY _ZTI7S7603C3[];
extern  VTBL_ENTRY _ZTV7S7603C3[];
extern Class_Descriptor cd_S7603C6;
extern VTBL_ENTRY _ZTI7S7603C6[];
extern  VTBL_ENTRY _ZTV7S7603C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C6[];
extern Class_Descriptor cd_S7603C8;
extern VTBL_ENTRY _ZTI7S7603C8[];
extern  VTBL_ENTRY _ZTV7S7603C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C8[];
extern Class_Descriptor cd_S7603C7;
extern VTBL_ENTRY _ZTI7S7603C7[];
extern  VTBL_ENTRY _ZTV7S7603C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C7[];
static Base_Class bases_S7603C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7603C3,    ABISELECT(24,16), //bcp->offset
    13, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7603C2,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7603C3,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7603C2,    ABISELECT(152,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7603C3,    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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7603C6,    ABISELECT(120,76), //bcp->offset
    74, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7603C5,    ABISELECT(96,60), //bcp->offset
    57, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7603C3,    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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7603C2,    ABISELECT(72,48), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7603C4,    ABISELECT(48,32), //bcp->offset
    25, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7603C3,    ABISELECT(168,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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7603C6,    ABISELECT(168,116), //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
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7603C8,    ABISELECT(168,116), //bcp->offset
    93, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7603C7,    ABISELECT(152,104), //bcp->offset
    84, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7603C1[];
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
extern void _ZN7S7603C12v1Ev();
extern void _ZN7S7603C12v2Ev();
extern void _ZN7S7603C12v3Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C43v13Ev();
extern void _ZN7S7603C43v14Ev();
extern void _ZN7S7603C43v15Ev();
extern void _ZN7S7603C43v16Ev();
extern void _ZN7S7603C43v17Ev();
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C53v12Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
extern void _ZN7S7603C83v18Ev();
extern void _ZN7S7603C83v19Ev();
extern void _ZN7S7603C83v20Ev();
extern void _ZN7S7603C83v21Ev();
static  VTBL_ENTRY vtc_S7603C1[] = {
  ABISELECT(168,116),
  ABISELECT(152,104),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(48,32),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C1[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7603C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7603C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7603C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7603C1[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(104,72),
  ABISELECT(48,28),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7603C1[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v17Ev,
  ABISELECT(-48,-32),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S7603C1[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7603C1[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C53v12Ev,
  ABISELECT(-96,-60),
  ABISELECT(32,28),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI7S7603C1[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-128,-88),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S7603C1[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-100),
  ABISELECT(-16,-12),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S7603C1[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v21Ev,
};
extern VTBL_ENTRY _ZTV7S7603C1[];
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__A__7S7603C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C2__A__7S7603C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C43v13Ev();
extern void _ZN7S7603C43v14Ev();
extern void _ZN7S7603C43v15Ev();
extern void _ZN7S7603C43v16Ev();
extern void _ZN7S7603C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C4__7S7603C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(104,72),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7603C43v17Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C27S7603C4__A2__7S7603C1[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C27S7603C4__A2__7S7603C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C5__7S7603C4__7S7603C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  ABISELECT(56,44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C53v12Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C4__7S7603C1[] = {
  0,
  0,
  ABISELECT(-128,-88),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__A1__7S7603C4__7S7603C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C67S7603C5__7S7603C4__7S7603C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(32,28),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__A__7S7603C4__7S7603C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7603C4[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C5__7S7603C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C53v12Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C67S7603C5__7S7603C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C67S7603C5__7S7603C1[] = {
  0,
  0,
  ABISELECT(-128,-88),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__A1__7S7603C67S7603C5__7S7603C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C5__7S7603C1[] = {
  0,
  0,
  ABISELECT(-128,-88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__A1__7S7603C5__7S7603C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C6__7S7603C5__7S7603C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7603C5[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__A1__7S7603C1[] = {
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C2__A1__7S7603C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI7S7603C2[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C7__7S7603C1[] = {
  0,
  ABISELECT(16,12),
  0,
  0,
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C7[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
extern void _ZN7S7603C83v18Ev();
extern void _ZN7S7603C83v19Ev();
extern void _ZN7S7603C83v20Ev();
extern void _ZN7S7603C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C8__7S7603C7__7S7603C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-100),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7603C7[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v21Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C7__7S7603C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI7S7603C7[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
extern void _ZN7S7603C83v18Ev();
extern void _ZN7S7603C83v19Ev();
extern void _ZN7S7603C83v20Ev();
extern void _ZN7S7603C83v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C8__7S7603C1[] = {
  ABISELECT(-144,-100),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C8[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7603C83v21Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
extern void _ZN7S7603C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C67S7603C8__A1__7S7603C1[] = {
  ABISELECT(-144,-100),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7603C63v11Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C67S7603C8__A1__7S7603C1[] = {
  0,
  0,
  ABISELECT(-128,-88),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__A1__7S7603C67S7603C8__A1__7S7603C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI7S7603C6[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
extern void _ZN7S7603C22v9Ev();
extern void _ZN7S7603C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C2__7S7603C8__7S7603C1[] = {
  0,
  0,
  ABISELECT(-128,-88),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7603C8[0]),
  (VTBL_ENTRY)&_ZN7S7603C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7603C23v10Ev,
};
extern void _ZN7S7603C32v4Ev();
extern void _ZN7S7603C32v5Ev();
extern void _ZN7S7603C32v6Ev();
extern void _ZN7S7603C32v7Ev();
extern void _ZN7S7603C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7603C3__7S7603C8__7S7603C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI7S7603C8[0]),
  (VTBL_ENTRY)&_ZN7S7603C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7603C32v8Ev,
};
static  VTT_ENTRY vtt_S7603C1[] = {
  {&(_ZTV7S7603C1[8]),  8,117},
  {&(_tg__ZTV7S7603C2__A__7S7603C1[3]),  3,5},
  {&(_tg__ZTV7S7603C3__7S7603C2__A__7S7603C1[7]),  7,12},
  {&(_ZTV7S7603C1[20]),  20,117},
  {&(_ZTV7S7603C1[42]),  42,117},
  {&(_ZTV7S7603C1[68]),  68,117},
  {&(_ZTV7S7603C1[91]),  91,117},
  {&(_ZTV7S7603C1[78]),  78,117},
  {&(_ZTV7S7603C1[55]),  55,117},
  {&(_ZTV7S7603C1[91]),  91,117},
  {&(_ZTV7S7603C1[107]),  107,117},
  {&(_tg__ZTV7S7603C4__7S7603C1[5]),  5,15},
  {&(_tg__ZTV7S7603C27S7603C4__A2__7S7603C1[3]),  3,5},
  {&(_tg__ZTV7S7603C3__7S7603C27S7603C4__A2__7S7603C1[7]),  7,12},
  {&(_tg__ZTV7S7603C5__7S7603C4__7S7603C1[11]),  11,17},
  {&(_tg__ZTV7S7603C2__7S7603C4__7S7603C1[5]),  5,7},
  {&(_tg__ZTV7S7603C3__A1__7S7603C4__7S7603C1[7]),  7,12},
  {&(_tg__ZTV7S7603C67S7603C5__7S7603C4__7S7603C1[4]),  4,10},
  {&(_tg__ZTV7S7603C2__A__7S7603C4__7S7603C1[3]),  3,5},
  {&(_tg__ZTV7S7603C5__7S7603C1[4]),  4,10},
  {&(_tg__ZTV7S7603C67S7603C5__7S7603C1[4]),  4,10},
  {&(_tg__ZTV7S7603C2__7S7603C67S7603C5__7S7603C1[5]),  5,7},
  {&(_tg__ZTV7S7603C3__A1__7S7603C67S7603C5__7S7603C1[7]),  7,12},
  {&(_tg__ZTV7S7603C2__7S7603C5__7S7603C1[5]),  5,7},
  {&(_tg__ZTV7S7603C3__A1__7S7603C5__7S7603C1[7]),  7,12},
  {&(_tg__ZTV7S7603C6__7S7603C5__7S7603C1[4]),  4,10},
  {&(_tg__ZTV7S7603C2__A1__7S7603C1[3]),  3,5},
  {&(_tg__ZTV7S7603C3__7S7603C2__A1__7S7603C1[7]),  7,12},
  {&(_tg__ZTV7S7603C7__7S7603C1[7]),  7,9},
  {&(_tg__ZTV7S7603C8__7S7603C7__7S7603C1[14]),  14,24},
  {&(_tg__ZTV7S7603C7__7S7603C1[7]),  7,9},
  {&(_tg__ZTV7S7603C3__7S7603C7__7S7603C1[7]),  7,12},
  {&(_tg__ZTV7S7603C8__7S7603C1[4]),  4,14},
  {&(_tg__ZTV7S7603C67S7603C8__A1__7S7603C1[4]),  4,10},
  {&(_tg__ZTV7S7603C2__7S7603C67S7603C8__A1__7S7603C1[5]),  5,7},
  {&(_tg__ZTV7S7603C3__A1__7S7603C67S7603C8__A1__7S7603C1[7]),  7,12},
  {&(_tg__ZTV7S7603C2__7S7603C8__7S7603C1[5]),  5,7},
  {&(_tg__ZTV7S7603C3__7S7603C8__7S7603C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7603C1[];
extern  VTBL_ENTRY _ZTV7S7603C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7603C1[];
Class_Descriptor cd_S7603C1 = {  "S7603C1", // class name
  bases_S7603C1, 14,
  &(vtc_S7603C1[0]), // expected_vtbl_contents
  &(vtt_S7603C1[0]), // expected_vtt_contents
  ABISELECT(216,156), // object size
  NSPAIRA(_ZTI7S7603C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7603C1),117, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7603C1),38, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10121C2  {
  ::S2213C19_nt s10121c2f0;
  void *s10121c2f1;
  int s10121c2f2;
  virtual  ~S10121C2(); // _ZN8S10121C2D1Ev
  virtual void  v7(); // _ZN8S10121C22v7Ev
  virtual void  v8(); // _ZN8S10121C22v8Ev
  virtual void  v9(); // _ZN8S10121C22v9Ev
  virtual void  v10(); // _ZN8S10121C23v10Ev
  virtual void  v11(); // _ZN8S10121C23v11Ev
  virtual void  v12(); // _ZN8S10121C23v12Ev
  virtual void  v13(); // _ZN8S10121C23v13Ev
  S10121C2(); // tgen
};
//SIG(-1 S10121C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fp Fi}


 S10121C2 ::~S10121C2(){ note_dtor("S10121C2", this);}
void  S10121C2 ::v7(){vfunc_called(this, "_ZN8S10121C22v7Ev");}
void  S10121C2 ::v8(){vfunc_called(this, "_ZN8S10121C22v8Ev");}
void  S10121C2 ::v9(){vfunc_called(this, "_ZN8S10121C22v9Ev");}
void  S10121C2 ::v10(){vfunc_called(this, "_ZN8S10121C23v10Ev");}
void  S10121C2 ::v11(){vfunc_called(this, "_ZN8S10121C23v11Ev");}
void  S10121C2 ::v12(){vfunc_called(this, "_ZN8S10121C23v12Ev");}
void  S10121C2 ::v13(){vfunc_called(this, "_ZN8S10121C23v13Ev");}
S10121C2 ::S10121C2(){ note_ctor("S10121C2", this);} // tgen

static void Test_S10121C2()
{
  extern Class_Descriptor cd_S10121C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S10121C2, buf);
    S10121C2 *dp, &lv = *(dp=new (buf) S10121C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S10121C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10121C2)");
    check_field_offset(lv, s10121c2f0, ABISELECT(8,4), "S10121C2.s10121c2f0");
    check_field_offset(lv, s10121c2f1, ABISELECT(32,20), "S10121C2.s10121c2f1");
    check_field_offset(lv, s10121c2f2, ABISELECT(40,24), "S10121C2.s10121c2f2");
    test_class_info(&lv, &cd_S10121C2);
    dp->~S10121C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10121C2(Test_S10121C2, "S10121C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S10121C2C1Ev();
extern void _ZN8S10121C2D1Ev();
Name_Map name_map_S10121C2[] = {
  NSPAIR(_ZN8S10121C2C1Ev),
  NSPAIR(_ZN8S10121C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10121C2[];
extern void _ZN8S10121C2D1Ev();
extern void _ZN8S10121C2D0Ev();
extern void _ZN8S10121C22v7Ev();
extern void _ZN8S10121C22v8Ev();
extern void _ZN8S10121C22v9Ev();
extern void _ZN8S10121C23v10Ev();
extern void _ZN8S10121C23v11Ev();
extern void _ZN8S10121C23v12Ev();
extern void _ZN8S10121C23v13Ev();
static  VTBL_ENTRY vtc_S10121C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10121C2[0]),
  (VTBL_ENTRY)&_ZN8S10121C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10121C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10121C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10121C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10121C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10121C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10121C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10121C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10121C23v13Ev,
};
extern VTBL_ENTRY _ZTI8S10121C2[];
extern  VTBL_ENTRY _ZTV8S10121C2[];
Class_Descriptor cd_S10121C2 = {  "S10121C2", // class name
  0,0,//no base classes
  &(vtc_S10121C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S10121C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10121C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10121C1  : S10121C2 {
  void *s10121c1f0;
  int s10121c1f1;
  ::S2213C37 s10121c1f2;
  void *s10121c1f3[2];
  ::S2213C25 s10121c1f4;
  int s10121c1f5[5];
  ::S2213C29_nt s10121c1f6;
  virtual void  v1(); // _ZN8S10121C12v1Ev
  virtual void  v2(); // _ZN8S10121C12v2Ev
  virtual void  v3(); // _ZN8S10121C12v3Ev
  virtual void  v4(); // _ZN8S10121C12v4Ev
  virtual void  v5(); // _ZN8S10121C12v5Ev
  virtual void  v6(); // _ZN8S10121C12v6Ev
  ~S10121C1(); // tgen
  S10121C1(); // tgen
};
//SIG(1 S10121C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fp Fi} v1 v2 v3 v4 v5 v6 Fp Fi FC6{ m Fp Fi[2] FC7{ m}} Fp[2] FC8{ BC9{ m Fp Fi FC10{ m} FC10}} Fi[5] FC11{ m Fp Fi[2] FC7}}


void  S10121C1 ::v1(){vfunc_called(this, "_ZN8S10121C12v1Ev");}
void  S10121C1 ::v2(){vfunc_called(this, "_ZN8S10121C12v2Ev");}
void  S10121C1 ::v3(){vfunc_called(this, "_ZN8S10121C12v3Ev");}
void  S10121C1 ::v4(){vfunc_called(this, "_ZN8S10121C12v4Ev");}
void  S10121C1 ::v5(){vfunc_called(this, "_ZN8S10121C12v5Ev");}
void  S10121C1 ::v6(){vfunc_called(this, "_ZN8S10121C12v6Ev");}
S10121C1 ::~S10121C1(){ note_dtor("S10121C1", this);} // tgen
S10121C1 ::S10121C1(){ note_ctor("S10121C1", this);} // tgen

static void Test_S10121C1()
{
  extern Class_Descriptor cd_S10121C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,28)];
    init_test(&cd_S10121C1, buf);
    S10121C1 *dp, &lv = *(dp=new (buf) S10121C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,108), "sizeof(S10121C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10121C1)");
    check_base_class_offset(lv, (S10121C2*), 0, "S10121C1");
    check_field_offset(lv, s10121c1f0, ABISELECT(48,28), "S10121C1.s10121c1f0");
    check_field_offset(lv, s10121c1f1, ABISELECT(56,32), "S10121C1.s10121c1f1");
    check_field_offset(lv, s10121c1f2, ABISELECT(64,36), "S10121C1.s10121c1f2");
    check_field_offset(lv, s10121c1f3, ABISELECT(88,52), "S10121C1.s10121c1f3");
    check_field_offset(lv, s10121c1f4, ABISELECT(104,60), "S10121C1.s10121c1f4");
    check_field_offset(lv, s10121c1f5, ABISELECT(120,72), "S10121C1.s10121c1f5");
    check_field_offset(lv, s10121c1f6, ABISELECT(144,92), "S10121C1.s10121c1f6");
    test_class_info(&lv, &cd_S10121C1);
    dp->~S10121C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10121C1(Test_S10121C1, "S10121C1", ABISELECT(168,108));

#else // __cplusplus

extern void _ZN8S10121C1C1Ev();
extern void _ZN8S10121C1D1Ev();
Name_Map name_map_S10121C1[] = {
  NSPAIR(_ZN8S10121C1C1Ev),
  NSPAIR(_ZN8S10121C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10121C2;
extern VTBL_ENTRY _ZTI8S10121C2[];
extern  VTBL_ENTRY _ZTV8S10121C2[];
static Base_Class bases_S10121C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10121C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10121C1[];
extern void _ZN8S10121C1D1Ev();
extern void _ZN8S10121C1D0Ev();
extern void _ZN8S10121C22v7Ev();
extern void _ZN8S10121C22v8Ev();
extern void _ZN8S10121C22v9Ev();
extern void _ZN8S10121C23v10Ev();
extern void _ZN8S10121C23v11Ev();
extern void _ZN8S10121C23v12Ev();
extern void _ZN8S10121C23v13Ev();
extern void _ZN8S10121C12v1Ev();
extern void _ZN8S10121C12v2Ev();
extern void _ZN8S10121C12v3Ev();
extern void _ZN8S10121C12v4Ev();
extern void _ZN8S10121C12v5Ev();
extern void _ZN8S10121C12v6Ev();
static  VTBL_ENTRY vtc_S10121C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10121C1[0]),
  (VTBL_ENTRY)&_ZN8S10121C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10121C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10121C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10121C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10121C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10121C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10121C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10121C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10121C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10121C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10121C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10121C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10121C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10121C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10121C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S10121C1[];
extern  VTBL_ENTRY _ZTV8S10121C1[];
Class_Descriptor cd_S10121C1 = {  "S10121C1", // class name
  bases_S10121C1, 1,
  &(vtc_S10121C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,108), // object size
  NSPAIRA(_ZTI8S10121C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10121C1),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  S11540C3_nt  {
  void *s11540c3f0[2];
  int s11540c3f1;
};
//SIG(-1 S11540C3_nt) C1{ Fp[2] Fi}



//skip512 S11540C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11540C2  {
  int s11540c2f0[2];
  ::S11540C3_nt s11540c2f1;
  ::S11540C3_nt s11540c2f2;
  int s11540c2f3[3];
  char s11540c2f4[20];
  int s11540c2f5;
  void *s11540c2f6[2];
};
//SIG(-1 S11540C2) C1{ Fi[2] FC2{ Fp[2] Fi} FC2 Fi[3] Fc[20] Fi Fp[2]}



static void Test_S11540C2()
{
  {
    init_simple_test("S11540C2");
    S11540C2 lv;
    check2(sizeof(lv), ABISELECT(112,76), "sizeof(S11540C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11540C2)");
    check_field_offset(lv, s11540c2f0, 0, "S11540C2.s11540c2f0");
    check_field_offset(lv, s11540c2f1, 8, "S11540C2.s11540c2f1");
    check_field_offset(lv, s11540c2f2, ABISELECT(32,20), "S11540C2.s11540c2f2");
    check_field_offset(lv, s11540c2f3, ABISELECT(56,32), "S11540C2.s11540c2f3");
    check_field_offset(lv, s11540c2f4, ABISELECT(68,44), "S11540C2.s11540c2f4");
    check_field_offset(lv, s11540c2f5, ABISELECT(88,64), "S11540C2.s11540c2f5");
    check_field_offset(lv, s11540c2f6, ABISELECT(96,68), "S11540C2.s11540c2f6");
  }
}
static Arrange_To_Call_Me vS11540C2(Test_S11540C2, "S11540C2", ABISELECT(112,76));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11540C5  {
  short s11540c5f0[255];
  int s11540c5f1;
};
//SIG(-1 S11540C5) C1{ Fs[255] Fi}



static void Test_S11540C5()
{
  {
    init_simple_test("S11540C5");
    S11540C5 lv;
    check2(sizeof(lv), 516, "sizeof(S11540C5)");
    check2(__alignof__(lv), 4, "__alignof__(S11540C5)");
    check_field_offset(lv, s11540c5f0, 0, "S11540C5.s11540c5f0");
    check_field_offset(lv, s11540c5f1, 512, "S11540C5.s11540c5f1");
  }
}
static Arrange_To_Call_Me vS11540C5(Test_S11540C5, "S11540C5", 516);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11540C6  {
  char s11540c6f0[261];
};
//SIG(-1 S11540C6) C1{ Fc[261]}



static void Test_S11540C6()
{
  {
    init_simple_test("S11540C6");
    S11540C6 lv;
    check2(sizeof(lv), 261, "sizeof(S11540C6)");
    check2(__alignof__(lv), 1, "__alignof__(S11540C6)");
    check_field_offset(lv, s11540c6f0, 0, "S11540C6.s11540c6f0");
  }
}
static Arrange_To_Call_Me vS11540C6(Test_S11540C6, "S11540C6", 261);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11540C4  {
  int s11540c4f0;
  void *s11540c4f1[2];
  char s11540c4f2[112];
  void *s11540c4f3;
  int s11540c4f4;
  void *s11540c4f5[255];
  int s11540c4f6[2];
  void *s11540c4f7[4];
  ::S11540C5 s11540c4f8;
  ::S11540C5 s11540c4f9;
  int s11540c4f10[3];
  short s11540c4f11;
  void *s11540c4f12[2];
  int s11540c4f13[3];
  ::S11540C6 s11540c4f14;
  int s11540c4f15[2];
  short s11540c4f16;
  void *s11540c4f17[2];
};
//SIG(-1 S11540C4) C1{ Fi Fp[2] Fc[112] Fp Fi Fp[255] Fi[2] Fp[4] FC2{ Fs[255] Fi} FC2 Fi[3] Fs Fp[2] Fi[3] FC3{ Fc[261]} Fi[2] Fs Fp[2]}



static void Test_S11540C4()
{
  {
    init_simple_test("S11540C4");
    S11540C4 lv;
    check2(sizeof(lv), ABISELECT(3600,2528), "sizeof(S11540C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11540C4)");
    check_field_offset(lv, s11540c4f0, 0, "S11540C4.s11540c4f0");
    check_field_offset(lv, s11540c4f1, ABISELECT(8,4), "S11540C4.s11540c4f1");
    check_field_offset(lv, s11540c4f2, ABISELECT(24,12), "S11540C4.s11540c4f2");
    check_field_offset(lv, s11540c4f3, ABISELECT(136,124), "S11540C4.s11540c4f3");
    check_field_offset(lv, s11540c4f4, ABISELECT(144,128), "S11540C4.s11540c4f4");
    check_field_offset(lv, s11540c4f5, ABISELECT(152,132), "S11540C4.s11540c4f5");
    check_field_offset(lv, s11540c4f6, ABISELECT(2192,1152), "S11540C4.s11540c4f6");
    check_field_offset(lv, s11540c4f7, ABISELECT(2200,1160), "S11540C4.s11540c4f7");
    check_field_offset(lv, s11540c4f8, ABISELECT(2232,1176), "S11540C4.s11540c4f8");
    check_field_offset(lv, s11540c4f9, ABISELECT(2748,1692), "S11540C4.s11540c4f9");
    check_field_offset(lv, s11540c4f10, ABISELECT(3264,2208), "S11540C4.s11540c4f10");
    check_field_offset(lv, s11540c4f11, ABISELECT(3276,2220), "S11540C4.s11540c4f11");
    check_field_offset(lv, s11540c4f12, ABISELECT(3280,2224), "S11540C4.s11540c4f12");
    check_field_offset(lv, s11540c4f13, ABISELECT(3296,2232), "S11540C4.s11540c4f13");
    check_field_offset(lv, s11540c4f14, ABISELECT(3308,2244), "S11540C4.s11540c4f14");
    check_field_offset(lv, s11540c4f15, ABISELECT(3572,2508), "S11540C4.s11540c4f15");
    check_field_offset(lv, s11540c4f16, ABISELECT(3580,2516), "S11540C4.s11540c4f16");
    check_field_offset(lv, s11540c4f17, ABISELECT(3584,2520), "S11540C4.s11540c4f17");
  }
}
static Arrange_To_Call_Me vS11540C4(Test_S11540C4, "S11540C4", ABISELECT(3600,2528));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11540C1  {
  ::S11540C2 s11540c1f0;
  ::S11540C4 s11540c1f1;
  int s11540c1f2[3];
  short s11540c1f3;
  void *s11540c1f4[2];
};
//SIG(1 S11540C1) C1{ FC2{ Fi[2] FC3{ Fp[2] Fi} FC3 Fi[3] Fc[20] Fi Fp[2]} FC4{ Fi Fp[2] Fc[112] Fp Fi Fp[255] Fi[2] Fp[4] FC5{ Fs[255] Fi} FC5 Fi[3] Fs Fp[2] Fi[3] FC6{ Fc[261]} Fi[2] Fs Fp[2]} Fi[3] Fs Fp[2]}



static void Test_S11540C1()
{
  {
    init_simple_test("S11540C1");
    S11540C1 lv;
    check2(sizeof(lv), ABISELECT(3744,2628), "sizeof(S11540C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11540C1)");
    check_field_offset(lv, s11540c1f0, 0, "S11540C1.s11540c1f0");
    check_field_offset(lv, s11540c1f1, ABISELECT(112,76), "S11540C1.s11540c1f1");
    check_field_offset(lv, s11540c1f2, ABISELECT(3712,2604), "S11540C1.s11540c1f2");
    check_field_offset(lv, s11540c1f3, ABISELECT(3724,2616), "S11540C1.s11540c1f3");
    check_field_offset(lv, s11540c1f4, ABISELECT(3728,2620), "S11540C1.s11540c1f4");
  }
}
static Arrange_To_Call_Me vS11540C1(Test_S11540C1, "S11540C1", ABISELECT(3744,2628));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10133C2_nt  {
  void *s10133c2f0;
  int s10133c2f1;
  virtual  ~S10133C2_nt(); // _ZN11S10133C2_ntD1Ev
  virtual void  v7(); // _ZN11S10133C2_nt2v7Ev
  virtual void  v8(); // _ZN11S10133C2_nt2v8Ev
  virtual void  v9(); // _ZN11S10133C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10133C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10133C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10133C2_nt3v12Ev
  virtual void  v13(); // _ZN11S10133C2_nt3v13Ev
  virtual void  v14(); // _ZN11S10133C2_nt3v14Ev
  virtual void  v15(); // _ZN11S10133C2_nt3v15Ev
  virtual void  v16(); // _ZN11S10133C2_nt3v16Ev
  S10133C2_nt(); // tgen
};
//SIG(-1 S10133C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fi}


 S10133C2_nt ::~S10133C2_nt(){ note_dtor("S10133C2_nt", this);}
void  S10133C2_nt ::v7(){vfunc_called(this, "_ZN11S10133C2_nt2v7Ev");}
void  S10133C2_nt ::v8(){vfunc_called(this, "_ZN11S10133C2_nt2v8Ev");}
void  S10133C2_nt ::v9(){vfunc_called(this, "_ZN11S10133C2_nt2v9Ev");}
void  S10133C2_nt ::v10(){vfunc_called(this, "_ZN11S10133C2_nt3v10Ev");}
void  S10133C2_nt ::v11(){vfunc_called(this, "_ZN11S10133C2_nt3v11Ev");}
void  S10133C2_nt ::v12(){vfunc_called(this, "_ZN11S10133C2_nt3v12Ev");}
void  S10133C2_nt ::v13(){vfunc_called(this, "_ZN11S10133C2_nt3v13Ev");}
void  S10133C2_nt ::v14(){vfunc_called(this, "_ZN11S10133C2_nt3v14Ev");}
void  S10133C2_nt ::v15(){vfunc_called(this, "_ZN11S10133C2_nt3v15Ev");}
void  S10133C2_nt ::v16(){vfunc_called(this, "_ZN11S10133C2_nt3v16Ev");}
S10133C2_nt ::S10133C2_nt(){ note_ctor("S10133C2_nt", this);} // tgen

//skip512 S10133C2_nt

#else // __cplusplus

extern void _ZN11S10133C2_ntC1Ev();
extern void _ZN11S10133C2_ntD1Ev();
Name_Map name_map_S10133C2_nt[] = {
  NSPAIR(_ZN11S10133C2_ntC1Ev),
  NSPAIR(_ZN11S10133C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10133C2_nt[];
extern void _ZN11S10133C2_ntD1Ev();
extern void _ZN11S10133C2_ntD0Ev();
extern void _ZN11S10133C2_nt2v7Ev();
extern void _ZN11S10133C2_nt2v8Ev();
extern void _ZN11S10133C2_nt2v9Ev();
extern void _ZN11S10133C2_nt3v10Ev();
extern void _ZN11S10133C2_nt3v11Ev();
extern void _ZN11S10133C2_nt3v12Ev();
extern void _ZN11S10133C2_nt3v13Ev();
extern void _ZN11S10133C2_nt3v14Ev();
extern void _ZN11S10133C2_nt3v15Ev();
extern void _ZN11S10133C2_nt3v16Ev();
static  VTBL_ENTRY vtc_S10133C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10133C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10133C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v16Ev,
};
extern VTBL_ENTRY _ZTI11S10133C2_nt[];
VTBL_ENTRY *P__ZTI11S10133C2_nt = _ZTI11S10133C2_nt; 
extern  VTBL_ENTRY _ZTV11S10133C2_nt[];
Class_Descriptor cd_S10133C2_nt = {  "S10133C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10133C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI11S10133C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10133C2_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  S10133C3  {
  virtual  ~S10133C3(); // _ZN8S10133C3D1Ev
  virtual void  v17(); // _ZN8S10133C33v17Ev
  S10133C3(); // tgen
};
//SIG(-1 S10133C3) C1{ vd v1}


 S10133C3 ::~S10133C3(){ note_dtor("S10133C3", this);}
void  S10133C3 ::v17(){vfunc_called(this, "_ZN8S10133C33v17Ev");}
S10133C3 ::S10133C3(){ note_ctor("S10133C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10133C3C1Ev();
extern void _ZN8S10133C3D1Ev();
Name_Map name_map_S10133C3[] = {
  NSPAIR(_ZN8S10133C3C1Ev),
  NSPAIR(_ZN8S10133C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10133C3[];
extern void _ZN8S10133C3D1Ev();
extern void _ZN8S10133C3D0Ev();
extern void _ZN8S10133C33v17Ev();
static  VTBL_ENTRY vtc_S10133C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10133C3[0]),
  (VTBL_ENTRY)&_ZN8S10133C3D1Ev,
  (VTBL_ENTRY)&_ZN8S10133C3D0Ev,
  (VTBL_ENTRY)&_ZN8S10133C33v17Ev,
};
extern VTBL_ENTRY _ZTI8S10133C3[];
extern  VTBL_ENTRY _ZTV8S10133C3[];
Class_Descriptor cd_S10133C3 = {  "S10133C3", // class name
  0,0,//no base classes
  &(vtc_S10133C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10133C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10133C3),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  S10133C1  : S10133C2_nt , S10133C3 {
  void *s10133c1f0[4];
  int s10133c1f1;
  void *s10133c1f2[2];
  int s10133c1f3;
  void *s10133c1f4[11];
  int s10133c1f5;
  __tsi64 s10133c1f6[2];
  int s10133c1f7;
  ::S2342C22_nt s10133c1f8;
  void *s10133c1f9[2];
  int s10133c1f10;
  void *s10133c1f11[2];
  int s10133c1f12;
  void *s10133c1f13[14];
  virtual  ~S10133C1(); // _ZN8S10133C1D1Ev
  virtual void  v1(); // _ZN8S10133C12v1Ev
  virtual void  v2(); // _ZN8S10133C12v2Ev
  virtual void  v3(); // _ZN8S10133C12v3Ev
  virtual void  v4(); // _ZN8S10133C12v4Ev
  virtual void  v5(); // _ZN8S10133C12v5Ev
  virtual void  v6(); // _ZN8S10133C12v6Ev
  S10133C1(); // tgen
};
//SIG(1 S10133C1) 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[4] Fi Fp[2] Fi Fp[11] Fi FL[2] Fi FC4{ m FC5{ m Fp Fi FC6{ m} FC6}} Fp[2] Fi Fp[2] Fi Fp[14]}


 S10133C1 ::~S10133C1(){ note_dtor("S10133C1", this);}
void  S10133C1 ::v1(){vfunc_called(this, "_ZN8S10133C12v1Ev");}
void  S10133C1 ::v2(){vfunc_called(this, "_ZN8S10133C12v2Ev");}
void  S10133C1 ::v3(){vfunc_called(this, "_ZN8S10133C12v3Ev");}
void  S10133C1 ::v4(){vfunc_called(this, "_ZN8S10133C12v4Ev");}
void  S10133C1 ::v5(){vfunc_called(this, "_ZN8S10133C12v5Ev");}
void  S10133C1 ::v6(){vfunc_called(this, "_ZN8S10133C12v6Ev");}
S10133C1 ::S10133C1(){ note_ctor("S10133C1", this);} // tgen

static void Test_S10133C1()
{
  extern Class_Descriptor cd_S10133C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,53)];
    init_test(&cd_S10133C1, buf);
    S10133C1 *dp, &lv = *(dp=new (buf) S10133C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,208), "sizeof(S10133C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10133C1)");
    check_base_class_offset(lv, (S10133C2_nt*), 0, "S10133C1");
    check_base_class_offset(lv, (S10133C3*), ABISELECT(24,12), "S10133C1");
    check_field_offset(lv, s10133c1f0, ABISELECT(32,16), "S10133C1.s10133c1f0");
    check_field_offset(lv, s10133c1f1, ABISELECT(64,32), "S10133C1.s10133c1f1");
    check_field_offset(lv, s10133c1f2, ABISELECT(72,36), "S10133C1.s10133c1f2");
    check_field_offset(lv, s10133c1f3, ABISELECT(88,44), "S10133C1.s10133c1f3");
    check_field_offset(lv, s10133c1f4, ABISELECT(96,48), "S10133C1.s10133c1f4");
    check_field_offset(lv, s10133c1f5, ABISELECT(184,92), "S10133C1.s10133c1f5");
    check_field_offset(lv, s10133c1f6, ABISELECT(192,96), "S10133C1.s10133c1f6");
    check_field_offset(lv, s10133c1f7, ABISELECT(208,112), "S10133C1.s10133c1f7");
    check_field_offset(lv, s10133c1f8, ABISELECT(216,116), "S10133C1.s10133c1f8");
    check_field_offset(lv, s10133c1f9, ABISELECT(232,128), "S10133C1.s10133c1f9");
    check_field_offset(lv, s10133c1f10, ABISELECT(248,136), "S10133C1.s10133c1f10");
    check_field_offset(lv, s10133c1f11, ABISELECT(256,140), "S10133C1.s10133c1f11");
    check_field_offset(lv, s10133c1f12, ABISELECT(272,148), "S10133C1.s10133c1f12");
    check_field_offset(lv, s10133c1f13, ABISELECT(280,152), "S10133C1.s10133c1f13");
    test_class_info(&lv, &cd_S10133C1);
    dp->~S10133C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10133C1(Test_S10133C1, "S10133C1", ABISELECT(392,208));

#else // __cplusplus

extern void _ZN8S10133C1C1Ev();
extern void _ZN8S10133C1D1Ev();
Name_Map name_map_S10133C1[] = {
  NSPAIR(_ZN8S10133C1C1Ev),
  NSPAIR(_ZN8S10133C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10133C2_nt;
extern VTBL_ENTRY _ZTI11S10133C2_nt[];
extern  VTBL_ENTRY _ZTV11S10133C2_nt[];
extern Class_Descriptor cd_S10133C3;
extern VTBL_ENTRY _ZTI8S10133C3[];
extern  VTBL_ENTRY _ZTV8S10133C3[];
static Base_Class bases_S10133C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10133C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10133C3,    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 _ZTI8S10133C1[];
extern void _ZN8S10133C1D1Ev();
extern void _ZN8S10133C1D0Ev();
extern void _ZN11S10133C2_nt2v7Ev();
extern void _ZN11S10133C2_nt2v8Ev();
extern void _ZN11S10133C2_nt2v9Ev();
extern void _ZN11S10133C2_nt3v10Ev();
extern void _ZN11S10133C2_nt3v11Ev();
extern void _ZN11S10133C2_nt3v12Ev();
extern void _ZN11S10133C2_nt3v13Ev();
extern void _ZN11S10133C2_nt3v14Ev();
extern void _ZN11S10133C2_nt3v15Ev();
extern void _ZN11S10133C2_nt3v16Ev();
extern void _ZN8S10133C12v1Ev();
extern void _ZN8S10133C12v2Ev();
extern void _ZN8S10133C12v3Ev();
extern void _ZN8S10133C12v4Ev();
extern void _ZN8S10133C12v5Ev();
extern void _ZN8S10133C12v6Ev();
extern void ABISELECT(_ZThn24_N8S10133C1D1Ev,_ZThn12_N8S10133C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S10133C1D0Ev,_ZThn12_N8S10133C1D0Ev)();
extern void _ZN8S10133C33v17Ev();
static  VTBL_ENTRY vtc_S10133C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10133C1[0]),
  (VTBL_ENTRY)&_ZN8S10133C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10133C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S10133C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S10133C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10133C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10133C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10133C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10133C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10133C12v6Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S10133C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10133C1D1Ev,_ZThn12_N8S10133C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10133C1D0Ev,_ZThn12_N8S10133C1D0Ev),
  (VTBL_ENTRY)&_ZN8S10133C33v17Ev,
};
extern VTBL_ENTRY _ZTI8S10133C1[];
extern  VTBL_ENTRY _ZTV8S10133C1[];
Class_Descriptor cd_S10133C1 = {  "S10133C1", // class name
  bases_S10133C1, 2,
  &(vtc_S10133C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,208), // object size
  NSPAIRA(_ZTI8S10133C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S10133C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19727C3  : virtual S2367C19 , virtual S5228C4_nt {
  int s19727c3f0;
  virtual  ~S19727C3(); // _ZN8S19727C3D2Ev
  S19727C3(); // tgen
};
//SIG(-1 S19727C3) C1{ VBC2{ m Fp} VBC3{ vd m} vd Fi}


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

static void Test_S19727C3()
{
  extern Class_Descriptor cd_S19727C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19727C3, buf);
    S19727C3 *dp, &lv = *(dp=new (buf) S19727C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19727C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19727C3)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(16,8), "S19727C3");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S19727C3");
    check_field_offset(lv, s19727c3f0, ABISELECT(8,4), "S19727C3.s19727c3f0");
    test_class_info(&lv, &cd_S19727C3);
    dp->~S19727C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19727C3(Test_S19727C3, "S19727C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19727C3C1Ev();
extern void _ZN8S19727C3D2Ev();
Name_Map name_map_S19727C3[] = {
  NSPAIR(_ZN8S19727C3C1Ev),
  NSPAIR(_ZN8S19727C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S19727C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19727C3[];
extern void _ZN8S19727C3D1Ev();
extern void _ZN8S19727C3D0Ev();
static  VTBL_ENTRY vtc_S19727C3[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C3[0]),
  (VTBL_ENTRY)&_ZN8S19727C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19727C3D0Ev,
};
extern VTBL_ENTRY _ZTV8S19727C3[];
static  VTT_ENTRY vtt_S19727C3[] = {
  {&(_ZTV8S19727C3[5]),  5,7},
  {&(_ZTV8S19727C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19727C3[];
extern  VTBL_ENTRY _ZTV8S19727C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19727C3[];
Class_Descriptor cd_S19727C3 = {  "S19727C3", // class name
  bases_S19727C3, 2,
  &(vtc_S19727C3[0]), // expected_vtbl_contents
  &(vtt_S19727C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19727C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19727C3),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19727C3),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  S19727C9  : S2367C19 , S5228C4_nt {
  void *s19727c9f0;
  ~S19727C9(); // tgen
  S19727C9(); // tgen
};
//SIG(-1 S19727C9) C1{ BC2{ m Fp} BC3{ vd m} Fp}


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

static void Test_S19727C9()
{
  extern Class_Descriptor cd_S19727C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19727C9, buf);
    S19727C9 *dp, &lv = *(dp=new (buf) S19727C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19727C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19727C9)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S19727C9");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S19727C9");
    check_field_offset(lv, s19727c9f0, ABISELECT(16,8), "S19727C9.s19727c9f0");
    test_class_info(&lv, &cd_S19727C9);
    dp->~S19727C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19727C9(Test_S19727C9, "S19727C9", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19727C9C1Ev();
extern void _ZN8S19727C9D1Ev();
Name_Map name_map_S19727C9[] = {
  NSPAIR(_ZN8S19727C9C1Ev),
  NSPAIR(_ZN8S19727C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S19727C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19727C9[];
extern void _ZN8S19727C9D1Ev();
extern void _ZN8S19727C9D0Ev();
static  VTBL_ENTRY vtc_S19727C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C9[0]),
  (VTBL_ENTRY)&_ZN8S19727C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19727C9D0Ev,
};
extern VTBL_ENTRY _ZTI8S19727C9[];
extern  VTBL_ENTRY _ZTV8S19727C9[];
Class_Descriptor cd_S19727C9 = {  "S19727C9", // class name
  bases_S19727C9, 2,
  &(vtc_S19727C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19727C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19727C9),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  S19727C11  : S5228C4_nt {
  void *s19727c11f0;
  ~S19727C11(); // tgen
  S19727C11(); // tgen
};
//SIG(-1 S19727C11) C1{ BC2{ vd m} Fp}


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

static void Test_S19727C11()
{
  extern Class_Descriptor cd_S19727C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19727C11, buf);
    S19727C11 *dp, &lv = *(dp=new (buf) S19727C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19727C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19727C11)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S19727C11");
    check_field_offset(lv, s19727c11f0, ABISELECT(8,4), "S19727C11.s19727c11f0");
    test_class_info(&lv, &cd_S19727C11);
    dp->~S19727C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19727C11(Test_S19727C11, "S19727C11", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19727C11C1Ev();
extern void _ZN9S19727C11D1Ev();
Name_Map name_map_S19727C11[] = {
  NSPAIR(_ZN9S19727C11C1Ev),
  NSPAIR(_ZN9S19727C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S19727C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19727C11[];
extern void _ZN9S19727C11D1Ev();
extern void _ZN9S19727C11D0Ev();
static  VTBL_ENTRY vtc_S19727C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19727C11[0]),
  (VTBL_ENTRY)&_ZN9S19727C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19727C11D0Ev,
};
extern VTBL_ENTRY _ZTI9S19727C11[];
extern  VTBL_ENTRY _ZTV9S19727C11[];
Class_Descriptor cd_S19727C11 = {  "S19727C11", // class name
  bases_S19727C11, 1,
  &(vtc_S19727C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19727C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19727C11),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  S19727C10  : S3164C31_nt , virtual S2367C19 , S19727C9 , S5228C4_nt , S19727C11 {
  ~S19727C10(); // tgen
  S19727C10(); // tgen
};
//SIG(-1 S19727C10) C1{ BC2{ m} VBC3{ m Fp} BC4{ BC3 BC5{ vd m} Fp} BC5 BC6{ BC5 Fp}}


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

static void Test_S19727C10()
{
  extern Class_Descriptor cd_S19727C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19727C10, buf);
    S19727C10 *dp, &lv = *(dp=new (buf) S19727C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19727C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19727C10)");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S19727C10");
    /*is_ambiguous_... S19727C10::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*), ABISELECT(48,24), "S19727C10");
    check_base_class_offset(lv, (S2367C19*)(S19727C9*), ABISELECT(8,4), "S19727C10");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C9*), 0, "S19727C10");
    check_base_class_offset(lv, (S19727C9*), 0, "S19727C10");
    /*is_ambiguous_... S19727C10::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(24,12), "S19727C10");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C11*), ABISELECT(32,16), "S19727C10");
    check_base_class_offset(lv, (S19727C11*), ABISELECT(32,16), "S19727C10");
    test_class_info(&lv, &cd_S19727C10);
    dp->~S19727C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19727C10(Test_S19727C10, "S19727C10", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S19727C10C1Ev();
extern void _ZN9S19727C10D1Ev();
Name_Map name_map_S19727C10[] = {
  NSPAIR(_ZN9S19727C10C1Ev),
  NSPAIR(_ZN9S19727C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C9;
extern VTBL_ENTRY _ZTI8S19727C9[];
extern  VTBL_ENTRY _ZTV8S19727C9[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C11;
extern VTBL_ENTRY _ZTI9S19727C11[];
extern  VTBL_ENTRY _ZTV9S19727C11[];
static Base_Class bases_S19727C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2367C19,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19727C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S5228C4_nt,    ABISELECT(24,12), //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_S5228C4_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_S19727C11,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19727C10[];
extern void _ZN9S19727C10D1Ev();
extern void _ZN9S19727C10D0Ev();
extern void ABISELECT(_ZThn24_N9S19727C10D1Ev,_ZThn12_N9S19727C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S19727C10D0Ev,_ZThn12_N9S19727C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S19727C10D1Ev,_ZThn16_N9S19727C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S19727C10D0Ev,_ZThn16_N9S19727C10D0Ev)();
static  VTBL_ENTRY vtc_S19727C10[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19727C10[0]),
  (VTBL_ENTRY)&_ZN9S19727C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19727C10D0Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19727C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19727C10D1Ev,_ZThn12_N9S19727C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19727C10D0Ev,_ZThn12_N9S19727C10D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19727C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19727C10D1Ev,_ZThn16_N9S19727C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19727C10D0Ev,_ZThn16_N9S19727C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19727C10[];
static  VTT_ENTRY vtt_S19727C10[] = {
  {&(_ZTV9S19727C10[3]),  3,13},
};
extern VTBL_ENTRY _ZTI9S19727C10[];
extern  VTBL_ENTRY _ZTV9S19727C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19727C10[];
Class_Descriptor cd_S19727C10 = {  "S19727C10", // class name
  bases_S19727C10, 8,
  &(vtc_S19727C10[0]), // expected_vtbl_contents
  &(vtt_S19727C10[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S19727C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19727C10),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19727C10),1, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19727C8  : virtual S3164C31_nt , virtual S19727C9 , virtual S5228C4_nt , virtual S19727C3 , virtual S19727C10 {
  char s19727c8f0:5;
  ~S19727C8(); // tgen
  S19727C8(); // tgen
};
//SIG(-1 S19727C8) C1{ VBC2{ m} VBC3{ BC4{ m Fp} BC5{ vd m} Fp} VBC5 VBC6{ VBC4 VBC5 vd Fi} VBC7{ BC2 VBC4 BC3 BC5 BC8{ BC5 Fp}} Fc:5}


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

static void Test_S19727C8()
{
  extern Class_Descriptor cd_S19727C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S19727C8, buf);
    S19727C8 *dp, &lv = *(dp=new (buf) S19727C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S19727C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19727C8)");
    /*is_ambiguous_... S19727C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S19727C8");
    /*is_ambiguous_... S19727C8::S19727C9 */ AMB_check_base_class_offset(lv, (S2367C19*)(S19727C9*), ABISELECT(24,12), "S19727C8");
    /*is_ambiguous_... S19727C8::S19727C9 */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S19727C9*), ABISELECT(16,8), "S19727C8");
    /*is_ambiguous_... S19727C8::S19727C9 */ AMB_check_base_class_offset(lv, (S19727C9*), ABISELECT(16,8), "S19727C8");
    /*is_ambiguous_... S19727C8::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*), 0, "S19727C8");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C3*), 0, "S19727C8");
    check_base_class_offset(lv, (S2367C19*)(S19727C3*), ABISELECT(56,28), "S19727C8");
    /*is_ambiguous_... S19727C10::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*)(S19727C10*), ABISELECT(56,28), "S19727C8");
    check_base_class_offset(lv, (S19727C3*), ABISELECT(40,20), "S19727C8");
    check_base_class_offset(lv, (S3164C31_nt*)(S19727C10*), ABISELECT(64,32), "S19727C8");
    check_base_class_offset(lv, (S2367C19*)(S19727C9*)(S19727C10*), ABISELECT(72,36), "S19727C8");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C9*)(S19727C10*), ABISELECT(64,32), "S19727C8");
    check_base_class_offset(lv, (S19727C9*)(S19727C10*), ABISELECT(64,32), "S19727C8");
    /*is_ambiguous_... S19727C10::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S19727C10*), ABISELECT(88,44), "S19727C8");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C11*)(S19727C10*), ABISELECT(96,48), "S19727C8");
    check_base_class_offset(lv, (S19727C11*)(S19727C10*), ABISELECT(96,48), "S19727C8");
    check_base_class_offset(lv, (S19727C10*), ABISELECT(64,32), "S19727C8");
    set_bf_and_test(lv, s19727c8f0, ABISELECT(8,4), 0, 5, 1, "S19727C8");
    set_bf_and_test(lv, s19727c8f0, ABISELECT(8,4), 0, 5, hide_sll(1LL<<4), "S19727C8");
    test_class_info(&lv, &cd_S19727C8);
    dp->~S19727C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19727C8(Test_S19727C8, "S19727C8", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S19727C8C1Ev();
extern void _ZN8S19727C8D1Ev();
Name_Map name_map_S19727C8[] = {
  NSPAIR(_ZN8S19727C8C1Ev),
  NSPAIR(_ZN8S19727C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C9;
extern VTBL_ENTRY _ZTI8S19727C9[];
extern  VTBL_ENTRY _ZTV8S19727C9[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S19727C3;
extern VTBL_ENTRY _ZTI8S19727C3[];
extern  VTBL_ENTRY _ZTV8S19727C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19727C3[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C9;
extern VTBL_ENTRY _ZTI8S19727C9[];
extern  VTBL_ENTRY _ZTV8S19727C9[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C11;
extern VTBL_ENTRY _ZTI9S19727C11[];
extern  VTBL_ENTRY _ZTV9S19727C11[];
extern Class_Descriptor cd_S19727C10;
extern VTBL_ENTRY _ZTI9S19727C10[];
extern  VTBL_ENTRY _ZTV9S19727C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19727C10[];
static Base_Class bases_S19727C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    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_S5228C4_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_S19727C9,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5228C4_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19727C3,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_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
    14, //immediately_derived
  0, 0},
  {&cd_S2367C19,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19727C9,    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
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(88,44), //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_S5228C4_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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19727C11,    ABISELECT(96,48), //bcp->offset
    33, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19727C10,    ABISELECT(64,32), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19727C8[];
extern void ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev)();
extern void _ZN8S19727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev)();
extern void _ZN8S19727C8D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19727C8D1Ev,_ZThn8_N8S19727C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19727C8D0Ev,_ZThn8_N8S19727C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19727C8D1Ev,_ZThn20_N8S19727C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19727C8D0Ev,_ZThn20_N8S19727C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19727C8D1Ev,_ZTv0_n16_N8S19727C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19727C8D1Ev,_ZThn32_N8S19727C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19727C8D0Ev,_ZTv0_n16_N8S19727C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19727C8D0Ev,_ZThn32_N8S19727C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n32_N8S19727C8D1Ev,_ZTvn12_n16_N8S19727C8D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S19727C8D0Ev,_ZTvn12_n16_N8S19727C8D0Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19727C8D1Ev,_ZTvn16_n16_N8S19727C8D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19727C8D0Ev,_ZTvn16_n16_N8S19727C8D0Ev)();
static  VTBL_ENTRY vtc_S19727C8[] = {
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C8D1Ev,_ZTv0_n16_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C8D0Ev,_ZTv0_n16_N8S19727C8D0Ev),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C8D1Ev,_ZTvn12_n16_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C8D0Ev,_ZTvn12_n16_N8S19727C8D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C8D1Ev,_ZTvn16_n16_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C8D0Ev,_ZTvn16_n16_N8S19727C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19727C8[];
extern void ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev)();
extern void _ZN8S19727C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev)();
extern void _ZN8S19727C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C3__8S19727C8[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt__8S19727C3__8S19727C8[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19727C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev),
};
extern void _ZN9S19727C10D1Ev();
extern void _ZN9S19727C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19727C10__8S19727C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19727C10[0]),
  (VTBL_ENTRY)&_ZN9S19727C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19727C10D0Ev,
};
static  VTT_ENTRY vtt_S19727C8[] = {
  {&(_ZTV8S19727C8[9]),  9,37},
  {&(_ZTV8S19727C8[14]),  14,37},
  {&(_ZTV8S19727C8[9]),  9,37},
  {&(_ZTV8S19727C8[21]),  21,37},
  {&(_ZTV8S19727C8[27]),  27,37},
  {&(_ZTV8S19727C8[31]),  31,37},
  {&(_ZTV8S19727C8[35]),  35,37},
  {&(_tg__ZTV8S19727C3__8S19727C8[5]),  5,7},
  {&(_tg__ZTV10S5228C4_nt__8S19727C3__8S19727C8[3]),  3,5},
  {&(_tg__ZTV9S19727C10__8S19727C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19727C8[];
extern  VTBL_ENTRY _ZTV8S19727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19727C8[];
static VTBL_ENTRY alt_thunk_names142[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19727C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19727C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C8D0Ev,_ZTv0_n16_N8S19727C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19727C8D0Ev,_ZThn32_N8S19727C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C8D1Ev,_ZTv0_n16_N8S19727C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19727C8D1Ev,_ZThn32_N8S19727C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19727C8D0Ev,_ZThn20_N8S19727C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19727C8D0Ev,_ZThn8_N8S19727C8D0Ev),
  (VTBL_ENTRY)_ZN8S19727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19727C8D1Ev,_ZThn20_N8S19727C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19727C8D1Ev,_ZThn8_N8S19727C8D1Ev),
  (VTBL_ENTRY)_ZN8S19727C8D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19727C8 = {  "S19727C8", // class name
  bases_S19727C8, 15,
  &(vtc_S19727C8[0]), // expected_vtbl_contents
  &(vtt_S19727C8[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S19727C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19727C8),37, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19727C8),10, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names142,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19727C6  : virtual S3164C31_nt , S19727C8 {
  long s19727c6f0;
  ~S19727C6(); // tgen
  S19727C6(); // tgen
};
//SIG(-1 S19727C6) C1{ VBC2{ m} BC3{ VBC2 VBC4{ BC5{ m Fp} BC6{ vd m} Fp} VBC6 VBC7{ VBC5 VBC6 vd Fi} VBC8{ BC2 VBC5 BC4 BC6 BC9{ BC6 Fp}} Fc:5} Fl}


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

static void Test_S19727C6()
{
  extern Class_Descriptor cd_S19727C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[16];
    init_test(&cd_S19727C6, buf);
    S19727C6 *dp, &lv = *(dp=new (buf) S19727C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,60), "sizeof(S19727C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19727C6)");
    /*is_ambiguous_... S19727C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S19727C6");
    /*is_ambiguous_... S19727C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19727C8*), 0, "S19727C6");
    /*is_ambiguous_... S19727C6::S19727C9 */ AMB_check_base_class_offset(lv, (S2367C19*)(S19727C9*), ABISELECT(32,16), "S19727C6");
    /*is_ambiguous_... S19727C6::S19727C9 */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S19727C9*), ABISELECT(24,12), "S19727C6");
    /*is_ambiguous_... S19727C8::S19727C9 */ AMB_check_base_class_offset(lv, (S19727C9*)(S19727C8*), ABISELECT(24,12), "S19727C6");
    /*is_ambiguous_... S19727C8::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S19727C8*), 0, "S19727C6");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C3*), 0, "S19727C6");
    check_base_class_offset(lv, (S2367C19*)(S19727C3*), ABISELECT(64,32), "S19727C6");
    /*is_ambiguous_... S19727C10::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*)(S19727C10*), ABISELECT(64,32), "S19727C6");
    check_base_class_offset(lv, (S19727C3*)(S19727C8*), ABISELECT(48,24), "S19727C6");
    check_base_class_offset(lv, (S3164C31_nt*)(S19727C10*), ABISELECT(72,36), "S19727C6");
    check_base_class_offset(lv, (S2367C19*)(S19727C9*)(S19727C10*), ABISELECT(80,40), "S19727C6");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C9*)(S19727C10*), ABISELECT(72,36), "S19727C6");
    check_base_class_offset(lv, (S19727C9*)(S19727C10*), ABISELECT(72,36), "S19727C6");
    /*is_ambiguous_... S19727C10::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S19727C10*), ABISELECT(96,48), "S19727C6");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C11*)(S19727C10*), ABISELECT(104,52), "S19727C6");
    check_base_class_offset(lv, (S19727C11*)(S19727C10*), ABISELECT(104,52), "S19727C6");
    check_base_class_offset(lv, (S19727C10*)(S19727C8*), ABISELECT(72,36), "S19727C6");
    check_base_class_offset(lv, (S19727C8*), 0, "S19727C6");
    check_field_offset(lv, s19727c6f0, ABISELECT(16,8), "S19727C6.s19727c6f0");
    test_class_info(&lv, &cd_S19727C6);
    dp->~S19727C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19727C6(Test_S19727C6, "S19727C6", ABISELECT(120,60));

#else // __cplusplus

extern void _ZN8S19727C6C1Ev();
extern void _ZN8S19727C6D1Ev();
Name_Map name_map_S19727C6[] = {
  NSPAIR(_ZN8S19727C6C1Ev),
  NSPAIR(_ZN8S19727C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C9;
extern VTBL_ENTRY _ZTI8S19727C9[];
extern  VTBL_ENTRY _ZTV8S19727C9[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S19727C3;
extern VTBL_ENTRY _ZTI8S19727C3[];
extern  VTBL_ENTRY _ZTV8S19727C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19727C3[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C9;
extern VTBL_ENTRY _ZTI8S19727C9[];
extern  VTBL_ENTRY _ZTV8S19727C9[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C11;
extern VTBL_ENTRY _ZTI9S19727C11[];
extern  VTBL_ENTRY _ZTV9S19727C11[];
extern Class_Descriptor cd_S19727C10;
extern VTBL_ENTRY _ZTI9S19727C10[];
extern  VTBL_ENTRY _ZTV9S19727C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19727C10[];
extern Class_Descriptor cd_S19727C8;
extern VTBL_ENTRY _ZTI8S19727C8[];
extern  VTBL_ENTRY _ZTV8S19727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19727C8[];
static Base_Class bases_S19727C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5228C4_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_S19727C9,    ABISELECT(24,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2367C19,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19727C3,    ABISELECT(48,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_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
    14, //immediately_derived
  0, 0},
  {&cd_S2367C19,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19727C9,    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
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(96,48), //bcp->offset
    29, //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
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19727C11,    ABISELECT(104,52), //bcp->offset
    33, //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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19727C10,    ABISELECT(72,36), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19727C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19727C6[];
extern void ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev)();
extern void _ZN8S19727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev)();
extern void _ZN8S19727C6D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev)();
extern void ABISELECT(_ZThn24_N8S19727C6D1Ev,_ZThn12_N8S19727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev)();
extern void ABISELECT(_ZThn24_N8S19727C6D0Ev,_ZThn12_N8S19727C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S19727C6D1Ev,_ZThn24_N8S19727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S19727C6D0Ev,_ZThn24_N8S19727C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19727C6D1Ev,_ZTv0_n16_N8S19727C6D1Ev)();
extern void ABISELECT(_ZThn72_N8S19727C6D1Ev,_ZThn36_N8S19727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19727C6D0Ev,_ZTv0_n16_N8S19727C6D0Ev)();
extern void ABISELECT(_ZThn72_N8S19727C6D0Ev,_ZThn36_N8S19727C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n32_N8S19727C6D1Ev,_ZTvn12_n16_N8S19727C6D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S19727C6D0Ev,_ZTvn12_n16_N8S19727C6D0Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19727C6D1Ev,_ZTvn16_n16_N8S19727C6D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19727C6D0Ev,_ZTvn16_n16_N8S19727C6D0Ev)();
static  VTBL_ENTRY vtc_S19727C6[] = {
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(48,24),
  0,
  ABISELECT(24,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-8,-4),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C6D1Ev,_ZTv0_n16_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C6D0Ev,_ZTv0_n16_N8S19727C6D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C6D1Ev,_ZTvn12_n16_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C6D0Ev,_ZTvn12_n16_N8S19727C6D0Ev),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C6D1Ev,_ZTvn16_n16_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C6D0Ev,_ZTvn16_n16_N8S19727C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19727C6[];
extern void ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev)();
extern void _ZN8S19727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev)();
extern void _ZN8S19727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C8__8S19727C6[] = {
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(48,24),
  0,
  ABISELECT(24,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S19727C8D1Ev,_ZThn12_N8S19727C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev)();
extern void ABISELECT(_ZThn24_N8S19727C8D0Ev,_ZThn12_N8S19727C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C9__8S19727C8__8S19727C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S19727C8D1Ev,_ZThn24_N8S19727C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S19727C8D0Ev,_ZThn24_N8S19727C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C3__8S19727C8__8S19727C6[] = {
  ABISELECT(-48,-24),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19727C8D1Ev,_ZTv0_n16_N8S19727C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S19727C8D1Ev,_ZThn36_N8S19727C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19727C8D0Ev,_ZTv0_n16_N8S19727C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S19727C8D0Ev,_ZThn36_N8S19727C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19727C10__8S19727C8__8S19727C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(-8,-4),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C8D1Ev,_ZTv0_n16_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C8D0Ev,_ZTv0_n16_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTvn24_n32_N8S19727C8D1Ev,_ZTvn12_n16_N8S19727C8D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S19727C8D0Ev,_ZTvn12_n16_N8S19727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt9S19727C10__A3__8S19727C8__8S19727C6[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C8D1Ev,_ZTvn12_n16_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C8D0Ev,_ZTvn12_n16_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19727C8D1Ev,_ZTvn16_n16_N8S19727C8D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19727C8D0Ev,_ZTvn16_n16_N8S19727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19727C119S19727C10__8S19727C8__8S19727C6[] = {
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C8D1Ev,_ZTvn16_n16_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C8D0Ev,_ZTvn16_n16_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev)();
extern void _ZN8S19727C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev)();
extern void _ZN8S19727C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C3__8S19727C6[] = {
  ABISELECT(-48,-24),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt__8S19727C3__8S19727C6[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19727C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev),
};
extern void _ZN9S19727C10D1Ev();
extern void _ZN9S19727C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19727C10__8S19727C6[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19727C10[0]),
  (VTBL_ENTRY)&_ZN9S19727C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19727C10D0Ev,
};
static  VTT_ENTRY vtt_S19727C6[] = {
  {&(_ZTV8S19727C6[9]),  9,37},
  {&(_tg__ZTV8S19727C8__8S19727C6[9]),  9,11},
  {&(_tg__ZTV8S19727C9__8S19727C8__8S19727C6[3]),  3,5},
  {&(_tg__ZTV8S19727C8__8S19727C6[9]),  9,11},
  {&(_tg__ZTV8S19727C3__8S19727C8__8S19727C6[5]),  5,7},
  {&(_tg__ZTV9S19727C10__8S19727C8__8S19727C6[4]),  4,6},
  {&(_tg__ZTV10S5228C4_nt9S19727C10__A3__8S19727C8__8S19727C6[2]),  2,4},
  {&(_tg__ZTV9S19727C119S19727C10__8S19727C8__8S19727C6[2]),  2,4},
  {&(_ZTV8S19727C6[14]),  14,37},
  {&(_ZTV8S19727C6[9]),  9,37},
  {&(_ZTV8S19727C6[21]),  21,37},
  {&(_ZTV8S19727C6[27]),  27,37},
  {&(_ZTV8S19727C6[31]),  31,37},
  {&(_ZTV8S19727C6[35]),  35,37},
  {&(_tg__ZTV8S19727C3__8S19727C6[5]),  5,7},
  {&(_tg__ZTV10S5228C4_nt__8S19727C3__8S19727C6[3]),  3,5},
  {&(_tg__ZTV9S19727C10__8S19727C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19727C6[];
extern  VTBL_ENTRY _ZTV8S19727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19727C6[];
static VTBL_ENTRY alt_thunk_names143[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19727C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19727C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C8D0Ev,_ZTv0_n16_N8S19727C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19727C8D0Ev,_ZThn36_N8S19727C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C8D1Ev,_ZTv0_n16_N8S19727C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19727C8D1Ev,_ZThn36_N8S19727C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19727C8D0Ev,_ZThn24_N8S19727C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19727C8D0Ev,_ZThn12_N8S19727C8D0Ev),
  (VTBL_ENTRY)_ZN8S19727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19727C8D1Ev,_ZThn24_N8S19727C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19727C8D1Ev,_ZThn12_N8S19727C8D1Ev),
  (VTBL_ENTRY)_ZN8S19727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C6D0Ev,_ZTv0_n16_N8S19727C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19727C6D0Ev,_ZThn36_N8S19727C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C6D1Ev,_ZTv0_n16_N8S19727C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19727C6D1Ev,_ZThn36_N8S19727C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19727C6D0Ev,_ZThn24_N8S19727C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19727C6D0Ev,_ZThn12_N8S19727C6D0Ev),
  (VTBL_ENTRY)_ZN8S19727C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19727C6D1Ev,_ZThn24_N8S19727C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19727C6D1Ev,_ZThn12_N8S19727C6D1Ev),
  (VTBL_ENTRY)_ZN8S19727C6D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19727C6 = {  "S19727C6", // class name
  bases_S19727C6, 16,
  &(vtc_S19727C6[0]), // expected_vtbl_contents
  &(vtt_S19727C6[0]), // expected_vtt_contents
  ABISELECT(120,60), // object size
  NSPAIRA(_ZTI8S19727C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19727C6),37, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19727C6),17, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names143,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19727C13  : S5228C4_nt , virtual S2367C19 {
  virtual  ~S19727C13(); // _ZN9S19727C13D2Ev
  S19727C13(); // tgen
};
//SIG(-1 S19727C13) C1{ BC2{ vd m} VBC3{ m Fp} vd}


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

static void Test_S19727C13()
{
  extern Class_Descriptor cd_S19727C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19727C13, buf);
    S19727C13 *dp, &lv = *(dp=new (buf) S19727C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19727C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19727C13)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S19727C13");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S19727C13");
    test_class_info(&lv, &cd_S19727C13);
    dp->~S19727C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19727C13(Test_S19727C13, "S19727C13", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19727C13C1Ev();
extern void _ZN9S19727C13D2Ev();
Name_Map name_map_S19727C13[] = {
  NSPAIR(_ZN9S19727C13C1Ev),
  NSPAIR(_ZN9S19727C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
static Base_Class bases_S19727C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19727C13[];
extern void _ZN9S19727C13D1Ev();
extern void _ZN9S19727C13D0Ev();
static  VTBL_ENTRY vtc_S19727C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19727C13[0]),
  (VTBL_ENTRY)&_ZN9S19727C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19727C13D0Ev,
};
extern VTBL_ENTRY _ZTV9S19727C13[];
static  VTT_ENTRY vtt_S19727C13[] = {
  {&(_ZTV9S19727C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19727C13[];
extern  VTBL_ENTRY _ZTV9S19727C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19727C13[];
Class_Descriptor cd_S19727C13 = {  "S19727C13", // class name
  bases_S19727C13, 2,
  &(vtc_S19727C13[0]), // expected_vtbl_contents
  &(vtt_S19727C13[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19727C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19727C13),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19727C13),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19727C12  : S19727C13 , virtual S3164C8_nt {
  virtual  ~S19727C12(); // _ZN9S19727C12D2Ev
  S19727C12(); // tgen
};
//SIG(-1 S19727C12) C1{ BC2{ BC3{ vd m} VBC4{ m Fp} vd} VBC5{ m Fi} vd}


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

static void Test_S19727C12()
{
  extern Class_Descriptor cd_S19727C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19727C12, buf);
    S19727C12 *dp, &lv = *(dp=new (buf) S19727C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19727C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19727C12)");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C13*), 0, "S19727C12");
    check_base_class_offset(lv, (S2367C19*)(S19727C13*), ABISELECT(8,4), "S19727C12");
    check_base_class_offset(lv, (S19727C13*), 0, "S19727C12");
    check_base_class_offset(lv, (S3164C8_nt*), ABISELECT(16,8), "S19727C12");
    test_class_info(&lv, &cd_S19727C12);
    dp->~S19727C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19727C12(Test_S19727C12, "S19727C12", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19727C12C1Ev();
extern void _ZN9S19727C12D2Ev();
Name_Map name_map_S19727C12[] = {
  NSPAIR(_ZN9S19727C12C1Ev),
  NSPAIR(_ZN9S19727C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S19727C13;
extern VTBL_ENTRY _ZTI9S19727C13[];
extern  VTBL_ENTRY _ZTV9S19727C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19727C13[];
extern Class_Descriptor cd_S3164C8_nt;
extern VTBL_ENTRY _ZTI10S3164C8_nt[];
static Base_Class bases_S19727C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19727C13,    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_S3164C8_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 _ZTI9S19727C12[];
extern void _ZN9S19727C12D1Ev();
extern void _ZN9S19727C12D0Ev();
static  VTBL_ENTRY vtc_S19727C12[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19727C12[0]),
  (VTBL_ENTRY)&_ZN9S19727C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19727C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S19727C12[];
extern void _ZN9S19727C13D1Ev();
extern void _ZN9S19727C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19727C13__9S19727C12[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19727C13[0]),
  (VTBL_ENTRY)&_ZN9S19727C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19727C13D0Ev,
};
static  VTT_ENTRY vtt_S19727C12[] = {
  {&(_ZTV9S19727C12[4]),  4,6},
  {&(_tg__ZTV9S19727C13__9S19727C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19727C12[];
extern  VTBL_ENTRY _ZTV9S19727C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19727C12[];
Class_Descriptor cd_S19727C12 = {  "S19727C12", // class name
  bases_S19727C12, 4,
  &(vtc_S19727C12[0]), // expected_vtbl_contents
  &(vtt_S19727C12[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19727C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19727C12),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19727C12),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  S19727C1  : virtual S3164C8_nt , virtual S19727C3 , S19727C6 , virtual S19727C12 , S2213C30 {
  virtual  ~S19727C1(); // _ZN8S19727C1D2Ev
  S19727C1(); // tgen
};
//SIG(1 S19727C1) C1{ VBC2{ m Fi} VBC3{ VBC4{ m Fp} VBC5{ vd m} vd Fi} BC6{ VBC7{ m} BC8{ VBC7 VBC9{ BC4 BC5 Fp} VBC5 VBC3 VBC10{ BC7 VBC4 BC9 BC5 BC11{ BC5 Fp}} Fc:5} Fl} VBC12{ BC13{ BC5 VBC4 vd} VBC2 vd} BC14{ m} vd}


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

static void Test_S19727C1()
{
  extern Class_Descriptor cd_S19727C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[18];
    init_test(&cd_S19727C1, buf);
    S19727C1 *dp, &lv = *(dp=new (buf) S19727C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,68), "sizeof(S19727C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19727C1)");
    check_base_class_offset(lv, (S3164C8_nt*), ABISELECT(24,12), "S19727C1");
    check_base_class_offset(lv, (S3164C8_nt*)(S19727C12*), ABISELECT(24,12), "S19727C1");
    check_base_class_offset(lv, (S2367C19*)(S19727C3*), ABISELECT(48,24), "S19727C1");
    /*is_ambiguous_... S19727C10::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*)(S19727C10*), ABISELECT(48,24), "S19727C1");
    check_base_class_offset(lv, (S2367C19*)(S19727C13*)(S19727C12*), ABISELECT(48,24), "S19727C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C3*), ABISELECT(32,16), "S19727C1");
    /*is_ambiguous_... S19727C8::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S19727C8*)(S19727C6*), ABISELECT(32,16), "S19727C1");
    check_base_class_offset(lv, (S19727C3*), ABISELECT(32,16), "S19727C1");
    check_base_class_offset(lv, (S19727C3*)(S19727C8*)(S19727C6*), ABISELECT(32,16), "S19727C1");
    /*is_ambiguous_... S19727C6::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19727C6*), 0, "S19727C1");
    /*is_ambiguous_... S19727C8::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19727C8*)(S19727C6*), 0, "S19727C1");
    /*is_ambiguous_... S19727C1::S19727C9 */ AMB_check_base_class_offset(lv, (S2367C19*)(S19727C9*), ABISELECT(64,32), "S19727C1");
    /*is_ambiguous_... S19727C1::S19727C9 */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S19727C9*), ABISELECT(56,28), "S19727C1");
    /*is_ambiguous_... S19727C8::S19727C9 */ AMB_check_base_class_offset(lv, (S19727C9*)(S19727C8*)(S19727C6*), ABISELECT(56,28), "S19727C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S19727C10*), ABISELECT(80,40), "S19727C1");
    check_base_class_offset(lv, (S2367C19*)(S19727C9*)(S19727C10*), ABISELECT(88,44), "S19727C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C9*)(S19727C10*), ABISELECT(80,40), "S19727C1");
    check_base_class_offset(lv, (S19727C9*)(S19727C10*), ABISELECT(80,40), "S19727C1");
    /*is_ambiguous_... S19727C10::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S19727C10*), ABISELECT(104,52), "S19727C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C11*)(S19727C10*), ABISELECT(112,56), "S19727C1");
    check_base_class_offset(lv, (S19727C11*)(S19727C10*), ABISELECT(112,56), "S19727C1");
    check_base_class_offset(lv, (S19727C10*)(S19727C8*)(S19727C6*), ABISELECT(80,40), "S19727C1");
    check_base_class_offset(lv, (S19727C8*)(S19727C6*), 0, "S19727C1");
    check_base_class_offset(lv, (S19727C6*), 0, "S19727C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S19727C13*)(S19727C12*), ABISELECT(128,64), "S19727C1");
    check_base_class_offset(lv, (S19727C13*)(S19727C12*), ABISELECT(128,64), "S19727C1");
    check_base_class_offset(lv, (S19727C12*), ABISELECT(128,64), "S19727C1");
    check_base_class_offset(lv, (S2213C30*), 0, "S19727C1");
    test_class_info(&lv, &cd_S19727C1);
    dp->~S19727C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19727C1(Test_S19727C1, "S19727C1", ABISELECT(136,68));

#else // __cplusplus

extern void _ZN8S19727C1C1Ev();
extern void _ZN8S19727C1D2Ev();
Name_Map name_map_S19727C1[] = {
  NSPAIR(_ZN8S19727C1C1Ev),
  NSPAIR(_ZN8S19727C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C8_nt;
extern VTBL_ENTRY _ZTI10S3164C8_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C3;
extern VTBL_ENTRY _ZTI8S19727C3[];
extern  VTBL_ENTRY _ZTV8S19727C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19727C3[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C9;
extern VTBL_ENTRY _ZTI8S19727C9[];
extern  VTBL_ENTRY _ZTV8S19727C9[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C9;
extern VTBL_ENTRY _ZTI8S19727C9[];
extern  VTBL_ENTRY _ZTV8S19727C9[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C11;
extern VTBL_ENTRY _ZTI9S19727C11[];
extern  VTBL_ENTRY _ZTV9S19727C11[];
extern Class_Descriptor cd_S19727C10;
extern VTBL_ENTRY _ZTI9S19727C10[];
extern  VTBL_ENTRY _ZTV9S19727C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19727C10[];
extern Class_Descriptor cd_S19727C8;
extern VTBL_ENTRY _ZTI8S19727C8[];
extern  VTBL_ENTRY _ZTV8S19727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19727C8[];
extern Class_Descriptor cd_S19727C6;
extern VTBL_ENTRY _ZTI8S19727C6[];
extern  VTBL_ENTRY _ZTV8S19727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19727C6[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S19727C13;
extern VTBL_ENTRY _ZTI9S19727C13[];
extern  VTBL_ENTRY _ZTV9S19727C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19727C13[];
extern Class_Descriptor cd_S19727C12;
extern VTBL_ENTRY _ZTI9S19727C12[];
extern  VTBL_ENTRY _ZTV9S19727C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19727C12[];
extern Class_Descriptor cd_S2213C30;
extern VTBL_ENTRY _ZTI8S2213C30[];
static Base_Class bases_S19727C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C8_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, 1},
  {&cd_S2367C19,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S5228C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19727C3,    ABISELECT(32,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2367C19,    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
    7, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19727C9,    ABISELECT(56,28), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2367C19,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19727C9,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(104,52), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19727C11,    ABISELECT(112,56), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19727C10,    ABISELECT(80,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19727C8,    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
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19727C6,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19727C13,    ABISELECT(128,64), //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
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19727C12,    ABISELECT(128,64), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2213C30,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19727C1[];
extern void ABISELECT(_ZTv0_n24_N8S19727C1D1Ev,_ZTv0_n12_N8S19727C1D1Ev)();
extern void _ZN8S19727C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C1D0Ev,_ZTv0_n12_N8S19727C1D0Ev)();
extern void _ZN8S19727C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C1D1Ev,_ZTv0_n12_N8S19727C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19727C1D1Ev,_ZThn16_N8S19727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C1D0Ev,_ZTv0_n12_N8S19727C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19727C1D0Ev,_ZThn16_N8S19727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C1D1Ev,_ZTv0_n12_N8S19727C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19727C1D1Ev,_ZThn28_N8S19727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C1D0Ev,_ZTv0_n12_N8S19727C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19727C1D0Ev,_ZThn28_N8S19727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19727C1D1Ev,_ZTv0_n16_N8S19727C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19727C1D1Ev,_ZThn40_N8S19727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19727C1D0Ev,_ZTv0_n16_N8S19727C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19727C1D0Ev,_ZThn40_N8S19727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n32_N8S19727C1D1Ev,_ZTvn12_n16_N8S19727C1D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S19727C1D0Ev,_ZTvn12_n16_N8S19727C1D0Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19727C1D1Ev,_ZTvn16_n16_N8S19727C1D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19727C1D0Ev,_ZTvn16_n16_N8S19727C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19727C1D1Ev,_ZTv0_n20_N8S19727C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19727C1D1Ev,_ZThn64_N8S19727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19727C1D0Ev,_ZTv0_n20_N8S19727C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19727C1D0Ev,_ZThn64_N8S19727C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19727C1[] = {
  ABISELECT(128,64),
  ABISELECT(24,12),
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C1D1Ev,_ZTv0_n12_N8S19727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C1D0Ev,_ZTv0_n12_N8S19727C1D0Ev),
  0,
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C1D1Ev,_ZTv0_n12_N8S19727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C1D0Ev,_ZTv0_n12_N8S19727C1D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C1D1Ev,_ZTv0_n12_N8S19727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C1D0Ev,_ZTv0_n12_N8S19727C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C1D1Ev,_ZTv0_n16_N8S19727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C1D0Ev,_ZTv0_n16_N8S19727C1D0Ev),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C1D1Ev,_ZTvn12_n16_N8S19727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C1D0Ev,_ZTvn12_n16_N8S19727C1D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C1D1Ev,_ZTvn16_n16_N8S19727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C1D0Ev,_ZTvn16_n16_N8S19727C1D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19727C1D1Ev,_ZTv0_n20_N8S19727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19727C1D0Ev,_ZTv0_n20_N8S19727C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19727C1[];
extern void ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev)();
extern void _ZN8S19727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev)();
extern void _ZN8S19727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C6__8S19727C1[] = {
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev)();
extern void _ZN8S19727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev)();
extern void _ZN8S19727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C88S19727C6__8S19727C1[] = {
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19727C8D1Ev,_ZThn28_N8S19727C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S19727C8D0Ev,_ZThn28_N8S19727C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C9__8S19727C88S19727C6__8S19727C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19727C8D1Ev,_ZThn16_N8S19727C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19727C8D0Ev,_ZThn16_N8S19727C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C3__8S19727C88S19727C6__8S19727C1[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19727C8D1Ev,_ZTv0_n16_N8S19727C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19727C8D1Ev,_ZThn40_N8S19727C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19727C8D0Ev,_ZTv0_n16_N8S19727C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19727C8D0Ev,_ZThn40_N8S19727C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19727C10__8S19727C88S19727C6__8S19727C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C8D1Ev,_ZTv0_n16_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C8D0Ev,_ZTv0_n16_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTvn24_n32_N8S19727C8D1Ev,_ZTvn12_n16_N8S19727C8D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S19727C8D0Ev,_ZTvn12_n16_N8S19727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt9S19727C10__A3__8S19727C88S19727C6__8S19727C1[] = {
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C8D1Ev,_ZTvn12_n16_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C8D0Ev,_ZTvn12_n16_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19727C8D1Ev,_ZTvn16_n16_N8S19727C8D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19727C8D0Ev,_ZTvn16_n16_N8S19727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19727C119S19727C10__8S19727C88S19727C6__8S19727C1[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C8D1Ev,_ZTvn16_n16_N8S19727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C8D0Ev,_ZTvn16_n16_N8S19727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19727C6D1Ev,_ZThn28_N8S19727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19727C6D0Ev,_ZThn28_N8S19727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C9__8S19727C6__8S19727C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S19727C6D1Ev,_ZThn16_N8S19727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S19727C6D0Ev,_ZThn16_N8S19727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C3__8S19727C6__8S19727C1[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19727C6D1Ev,_ZTv0_n16_N8S19727C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S19727C6D1Ev,_ZThn40_N8S19727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19727C6D0Ev,_ZTv0_n16_N8S19727C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S19727C6D0Ev,_ZThn40_N8S19727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19727C10__8S19727C6__8S19727C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C6D1Ev,_ZTv0_n16_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19727C6D0Ev,_ZTv0_n16_N8S19727C6D0Ev),
};
extern void ABISELECT(_ZTvn24_n32_N8S19727C6D1Ev,_ZTvn12_n16_N8S19727C6D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S19727C6D0Ev,_ZTvn12_n16_N8S19727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt9S19727C10__A3__8S19727C6__8S19727C1[] = {
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C6D1Ev,_ZTvn12_n16_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S19727C6D0Ev,_ZTvn12_n16_N8S19727C6D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19727C6D1Ev,_ZTvn16_n16_N8S19727C6D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19727C6D0Ev,_ZTvn16_n16_N8S19727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19727C119S19727C10__8S19727C6__8S19727C1[] = {
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C6D1Ev,_ZTvn16_n16_N8S19727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19727C6D0Ev,_ZTvn16_n16_N8S19727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev)();
extern void _ZN8S19727C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev)();
extern void _ZN8S19727C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19727C3__8S19727C1[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19727C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev),
};
extern void _ZN9S19727C10D1Ev();
extern void _ZN9S19727C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19727C10__8S19727C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19727C10[0]),
  (VTBL_ENTRY)&_ZN9S19727C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19727C10D0Ev,
};
extern void _ZN9S19727C12D1Ev();
extern void _ZN9S19727C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19727C12__8S19727C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19727C12[0]),
  (VTBL_ENTRY)&_ZN9S19727C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19727C12D0Ev,
};
extern void _ZN9S19727C13D1Ev();
extern void _ZN9S19727C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19727C139S19727C12__8S19727C1[] = {
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19727C13[0]),
  (VTBL_ENTRY)&_ZN9S19727C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19727C13D0Ev,
};
static  VTT_ENTRY vtt_S19727C1[] = {
  {&(_ZTV8S19727C1[11]),  11,46},
  {&(_tg__ZTV8S19727C6__8S19727C1[9]),  9,11},
  {&(_tg__ZTV8S19727C88S19727C6__8S19727C1[9]),  9,11},
  {&(_tg__ZTV8S19727C9__8S19727C88S19727C6__8S19727C1[3]),  3,5},
  {&(_tg__ZTV8S19727C3__8S19727C88S19727C6__8S19727C1[5]),  5,7},
  {&(_tg__ZTV8S19727C3__8S19727C88S19727C6__8S19727C1[5]),  5,7},
  {&(_tg__ZTV9S19727C10__8S19727C88S19727C6__8S19727C1[4]),  4,6},
  {&(_tg__ZTV10S5228C4_nt9S19727C10__A3__8S19727C88S19727C6__8S19727C1[2]),  2,4},
  {&(_tg__ZTV9S19727C119S19727C10__8S19727C88S19727C6__8S19727C1[2]),  2,4},
  {&(_tg__ZTV8S19727C9__8S19727C6__8S19727C1[3]),  3,5},
  {&(_tg__ZTV8S19727C3__8S19727C6__8S19727C1[5]),  5,7},
  {&(_tg__ZTV8S19727C3__8S19727C6__8S19727C1[5]),  5,7},
  {&(_tg__ZTV9S19727C10__8S19727C6__8S19727C1[4]),  4,6},
  {&(_tg__ZTV10S5228C4_nt9S19727C10__A3__8S19727C6__8S19727C1[2]),  2,4},
  {&(_tg__ZTV9S19727C119S19727C10__8S19727C6__8S19727C1[2]),  2,4},
  {&(_ZTV8S19727C1[18]),  18,46},
  {&(_ZTV8S19727C1[18]),  18,46},
  {&(_ZTV8S19727C1[23]),  23,46},
  {&(_ZTV8S19727C1[29]),  29,46},
  {&(_ZTV8S19727C1[33]),  33,46},
  {&(_ZTV8S19727C1[37]),  37,46},
  {&(_ZTV8S19727C1[44]),  44,46},
  {&(_tg__ZTV8S19727C3__8S19727C1[5]),  5,7},
  {&(_tg__ZTV8S19727C3__8S19727C1[5]),  5,7},
  {&(_tg__ZTV9S19727C10__8S19727C1[3]),  3,5},
  {&(_tg__ZTV9S19727C12__8S19727C1[4]),  4,6},
  {&(_tg__ZTV9S19727C139S19727C12__8S19727C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19727C1[];
extern  VTBL_ENTRY _ZTV8S19727C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19727C1[];
static VTBL_ENTRY alt_thunk_names144[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C3D0Ev,_ZTv0_n12_N8S19727C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19727C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C3D1Ev,_ZTv0_n12_N8S19727C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19727C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C6D0Ev,_ZTv0_n16_N8S19727C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19727C6D0Ev,_ZThn40_N8S19727C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C6D1Ev,_ZTv0_n16_N8S19727C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19727C6D1Ev,_ZThn40_N8S19727C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C8D0Ev,_ZTv0_n16_N8S19727C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19727C8D0Ev,_ZThn40_N8S19727C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C8D1Ev,_ZTv0_n16_N8S19727C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19727C8D1Ev,_ZThn40_N8S19727C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C8D0Ev,_ZTv0_n12_N8S19727C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19727C8D0Ev,_ZThn16_N8S19727C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19727C8D0Ev,_ZThn28_N8S19727C8D0Ev),
  (VTBL_ENTRY)_ZN8S19727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C8D1Ev,_ZTv0_n12_N8S19727C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19727C8D1Ev,_ZThn16_N8S19727C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19727C8D1Ev,_ZThn28_N8S19727C8D1Ev),
  (VTBL_ENTRY)_ZN8S19727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C6D0Ev,_ZTv0_n12_N8S19727C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19727C6D0Ev,_ZThn16_N8S19727C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19727C6D0Ev,_ZThn28_N8S19727C6D0Ev),
  (VTBL_ENTRY)_ZN8S19727C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C6D1Ev,_ZTv0_n12_N8S19727C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19727C6D1Ev,_ZThn16_N8S19727C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19727C6D1Ev,_ZThn28_N8S19727C6D1Ev),
  (VTBL_ENTRY)_ZN8S19727C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19727C1D0Ev,_ZTv0_n20_N8S19727C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19727C1D0Ev,_ZThn64_N8S19727C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19727C1D1Ev,_ZTv0_n20_N8S19727C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19727C1D1Ev,_ZThn64_N8S19727C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C1D0Ev,_ZTv0_n16_N8S19727C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19727C1D0Ev,_ZThn40_N8S19727C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19727C1D1Ev,_ZTv0_n16_N8S19727C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19727C1D1Ev,_ZThn40_N8S19727C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C1D0Ev,_ZTv0_n12_N8S19727C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19727C1D0Ev,_ZThn28_N8S19727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19727C1D0Ev,_ZThn16_N8S19727C1D0Ev),
  (VTBL_ENTRY)_ZN8S19727C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19727C1D1Ev,_ZTv0_n12_N8S19727C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19727C1D1Ev,_ZThn28_N8S19727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19727C1D1Ev,_ZThn16_N8S19727C1D1Ev),
  (VTBL_ENTRY)_ZN8S19727C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19727C1 = {  "S19727C1", // class name
  bases_S19727C1, 22,
  &(vtc_S19727C1[0]), // expected_vtbl_contents
  &(vtt_S19727C1[0]), // expected_vtt_contents
  ABISELECT(136,68), // object size
  NSPAIRA(_ZTI8S19727C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19727C1),46, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19727C1),27, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names144,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18288C4_nt  {
  ::S2213C37 s18288c4f0;
  void *s18288c4f1[2];
  void  mf18288c4(); // _ZN11S18288C4_nt9mf18288c4Ev
};
//SIG(-1 S18288C4_nt) C1{ m FC2{ m Fp Fi[2] FC3{ m}} Fp[2]}


void  S18288C4_nt ::mf18288c4(){}

//skip512 S18288C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S18288C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18288C8_nt  {
  ::S18288C9_nt s18288c8f0;
  char s18288c8f1[16];
};
//SIG(-1 S18288C8_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S18288C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18288C10_nt  {
  char s18288c10f0[128];
};
//SIG(-1 S18288C10_nt) C1{ Fc[128]}



//skip512 S18288C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18288C12_nt  {
  int s18288c12f0;
  int s18288c12f1;
};
//SIG(1 S18288C12_nt) C1{ Fi[2]}



//skip512 S18288C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18288C13_nt  {
  int s18288c13f0;
  int s18288c13f1;
  int s18288c13f2;
  char s18288c13f3[128];
};
//SIG(1 S18288C13_nt) C1{ Fi[3] Fc[128]}



//skip512 S18288C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S18288C11_nt  {
  ::S18288C12_nt s18288c11f0;
  __tsi64 s18288c11f1;
  ::S18288C13_nt s18288c11f2;
};
//SIG(1 S18288C11_nt) U1{ FC2{ Fi Fi} FL FC3{ Fi Fi Fi Fc[128]}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S18288C7  {
  ::S18288C8_nt s18288c7f0;
  ::S18288C9_nt s18288c7f1;
  ::S18288C10_nt s18288c7f2;
  ::S18288C11_nt s18288c7f3;
};
//SIG(-1 S18288C7) C1{ FC2{ FC3{ Fc[20]} Fc[16]} FC3 FC4{ Fc[128]} FU5{ FC6{ Fi Fi} FL FC7{ Fi Fi Fi Fc[128]}}}



static void Test_S18288C7()
{
  {
    init_simple_test("S18288C7");
    S18288C7 lv;
    check2(sizeof(lv), ABISELECT(328,324), "sizeof(S18288C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18288C7)");
    check_field_offset(lv, s18288c7f0, 0, "S18288C7.s18288c7f0");
    check_field_offset(lv, s18288c7f1, 36, "S18288C7.s18288c7f1");
    check_field_offset(lv, s18288c7f2, 56, "S18288C7.s18288c7f2");
    check_field_offset(lv, s18288c7f3, 184, "S18288C7.s18288c7f3");
  }
}
static Arrange_To_Call_Me vS18288C7(Test_S18288C7, "S18288C7", ABISELECT(328,324));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18288C1  {
  void *s18288c1f0[3];
  ::S2213C20_nt s18288c1f1;
  int s18288c1f2;
  ::S18288C4_nt s18288c1f3;
  char s18288c1f4[2];
  ::S18288C7 s18288c1f5;
  char s18288c1f6;
  void *s18288c1f7;
  void *s18288c1f8;
  __tsi64 s18288c1f9;
  void  mf18288c1(); // _ZN8S18288C19mf18288c1Ev
};
//SIG(1 S18288C1) C1{ m Fp[3] FC2{ m Fp Fi FC3{ m}} Fi FC4{ m FC5{ m Fp Fi[2] FC6{ m}} Fp[2]} Fc[2] FC7{ FC8{ FC9{ Fc[20]} Fc[16]} FC9 FC10{ Fc[128]} FU11{ FC12{ Fi Fi} FL FC13{ Fi Fi Fi Fc[128]}}} Fc Fp Fp FL}


void  S18288C1 ::mf18288c1(){}

static void Test_S18288C1()
{
  {
    init_simple_test("S18288C1");
    S18288C1 lv;
    check2(sizeof(lv), ABISELECT(456,400), "sizeof(S18288C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18288C1)");
    check_field_offset(lv, s18288c1f0, 0, "S18288C1.s18288c1f0");
    check_field_offset(lv, s18288c1f1, ABISELECT(24,12), "S18288C1.s18288c1f1");
    check_field_offset(lv, s18288c1f2, ABISELECT(40,24), "S18288C1.s18288c1f2");
    check_field_offset(lv, s18288c1f3, ABISELECT(48,28), "S18288C1.s18288c1f3");
    check_field_offset(lv, s18288c1f4, ABISELECT(88,52), "S18288C1.s18288c1f4");
    check_field_offset(lv, s18288c1f5, ABISELECT(96,56), "S18288C1.s18288c1f5");
    check_field_offset(lv, s18288c1f6, ABISELECT(424,380), "S18288C1.s18288c1f6");
    check_field_offset(lv, s18288c1f7, ABISELECT(432,384), "S18288C1.s18288c1f7");
    check_field_offset(lv, s18288c1f8, ABISELECT(440,388), "S18288C1.s18288c1f8");
    check_field_offset(lv, s18288c1f9, ABISELECT(448,392), "S18288C1.s18288c1f9");
  }
}
static Arrange_To_Call_Me vS18288C1(Test_S18288C1, "S18288C1", ABISELECT(456,400));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7082C3  {
  virtual void  v11(); // _ZN7S7082C33v11Ev
  virtual void  v12(); // _ZN7S7082C33v12Ev
  virtual void  v13(); // _ZN7S7082C33v13Ev
  ~S7082C3(); // tgen
  S7082C3(); // tgen
};
//SIG(-1 S7082C3) C1{ v1 v2 v3}


void  S7082C3 ::v11(){vfunc_called(this, "_ZN7S7082C33v11Ev");}
void  S7082C3 ::v12(){vfunc_called(this, "_ZN7S7082C33v12Ev");}
void  S7082C3 ::v13(){vfunc_called(this, "_ZN7S7082C33v13Ev");}
S7082C3 ::~S7082C3(){ note_dtor("S7082C3", this);} // tgen
S7082C3 ::S7082C3(){ note_ctor("S7082C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7082C3C1Ev();
extern void _ZN7S7082C3D1Ev();
Name_Map name_map_S7082C3[] = {
  NSPAIR(_ZN7S7082C3C1Ev),
  NSPAIR(_ZN7S7082C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7082C3[];
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY vtc_S7082C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C3[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
Class_Descriptor cd_S7082C3 = {  "S7082C3", // class name
  0,0,//no base classes
  &(vtc_S7082C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7082C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7082C3),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  S7082C2  {
  __tsi64 s7082c2f0;
  void *s7082c2f1;
  __tsi64 s7082c2f2;
  short s7082c2f3;
  ::S7082C3 s7082c2f4;
  virtual void  v7(); // _ZN7S7082C22v7Ev
  virtual void  v8(); // _ZN7S7082C22v8Ev
  virtual void  v9(); // _ZN7S7082C22v9Ev
  virtual void  v10(); // _ZN7S7082C23v10Ev
  ~S7082C2(); // tgen
  S7082C2(); // tgen
};
//SIG(-1 S7082C2) C1{ v1 v2 v3 v4 FL Fp FL Fs FC2{ v5 v6 v7}}


void  S7082C2 ::v7(){vfunc_called(this, "_ZN7S7082C22v7Ev");}
void  S7082C2 ::v8(){vfunc_called(this, "_ZN7S7082C22v8Ev");}
void  S7082C2 ::v9(){vfunc_called(this, "_ZN7S7082C22v9Ev");}
void  S7082C2 ::v10(){vfunc_called(this, "_ZN7S7082C23v10Ev");}
S7082C2 ::~S7082C2(){ note_dtor("S7082C2", this);} // tgen
S7082C2 ::S7082C2(){ note_ctor("S7082C2", this);} // tgen

static void Test_S7082C2()
{
  extern Class_Descriptor cd_S7082C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7082C2, buf);
    S7082C2 *dp, &lv = *(dp=new (buf) S7082C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7082C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7082C2)");
    check_field_offset(lv, s7082c2f0, ABISELECT(8,4), "S7082C2.s7082c2f0");
    check_field_offset(lv, s7082c2f1, ABISELECT(16,12), "S7082C2.s7082c2f1");
    check_field_offset(lv, s7082c2f2, ABISELECT(24,16), "S7082C2.s7082c2f2");
    check_field_offset(lv, s7082c2f3, ABISELECT(32,24), "S7082C2.s7082c2f3");
    check_field_offset(lv, s7082c2f4, ABISELECT(40,28), "S7082C2.s7082c2f4");
    test_class_info(&lv, &cd_S7082C2);
    dp->~S7082C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7082C2(Test_S7082C2, "S7082C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S7082C2C1Ev();
extern void _ZN7S7082C2D1Ev();
Name_Map name_map_S7082C2[] = {
  NSPAIR(_ZN7S7082C2C1Ev),
  NSPAIR(_ZN7S7082C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7082C2[];
extern void _ZN7S7082C22v7Ev();
extern void _ZN7S7082C22v8Ev();
extern void _ZN7S7082C22v9Ev();
extern void _ZN7S7082C23v10Ev();
static  VTBL_ENTRY vtc_S7082C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C2[0]),
  (VTBL_ENTRY)&_ZN7S7082C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7082C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7082C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7082C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S7082C2[];
extern  VTBL_ENTRY _ZTV7S7082C2[];
Class_Descriptor cd_S7082C2 = {  "S7082C2", // class name
  0,0,//no base classes
  &(vtc_S7082C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S7082C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7082C2),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  S7082C8  : S7082C3 {
  virtual  ~S7082C8(); // _ZN7S7082C8D1Ev
  virtual void  v14(); // _ZN7S7082C83v14Ev
  S7082C8(); // tgen
};
//SIG(-1 S7082C8) C1{ BC2{ v2 v3 v4} vd v1}


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

static void Test_S7082C8()
{
  extern Class_Descriptor cd_S7082C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7082C8, buf);
    S7082C8 *dp, &lv = *(dp=new (buf) S7082C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7082C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7082C8)");
    check_base_class_offset(lv, (S7082C3*), 0, "S7082C8");
    test_class_info(&lv, &cd_S7082C8);
    dp->~S7082C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7082C8(Test_S7082C8, "S7082C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7082C8C1Ev();
extern void _ZN7S7082C8D1Ev();
Name_Map name_map_S7082C8[] = {
  NSPAIR(_ZN7S7082C8C1Ev),
  NSPAIR(_ZN7S7082C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
static Base_Class bases_S7082C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7082C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7082C8[];
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void _ZN7S7082C8D1Ev();
extern void _ZN7S7082C8D0Ev();
extern void _ZN7S7082C83v14Ev();
static  VTBL_ENTRY vtc_S7082C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C8[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7082C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7082C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
};
extern VTBL_ENTRY _ZTI7S7082C8[];
extern  VTBL_ENTRY _ZTV7S7082C8[];
Class_Descriptor cd_S7082C8 = {  "S7082C8", // class name
  bases_S7082C8, 1,
  &(vtc_S7082C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7082C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7082C8),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  S7082C7  : virtual S7082C8 , virtual S7082C3 {
  int s7082c7f0;
  virtual void  v15(); // _ZN7S7082C73v15Ev
  virtual void  v16(); // _ZN7S7082C73v16Ev
  ~S7082C7(); // tgen
  S7082C7(); // tgen
};
//SIG(-1 S7082C7) C1{ VBC2{ BC3{ v3 v4 v5} vd v6} VBC3 v1 v2 Fi}


void  S7082C7 ::v15(){vfunc_called(this, "_ZN7S7082C73v15Ev");}
void  S7082C7 ::v16(){vfunc_called(this, "_ZN7S7082C73v16Ev");}
S7082C7 ::~S7082C7(){ note_dtor("S7082C7", this);} // tgen
S7082C7 ::S7082C7(){ note_ctor("S7082C7", this);} // tgen

static void Test_S7082C7()
{
  extern Class_Descriptor cd_S7082C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7082C7, buf);
    S7082C7 *dp, &lv = *(dp=new (buf) S7082C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7082C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7082C7)");
    check_base_class_offset(lv, (S7082C3*)(S7082C8*), 0, "S7082C7");
    check_base_class_offset(lv, (S7082C8*), 0, "S7082C7");
    /*is_ambiguous_... S7082C7::S7082C3 */ AMB_check_base_class_offset(lv, (S7082C3*), ABISELECT(16,8), "S7082C7");
    check_field_offset(lv, s7082c7f0, ABISELECT(8,4), "S7082C7.s7082c7f0");
    test_class_info(&lv, &cd_S7082C7);
    dp->~S7082C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7082C7(Test_S7082C7, "S7082C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7082C7C1Ev();
extern void _ZN7S7082C7D1Ev();
Name_Map name_map_S7082C7[] = {
  NSPAIR(_ZN7S7082C7C1Ev),
  NSPAIR(_ZN7S7082C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
extern Class_Descriptor cd_S7082C8;
extern VTBL_ENTRY _ZTI7S7082C8[];
extern  VTBL_ENTRY _ZTV7S7082C8[];
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
static Base_Class bases_S7082C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7082C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7082C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7082C3,    ABISELECT(16,8), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7082C7[];
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void _ZN7S7082C7D1Ev();
extern void _ZN7S7082C7D0Ev();
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY vtc_S7082C7[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C7[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7082C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7082C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7082C7[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
extern VTBL_ENTRY _ZTV7S7082C7[];
static  VTT_ENTRY vtt_S7082C7[] = {
  {&(_ZTV7S7082C7[9]),  9,25},
  {&(_ZTV7S7082C7[9]),  9,25},
  {&(_ZTV7S7082C7[22]),  22,25},
};
extern VTBL_ENTRY _ZTI7S7082C7[];
extern  VTBL_ENTRY _ZTV7S7082C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C7[];
Class_Descriptor cd_S7082C7 = {  "S7082C7", // class name
  bases_S7082C7, 3,
  &(vtc_S7082C7[0]), // expected_vtbl_contents
  &(vtt_S7082C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7082C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7082C7),25, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7082C7),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7082C6  : S7082C7 {
  virtual  ~S7082C6(); // _ZN7S7082C6D2Ev
  virtual void  v17(); // _ZN7S7082C63v17Ev
  S7082C6(); // tgen
};
//SIG(-1 S7082C6) C1{ BC2{ VBC3{ BC4{ v2 v3 v4} vd v5} VBC4 v6 v7 Fi} vd v1}


 S7082C6 ::~S7082C6(){ note_dtor("S7082C6", this);}
void  S7082C6 ::v17(){vfunc_called(this, "_ZN7S7082C63v17Ev");}
S7082C6 ::S7082C6(){ note_ctor("S7082C6", this);} // tgen

static void Test_S7082C6()
{
  extern Class_Descriptor cd_S7082C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7082C6, buf);
    S7082C6 *dp, &lv = *(dp=new (buf) S7082C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7082C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7082C6)");
    check_base_class_offset(lv, (S7082C3*)(S7082C8*), 0, "S7082C6");
    check_base_class_offset(lv, (S7082C8*)(S7082C7*), 0, "S7082C6");
    /*is_ambiguous_... S7082C7::S7082C3 */ AMB_check_base_class_offset(lv, (S7082C3*)(S7082C7*), ABISELECT(16,8), "S7082C6");
    check_base_class_offset(lv, (S7082C7*), 0, "S7082C6");
    test_class_info(&lv, &cd_S7082C6);
    dp->~S7082C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7082C6(Test_S7082C6, "S7082C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7082C6C1Ev();
extern void _ZN7S7082C6D2Ev();
Name_Map name_map_S7082C6[] = {
  NSPAIR(_ZN7S7082C6C1Ev),
  NSPAIR(_ZN7S7082C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
extern Class_Descriptor cd_S7082C8;
extern VTBL_ENTRY _ZTI7S7082C8[];
extern  VTBL_ENTRY _ZTV7S7082C8[];
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
extern Class_Descriptor cd_S7082C7;
extern VTBL_ENTRY _ZTI7S7082C7[];
extern  VTBL_ENTRY _ZTV7S7082C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C7[];
static Base_Class bases_S7082C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7082C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7082C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7082C3,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7082C7,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7082C6[];
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void _ZN7S7082C6D1Ev();
extern void _ZN7S7082C6D0Ev();
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C63v17Ev();
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY vtc_S7082C6[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C6[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7082C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7082C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7082C63v17Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7082C6[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
extern VTBL_ENTRY _ZTV7S7082C6[];
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void _ZN7S7082C7D1Ev();
extern void _ZN7S7082C7D0Ev();
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C7__7S7082C6[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C7[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7082C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7082C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C3__A1__7S7082C7__7S7082C6[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7082C7[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
static  VTT_ENTRY vtt_S7082C6[] = {
  {&(_ZTV7S7082C6[9]),  9,26},
  {&(_tg__ZTV7S7082C7__7S7082C6[9]),  9,17},
  {&(_tg__ZTV7S7082C7__7S7082C6[9]),  9,17},
  {&(_tg__ZTV7S7082C3__A1__7S7082C7__7S7082C6[5]),  5,8},
  {&(_ZTV7S7082C6[9]),  9,26},
  {&(_ZTV7S7082C6[23]),  23,26},
};
extern VTBL_ENTRY _ZTI7S7082C6[];
extern  VTBL_ENTRY _ZTV7S7082C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C6[];
Class_Descriptor cd_S7082C6 = {  "S7082C6", // class name
  bases_S7082C6, 4,
  &(vtc_S7082C6[0]), // expected_vtbl_contents
  &(vtt_S7082C6[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7082C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7082C6),26, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7082C6),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  S7082C5  : S7082C6 {
  virtual void  v18(); // _ZN7S7082C53v18Ev
  virtual void  v19(); // _ZN7S7082C53v19Ev
  ~S7082C5(); // tgen
  S7082C5(); // tgen
};
//SIG(-1 S7082C5) C1{ BC2{ BC3{ VBC4{ BC5{ v3 v4 v5} vd v6} VBC5 v7 v8 Fi} vd v9} v1 v2}


void  S7082C5 ::v18(){vfunc_called(this, "_ZN7S7082C53v18Ev");}
void  S7082C5 ::v19(){vfunc_called(this, "_ZN7S7082C53v19Ev");}
S7082C5 ::~S7082C5(){ note_dtor("S7082C5", this);} // tgen
S7082C5 ::S7082C5(){ note_ctor("S7082C5", this);} // tgen

static void Test_S7082C5()
{
  extern Class_Descriptor cd_S7082C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7082C5, buf);
    S7082C5 *dp, &lv = *(dp=new (buf) S7082C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7082C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7082C5)");
    check_base_class_offset(lv, (S7082C3*)(S7082C8*), 0, "S7082C5");
    check_base_class_offset(lv, (S7082C8*)(S7082C7*)(S7082C6*), 0, "S7082C5");
    /*is_ambiguous_... S7082C7::S7082C3 */ AMB_check_base_class_offset(lv, (S7082C3*)(S7082C7*)(S7082C6*), ABISELECT(16,8), "S7082C5");
    check_base_class_offset(lv, (S7082C7*)(S7082C6*), 0, "S7082C5");
    check_base_class_offset(lv, (S7082C6*), 0, "S7082C5");
    test_class_info(&lv, &cd_S7082C5);
    dp->~S7082C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7082C5(Test_S7082C5, "S7082C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7082C5C1Ev();
extern void _ZN7S7082C5D1Ev();
Name_Map name_map_S7082C5[] = {
  NSPAIR(_ZN7S7082C5C1Ev),
  NSPAIR(_ZN7S7082C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
extern Class_Descriptor cd_S7082C8;
extern VTBL_ENTRY _ZTI7S7082C8[];
extern  VTBL_ENTRY _ZTV7S7082C8[];
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
extern Class_Descriptor cd_S7082C7;
extern VTBL_ENTRY _ZTI7S7082C7[];
extern  VTBL_ENTRY _ZTV7S7082C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C7[];
extern Class_Descriptor cd_S7082C6;
extern VTBL_ENTRY _ZTI7S7082C6[];
extern  VTBL_ENTRY _ZTV7S7082C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C6[];
static Base_Class bases_S7082C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7082C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7082C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7082C3,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7082C7,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7082C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7082C5[];
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void _ZN7S7082C5D1Ev();
extern void _ZN7S7082C5D0Ev();
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C63v17Ev();
extern void _ZN7S7082C53v18Ev();
extern void _ZN7S7082C53v19Ev();
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY vtc_S7082C5[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C5[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7082C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7082C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7082C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v19Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7082C5[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
extern VTBL_ENTRY _ZTV7S7082C5[];
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void _ZN7S7082C6D1Ev();
extern void _ZN7S7082C6D0Ev();
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C6__7S7082C5[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C6[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7082C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7082C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7082C63v17Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7082C7D1Ev,_ZTv0_n24_N7S7082C7D1Ev)();
extern void _ZN7S7082C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7082C7D0Ev,_ZTv0_n24_N7S7082C7D0Ev)();
extern void _ZN7S7082C7D0Ev() __attribute__((weak));
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C77S7082C6__7S7082C5[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C7[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C7D1Ev,_ZTv0_n24_N7S7082C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C7D0Ev,_ZTv0_n24_N7S7082C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C3__A1__7S7082C77S7082C6__7S7082C5[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7082C7[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C3__A1__7S7082C6__7S7082C5[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7082C6[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
static  VTT_ENTRY vtt_S7082C5[] = {
  {&(_ZTV7S7082C5[9]),  9,28},
  {&(_tg__ZTV7S7082C6__7S7082C5[9]),  9,18},
  {&(_tg__ZTV7S7082C77S7082C6__7S7082C5[9]),  9,17},
  {&(_tg__ZTV7S7082C77S7082C6__7S7082C5[9]),  9,17},
  {&(_tg__ZTV7S7082C3__A1__7S7082C77S7082C6__7S7082C5[5]),  5,8},
  {&(_tg__ZTV7S7082C6__7S7082C5[9]),  9,18},
  {&(_tg__ZTV7S7082C3__A1__7S7082C6__7S7082C5[5]),  5,8},
  {&(_ZTV7S7082C5[9]),  9,28},
  {&(_ZTV7S7082C5[25]),  25,28},
};
extern VTBL_ENTRY _ZTI7S7082C5[];
extern  VTBL_ENTRY _ZTV7S7082C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C5[];
static VTBL_ENTRY alt_thunk_names145[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C7D0Ev,_ZTv0_n24_N7S7082C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7082C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C7D1Ev,_ZTv0_n24_N7S7082C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7082C7D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7082C5 = {  "S7082C5", // class name
  bases_S7082C5, 5,
  &(vtc_S7082C5[0]), // expected_vtbl_contents
  &(vtt_S7082C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7082C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7082C5),28, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7082C5),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names145,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7082C4  : virtual S7082C5 {
  int s7082c4f0;
  virtual void  v20(); // _ZN7S7082C43v20Ev
  virtual void  v21(); // _ZN7S7082C43v21Ev
  virtual void  v22(); // _ZN7S7082C43v22Ev
  virtual void  v23(); // _ZN7S7082C43v23Ev
  virtual void  v24(); // _ZN7S7082C43v24Ev
  virtual void  v25(); // _ZN7S7082C43v25Ev
  virtual void  v26(); // _ZN7S7082C43v26Ev
  virtual void  v27(); // _ZN7S7082C43v27Ev
  ~S7082C4(); // tgen
  S7082C4(); // tgen
};
//SIG(-1 S7082C4) C1{ VBC2{ BC3{ BC4{ VBC5{ BC6{ v9 v10 v11} vd v12} VBC6 v13 v14 Fi} vd v15} v16 v17} v1 v2 v3 v4 v5 v6 v7 v8 Fi}


void  S7082C4 ::v20(){vfunc_called(this, "_ZN7S7082C43v20Ev");}
void  S7082C4 ::v21(){vfunc_called(this, "_ZN7S7082C43v21Ev");}
void  S7082C4 ::v22(){vfunc_called(this, "_ZN7S7082C43v22Ev");}
void  S7082C4 ::v23(){vfunc_called(this, "_ZN7S7082C43v23Ev");}
void  S7082C4 ::v24(){vfunc_called(this, "_ZN7S7082C43v24Ev");}
void  S7082C4 ::v25(){vfunc_called(this, "_ZN7S7082C43v25Ev");}
void  S7082C4 ::v26(){vfunc_called(this, "_ZN7S7082C43v26Ev");}
void  S7082C4 ::v27(){vfunc_called(this, "_ZN7S7082C43v27Ev");}
S7082C4 ::~S7082C4(){ note_dtor("S7082C4", this);} // tgen
S7082C4 ::S7082C4(){ note_ctor("S7082C4", this);} // tgen

static void Test_S7082C4()
{
  extern Class_Descriptor cd_S7082C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7082C4, buf);
    S7082C4 *dp, &lv = *(dp=new (buf) S7082C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7082C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7082C4)");
    check_base_class_offset(lv, (S7082C3*)(S7082C8*), ABISELECT(16,8), "S7082C4");
    check_base_class_offset(lv, (S7082C8*)(S7082C7*)(S7082C6*)(S7082C5*), ABISELECT(16,8), "S7082C4");
    /*is_ambiguous_... S7082C7::S7082C3 */ AMB_check_base_class_offset(lv, (S7082C3*)(S7082C7*)(S7082C6*)(S7082C5*), 0, "S7082C4");
    check_base_class_offset(lv, (S7082C7*)(S7082C6*)(S7082C5*), ABISELECT(16,8), "S7082C4");
    check_base_class_offset(lv, (S7082C6*)(S7082C5*), ABISELECT(16,8), "S7082C4");
    check_base_class_offset(lv, (S7082C5*), ABISELECT(16,8), "S7082C4");
    check_field_offset(lv, s7082c4f0, ABISELECT(8,4), "S7082C4.s7082c4f0");
    test_class_info(&lv, &cd_S7082C4);
    dp->~S7082C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7082C4(Test_S7082C4, "S7082C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7082C4C1Ev();
extern void _ZN7S7082C4D1Ev();
Name_Map name_map_S7082C4[] = {
  NSPAIR(_ZN7S7082C4C1Ev),
  NSPAIR(_ZN7S7082C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
extern Class_Descriptor cd_S7082C8;
extern VTBL_ENTRY _ZTI7S7082C8[];
extern  VTBL_ENTRY _ZTV7S7082C8[];
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
extern Class_Descriptor cd_S7082C7;
extern VTBL_ENTRY _ZTI7S7082C7[];
extern  VTBL_ENTRY _ZTV7S7082C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C7[];
extern Class_Descriptor cd_S7082C6;
extern VTBL_ENTRY _ZTI7S7082C6[];
extern  VTBL_ENTRY _ZTV7S7082C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C6[];
extern Class_Descriptor cd_S7082C5;
extern VTBL_ENTRY _ZTI7S7082C5[];
extern  VTBL_ENTRY _ZTV7S7082C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C5[];
static Base_Class bases_S7082C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7082C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7082C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7082C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7082C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7082C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7082C5,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7082C4[];
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void _ZN7S7082C43v20Ev();
extern void _ZN7S7082C43v21Ev();
extern void _ZN7S7082C43v22Ev();
extern void _ZN7S7082C43v23Ev();
extern void _ZN7S7082C43v24Ev();
extern void _ZN7S7082C43v25Ev();
extern void _ZN7S7082C43v26Ev();
extern void _ZN7S7082C43v27Ev();
extern void _ZN7S7082C4D1Ev();
extern void _ZN7S7082C4D0Ev();
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7082C4D1Ev,_ZTv0_n24_N7S7082C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S7082C4D1Ev,_ZThn8_N7S7082C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7082C4D0Ev,_ZTv0_n24_N7S7082C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S7082C4D0Ev,_ZThn8_N7S7082C4D0Ev)() __attribute__((weak));
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C63v17Ev();
extern void _ZN7S7082C53v18Ev();
extern void _ZN7S7082C53v19Ev();
static  VTBL_ENTRY vtc_S7082C4[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C4[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7082C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7082C4D0Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7082C4[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C4D1Ev,_ZTv0_n24_N7S7082C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C4D0Ev,_ZTv0_n24_N7S7082C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7082C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v19Ev,
};
extern VTBL_ENTRY _ZTV7S7082C4[];
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7082C5D1Ev,_ZTv0_n24_N7S7082C5D1Ev)();
extern void _ZN7S7082C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7082C5D0Ev,_ZTv0_n24_N7S7082C5D0Ev)();
extern void _ZN7S7082C5D0Ev() __attribute__((weak));
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C63v17Ev();
extern void _ZN7S7082C53v18Ev();
extern void _ZN7S7082C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C5__7S7082C4[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C5[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C5D1Ev,_ZTv0_n24_N7S7082C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C5D0Ev,_ZTv0_n24_N7S7082C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7082C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v19Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7082C6D1Ev,_ZTv0_n24_N7S7082C6D1Ev)();
extern void _ZN7S7082C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7082C6D0Ev,_ZTv0_n24_N7S7082C6D0Ev)();
extern void _ZN7S7082C6D0Ev() __attribute__((weak));
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C67S7082C5__7S7082C4[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C6[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C6D1Ev,_ZTv0_n24_N7S7082C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C6D0Ev,_ZTv0_n24_N7S7082C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7082C63v17Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7082C7D1Ev,_ZTv0_n24_N7S7082C7D1Ev)();
extern void _ZN7S7082C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7082C7D0Ev,_ZTv0_n24_N7S7082C7D0Ev)();
extern void _ZN7S7082C7D0Ev() __attribute__((weak));
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C77S7082C67S7082C5__7S7082C4[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C7[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C7D1Ev,_ZTv0_n24_N7S7082C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C7D0Ev,_ZTv0_n24_N7S7082C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C3__A1__7S7082C77S7082C67S7082C5__7S7082C4[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7082C7[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C3__A1__7S7082C67S7082C5__7S7082C4[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7082C6[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C3__A1__7S7082C5__7S7082C4[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7082C5[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
static  VTT_ENTRY vtt_S7082C4[] = {
  {&(_ZTV7S7082C4[8]),  8,46},
  {&(_ZTV7S7082C4[35]),  35,46},
  {&(_ZTV7S7082C4[35]),  35,46},
  {&(_ZTV7S7082C4[8]),  8,46},
  {&(_tg__ZTV7S7082C5__7S7082C4[9]),  9,20},
  {&(_tg__ZTV7S7082C67S7082C5__7S7082C4[9]),  9,18},
  {&(_tg__ZTV7S7082C77S7082C67S7082C5__7S7082C4[9]),  9,17},
  {&(_tg__ZTV7S7082C77S7082C67S7082C5__7S7082C4[9]),  9,17},
  {&(_tg__ZTV7S7082C3__A1__7S7082C77S7082C67S7082C5__7S7082C4[5]),  5,8},
  {&(_tg__ZTV7S7082C67S7082C5__7S7082C4[9]),  9,18},
  {&(_tg__ZTV7S7082C3__A1__7S7082C67S7082C5__7S7082C4[5]),  5,8},
  {&(_tg__ZTV7S7082C5__7S7082C4[9]),  9,20},
  {&(_tg__ZTV7S7082C3__A1__7S7082C5__7S7082C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7082C4[];
extern  VTBL_ENTRY _ZTV7S7082C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C4[];
static VTBL_ENTRY alt_thunk_names146[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C7D0Ev,_ZTv0_n24_N7S7082C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7082C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C7D1Ev,_ZTv0_n24_N7S7082C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7082C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C6D0Ev,_ZTv0_n24_N7S7082C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7082C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C6D1Ev,_ZTv0_n24_N7S7082C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7082C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C5D0Ev,_ZTv0_n24_N7S7082C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S7082C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C5D1Ev,_ZTv0_n24_N7S7082C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S7082C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C4D0Ev,_ZTv0_n24_N7S7082C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7082C4D0Ev,_ZThn8_N7S7082C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C4D1Ev,_ZTv0_n24_N7S7082C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7082C4D1Ev,_ZThn8_N7S7082C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7082C4 = {  "S7082C4", // class name
  bases_S7082C4, 6,
  &(vtc_S7082C4[0]), // expected_vtbl_contents
  &(vtt_S7082C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7082C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7082C4),46, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7082C4),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names146,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7082C1  : S7082C2 , S7082C4 {
  virtual  ~S7082C1(); // _ZN7S7082C1D2Ev
  virtual void  v1(); // _ZN7S7082C12v1Ev
  virtual void  v2(); // _ZN7S7082C12v2Ev
  virtual void  v3(); // _ZN7S7082C12v3Ev
  virtual void  v4(); // _ZN7S7082C12v4Ev
  virtual void  v5(); // _ZN7S7082C12v5Ev
  virtual void  v6(); // _ZN7S7082C12v6Ev
  S7082C1(); // tgen
};
//SIG(1 S7082C1) C1{ BC2{ v7 v8 v9 v10 FL Fp FL Fs FC3{ v11 v12 v13}} BC4{ VBC5{ BC6{ BC7{ VBC8{ BC3 vd v14} VBC3 v15 v16 Fi} vd v17} v18 v19} v20 v21 v22 v23 v24 v25 v26 v27 Fi} vd v1 v2 v3 v4 v5 v6}


 S7082C1 ::~S7082C1(){ note_dtor("S7082C1", this);}
void  S7082C1 ::v1(){vfunc_called(this, "_ZN7S7082C12v1Ev");}
void  S7082C1 ::v2(){vfunc_called(this, "_ZN7S7082C12v2Ev");}
void  S7082C1 ::v3(){vfunc_called(this, "_ZN7S7082C12v3Ev");}
void  S7082C1 ::v4(){vfunc_called(this, "_ZN7S7082C12v4Ev");}
void  S7082C1 ::v5(){vfunc_called(this, "_ZN7S7082C12v5Ev");}
void  S7082C1 ::v6(){vfunc_called(this, "_ZN7S7082C12v6Ev");}
S7082C1 ::S7082C1(){ note_ctor("S7082C1", this);} // tgen

static void Test_S7082C1()
{
  extern Class_Descriptor cd_S7082C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S7082C1, buf);
    S7082C1 *dp, &lv = *(dp=new (buf) S7082C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S7082C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7082C1)");
    check_base_class_offset(lv, (S7082C2*), 0, "S7082C1");
    check_base_class_offset(lv, (S7082C3*)(S7082C8*), ABISELECT(64,40), "S7082C1");
    check_base_class_offset(lv, (S7082C8*)(S7082C7*)(S7082C6*)(S7082C5*), ABISELECT(64,40), "S7082C1");
    /*is_ambiguous_... S7082C7::S7082C3 */ AMB_check_base_class_offset(lv, (S7082C3*)(S7082C7*)(S7082C6*)(S7082C5*), ABISELECT(48,32), "S7082C1");
    check_base_class_offset(lv, (S7082C7*)(S7082C6*)(S7082C5*), ABISELECT(64,40), "S7082C1");
    check_base_class_offset(lv, (S7082C6*)(S7082C5*), ABISELECT(64,40), "S7082C1");
    check_base_class_offset(lv, (S7082C5*)(S7082C4*), ABISELECT(64,40), "S7082C1");
    check_base_class_offset(lv, (S7082C4*), ABISELECT(48,32), "S7082C1");
    test_class_info(&lv, &cd_S7082C1);
    dp->~S7082C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7082C1(Test_S7082C1, "S7082C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S7082C1C1Ev();
extern void _ZN7S7082C1D2Ev();
Name_Map name_map_S7082C1[] = {
  NSPAIR(_ZN7S7082C1C1Ev),
  NSPAIR(_ZN7S7082C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7082C2;
extern VTBL_ENTRY _ZTI7S7082C2[];
extern  VTBL_ENTRY _ZTV7S7082C2[];
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
extern Class_Descriptor cd_S7082C8;
extern VTBL_ENTRY _ZTI7S7082C8[];
extern  VTBL_ENTRY _ZTV7S7082C8[];
extern Class_Descriptor cd_S7082C3;
extern VTBL_ENTRY _ZTI7S7082C3[];
extern  VTBL_ENTRY _ZTV7S7082C3[];
extern Class_Descriptor cd_S7082C7;
extern VTBL_ENTRY _ZTI7S7082C7[];
extern  VTBL_ENTRY _ZTV7S7082C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C7[];
extern Class_Descriptor cd_S7082C6;
extern VTBL_ENTRY _ZTI7S7082C6[];
extern  VTBL_ENTRY _ZTV7S7082C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C6[];
extern Class_Descriptor cd_S7082C5;
extern VTBL_ENTRY _ZTI7S7082C5[];
extern  VTBL_ENTRY _ZTV7S7082C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C5[];
extern Class_Descriptor cd_S7082C4;
extern VTBL_ENTRY _ZTI7S7082C4[];
extern  VTBL_ENTRY _ZTV7S7082C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C4[];
static Base_Class bases_S7082C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7082C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7082C3,    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
    2, //immediately_derived
  0, 0},
  {&cd_S7082C8,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7082C3,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7082C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7082C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7082C5,    ABISELECT(64,40), //bcp->offset
    38, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7082C4,    ABISELECT(48,32), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //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 _ZTI7S7082C1[];
extern void _ZN7S7082C22v7Ev();
extern void _ZN7S7082C22v8Ev();
extern void _ZN7S7082C22v9Ev();
extern void _ZN7S7082C23v10Ev();
extern void _ZN7S7082C1D1Ev();
extern void _ZN7S7082C1D0Ev();
extern void _ZN7S7082C12v1Ev();
extern void _ZN7S7082C12v2Ev();
extern void _ZN7S7082C12v3Ev();
extern void _ZN7S7082C12v4Ev();
extern void _ZN7S7082C12v5Ev();
extern void _ZN7S7082C12v6Ev();
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void _ZN7S7082C43v20Ev();
extern void _ZN7S7082C43v21Ev();
extern void _ZN7S7082C43v22Ev();
extern void _ZN7S7082C43v23Ev();
extern void _ZN7S7082C43v24Ev();
extern void _ZN7S7082C43v25Ev();
extern void _ZN7S7082C43v26Ev();
extern void _ZN7S7082C43v27Ev();
extern void ABISELECT(_ZThn48_N7S7082C1D1Ev,_ZThn32_N7S7082C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7082C1D0Ev,_ZThn32_N7S7082C1D0Ev)();
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7082C1D1Ev,_ZTv0_n24_N7S7082C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7082C1D1Ev,_ZThn40_N7S7082C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7082C1D0Ev,_ZTv0_n24_N7S7082C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7082C1D0Ev,_ZThn40_N7S7082C1D0Ev)() __attribute__((weak));
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C63v17Ev();
extern void _ZN7S7082C53v18Ev();
extern void _ZN7S7082C53v19Ev();
static  VTBL_ENTRY vtc_S7082C1[] = {
  ABISELECT(48,32),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C1[0]),
  (VTBL_ENTRY)&_ZN7S7082C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7082C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7082C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7082C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7082C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7082C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7082C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7082C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7082C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7082C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7082C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7082C12v6Ev,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7082C1[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v27Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7082C1D1Ev,_ZThn32_N7S7082C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7082C1D0Ev,_ZThn32_N7S7082C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7082C1[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C1D1Ev,_ZTv0_n24_N7S7082C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C1D0Ev,_ZTv0_n24_N7S7082C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7082C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v19Ev,
};
extern VTBL_ENTRY _ZTV7S7082C1[];
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void _ZN7S7082C43v20Ev();
extern void _ZN7S7082C43v21Ev();
extern void _ZN7S7082C43v22Ev();
extern void _ZN7S7082C43v23Ev();
extern void _ZN7S7082C43v24Ev();
extern void _ZN7S7082C43v25Ev();
extern void _ZN7S7082C43v26Ev();
extern void _ZN7S7082C43v27Ev();
extern void _ZN7S7082C4D1Ev();
extern void _ZN7S7082C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C4__7S7082C1[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C4[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7082C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7082C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7082C4D0Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7082C4D1Ev,_ZTv0_n24_N7S7082C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S7082C4D1Ev,_ZThn8_N7S7082C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7082C4D0Ev,_ZTv0_n24_N7S7082C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S7082C4D0Ev,_ZThn8_N7S7082C4D0Ev)() __attribute__((weak));
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C63v17Ev();
extern void _ZN7S7082C53v18Ev();
extern void _ZN7S7082C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C5__7S7082C4__7S7082C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7082C4[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C4D1Ev,_ZTv0_n24_N7S7082C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C4D0Ev,_ZTv0_n24_N7S7082C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7082C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v19Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7082C5D1Ev,_ZTv0_n24_N7S7082C5D1Ev)();
extern void _ZN7S7082C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7082C5D0Ev,_ZTv0_n24_N7S7082C5D0Ev)();
extern void _ZN7S7082C5D0Ev() __attribute__((weak));
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C63v17Ev();
extern void _ZN7S7082C53v18Ev();
extern void _ZN7S7082C53v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C5__7S7082C1[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C5[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C5D1Ev,_ZTv0_n24_N7S7082C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C5D0Ev,_ZTv0_n24_N7S7082C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7082C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7082C53v19Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7082C6D1Ev,_ZTv0_n24_N7S7082C6D1Ev)();
extern void _ZN7S7082C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7082C6D0Ev,_ZTv0_n24_N7S7082C6D0Ev)();
extern void _ZN7S7082C6D0Ev() __attribute__((weak));
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
extern void _ZN7S7082C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C67S7082C5__7S7082C1[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C6[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C6D1Ev,_ZTv0_n24_N7S7082C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C6D0Ev,_ZTv0_n24_N7S7082C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7082C63v17Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
extern void ABISELECT(_ZTv0_n48_N7S7082C7D1Ev,_ZTv0_n24_N7S7082C7D1Ev)();
extern void _ZN7S7082C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7082C7D0Ev,_ZTv0_n24_N7S7082C7D0Ev)();
extern void _ZN7S7082C7D0Ev() __attribute__((weak));
extern void _ZN7S7082C83v14Ev();
extern void _ZN7S7082C73v15Ev();
extern void _ZN7S7082C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C77S7082C67S7082C5__7S7082C1[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7082C7[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C7D1Ev,_ZTv0_n24_N7S7082C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7082C7D0Ev,_ZTv0_n24_N7S7082C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7082C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7082C73v16Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C3__A1__7S7082C77S7082C67S7082C5__7S7082C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7082C7[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C3__A1__7S7082C67S7082C5__7S7082C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7082C6[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
extern void _ZN7S7082C33v11Ev();
extern void _ZN7S7082C33v12Ev();
extern void _ZN7S7082C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7082C3__A1__7S7082C5__7S7082C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7082C5[0]),
  (VTBL_ENTRY)&_ZN7S7082C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7082C33v13Ev,
};
static  VTT_ENTRY vtt_S7082C1[] = {
  {&(_ZTV7S7082C1[5]),  5,63},
  {&(_tg__ZTV7S7082C4__7S7082C1[8]),  8,21},
  {&(_tg__ZTV7S7082C5__7S7082C4__7S7082C1[14]),  14,25},
  {&(_tg__ZTV7S7082C5__7S7082C4__7S7082C1[14]),  14,25},
  {&(_tg__ZTV7S7082C4__7S7082C1[8]),  8,21},
  {&(_ZTV7S7082C1[25]),  25,63},
  {&(_ZTV7S7082C1[52]),  52,63},
  {&(_ZTV7S7082C1[52]),  52,63},
  {&(_ZTV7S7082C1[25]),  25,63},
  {&(_tg__ZTV7S7082C5__7S7082C1[9]),  9,20},
  {&(_tg__ZTV7S7082C67S7082C5__7S7082C1[9]),  9,18},
  {&(_tg__ZTV7S7082C77S7082C67S7082C5__7S7082C1[9]),  9,17},
  {&(_tg__ZTV7S7082C77S7082C67S7082C5__7S7082C1[9]),  9,17},
  {&(_tg__ZTV7S7082C3__A1__7S7082C77S7082C67S7082C5__7S7082C1[5]),  5,8},
  {&(_tg__ZTV7S7082C67S7082C5__7S7082C1[9]),  9,18},
  {&(_tg__ZTV7S7082C3__A1__7S7082C67S7082C5__7S7082C1[5]),  5,8},
  {&(_tg__ZTV7S7082C5__7S7082C1[9]),  9,20},
  {&(_tg__ZTV7S7082C3__A1__7S7082C5__7S7082C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7082C1[];
extern  VTBL_ENTRY _ZTV7S7082C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7082C1[];
static VTBL_ENTRY alt_thunk_names147[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C7D0Ev,_ZTv0_n24_N7S7082C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7082C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C7D1Ev,_ZTv0_n24_N7S7082C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7082C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C6D0Ev,_ZTv0_n24_N7S7082C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7082C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C6D1Ev,_ZTv0_n24_N7S7082C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7082C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C5D0Ev,_ZTv0_n24_N7S7082C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S7082C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C5D1Ev,_ZTv0_n24_N7S7082C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S7082C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C4D0Ev,_ZTv0_n24_N7S7082C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7082C4D0Ev,_ZThn8_N7S7082C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C4D1Ev,_ZTv0_n24_N7S7082C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7082C4D1Ev,_ZThn8_N7S7082C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C1D0Ev,_ZTv0_n24_N7S7082C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7082C1D0Ev,_ZThn40_N7S7082C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7082C1D1Ev,_ZTv0_n24_N7S7082C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7082C1D1Ev,_ZThn40_N7S7082C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7082C1 = {  "S7082C1", // class name
  bases_S7082C1, 8,
  &(vtc_S7082C1[0]), // expected_vtbl_contents
  &(vtt_S7082C1[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S7082C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7082C1),63, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7082C1),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names147,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20254C2  {
  long s20254c2f0;
  virtual void  v5(); // _ZN8S20254C22v5Ev
  virtual void  v6(); // _ZN8S20254C22v6Ev
  virtual void  v7(); // _ZN8S20254C22v7Ev
  virtual void  v8(); // _ZN8S20254C22v8Ev
  virtual void  v9(); // _ZN8S20254C22v9Ev
  ~S20254C2(); // tgen
  S20254C2(); // tgen
};
//SIG(-1 S20254C2) C1{ v1 v2 v3 v4 v5 Fl}


void  S20254C2 ::v5(){vfunc_called(this, "_ZN8S20254C22v5Ev");}
void  S20254C2 ::v6(){vfunc_called(this, "_ZN8S20254C22v6Ev");}
void  S20254C2 ::v7(){vfunc_called(this, "_ZN8S20254C22v7Ev");}
void  S20254C2 ::v8(){vfunc_called(this, "_ZN8S20254C22v8Ev");}
void  S20254C2 ::v9(){vfunc_called(this, "_ZN8S20254C22v9Ev");}
S20254C2 ::~S20254C2(){ note_dtor("S20254C2", this);} // tgen
S20254C2 ::S20254C2(){ note_ctor("S20254C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20254C2C1Ev();
extern void _ZN8S20254C2D1Ev();
Name_Map name_map_S20254C2[] = {
  NSPAIR(_ZN8S20254C2C1Ev),
  NSPAIR(_ZN8S20254C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20254C2[];
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
static  VTBL_ENTRY vtc_S20254C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20254C2[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
};
extern VTBL_ENTRY _ZTI8S20254C2[];
extern  VTBL_ENTRY _ZTV8S20254C2[];
Class_Descriptor cd_S20254C2 = {  "S20254C2", // class name
  0,0,//no base classes
  &(vtc_S20254C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20254C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20254C2),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  S20254C4  {
  virtual  ~S20254C4(); // _ZN8S20254C4D1Ev
  virtual void  v4(); // _ZN8S20254C42v4Ev
  S20254C4(); // tgen
};
//SIG(-1 S20254C4) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S20254C4C1Ev();
extern void _ZN8S20254C4D1Ev();
Name_Map name_map_S20254C4[] = {
  NSPAIR(_ZN8S20254C4C1Ev),
  NSPAIR(_ZN8S20254C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20254C4[];
extern void _ZN8S20254C4D1Ev();
extern void _ZN8S20254C4D0Ev();
extern void _ZN8S20254C42v4Ev();
static  VTBL_ENTRY vtc_S20254C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20254C4[0]),
  (VTBL_ENTRY)&_ZN8S20254C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20254C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20254C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S20254C4[];
extern  VTBL_ENTRY _ZTV8S20254C4[];
Class_Descriptor cd_S20254C4 = {  "S20254C4", // class name
  0,0,//no base classes
  &(vtc_S20254C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20254C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20254C4),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  S20254C6  {
  virtual  ~S20254C6(); // _ZN8S20254C6D1Ev
  virtual void  v10(); // _ZN8S20254C63v10Ev
  S20254C6(); // tgen
};
//SIG(-1 S20254C6) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S20254C6C1Ev();
extern void _ZN8S20254C6D1Ev();
Name_Map name_map_S20254C6[] = {
  NSPAIR(_ZN8S20254C6C1Ev),
  NSPAIR(_ZN8S20254C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20254C6[];
extern void _ZN8S20254C6D1Ev();
extern void _ZN8S20254C6D0Ev();
extern void _ZN8S20254C63v10Ev();
static  VTBL_ENTRY vtc_S20254C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20254C6[0]),
  (VTBL_ENTRY)&_ZN8S20254C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20254C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20254C63v10Ev,
};
extern VTBL_ENTRY _ZTI8S20254C6[];
extern  VTBL_ENTRY _ZTV8S20254C6[];
Class_Descriptor cd_S20254C6 = {  "S20254C6", // class name
  0,0,//no base classes
  &(vtc_S20254C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20254C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20254C6),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  S20254C5  : S20254C2 , S20254C4 , S20254C6 {
  virtual  ~S20254C5(); // _ZN8S20254C5D1Ev
  virtual void  v11(); // _ZN8S20254C53v11Ev
  S20254C5(); // tgen
};
//SIG(-1 S20254C5) C1{ BC2{ v2 v3 v4 v5 v6 Fl} BC3{ vd v7} BC4{ vd v8} vd v1}


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

static void Test_S20254C5()
{
  extern Class_Descriptor cd_S20254C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20254C5, buf);
    S20254C5 *dp, &lv = *(dp=new (buf) S20254C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20254C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20254C5)");
    check_base_class_offset(lv, (S20254C2*), 0, "S20254C5");
    check_base_class_offset(lv, (S20254C4*), ABISELECT(16,8), "S20254C5");
    check_base_class_offset(lv, (S20254C6*), ABISELECT(24,12), "S20254C5");
    test_class_info(&lv, &cd_S20254C5);
    dp->~S20254C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20254C5(Test_S20254C5, "S20254C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20254C5C1Ev();
extern void _ZN8S20254C5D1Ev();
Name_Map name_map_S20254C5[] = {
  NSPAIR(_ZN8S20254C5C1Ev),
  NSPAIR(_ZN8S20254C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20254C2;
extern VTBL_ENTRY _ZTI8S20254C2[];
extern  VTBL_ENTRY _ZTV8S20254C2[];
extern Class_Descriptor cd_S20254C4;
extern VTBL_ENTRY _ZTI8S20254C4[];
extern  VTBL_ENTRY _ZTV8S20254C4[];
extern Class_Descriptor cd_S20254C6;
extern VTBL_ENTRY _ZTI8S20254C6[];
extern  VTBL_ENTRY _ZTV8S20254C6[];
static Base_Class bases_S20254C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20254C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20254C4,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20254C6,    ABISELECT(24,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20254C5[];
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
extern void _ZN8S20254C5D1Ev();
extern void _ZN8S20254C5D0Ev();
extern void _ZN8S20254C53v11Ev();
extern void ABISELECT(_ZThn16_N8S20254C5D1Ev,_ZThn8_N8S20254C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20254C5D0Ev,_ZThn8_N8S20254C5D0Ev)();
extern void _ZN8S20254C42v4Ev();
extern void ABISELECT(_ZThn24_N8S20254C5D1Ev,_ZThn12_N8S20254C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20254C5D0Ev,_ZThn12_N8S20254C5D0Ev)();
extern void _ZN8S20254C63v10Ev();
static  VTBL_ENTRY vtc_S20254C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20254C5[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20254C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20254C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20254C53v11Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20254C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20254C5D1Ev,_ZThn8_N8S20254C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20254C5D0Ev,_ZThn8_N8S20254C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C42v4Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20254C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20254C5D1Ev,_ZThn12_N8S20254C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20254C5D0Ev,_ZThn12_N8S20254C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C63v10Ev,
};
extern VTBL_ENTRY _ZTI8S20254C5[];
extern  VTBL_ENTRY _ZTV8S20254C5[];
Class_Descriptor cd_S20254C5 = {  "S20254C5", // class name
  bases_S20254C5, 3,
  &(vtc_S20254C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20254C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20254C5),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20254C7  : virtual S20254C2 {
  int s20254c7f0;
  virtual  ~S20254C7(); // _ZN8S20254C7D2Ev
  virtual void  v12(); // _ZN8S20254C73v12Ev
  virtual void  v13(); // _ZN8S20254C73v13Ev
  virtual void  v14(); // _ZN8S20254C73v14Ev
  virtual void  v15(); // _ZN8S20254C73v15Ev
  S20254C7(); // tgen
};
//SIG(-1 S20254C7) C1{ VBC2{ v5 v6 v7 v8 v9 Fl} vd v1 v2 v3 v4 Fi}


 S20254C7 ::~S20254C7(){ note_dtor("S20254C7", this);}
void  S20254C7 ::v12(){vfunc_called(this, "_ZN8S20254C73v12Ev");}
void  S20254C7 ::v13(){vfunc_called(this, "_ZN8S20254C73v13Ev");}
void  S20254C7 ::v14(){vfunc_called(this, "_ZN8S20254C73v14Ev");}
void  S20254C7 ::v15(){vfunc_called(this, "_ZN8S20254C73v15Ev");}
S20254C7 ::S20254C7(){ note_ctor("S20254C7", this);} // tgen

static void Test_S20254C7()
{
  extern Class_Descriptor cd_S20254C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20254C7, buf);
    S20254C7 *dp, &lv = *(dp=new (buf) S20254C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20254C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20254C7)");
    check_base_class_offset(lv, (S20254C2*), ABISELECT(16,8), "S20254C7");
    check_field_offset(lv, s20254c7f0, ABISELECT(8,4), "S20254C7.s20254c7f0");
    test_class_info(&lv, &cd_S20254C7);
    dp->~S20254C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20254C7(Test_S20254C7, "S20254C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20254C7C1Ev();
extern void _ZN8S20254C7D2Ev();
Name_Map name_map_S20254C7[] = {
  NSPAIR(_ZN8S20254C7C1Ev),
  NSPAIR(_ZN8S20254C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20254C2;
extern VTBL_ENTRY _ZTI8S20254C2[];
extern  VTBL_ENTRY _ZTV8S20254C2[];
static Base_Class bases_S20254C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20254C2,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20254C7[];
extern void _ZN8S20254C7D1Ev();
extern void _ZN8S20254C7D0Ev();
extern void _ZN8S20254C73v12Ev();
extern void _ZN8S20254C73v13Ev();
extern void _ZN8S20254C73v14Ev();
extern void _ZN8S20254C73v15Ev();
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
static  VTBL_ENTRY vtc_S20254C7[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20254C7[0]),
  (VTBL_ENTRY)&_ZN8S20254C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20254C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v13Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v14Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20254C7[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
};
extern VTBL_ENTRY _ZTV8S20254C7[];
static  VTT_ENTRY vtt_S20254C7[] = {
  {&(_ZTV8S20254C7[3]),  3,21},
  {&(_ZTV8S20254C7[16]),  16,21},
};
extern VTBL_ENTRY _ZTI8S20254C7[];
extern  VTBL_ENTRY _ZTV8S20254C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20254C7[];
Class_Descriptor cd_S20254C7 = {  "S20254C7", // class name
  bases_S20254C7, 1,
  &(vtc_S20254C7[0]), // expected_vtbl_contents
  &(vtt_S20254C7[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20254C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20254C7),21, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20254C7),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  S20254C3  : virtual S20254C4 , virtual S20254C5 , S20254C7 {
  int s20254c3f0[10];
  char s20254c3f1;
  int s20254c3f2;
  char  :0;
  virtual  ~S20254C3(); // _ZN8S20254C3D2Ev
  virtual void  v16(); // _ZN8S20254C33v16Ev
  virtual void  v17(); // _ZN8S20254C33v17Ev
  virtual void  v18(); // _ZN8S20254C33v18Ev
  virtual void  v19(); // _ZN8S20254C33v19Ev
  virtual void  v20(); // _ZN8S20254C33v20Ev
  virtual void  v21(); // _ZN8S20254C33v21Ev
  S20254C3(); // tgen
};
//SIG(-1 S20254C3) C1{ VBC2{ vd v7} VBC3{ BC4{ v8 v9 v10 v11 v12 Fl} BC2 BC5{ vd v13} vd v14} BC6{ VBC4 vd v15 v16 v17 v18 Fi} vd v1 v2 v3 v4 v5 v6 Fi[10] Fc Fi Fc:0}


 S20254C3 ::~S20254C3(){ note_dtor("S20254C3", this);}
void  S20254C3 ::v16(){vfunc_called(this, "_ZN8S20254C33v16Ev");}
void  S20254C3 ::v17(){vfunc_called(this, "_ZN8S20254C33v17Ev");}
void  S20254C3 ::v18(){vfunc_called(this, "_ZN8S20254C33v18Ev");}
void  S20254C3 ::v19(){vfunc_called(this, "_ZN8S20254C33v19Ev");}
void  S20254C3 ::v20(){vfunc_called(this, "_ZN8S20254C33v20Ev");}
void  S20254C3 ::v21(){vfunc_called(this, "_ZN8S20254C33v21Ev");}
S20254C3 ::S20254C3(){ note_ctor("S20254C3", this);} // tgen

static void Test_S20254C3()
{
  extern Class_Descriptor cd_S20254C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S20254C3, buf);
    S20254C3 *dp, &lv = *(dp=new (buf) S20254C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S20254C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20254C3)");
    /*is_ambiguous_... S20254C3::S20254C4 */ AMB_check_base_class_offset(lv, (S20254C4*), ABISELECT(64,56), "S20254C3");
    check_base_class_offset(lv, (S20254C2*)(S20254C5*), ABISELECT(72,60), "S20254C3");
    check_base_class_offset(lv, (S20254C4*)(S20254C5*), ABISELECT(88,68), "S20254C3");
    check_base_class_offset(lv, (S20254C6*)(S20254C5*), ABISELECT(96,72), "S20254C3");
    check_base_class_offset(lv, (S20254C5*), ABISELECT(72,60), "S20254C3");
    check_base_class_offset(lv, (S20254C2*)(S20254C7*), ABISELECT(104,76), "S20254C3");
    check_base_class_offset(lv, (S20254C7*), 0, "S20254C3");
    check_field_offset(lv, s20254c3f0, ABISELECT(12,8), "S20254C3.s20254c3f0");
    check_field_offset(lv, s20254c3f1, ABISELECT(52,48), "S20254C3.s20254c3f1");
    check_field_offset(lv, s20254c3f2, ABISELECT(56,52), "S20254C3.s20254c3f2");
    test_class_info(&lv, &cd_S20254C3);
    dp->~S20254C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20254C3(Test_S20254C3, "S20254C3", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN8S20254C3C1Ev();
extern void _ZN8S20254C3D2Ev();
Name_Map name_map_S20254C3[] = {
  NSPAIR(_ZN8S20254C3C1Ev),
  NSPAIR(_ZN8S20254C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20254C4;
extern VTBL_ENTRY _ZTI8S20254C4[];
extern  VTBL_ENTRY _ZTV8S20254C4[];
extern Class_Descriptor cd_S20254C2;
extern VTBL_ENTRY _ZTI8S20254C2[];
extern  VTBL_ENTRY _ZTV8S20254C2[];
extern Class_Descriptor cd_S20254C4;
extern VTBL_ENTRY _ZTI8S20254C4[];
extern  VTBL_ENTRY _ZTV8S20254C4[];
extern Class_Descriptor cd_S20254C6;
extern VTBL_ENTRY _ZTI8S20254C6[];
extern  VTBL_ENTRY _ZTV8S20254C6[];
extern Class_Descriptor cd_S20254C5;
extern VTBL_ENTRY _ZTI8S20254C5[];
extern  VTBL_ENTRY _ZTV8S20254C5[];
extern Class_Descriptor cd_S20254C2;
extern VTBL_ENTRY _ZTI8S20254C2[];
extern  VTBL_ENTRY _ZTV8S20254C2[];
extern Class_Descriptor cd_S20254C7;
extern VTBL_ENTRY _ZTI8S20254C7[];
extern  VTBL_ENTRY _ZTV8S20254C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20254C7[];
static Base_Class bases_S20254C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20254C4,    ABISELECT(64,56), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20254C2,    ABISELECT(72,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20254C4,    ABISELECT(88,68), //bcp->offset
    43, //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
    4, //immediately_derived
  0, 0},
  {&cd_S20254C6,    ABISELECT(96,72), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20254C5,    ABISELECT(72,60), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20254C2,    ABISELECT(104,76), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20254C7,    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 _ZTI8S20254C3[];
extern void _ZN8S20254C3D1Ev();
extern void _ZN8S20254C3D0Ev();
extern void _ZN8S20254C73v12Ev();
extern void _ZN8S20254C73v13Ev();
extern void _ZN8S20254C73v14Ev();
extern void _ZN8S20254C73v15Ev();
extern void _ZN8S20254C33v16Ev();
extern void _ZN8S20254C33v17Ev();
extern void _ZN8S20254C33v18Ev();
extern void _ZN8S20254C33v19Ev();
extern void _ZN8S20254C33v20Ev();
extern void _ZN8S20254C33v21Ev();
extern void ABISELECT(_ZTv0_n24_N8S20254C3D1Ev,_ZTv0_n12_N8S20254C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S20254C3D1Ev,_ZThn56_N8S20254C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20254C3D0Ev,_ZTv0_n12_N8S20254C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S20254C3D0Ev,_ZThn56_N8S20254C3D0Ev)() __attribute__((weak));
extern void _ZN8S20254C42v4Ev();
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S20254C3D1Ev,_ZTv0_n32_N8S20254C3D1Ev)();
extern void ABISELECT(_ZThn72_N8S20254C3D1Ev,_ZThn60_N8S20254C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20254C3D0Ev,_ZTv0_n32_N8S20254C3D0Ev)();
extern void ABISELECT(_ZThn72_N8S20254C3D0Ev,_ZThn60_N8S20254C3D0Ev)() __attribute__((weak));
extern void _ZN8S20254C53v11Ev();
extern void ABISELECT(_ZTvn16_n64_N8S20254C3D1Ev,_ZTvn8_n32_N8S20254C3D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20254C3D0Ev,_ZTvn8_n32_N8S20254C3D0Ev)();
extern void _ZN8S20254C42v4Ev();
extern void ABISELECT(_ZTvn24_n64_N8S20254C3D1Ev,_ZTvn12_n32_N8S20254C3D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20254C3D0Ev,_ZTvn12_n32_N8S20254C3D0Ev)();
extern void _ZN8S20254C63v10Ev();
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
static  VTBL_ENTRY vtc_S20254C3[] = {
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&_ZN8S20254C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20254C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v13Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v14Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v21Ev,
  0,
  ABISELECT(-64,-56),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20254C3D1Ev,_ZTv0_n12_N8S20254C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20254C3D0Ev,_ZTv0_n12_N8S20254C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C42v4Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-72,-60),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20254C3D1Ev,_ZTv0_n32_N8S20254C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20254C3D0Ev,_ZTv0_n32_N8S20254C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C53v11Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20254C3D1Ev,_ZTvn8_n32_N8S20254C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20254C3D0Ev,_ZTvn8_n32_N8S20254C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C42v4Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20254C3D1Ev,_ZTvn12_n32_N8S20254C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20254C3D0Ev,_ZTvn12_n32_N8S20254C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C63v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
};
extern VTBL_ENTRY _ZTV8S20254C3[];
extern void _ZN8S20254C7D1Ev();
extern void _ZN8S20254C7D0Ev();
extern void _ZN8S20254C73v12Ev();
extern void _ZN8S20254C73v13Ev();
extern void _ZN8S20254C73v14Ev();
extern void _ZN8S20254C73v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20254C7__8S20254C3[] = {
  ABISELECT(104,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20254C7[0]),
  (VTBL_ENTRY)&_ZN8S20254C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20254C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v13Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v14Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v15Ev,
};
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20254C2__8S20254C7__8S20254C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S20254C7[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
};
static  VTT_ENTRY vtt_S20254C3[] = {
  {&(_ZTV8S20254C3[5]),  5,65},
  {&(_tg__ZTV8S20254C7__8S20254C3[3]),  3,9},
  {&(_tg__ZTV8S20254C2__8S20254C7__8S20254C3[7]),  7,12},
  {&(_ZTV8S20254C3[21]),  21,65},
  {&(_ZTV8S20254C3[35]),  35,65},
  {&(_ZTV8S20254C3[45]),  45,65},
  {&(_ZTV8S20254C3[50]),  50,65},
  {&(_ZTV8S20254C3[60]),  60,65},
};
extern VTBL_ENTRY _ZTI8S20254C3[];
extern  VTBL_ENTRY _ZTV8S20254C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20254C3[];
static VTBL_ENTRY alt_thunk_names148[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20254C3D0Ev,_ZTv0_n32_N8S20254C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20254C3D0Ev,_ZThn60_N8S20254C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20254C3D1Ev,_ZTv0_n32_N8S20254C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20254C3D1Ev,_ZThn60_N8S20254C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20254C3D0Ev,_ZTv0_n12_N8S20254C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20254C3D0Ev,_ZThn56_N8S20254C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20254C3D1Ev,_ZTv0_n12_N8S20254C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20254C3D1Ev,_ZThn56_N8S20254C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20254C3 = {  "S20254C3", // class name
  bases_S20254C3, 7,
  &(vtc_S20254C3[0]), // expected_vtbl_contents
  &(vtt_S20254C3[0]), // expected_vtt_contents
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI8S20254C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20254C3),65, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20254C3),8, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names148,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20254C1  : virtual S20254C2 , S20254C3 {
  int s20254c1f0[2];
  virtual  ~S20254C1(); // _ZN8S20254C1D2Ev
  virtual void  v1(); // _ZN8S20254C12v1Ev
  virtual void  v2(); // _ZN8S20254C12v2Ev
  virtual void  v3(); // _ZN8S20254C12v3Ev
  S20254C1(); // tgen
};
//SIG(1 S20254C1) C1{ VBC2{ v4 v5 v6 v7 v8 Fl} BC3{ VBC4{ vd v9} VBC5{ BC2 BC4 BC6{ vd v10} vd v11} BC7{ VBC2 vd v12 v13 v14 v15 Fi} vd v16 v17 v18 v19 v20 v21 Fi[10] Fc Fi Fc:0} vd v1 v2 v3 Fi[2]}


 S20254C1 ::~S20254C1(){ note_dtor("S20254C1", this);}
void  S20254C1 ::v1(){vfunc_called(this, "_ZN8S20254C12v1Ev");}
void  S20254C1 ::v2(){vfunc_called(this, "_ZN8S20254C12v2Ev");}
void  S20254C1 ::v3(){vfunc_called(this, "_ZN8S20254C12v3Ev");}
S20254C1 ::S20254C1(){ note_ctor("S20254C1", this);} // tgen

static void Test_S20254C1()
{
  extern Class_Descriptor cd_S20254C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S20254C1, buf);
    S20254C1 *dp, &lv = *(dp=new (buf) S20254C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S20254C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20254C1)");
    /*is_ambiguous_... S20254C1::S20254C2 */ AMB_check_base_class_offset(lv, (S20254C2*), ABISELECT(72,64), "S20254C1");
    check_base_class_offset(lv, (S20254C2*)(S20254C7*)(S20254C3*), ABISELECT(72,64), "S20254C1");
    /*is_ambiguous_... S20254C3::S20254C4 */ AMB_check_base_class_offset(lv, (S20254C4*)(S20254C3*), ABISELECT(88,72), "S20254C1");
    check_base_class_offset(lv, (S20254C2*)(S20254C5*), ABISELECT(96,76), "S20254C1");
    check_base_class_offset(lv, (S20254C4*)(S20254C5*), ABISELECT(112,84), "S20254C1");
    check_base_class_offset(lv, (S20254C6*)(S20254C5*), ABISELECT(120,88), "S20254C1");
    check_base_class_offset(lv, (S20254C5*)(S20254C3*), ABISELECT(96,76), "S20254C1");
    check_base_class_offset(lv, (S20254C7*)(S20254C3*), 0, "S20254C1");
    check_base_class_offset(lv, (S20254C3*), 0, "S20254C1");
    check_field_offset(lv, s20254c1f0, ABISELECT(60,56), "S20254C1.s20254c1f0");
    test_class_info(&lv, &cd_S20254C1);
    dp->~S20254C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20254C1(Test_S20254C1, "S20254C1", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S20254C1C1Ev();
extern void _ZN8S20254C1D2Ev();
Name_Map name_map_S20254C1[] = {
  NSPAIR(_ZN8S20254C1C1Ev),
  NSPAIR(_ZN8S20254C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20254C2;
extern VTBL_ENTRY _ZTI8S20254C2[];
extern  VTBL_ENTRY _ZTV8S20254C2[];
extern Class_Descriptor cd_S20254C4;
extern VTBL_ENTRY _ZTI8S20254C4[];
extern  VTBL_ENTRY _ZTV8S20254C4[];
extern Class_Descriptor cd_S20254C2;
extern VTBL_ENTRY _ZTI8S20254C2[];
extern  VTBL_ENTRY _ZTV8S20254C2[];
extern Class_Descriptor cd_S20254C4;
extern VTBL_ENTRY _ZTI8S20254C4[];
extern  VTBL_ENTRY _ZTV8S20254C4[];
extern Class_Descriptor cd_S20254C6;
extern VTBL_ENTRY _ZTI8S20254C6[];
extern  VTBL_ENTRY _ZTV8S20254C6[];
extern Class_Descriptor cd_S20254C5;
extern VTBL_ENTRY _ZTI8S20254C5[];
extern  VTBL_ENTRY _ZTV8S20254C5[];
extern Class_Descriptor cd_S20254C7;
extern VTBL_ENTRY _ZTI8S20254C7[];
extern  VTBL_ENTRY _ZTV8S20254C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20254C7[];
extern Class_Descriptor cd_S20254C3;
extern VTBL_ENTRY _ZTI8S20254C3[];
extern  VTBL_ENTRY _ZTV8S20254C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20254C3[];
static Base_Class bases_S20254C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20254C2,    ABISELECT(72,64), //bcp->offset
    20, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20254C4,    ABISELECT(88,72), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20254C2,    ABISELECT(96,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20254C4,    ABISELECT(112,84), //bcp->offset
    58, //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20254C6,    ABISELECT(120,88), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20254C5,    ABISELECT(96,76), //bcp->offset
    39, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20254C7,    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_S20254C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20254C1[];
extern void _ZN8S20254C1D1Ev();
extern void _ZN8S20254C1D0Ev();
extern void _ZN8S20254C73v12Ev();
extern void _ZN8S20254C73v13Ev();
extern void _ZN8S20254C73v14Ev();
extern void _ZN8S20254C73v15Ev();
extern void _ZN8S20254C33v16Ev();
extern void _ZN8S20254C33v17Ev();
extern void _ZN8S20254C33v18Ev();
extern void _ZN8S20254C33v19Ev();
extern void _ZN8S20254C33v20Ev();
extern void _ZN8S20254C33v21Ev();
extern void _ZN8S20254C12v1Ev();
extern void _ZN8S20254C12v2Ev();
extern void _ZN8S20254C12v3Ev();
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
extern void ABISELECT(_ZTv0_n24_N8S20254C1D1Ev,_ZTv0_n12_N8S20254C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S20254C1D1Ev,_ZThn72_N8S20254C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20254C1D0Ev,_ZTv0_n12_N8S20254C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S20254C1D0Ev,_ZThn72_N8S20254C1D0Ev)() __attribute__((weak));
extern void _ZN8S20254C42v4Ev();
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S20254C1D1Ev,_ZTv0_n32_N8S20254C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20254C1D1Ev,_ZThn76_N8S20254C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20254C1D0Ev,_ZTv0_n32_N8S20254C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20254C1D0Ev,_ZThn76_N8S20254C1D0Ev)() __attribute__((weak));
extern void _ZN8S20254C53v11Ev();
extern void ABISELECT(_ZTvn16_n64_N8S20254C1D1Ev,_ZTvn8_n32_N8S20254C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20254C1D0Ev,_ZTvn8_n32_N8S20254C1D0Ev)();
extern void _ZN8S20254C42v4Ev();
extern void ABISELECT(_ZTvn24_n64_N8S20254C1D1Ev,_ZTvn12_n32_N8S20254C1D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20254C1D0Ev,_ZTvn12_n32_N8S20254C1D0Ev)();
extern void _ZN8S20254C63v10Ev();
static  VTBL_ENTRY vtc_S20254C1[] = {
  ABISELECT(96,76),
  ABISELECT(88,72),
  ABISELECT(72,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20254C1[0]),
  (VTBL_ENTRY)&_ZN8S20254C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20254C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v13Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v14Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20254C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20254C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20254C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-64),
  (VTBL_ENTRY)&(_ZTI8S20254C1[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
  0,
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S20254C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20254C1D1Ev,_ZTv0_n12_N8S20254C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20254C1D0Ev,_ZTv0_n12_N8S20254C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C42v4Ev,
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-96,-76),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S20254C1[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20254C1D1Ev,_ZTv0_n32_N8S20254C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20254C1D0Ev,_ZTv0_n32_N8S20254C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C53v11Ev,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI8S20254C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20254C1D1Ev,_ZTvn8_n32_N8S20254C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20254C1D0Ev,_ZTvn8_n32_N8S20254C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C42v4Ev,
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S20254C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20254C1D1Ev,_ZTvn12_n32_N8S20254C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20254C1D0Ev,_ZTvn12_n32_N8S20254C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C63v10Ev,
};
extern VTBL_ENTRY _ZTV8S20254C1[];
extern void _ZN8S20254C3D1Ev();
extern void _ZN8S20254C3D0Ev();
extern void _ZN8S20254C73v12Ev();
extern void _ZN8S20254C73v13Ev();
extern void _ZN8S20254C73v14Ev();
extern void _ZN8S20254C73v15Ev();
extern void _ZN8S20254C33v16Ev();
extern void _ZN8S20254C33v17Ev();
extern void _ZN8S20254C33v18Ev();
extern void _ZN8S20254C33v19Ev();
extern void _ZN8S20254C33v20Ev();
extern void _ZN8S20254C33v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20254C3__8S20254C1[] = {
  ABISELECT(96,76),
  ABISELECT(88,72),
  ABISELECT(72,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&_ZN8S20254C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20254C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v13Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v14Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20254C33v21Ev,
};
extern void _ZN8S20254C7D1Ev();
extern void _ZN8S20254C7D0Ev();
extern void _ZN8S20254C73v12Ev();
extern void _ZN8S20254C73v13Ev();
extern void _ZN8S20254C73v14Ev();
extern void _ZN8S20254C73v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20254C78S20254C3__8S20254C1[] = {
  ABISELECT(72,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20254C7[0]),
  (VTBL_ENTRY)&_ZN8S20254C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20254C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v12Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v13Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v14Ev,
  (VTBL_ENTRY)&_ZN8S20254C73v15Ev,
};
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20254C2__8S20254C78S20254C3__8S20254C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-64),
  (VTBL_ENTRY)&(_ZTI8S20254C7[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20254C3D1Ev,_ZTv0_n12_N8S20254C3D1Ev)();
extern void ABISELECT(_ZThn88_N8S20254C3D1Ev,_ZThn72_N8S20254C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20254C3D0Ev,_ZTv0_n12_N8S20254C3D0Ev)();
extern void ABISELECT(_ZThn88_N8S20254C3D0Ev,_ZThn72_N8S20254C3D0Ev)() __attribute__((weak));
extern void _ZN8S20254C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20254C4__8S20254C3__8S20254C1[] = {
  0,
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20254C3D1Ev,_ZTv0_n12_N8S20254C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20254C3D0Ev,_ZTv0_n12_N8S20254C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C42v4Ev,
};
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S20254C3D1Ev,_ZTv0_n32_N8S20254C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S20254C3D1Ev,_ZThn76_N8S20254C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20254C3D0Ev,_ZTv0_n32_N8S20254C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S20254C3D0Ev,_ZThn76_N8S20254C3D0Ev)() __attribute__((weak));
extern void _ZN8S20254C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20254C5__8S20254C3__8S20254C1[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  ABISELECT(-96,-76),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20254C3D1Ev,_ZTv0_n32_N8S20254C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20254C3D0Ev,_ZTv0_n32_N8S20254C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C53v11Ev,
};
extern void ABISELECT(_ZTvn16_n64_N8S20254C3D1Ev,_ZTvn8_n32_N8S20254C3D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S20254C3D0Ev,_ZTvn8_n32_N8S20254C3D0Ev)();
extern void _ZN8S20254C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20254C48S20254C5__A1__8S20254C3__8S20254C1[] = {
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20254C3D1Ev,_ZTvn8_n32_N8S20254C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S20254C3D0Ev,_ZTvn8_n32_N8S20254C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C42v4Ev,
};
extern void ABISELECT(_ZTvn24_n64_N8S20254C3D1Ev,_ZTvn12_n32_N8S20254C3D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20254C3D0Ev,_ZTvn12_n32_N8S20254C3D0Ev)();
extern void _ZN8S20254C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20254C68S20254C5__8S20254C3__8S20254C1[] = {
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20254C3D1Ev,_ZTvn12_n32_N8S20254C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20254C3D0Ev,_ZTvn12_n32_N8S20254C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20254C63v10Ev,
};
extern void _ZN8S20254C22v5Ev();
extern void _ZN8S20254C22v6Ev();
extern void _ZN8S20254C22v7Ev();
extern void _ZN8S20254C22v8Ev();
extern void _ZN8S20254C22v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20254C2__A1__8S20254C3__8S20254C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-64),
  (VTBL_ENTRY)&(_ZTI8S20254C3[0]),
  (VTBL_ENTRY)&_ZN8S20254C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20254C22v9Ev,
};
static  VTT_ENTRY vtt_S20254C1[] = {
  {&(_ZTV8S20254C1[5]),  5,68},
  {&(_tg__ZTV8S20254C3__8S20254C1[5]),  5,17},
  {&(_tg__ZTV8S20254C78S20254C3__8S20254C1[3]),  3,9},
  {&(_tg__ZTV8S20254C2__8S20254C78S20254C3__8S20254C1[7]),  7,12},
  {&(_tg__ZTV8S20254C4__8S20254C3__8S20254C1[4]),  4,7},
  {&(_tg__ZTV8S20254C5__8S20254C3__8S20254C1[11]),  11,19},
  {&(_tg__ZTV8S20254C48S20254C5__A1__8S20254C3__8S20254C1[2]),  2,5},
  {&(_tg__ZTV8S20254C68S20254C5__8S20254C3__8S20254C1[2]),  2,5},
  {&(_tg__ZTV8S20254C2__A1__8S20254C3__8S20254C1[7]),  7,12},
  {&(_ZTV8S20254C1[27]),  27,68},
  {&(_ZTV8S20254C1[36]),  36,68},
  {&(_ZTV8S20254C1[50]),  50,68},
  {&(_ZTV8S20254C1[60]),  60,68},
  {&(_ZTV8S20254C1[65]),  65,68},
};
extern VTBL_ENTRY _ZTI8S20254C1[];
extern  VTBL_ENTRY _ZTV8S20254C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20254C1[];
static VTBL_ENTRY alt_thunk_names149[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20254C3D0Ev,_ZTv0_n32_N8S20254C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20254C3D0Ev,_ZThn76_N8S20254C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20254C3D1Ev,_ZTv0_n32_N8S20254C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20254C3D1Ev,_ZThn76_N8S20254C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20254C3D0Ev,_ZTv0_n12_N8S20254C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20254C3D0Ev,_ZThn72_N8S20254C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20254C3D1Ev,_ZTv0_n12_N8S20254C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20254C3D1Ev,_ZThn72_N8S20254C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20254C1D0Ev,_ZTv0_n32_N8S20254C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20254C1D0Ev,_ZThn76_N8S20254C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20254C1D1Ev,_ZTv0_n32_N8S20254C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20254C1D1Ev,_ZThn76_N8S20254C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20254C1D0Ev,_ZTv0_n12_N8S20254C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20254C1D0Ev,_ZThn72_N8S20254C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20254C1D1Ev,_ZTv0_n12_N8S20254C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20254C1D1Ev,_ZThn72_N8S20254C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20254C1 = {  "S20254C1", // class name
  bases_S20254C1, 8,
  &(vtc_S20254C1[0]), // expected_vtbl_contents
  &(vtt_S20254C1[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S20254C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20254C1),68, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20254C1),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names149,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10264C2  {
  ::S2213C19_nt s10264c2f0;
  void *s10264c2f1;
  int s10264c2f2;
  virtual  ~S10264C2(); // _ZN8S10264C2D1Ev
  virtual void  v9(); // _ZN8S10264C22v9Ev
  virtual void  v10(); // _ZN8S10264C23v10Ev
  virtual void  v11(); // _ZN8S10264C23v11Ev
  virtual void  v12(); // _ZN8S10264C23v12Ev
  virtual void  v13(); // _ZN8S10264C23v13Ev
  virtual void  v14(); // _ZN8S10264C23v14Ev
  virtual void  v15(); // _ZN8S10264C23v15Ev
  S10264C2(); // tgen
};
//SIG(-1 S10264C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fp Fi}


 S10264C2 ::~S10264C2(){ note_dtor("S10264C2", this);}
void  S10264C2 ::v9(){vfunc_called(this, "_ZN8S10264C22v9Ev");}
void  S10264C2 ::v10(){vfunc_called(this, "_ZN8S10264C23v10Ev");}
void  S10264C2 ::v11(){vfunc_called(this, "_ZN8S10264C23v11Ev");}
void  S10264C2 ::v12(){vfunc_called(this, "_ZN8S10264C23v12Ev");}
void  S10264C2 ::v13(){vfunc_called(this, "_ZN8S10264C23v13Ev");}
void  S10264C2 ::v14(){vfunc_called(this, "_ZN8S10264C23v14Ev");}
void  S10264C2 ::v15(){vfunc_called(this, "_ZN8S10264C23v15Ev");}
S10264C2 ::S10264C2(){ note_ctor("S10264C2", this);} // tgen

static void Test_S10264C2()
{
  extern Class_Descriptor cd_S10264C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S10264C2, buf);
    S10264C2 *dp, &lv = *(dp=new (buf) S10264C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S10264C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10264C2)");
    check_field_offset(lv, s10264c2f0, ABISELECT(8,4), "S10264C2.s10264c2f0");
    check_field_offset(lv, s10264c2f1, ABISELECT(32,20), "S10264C2.s10264c2f1");
    check_field_offset(lv, s10264c2f2, ABISELECT(40,24), "S10264C2.s10264c2f2");
    test_class_info(&lv, &cd_S10264C2);
    dp->~S10264C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10264C2(Test_S10264C2, "S10264C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S10264C2C1Ev();
extern void _ZN8S10264C2D1Ev();
Name_Map name_map_S10264C2[] = {
  NSPAIR(_ZN8S10264C2C1Ev),
  NSPAIR(_ZN8S10264C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10264C2[];
extern void _ZN8S10264C2D1Ev();
extern void _ZN8S10264C2D0Ev();
extern void _ZN8S10264C22v9Ev();
extern void _ZN8S10264C23v10Ev();
extern void _ZN8S10264C23v11Ev();
extern void _ZN8S10264C23v12Ev();
extern void _ZN8S10264C23v13Ev();
extern void _ZN8S10264C23v14Ev();
extern void _ZN8S10264C23v15Ev();
static  VTBL_ENTRY vtc_S10264C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10264C2[0]),
  (VTBL_ENTRY)&_ZN8S10264C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10264C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10264C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v15Ev,
};
extern VTBL_ENTRY _ZTI8S10264C2[];
extern  VTBL_ENTRY _ZTV8S10264C2[];
Class_Descriptor cd_S10264C2 = {  "S10264C2", // class name
  0,0,//no base classes
  &(vtc_S10264C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S10264C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10264C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10264C6  {
  int s10264c6f0[6];
  void *s10264c6f1;
};
//SIG(1 S10264C6) C1{ Fi[6] Fp}



static void Test_S10264C6()
{
  {
    init_simple_test("S10264C6");
    S10264C6 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S10264C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10264C6)");
    check_field_offset(lv, s10264c6f0, 0, "S10264C6.s10264c6f0");
    check_field_offset(lv, s10264c6f1, 24, "S10264C6.s10264c6f1");
  }
}
static Arrange_To_Call_Me vS10264C6(Test_S10264C6, "S10264C6", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10264C1  : S10264C2 {
  void *s10264c1f0;
  int s10264c1f1[2];
  short s10264c1f2;
  int s10264c1f3[3];
  ::S10264C6 s10264c1f4[7];
  void *s10264c1f5[18];
  ::S2213C37 s10264c1f6;
  void *s10264c1f7;
  virtual  ~S10264C1(); // _ZN8S10264C1D1Ev
  virtual void  v1(); // _ZN8S10264C12v1Ev
  virtual void  v2(); // _ZN8S10264C12v2Ev
  virtual void  v3(); // _ZN8S10264C12v3Ev
  virtual void  v4(); // _ZN8S10264C12v4Ev
  virtual void  v5(); // _ZN8S10264C12v5Ev
  virtual void  v6(); // _ZN8S10264C12v6Ev
  virtual void  v7(); // _ZN8S10264C12v7Ev
  virtual void  v8(); // _ZN8S10264C12v8Ev
  S10264C1(); // tgen
};
//SIG(1 S10264C1) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fp Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp Fi[2] Fs Fi[3] FC6{ Fi[6] Fp}[7] Fp[18] FC7{ m Fp Fi[2] FC8{ m}} Fp}


 S10264C1 ::~S10264C1(){ note_dtor("S10264C1", this);}
void  S10264C1 ::v1(){vfunc_called(this, "_ZN8S10264C12v1Ev");}
void  S10264C1 ::v2(){vfunc_called(this, "_ZN8S10264C12v2Ev");}
void  S10264C1 ::v3(){vfunc_called(this, "_ZN8S10264C12v3Ev");}
void  S10264C1 ::v4(){vfunc_called(this, "_ZN8S10264C12v4Ev");}
void  S10264C1 ::v5(){vfunc_called(this, "_ZN8S10264C12v5Ev");}
void  S10264C1 ::v6(){vfunc_called(this, "_ZN8S10264C12v6Ev");}
void  S10264C1 ::v7(){vfunc_called(this, "_ZN8S10264C12v7Ev");}
void  S10264C1 ::v8(){vfunc_called(this, "_ZN8S10264C12v8Ev");}
S10264C1 ::S10264C1(){ note_ctor("S10264C1", this);} // tgen

static void Test_S10264C1()
{
  extern Class_Descriptor cd_S10264C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(61,87)];
    init_test(&cd_S10264C1, buf);
    S10264C1 *dp, &lv = *(dp=new (buf) S10264C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,344), "sizeof(S10264C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10264C1)");
    check_base_class_offset(lv, (S10264C2*), 0, "S10264C1");
    check_field_offset(lv, s10264c1f0, ABISELECT(48,28), "S10264C1.s10264c1f0");
    check_field_offset(lv, s10264c1f1, ABISELECT(56,32), "S10264C1.s10264c1f1");
    check_field_offset(lv, s10264c1f2, ABISELECT(64,40), "S10264C1.s10264c1f2");
    check_field_offset(lv, s10264c1f3, ABISELECT(68,44), "S10264C1.s10264c1f3");
    check_field_offset(lv, s10264c1f4, ABISELECT(80,56), "S10264C1.s10264c1f4");
    check_field_offset(lv, s10264c1f5, ABISELECT(304,252), "S10264C1.s10264c1f5");
    check_field_offset(lv, s10264c1f6, ABISELECT(448,324), "S10264C1.s10264c1f6");
    check_field_offset(lv, s10264c1f7, ABISELECT(472,340), "S10264C1.s10264c1f7");
    test_class_info(&lv, &cd_S10264C1);
    dp->~S10264C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10264C1(Test_S10264C1, "S10264C1", ABISELECT(480,344));

#else // __cplusplus

extern void _ZN8S10264C1C1Ev();
extern void _ZN8S10264C1D1Ev();
Name_Map name_map_S10264C1[] = {
  NSPAIR(_ZN8S10264C1C1Ev),
  NSPAIR(_ZN8S10264C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10264C2;
extern VTBL_ENTRY _ZTI8S10264C2[];
extern  VTBL_ENTRY _ZTV8S10264C2[];
static Base_Class bases_S10264C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10264C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10264C1[];
extern void _ZN8S10264C1D1Ev();
extern void _ZN8S10264C1D0Ev();
extern void _ZN8S10264C22v9Ev();
extern void _ZN8S10264C23v10Ev();
extern void _ZN8S10264C23v11Ev();
extern void _ZN8S10264C23v12Ev();
extern void _ZN8S10264C23v13Ev();
extern void _ZN8S10264C23v14Ev();
extern void _ZN8S10264C23v15Ev();
extern void _ZN8S10264C12v1Ev();
extern void _ZN8S10264C12v2Ev();
extern void _ZN8S10264C12v3Ev();
extern void _ZN8S10264C12v4Ev();
extern void _ZN8S10264C12v5Ev();
extern void _ZN8S10264C12v6Ev();
extern void _ZN8S10264C12v7Ev();
extern void _ZN8S10264C12v8Ev();
static  VTBL_ENTRY vtc_S10264C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10264C1[0]),
  (VTBL_ENTRY)&_ZN8S10264C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10264C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10264C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10264C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10264C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10264C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10264C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10264C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10264C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10264C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10264C12v7Ev,
  (VTBL_ENTRY)&_ZN8S10264C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S10264C1[];
extern  VTBL_ENTRY _ZTV8S10264C1[];
Class_Descriptor cd_S10264C1 = {  "S10264C1", // class name
  bases_S10264C1, 1,
  &(vtc_S10264C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(480,344), // object size
  NSPAIRA(_ZTI8S10264C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10264C1),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  S20905C3  {
  short s20905c3f0[5];
  virtual void  v7(); // _ZN8S20905C32v7Ev
  virtual void  v8(); // _ZN8S20905C32v8Ev
  virtual void  v9(); // _ZN8S20905C32v9Ev
  virtual void  v10(); // _ZN8S20905C33v10Ev
  virtual void  v11(); // _ZN8S20905C33v11Ev
  ~S20905C3(); // tgen
  S20905C3(); // tgen
};
//SIG(-1 S20905C3) C1{ v1 v2 v3 v4 v5 Fs[5]}


void  S20905C3 ::v7(){vfunc_called(this, "_ZN8S20905C32v7Ev");}
void  S20905C3 ::v8(){vfunc_called(this, "_ZN8S20905C32v8Ev");}
void  S20905C3 ::v9(){vfunc_called(this, "_ZN8S20905C32v9Ev");}
void  S20905C3 ::v10(){vfunc_called(this, "_ZN8S20905C33v10Ev");}
void  S20905C3 ::v11(){vfunc_called(this, "_ZN8S20905C33v11Ev");}
S20905C3 ::~S20905C3(){ note_dtor("S20905C3", this);} // tgen
S20905C3 ::S20905C3(){ note_ctor("S20905C3", this);} // tgen

static void Test_S20905C3()
{
  extern Class_Descriptor cd_S20905C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20905C3, buf);
    S20905C3 *dp, &lv = *(dp=new (buf) S20905C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20905C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20905C3)");
    check_field_offset(lv, s20905c3f0, ABISELECT(8,4), "S20905C3.s20905c3f0");
    test_class_info(&lv, &cd_S20905C3);
    dp->~S20905C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20905C3(Test_S20905C3, "S20905C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20905C3C1Ev();
extern void _ZN8S20905C3D1Ev();
Name_Map name_map_S20905C3[] = {
  NSPAIR(_ZN8S20905C3C1Ev),
  NSPAIR(_ZN8S20905C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20905C3[];
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY vtc_S20905C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C3[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
Class_Descriptor cd_S20905C3 = {  "S20905C3", // class name
  0,0,//no base classes
  &(vtc_S20905C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20905C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20905C3),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  S20905C6  : virtual S20905C3 {
  virtual void  v12(); // _ZN8S20905C63v12Ev
  virtual void  v13(); // _ZN8S20905C63v13Ev
  ~S20905C6(); // tgen
  S20905C6(); // tgen
};
//SIG(-1 S20905C6) C1{ VBC2{ v3 v4 v5 v6 v7 Fs[5]} v1 v2}


void  S20905C6 ::v12(){vfunc_called(this, "_ZN8S20905C63v12Ev");}
void  S20905C6 ::v13(){vfunc_called(this, "_ZN8S20905C63v13Ev");}
S20905C6 ::~S20905C6(){ note_dtor("S20905C6", this);} // tgen
S20905C6 ::S20905C6(){ note_ctor("S20905C6", this);} // tgen

static void Test_S20905C6()
{
  extern Class_Descriptor cd_S20905C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20905C6, buf);
    S20905C6 *dp, &lv = *(dp=new (buf) S20905C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20905C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20905C6)");
    check_base_class_offset(lv, (S20905C3*), ABISELECT(8,4), "S20905C6");
    test_class_info(&lv, &cd_S20905C6);
    dp->~S20905C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20905C6(Test_S20905C6, "S20905C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20905C6C1Ev();
extern void _ZN8S20905C6D1Ev();
Name_Map name_map_S20905C6[] = {
  NSPAIR(_ZN8S20905C6C1Ev),
  NSPAIR(_ZN8S20905C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
static Base_Class bases_S20905C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20905C3,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20905C6[];
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY vtc_S20905C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S20905C6[];
static  VTT_ENTRY vtt_S20905C6[] = {
  {&(_ZTV8S20905C6[3]),  3,17},
  {&(_ZTV8S20905C6[12]),  12,17},
};
extern VTBL_ENTRY _ZTI8S20905C6[];
extern  VTBL_ENTRY _ZTV8S20905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C6[];
Class_Descriptor cd_S20905C6 = {  "S20905C6", // class name
  bases_S20905C6, 1,
  &(vtc_S20905C6[0]), // expected_vtbl_contents
  &(vtt_S20905C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20905C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20905C6),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20905C6),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  S20905C7  : S20905C3 , virtual S20905C6 {
  int s20905c7f0[2];
  virtual void  v14(); // _ZN8S20905C73v14Ev
  ~S20905C7(); // tgen
  S20905C7(); // tgen
};
//SIG(-1 S20905C7) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} v1 Fi[2]}


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

static void Test_S20905C7()
{
  extern Class_Descriptor cd_S20905C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S20905C7, buf);
    S20905C7 *dp, &lv = *(dp=new (buf) S20905C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S20905C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20905C7)");
    /*is_ambiguous_... S20905C7::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*), 0, "S20905C7");
    check_base_class_offset(lv, (S20905C3*)(S20905C6*), ABISELECT(40,28), "S20905C7");
    check_base_class_offset(lv, (S20905C6*), ABISELECT(32,24), "S20905C7");
    check_field_offset(lv, s20905c7f0, ABISELECT(20,16), "S20905C7.s20905c7f0");
    test_class_info(&lv, &cd_S20905C7);
    dp->~S20905C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20905C7(Test_S20905C7, "S20905C7", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN8S20905C7C1Ev();
extern void _ZN8S20905C7D1Ev();
Name_Map name_map_S20905C7[] = {
  NSPAIR(_ZN8S20905C7C1Ev),
  NSPAIR(_ZN8S20905C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C6;
extern VTBL_ENTRY _ZTI8S20905C6[];
extern  VTBL_ENTRY _ZTV8S20905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C6[];
static Base_Class bases_S20905C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20905C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20905C3,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20905C6,    ABISELECT(32,24), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20905C7[];
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY vtc_S20905C7[] = {
  ABISELECT(40,28),
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S20905C7[];
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__8S20905C6__8S20905C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
static  VTT_ENTRY vtt_S20905C7[] = {
  {&(_ZTV8S20905C7[4]),  4,29},
  {&(_ZTV8S20905C7[15]),  15,29},
  {&(_ZTV8S20905C7[24]),  24,29},
  {&(_tg__ZTV8S20905C6__8S20905C7[3]),  3,5},
  {&(_tg__ZTV8S20905C3__8S20905C6__8S20905C7[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20905C7[];
extern  VTBL_ENTRY _ZTV8S20905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C7[];
Class_Descriptor cd_S20905C7 = {  "S20905C7", // class name
  bases_S20905C7, 3,
  &(vtc_S20905C7[0]), // expected_vtbl_contents
  &(vtt_S20905C7[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI8S20905C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20905C7),29, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20905C7),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  S20905C5  : S20905C3 , virtual S20905C6 , S20905C7 {
  int s20905c5f0;
  virtual void  v15(); // _ZN8S20905C53v15Ev
  ~S20905C5(); // tgen
  S20905C5(); // tgen
};
//SIG(-1 S20905C5) C1{ BC2{ v2 v3 v4 v5 v6 Fs[5]} VBC3{ VBC2 v7 v8} BC4{ BC2 VBC3 v9 Fi[2]} v1 Fi}


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

static void Test_S20905C5()
{
  extern Class_Descriptor cd_S20905C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S20905C5, buf);
    S20905C5 *dp, &lv = *(dp=new (buf) S20905C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S20905C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20905C5)");
    /*is_ambiguous_... S20905C5::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*), 0, "S20905C5");
    check_base_class_offset(lv, (S20905C3*)(S20905C6*), ABISELECT(64,48), "S20905C5");
    check_base_class_offset(lv, (S20905C6*), ABISELECT(56,44), "S20905C5");
    check_base_class_offset(lv, (S20905C6*)(S20905C7*), ABISELECT(56,44), "S20905C5");
    /*is_ambiguous_... S20905C7::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C7*), ABISELECT(24,16), "S20905C5");
    check_base_class_offset(lv, (S20905C7*), ABISELECT(24,16), "S20905C5");
    check_field_offset(lv, s20905c5f0, ABISELECT(52,40), "S20905C5.s20905c5f0");
    test_class_info(&lv, &cd_S20905C5);
    dp->~S20905C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20905C5(Test_S20905C5, "S20905C5", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN8S20905C5C1Ev();
extern void _ZN8S20905C5D1Ev();
Name_Map name_map_S20905C5[] = {
  NSPAIR(_ZN8S20905C5C1Ev),
  NSPAIR(_ZN8S20905C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C6;
extern VTBL_ENTRY _ZTI8S20905C6[];
extern  VTBL_ENTRY _ZTV8S20905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C6[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C7;
extern VTBL_ENTRY _ZTI8S20905C7[];
extern  VTBL_ENTRY _ZTV8S20905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C7[];
static Base_Class bases_S20905C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20905C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20905C3,    ABISELECT(64,48), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20905C6,    ABISELECT(56,44), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20905C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20905C7,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20905C5[];
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C53v15Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY vtc_S20905C5[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C53v15Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S20905C5[];
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C7__8S20905C5[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C7__8S20905C5[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__A1__8S20905C7__8S20905C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__8S20905C6__8S20905C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
static  VTT_ENTRY vtt_S20905C5[] = {
  {&(_ZTV8S20905C5[4]),  4,39},
  {&(_tg__ZTV8S20905C7__8S20905C5[4]),  4,10},
  {&(_tg__ZTV8S20905C6__8S20905C7__8S20905C5[5]),  5,7},
  {&(_tg__ZTV8S20905C3__A1__8S20905C7__8S20905C5[7]),  7,12},
  {&(_ZTV8S20905C5[25]),  25,39},
  {&(_ZTV8S20905C5[34]),  34,39},
  {&(_ZTV8S20905C5[14]),  14,39},
  {&(_tg__ZTV8S20905C6__8S20905C5[3]),  3,5},
  {&(_tg__ZTV8S20905C3__8S20905C6__8S20905C5[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20905C5[];
extern  VTBL_ENTRY _ZTV8S20905C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C5[];
Class_Descriptor cd_S20905C5 = {  "S20905C5", // class name
  bases_S20905C5, 5,
  &(vtc_S20905C5[0]), // expected_vtbl_contents
  &(vtt_S20905C5[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI8S20905C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20905C5),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20905C5),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20905C4  : virtual S20905C5 , S20905C3 , S20905C6 {
  char s20905c4f0;
  void *s20905c4f1;
  virtual void  v16(); // _ZN8S20905C43v16Ev
  virtual void  v17(); // _ZN8S20905C43v17Ev
  virtual void  v18(); // _ZN8S20905C43v18Ev
  virtual void  v19(); // _ZN8S20905C43v19Ev
  virtual void  v20(); // _ZN8S20905C43v20Ev
  ~S20905C4(); // tgen
  S20905C4(); // tgen
};
//SIG(-1 S20905C4) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 Fs[5]} VBC4{ VBC3 v11 v12} BC5{ BC3 VBC4 v13 Fi[2]} v14 Fi} BC3 BC4 v1 v2 v3 v4 v5 Fc Fp}


void  S20905C4 ::v16(){vfunc_called(this, "_ZN8S20905C43v16Ev");}
void  S20905C4 ::v17(){vfunc_called(this, "_ZN8S20905C43v17Ev");}
void  S20905C4 ::v18(){vfunc_called(this, "_ZN8S20905C43v18Ev");}
void  S20905C4 ::v19(){vfunc_called(this, "_ZN8S20905C43v19Ev");}
void  S20905C4 ::v20(){vfunc_called(this, "_ZN8S20905C43v20Ev");}
S20905C4 ::~S20905C4(){ note_dtor("S20905C4", this);} // tgen
S20905C4 ::S20905C4(){ note_ctor("S20905C4", this);} // tgen

static void Test_S20905C4()
{
  extern Class_Descriptor cd_S20905C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S20905C4, buf);
    S20905C4 *dp, &lv = *(dp=new (buf) S20905C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S20905C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20905C4)");
    /*is_ambiguous_... S20905C5::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C5*), ABISELECT(48,28), "S20905C4");
    /*is_ambiguous_... S20905C4::S20905C6 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C6*), ABISELECT(112,76), "S20905C4");
    /*is_ambiguous_... S20905C4::S20905C6 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C6*), ABISELECT(112,76), "S20905C4");
    check_base_class_offset(lv, (S20905C6*)(S20905C5*), ABISELECT(104,72), "S20905C4");
    check_base_class_offset(lv, (S20905C6*)(S20905C7*)(S20905C5*), ABISELECT(104,72), "S20905C4");
    /*is_ambiguous_... S20905C7::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C7*)(S20905C5*), ABISELECT(72,44), "S20905C4");
    check_base_class_offset(lv, (S20905C7*)(S20905C5*), ABISELECT(72,44), "S20905C4");
    check_base_class_offset(lv, (S20905C5*), ABISELECT(48,28), "S20905C4");
    /*is_ambiguous_... S20905C4::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*), 0, "S20905C4");
    /*is_ambiguous_... S20905C4::S20905C6 */ AMB_check_base_class_offset(lv, (S20905C6*), ABISELECT(24,16), "S20905C4");
    check_field_offset(lv, s20905c4f0, ABISELECT(32,20), "S20905C4.s20905c4f0");
    check_field_offset(lv, s20905c4f1, ABISELECT(40,24), "S20905C4.s20905c4f1");
    test_class_info(&lv, &cd_S20905C4);
    dp->~S20905C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20905C4(Test_S20905C4, "S20905C4", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S20905C4C1Ev();
extern void _ZN8S20905C4D1Ev();
Name_Map name_map_S20905C4[] = {
  NSPAIR(_ZN8S20905C4C1Ev),
  NSPAIR(_ZN8S20905C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C6;
extern VTBL_ENTRY _ZTI8S20905C6[];
extern  VTBL_ENTRY _ZTV8S20905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C6[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C7;
extern VTBL_ENTRY _ZTI8S20905C7[];
extern  VTBL_ENTRY _ZTV8S20905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C7[];
extern Class_Descriptor cd_S20905C5;
extern VTBL_ENTRY _ZTI8S20905C5[];
extern  VTBL_ENTRY _ZTV8S20905C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C5[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C6;
extern VTBL_ENTRY _ZTI8S20905C6[];
extern  VTBL_ENTRY _ZTV8S20905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C6[];
static Base_Class bases_S20905C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20905C3,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20905C3,    ABISELECT(112,76), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20905C6,    ABISELECT(104,72), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20905C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20905C7,    ABISELECT(72,44), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20905C5,    ABISELECT(48,28), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20905C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20905C6,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20905C4[];
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C43v16Ev();
extern void _ZN8S20905C43v17Ev();
extern void _ZN8S20905C43v18Ev();
extern void _ZN8S20905C43v19Ev();
extern void _ZN8S20905C43v20Ev();
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C53v15Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY vtc_S20905C4[] = {
  ABISELECT(112,76),
  ABISELECT(104,72),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v20Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,48),
  ABISELECT(56,44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C53v15Ev,
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S20905C4[];
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__A__8S20905C4[] = {
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__8S20905C6__A__8S20905C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C5__8S20905C4[] = {
  ABISELECT(64,48),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C53v15Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C78S20905C5__8S20905C4[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C78S20905C5__8S20905C4[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__A1__8S20905C78S20905C5__8S20905C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C5__8S20905C4[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__A1__8S20905C5__8S20905C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C7__8S20905C5__8S20905C4[] = {
  ABISELECT(40,32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__8S20905C6__8S20905C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
static  VTT_ENTRY vtt_S20905C4[] = {
  {&(_ZTV8S20905C4[5]),  5,66},
  {&(_tg__ZTV8S20905C6__A__8S20905C4[3]),  3,5},
  {&(_tg__ZTV8S20905C3__8S20905C6__A__8S20905C4[7]),  7,12},
  {&(_ZTV8S20905C4[31]),  31,66},
  {&(_ZTV8S20905C4[52]),  52,66},
  {&(_ZTV8S20905C4[61]),  61,66},
  {&(_ZTV8S20905C4[41]),  41,66},
  {&(_ZTV8S20905C4[18]),  18,66},
  {&(_tg__ZTV8S20905C5__8S20905C4[4]),  4,10},
  {&(_tg__ZTV8S20905C78S20905C5__8S20905C4[4]),  4,10},
  {&(_tg__ZTV8S20905C6__8S20905C78S20905C5__8S20905C4[5]),  5,7},
  {&(_tg__ZTV8S20905C3__A1__8S20905C78S20905C5__8S20905C4[7]),  7,12},
  {&(_tg__ZTV8S20905C6__8S20905C5__8S20905C4[5]),  5,7},
  {&(_tg__ZTV8S20905C3__A1__8S20905C5__8S20905C4[7]),  7,12},
  {&(_tg__ZTV8S20905C7__8S20905C5__8S20905C4[4]),  4,10},
  {&(_tg__ZTV8S20905C6__8S20905C4[3]),  3,5},
  {&(_tg__ZTV8S20905C3__8S20905C6__8S20905C4[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20905C4[];
extern  VTBL_ENTRY _ZTV8S20905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C4[];
Class_Descriptor cd_S20905C4 = {  "S20905C4", // class name
  bases_S20905C4, 8,
  &(vtc_S20905C4[0]), // expected_vtbl_contents
  &(vtt_S20905C4[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S20905C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20905C4),66, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20905C4),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20905C2  : virtual S20905C3 , S20905C4 {
  virtual void  v21(); // _ZN8S20905C23v21Ev
  virtual void  v22(); // _ZN8S20905C23v22Ev
  virtual void  v23(); // _ZN8S20905C23v23Ev
  ~S20905C2(); // tgen
  S20905C2(); // tgen
};
//SIG(-1 S20905C2) C1{ VBC2{ v4 v5 v6 v7 v8 Fs[5]} BC3{ VBC4{ BC2 VBC5{ VBC2 v9 v10} BC6{ BC2 VBC5 v11 Fi[2]} v12 Fi} BC2 BC5 v13 v14 v15 v16 v17 Fc Fp} v1 v2 v3}


void  S20905C2 ::v21(){vfunc_called(this, "_ZN8S20905C23v21Ev");}
void  S20905C2 ::v22(){vfunc_called(this, "_ZN8S20905C23v22Ev");}
void  S20905C2 ::v23(){vfunc_called(this, "_ZN8S20905C23v23Ev");}
S20905C2 ::~S20905C2(){ note_dtor("S20905C2", this);} // tgen
S20905C2 ::S20905C2(){ note_ctor("S20905C2", this);} // tgen

static void Test_S20905C2()
{
  extern Class_Descriptor cd_S20905C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S20905C2, buf);
    S20905C2 *dp, &lv = *(dp=new (buf) S20905C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S20905C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20905C2)");
    /*is_ambiguous_... S20905C2::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*), ABISELECT(48,28), "S20905C2");
    /*is_ambiguous_... S20905C2::S20905C6 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C6*), ABISELECT(48,28), "S20905C2");
    /*is_ambiguous_... S20905C4::S20905C6 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C6*)(S20905C4*), ABISELECT(48,28), "S20905C2");
    /*is_ambiguous_... S20905C5::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C5*), ABISELECT(72,44), "S20905C2");
    check_base_class_offset(lv, (S20905C6*)(S20905C5*), ABISELECT(128,88), "S20905C2");
    check_base_class_offset(lv, (S20905C6*)(S20905C7*)(S20905C5*), ABISELECT(128,88), "S20905C2");
    /*is_ambiguous_... S20905C7::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C7*)(S20905C5*), ABISELECT(96,60), "S20905C2");
    check_base_class_offset(lv, (S20905C7*)(S20905C5*), ABISELECT(96,60), "S20905C2");
    check_base_class_offset(lv, (S20905C5*)(S20905C4*), ABISELECT(72,44), "S20905C2");
    /*is_ambiguous_... S20905C4::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C4*), 0, "S20905C2");
    /*is_ambiguous_... S20905C4::S20905C6 */ AMB_check_base_class_offset(lv, (S20905C6*)(S20905C4*), ABISELECT(24,16), "S20905C2");
    check_base_class_offset(lv, (S20905C4*), 0, "S20905C2");
    test_class_info(&lv, &cd_S20905C2);
    dp->~S20905C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20905C2(Test_S20905C2, "S20905C2", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S20905C2C1Ev();
extern void _ZN8S20905C2D1Ev();
Name_Map name_map_S20905C2[] = {
  NSPAIR(_ZN8S20905C2C1Ev),
  NSPAIR(_ZN8S20905C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C6;
extern VTBL_ENTRY _ZTI8S20905C6[];
extern  VTBL_ENTRY _ZTV8S20905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C6[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C7;
extern VTBL_ENTRY _ZTI8S20905C7[];
extern  VTBL_ENTRY _ZTV8S20905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C7[];
extern Class_Descriptor cd_S20905C5;
extern VTBL_ENTRY _ZTI8S20905C5[];
extern  VTBL_ENTRY _ZTV8S20905C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C5[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C6;
extern VTBL_ENTRY _ZTI8S20905C6[];
extern  VTBL_ENTRY _ZTV8S20905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C6[];
extern Class_Descriptor cd_S20905C4;
extern VTBL_ENTRY _ZTI8S20905C4[];
extern  VTBL_ENTRY _ZTV8S20905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C4[];
static Base_Class bases_S20905C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20905C3,    ABISELECT(48,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20905C3,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20905C6,    ABISELECT(128,88), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20905C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20905C7,    ABISELECT(96,60), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20905C5,    ABISELECT(72,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20905C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20905C6,    ABISELECT(24,16), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20905C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20905C2[];
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C43v16Ev();
extern void _ZN8S20905C43v17Ev();
extern void _ZN8S20905C43v18Ev();
extern void _ZN8S20905C43v19Ev();
extern void _ZN8S20905C43v20Ev();
extern void _ZN8S20905C23v21Ev();
extern void _ZN8S20905C23v22Ev();
extern void _ZN8S20905C23v23Ev();
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C53v15Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY vtc_S20905C2[] = {
  ABISELECT(48,28),
  ABISELECT(128,88),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v20Ev,
  (VTBL_ENTRY)&_ZN8S20905C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20905C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20905C23v23Ev,
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C53v15Ev,
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern VTBL_ENTRY _ZTV8S20905C2[];
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C43v16Ev();
extern void _ZN8S20905C43v17Ev();
extern void _ZN8S20905C43v18Ev();
extern void _ZN8S20905C43v19Ev();
extern void _ZN8S20905C43v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C4__8S20905C2[] = {
  ABISELECT(48,28),
  ABISELECT(128,88),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v20Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C68S20905C4__A1__8S20905C2[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__8S20905C68S20905C4__A1__8S20905C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C5__8S20905C4__8S20905C2[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C53v15Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C4__8S20905C2[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__A1__8S20905C4__8S20905C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C78S20905C5__8S20905C4__8S20905C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__A__8S20905C4__8S20905C2[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C5__8S20905C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C53v15Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C78S20905C5__8S20905C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C78S20905C5__8S20905C2[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__A1__8S20905C78S20905C5__8S20905C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C5__8S20905C2[] = {
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__A1__8S20905C5__8S20905C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C7__8S20905C5__8S20905C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(32,28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C2[] = {
  ABISELECT(-80,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__8S20905C6__8S20905C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
static  VTT_ENTRY vtt_S20905C2[] = {
  {&(_ZTV8S20905C2[5]),  5,69},
  {&(_tg__ZTV8S20905C4__8S20905C2[5]),  5,15},
  {&(_tg__ZTV8S20905C68S20905C4__A1__8S20905C2[3]),  3,5},
  {&(_tg__ZTV8S20905C3__8S20905C68S20905C4__A1__8S20905C2[7]),  7,12},
  {&(_tg__ZTV8S20905C5__8S20905C4__8S20905C2[11]),  11,17},
  {&(_tg__ZTV8S20905C6__8S20905C4__8S20905C2[5]),  5,7},
  {&(_tg__ZTV8S20905C3__A1__8S20905C4__8S20905C2[7]),  7,12},
  {&(_tg__ZTV8S20905C78S20905C5__8S20905C4__8S20905C2[4]),  4,10},
  {&(_tg__ZTV8S20905C6__A__8S20905C4__8S20905C2[3]),  3,5},
  {&(_ZTV8S20905C2[30]),  30,69},
  {&(_ZTV8S20905C2[46]),  46,69},
  {&(_ZTV8S20905C2[67]),  67,69},
  {&(_ZTV8S20905C2[56]),  56,69},
  {&(_ZTV8S20905C2[21]),  21,69},
  {&(_tg__ZTV8S20905C5__8S20905C2[4]),  4,10},
  {&(_tg__ZTV8S20905C78S20905C5__8S20905C2[4]),  4,10},
  {&(_tg__ZTV8S20905C6__8S20905C78S20905C5__8S20905C2[5]),  5,7},
  {&(_tg__ZTV8S20905C3__A1__8S20905C78S20905C5__8S20905C2[7]),  7,12},
  {&(_tg__ZTV8S20905C6__8S20905C5__8S20905C2[5]),  5,7},
  {&(_tg__ZTV8S20905C3__A1__8S20905C5__8S20905C2[7]),  7,12},
  {&(_tg__ZTV8S20905C7__8S20905C5__8S20905C2[4]),  4,10},
  {&(_tg__ZTV8S20905C6__8S20905C2[3]),  3,5},
  {&(_tg__ZTV8S20905C3__8S20905C6__8S20905C2[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20905C2[];
extern  VTBL_ENTRY _ZTV8S20905C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C2[];
Class_Descriptor cd_S20905C2 = {  "S20905C2", // class name
  bases_S20905C2, 9,
  &(vtc_S20905C2[0]), // expected_vtbl_contents
  &(vtt_S20905C2[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S20905C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20905C2),69, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20905C2),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20905C1  : virtual S20905C2 {
  virtual void  v1(); // _ZN8S20905C12v1Ev
  virtual void  v2(); // _ZN8S20905C12v2Ev
  virtual void  v3(); // _ZN8S20905C12v3Ev
  virtual void  v4(); // _ZN8S20905C12v4Ev
  virtual void  v5(); // _ZN8S20905C12v5Ev
  virtual void  v6(); // _ZN8S20905C12v6Ev
  ~S20905C1(); // tgen
  S20905C1(); // tgen
};
//SIG(1 S20905C1) C1{ VBC2{ VBC3{ v7 v8 v9 v10 v11 Fs[5]} BC4{ VBC5{ BC3 VBC6{ VBC3 v12 v13} BC7{ BC3 VBC6 v14 Fi[2]} v15 Fi} BC3 BC6 v16 v17 v18 v19 v20 Fc Fp} v21 v22 v23} v1 v2 v3 v4 v5 v6}


void  S20905C1 ::v1(){vfunc_called(this, "_ZN8S20905C12v1Ev");}
void  S20905C1 ::v2(){vfunc_called(this, "_ZN8S20905C12v2Ev");}
void  S20905C1 ::v3(){vfunc_called(this, "_ZN8S20905C12v3Ev");}
void  S20905C1 ::v4(){vfunc_called(this, "_ZN8S20905C12v4Ev");}
void  S20905C1 ::v5(){vfunc_called(this, "_ZN8S20905C12v5Ev");}
void  S20905C1 ::v6(){vfunc_called(this, "_ZN8S20905C12v6Ev");}
S20905C1 ::~S20905C1(){ note_dtor("S20905C1", this);} // tgen
S20905C1 ::S20905C1(){ note_ctor("S20905C1", this);} // tgen

static void Test_S20905C1()
{
  extern Class_Descriptor cd_S20905C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S20905C1, buf);
    S20905C1 *dp, &lv = *(dp=new (buf) S20905C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S20905C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20905C1)");
    /*is_ambiguous_... S20905C2::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C2*), ABISELECT(56,32), "S20905C1");
    /*is_ambiguous_... S20905C1::S20905C6 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C6*), ABISELECT(56,32), "S20905C1");
    /*is_ambiguous_... S20905C4::S20905C6 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C6*)(S20905C4*)(S20905C2*), ABISELECT(56,32), "S20905C1");
    /*is_ambiguous_... S20905C5::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C5*), ABISELECT(80,48), "S20905C1");
    check_base_class_offset(lv, (S20905C6*)(S20905C5*), 0, "S20905C1");
    check_base_class_offset(lv, (S20905C6*)(S20905C7*)(S20905C5*), 0, "S20905C1");
    /*is_ambiguous_... S20905C7::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C7*)(S20905C5*), ABISELECT(104,64), "S20905C1");
    check_base_class_offset(lv, (S20905C7*)(S20905C5*), ABISELECT(104,64), "S20905C1");
    check_base_class_offset(lv, (S20905C5*)(S20905C4*)(S20905C2*), ABISELECT(80,48), "S20905C1");
    /*is_ambiguous_... S20905C4::S20905C3 */ AMB_check_base_class_offset(lv, (S20905C3*)(S20905C4*)(S20905C2*), ABISELECT(8,4), "S20905C1");
    /*is_ambiguous_... S20905C4::S20905C6 */ AMB_check_base_class_offset(lv, (S20905C6*)(S20905C4*)(S20905C2*), ABISELECT(32,20), "S20905C1");
    check_base_class_offset(lv, (S20905C4*)(S20905C2*), ABISELECT(8,4), "S20905C1");
    check_base_class_offset(lv, (S20905C2*), ABISELECT(8,4), "S20905C1");
    test_class_info(&lv, &cd_S20905C1);
    dp->~S20905C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20905C1(Test_S20905C1, "S20905C1", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S20905C1C1Ev();
extern void _ZN8S20905C1D1Ev();
Name_Map name_map_S20905C1[] = {
  NSPAIR(_ZN8S20905C1C1Ev),
  NSPAIR(_ZN8S20905C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C6;
extern VTBL_ENTRY _ZTI8S20905C6[];
extern  VTBL_ENTRY _ZTV8S20905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C6[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C7;
extern VTBL_ENTRY _ZTI8S20905C7[];
extern  VTBL_ENTRY _ZTV8S20905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C7[];
extern Class_Descriptor cd_S20905C5;
extern VTBL_ENTRY _ZTI8S20905C5[];
extern  VTBL_ENTRY _ZTV8S20905C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C5[];
extern Class_Descriptor cd_S20905C3;
extern VTBL_ENTRY _ZTI8S20905C3[];
extern  VTBL_ENTRY _ZTV8S20905C3[];
extern Class_Descriptor cd_S20905C6;
extern VTBL_ENTRY _ZTI8S20905C6[];
extern  VTBL_ENTRY _ZTV8S20905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C6[];
extern Class_Descriptor cd_S20905C4;
extern VTBL_ENTRY _ZTI8S20905C4[];
extern  VTBL_ENTRY _ZTV8S20905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C4[];
extern Class_Descriptor cd_S20905C2;
extern VTBL_ENTRY _ZTI8S20905C2[];
extern  VTBL_ENTRY _ZTV8S20905C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C2[];
static Base_Class bases_S20905C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20905C3,    ABISELECT(56,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20905C3,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20905C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20905C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20905C7,    ABISELECT(104,64), //bcp->offset
    83, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20905C5,    ABISELECT(80,48), //bcp->offset
    66, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20905C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20905C6,    ABISELECT(32,20), //bcp->offset
    49, //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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20905C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20905C2,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20905C1[];
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
extern void _ZN8S20905C12v1Ev();
extern void _ZN8S20905C12v2Ev();
extern void _ZN8S20905C12v3Ev();
extern void _ZN8S20905C12v4Ev();
extern void _ZN8S20905C12v5Ev();
extern void _ZN8S20905C12v6Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C43v16Ev();
extern void _ZN8S20905C43v17Ev();
extern void _ZN8S20905C43v18Ev();
extern void _ZN8S20905C43v19Ev();
extern void _ZN8S20905C43v20Ev();
extern void _ZN8S20905C23v21Ev();
extern void _ZN8S20905C23v22Ev();
extern void _ZN8S20905C23v23Ev();
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C53v15Ev();
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY vtc_S20905C1[] = {
  0,
  ABISELECT(80,48),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C1[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20905C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20905C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20905C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20905C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20905C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20905C12v6Ev,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(72,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20905C1[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v20Ev,
  (VTBL_ENTRY)&_ZN8S20905C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20905C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20905C23v23Ev,
  ABISELECT(24,12),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20905C1[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20905C1[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S20905C1[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C53v15Ev,
  ABISELECT(-48,-32),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S20905C1[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern VTBL_ENTRY _ZTV8S20905C1[];
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C43v16Ev();
extern void _ZN8S20905C43v17Ev();
extern void _ZN8S20905C43v18Ev();
extern void _ZN8S20905C43v19Ev();
extern void _ZN8S20905C43v20Ev();
extern void _ZN8S20905C23v21Ev();
extern void _ZN8S20905C23v22Ev();
extern void _ZN8S20905C23v23Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C2__8S20905C1[] = {
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v20Ev,
  (VTBL_ENTRY)&_ZN8S20905C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20905C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20905C23v23Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C43v16Ev();
extern void _ZN8S20905C43v17Ev();
extern void _ZN8S20905C43v18Ev();
extern void _ZN8S20905C43v19Ev();
extern void _ZN8S20905C43v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C48S20905C2__8S20905C1[] = {
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v19Ev,
  (VTBL_ENTRY)&_ZN8S20905C43v20Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C68S20905C48S20905C2__A1__8S20905C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__8S20905C68S20905C48S20905C2__A1__8S20905C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C5__8S20905C48S20905C2__8S20905C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-80,-48),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C53v15Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C48S20905C2__8S20905C1[] = {
  0,
  0,
  ABISELECT(56,32),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__A1__8S20905C48S20905C2__8S20905C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C78S20905C5__8S20905C48S20905C2__8S20905C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-104,-64),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__A__8S20905C48S20905C2__8S20905C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20905C4[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__8S20905C2__8S20905C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C5__8S20905C2__8S20905C1[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-80,-48),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C53v15Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C2__8S20905C1[] = {
  0,
  0,
  ABISELECT(56,32),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C78S20905C5__8S20905C2__8S20905C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-104,-64),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C68S20905C4__A1__8S20905C2__8S20905C1[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20905C2[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C5__8S20905C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C53v15Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C78S20905C5__8S20905C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C78S20905C5__8S20905C1[] = {
  0,
  0,
  ABISELECT(56,32),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__A1__8S20905C78S20905C5__8S20905C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20905C7[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C5__8S20905C1[] = {
  0,
  0,
  ABISELECT(56,32),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__A1__8S20905C5__8S20905C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
extern void _ZN8S20905C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C7__8S20905C5__8S20905C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-104,-64),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20905C5[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20905C73v14Ev,
};
extern void _ZN8S20905C63v12Ev();
extern void _ZN8S20905C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C6__8S20905C1[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20905C63v13Ev,
};
extern void _ZN8S20905C32v7Ev();
extern void _ZN8S20905C32v8Ev();
extern void _ZN8S20905C32v9Ev();
extern void _ZN8S20905C33v10Ev();
extern void _ZN8S20905C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20905C3__8S20905C6__8S20905C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20905C6[0]),
  (VTBL_ENTRY)&_ZN8S20905C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20905C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20905C33v11Ev,
};
static  VTT_ENTRY vtt_S20905C1[] = {
  {&(_ZTV8S20905C1[8]),  8,93},
  {&(_ZTV8S20905C1[36]),  36,93},
  {&(_ZTV8S20905C1[61]),  61,93},
  {&(_ZTV8S20905C1[77]),  77,93},
  {&(_ZTV8S20905C1[8]),  8,93},
  {&(_ZTV8S20905C1[87]),  87,93},
  {&(_ZTV8S20905C1[52]),  52,93},
  {&(_tg__ZTV8S20905C2__8S20905C1[5]),  5,18},
  {&(_tg__ZTV8S20905C48S20905C2__8S20905C1[5]),  5,15},
  {&(_tg__ZTV8S20905C68S20905C48S20905C2__A1__8S20905C1[3]),  3,5},
  {&(_tg__ZTV8S20905C3__8S20905C68S20905C48S20905C2__A1__8S20905C1[7]),  7,12},
  {&(_tg__ZTV8S20905C5__8S20905C48S20905C2__8S20905C1[11]),  11,17},
  {&(_tg__ZTV8S20905C6__8S20905C48S20905C2__8S20905C1[5]),  5,7},
  {&(_tg__ZTV8S20905C3__A1__8S20905C48S20905C2__8S20905C1[7]),  7,12},
  {&(_tg__ZTV8S20905C78S20905C5__8S20905C48S20905C2__8S20905C1[4]),  4,10},
  {&(_tg__ZTV8S20905C6__A__8S20905C48S20905C2__8S20905C1[3]),  3,5},
  {&(_tg__ZTV8S20905C3__8S20905C2__8S20905C1[7]),  7,12},
  {&(_tg__ZTV8S20905C5__8S20905C2__8S20905C1[11]),  11,17},
  {&(_tg__ZTV8S20905C6__8S20905C2__8S20905C1[5]),  5,7},
  {&(_tg__ZTV8S20905C78S20905C5__8S20905C2__8S20905C1[4]),  4,10},
  {&(_tg__ZTV8S20905C68S20905C4__A1__8S20905C2__8S20905C1[3]),  3,5},
  {&(_tg__ZTV8S20905C5__8S20905C1[4]),  4,10},
  {&(_tg__ZTV8S20905C78S20905C5__8S20905C1[4]),  4,10},
  {&(_tg__ZTV8S20905C6__8S20905C78S20905C5__8S20905C1[5]),  5,7},
  {&(_tg__ZTV8S20905C3__A1__8S20905C78S20905C5__8S20905C1[7]),  7,12},
  {&(_tg__ZTV8S20905C6__8S20905C5__8S20905C1[5]),  5,7},
  {&(_tg__ZTV8S20905C3__A1__8S20905C5__8S20905C1[7]),  7,12},
  {&(_tg__ZTV8S20905C7__8S20905C5__8S20905C1[4]),  4,10},
  {&(_tg__ZTV8S20905C6__8S20905C1[3]),  3,5},
  {&(_tg__ZTV8S20905C3__8S20905C6__8S20905C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20905C1[];
extern  VTBL_ENTRY _ZTV8S20905C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20905C1[];
Class_Descriptor cd_S20905C1 = {  "S20905C1", // class name
  bases_S20905C1, 10,
  &(vtc_S20905C1[0]), // expected_vtbl_contents
  &(vtt_S20905C1[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S20905C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20905C1),93, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20905C1),30, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10263C2  {
  ::S2213C19_nt s10263c2f0;
  void *s10263c2f1;
  int s10263c2f2;
  virtual  ~S10263C2(); // _ZN8S10263C2D1Ev
  virtual void  v9(); // _ZN8S10263C22v9Ev
  virtual void  v10(); // _ZN8S10263C23v10Ev
  virtual void  v11(); // _ZN8S10263C23v11Ev
  virtual void  v12(); // _ZN8S10263C23v12Ev
  virtual void  v13(); // _ZN8S10263C23v13Ev
  virtual void  v14(); // _ZN8S10263C23v14Ev
  virtual void  v15(); // _ZN8S10263C23v15Ev
  S10263C2(); // tgen
};
//SIG(-1 S10263C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fp Fi}


 S10263C2 ::~S10263C2(){ note_dtor("S10263C2", this);}
void  S10263C2 ::v9(){vfunc_called(this, "_ZN8S10263C22v9Ev");}
void  S10263C2 ::v10(){vfunc_called(this, "_ZN8S10263C23v10Ev");}
void  S10263C2 ::v11(){vfunc_called(this, "_ZN8S10263C23v11Ev");}
void  S10263C2 ::v12(){vfunc_called(this, "_ZN8S10263C23v12Ev");}
void  S10263C2 ::v13(){vfunc_called(this, "_ZN8S10263C23v13Ev");}
void  S10263C2 ::v14(){vfunc_called(this, "_ZN8S10263C23v14Ev");}
void  S10263C2 ::v15(){vfunc_called(this, "_ZN8S10263C23v15Ev");}
S10263C2 ::S10263C2(){ note_ctor("S10263C2", this);} // tgen

static void Test_S10263C2()
{
  extern Class_Descriptor cd_S10263C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S10263C2, buf);
    S10263C2 *dp, &lv = *(dp=new (buf) S10263C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S10263C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10263C2)");
    check_field_offset(lv, s10263c2f0, ABISELECT(8,4), "S10263C2.s10263c2f0");
    check_field_offset(lv, s10263c2f1, ABISELECT(32,20), "S10263C2.s10263c2f1");
    check_field_offset(lv, s10263c2f2, ABISELECT(40,24), "S10263C2.s10263c2f2");
    test_class_info(&lv, &cd_S10263C2);
    dp->~S10263C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10263C2(Test_S10263C2, "S10263C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S10263C2C1Ev();
extern void _ZN8S10263C2D1Ev();
Name_Map name_map_S10263C2[] = {
  NSPAIR(_ZN8S10263C2C1Ev),
  NSPAIR(_ZN8S10263C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10263C2[];
extern void _ZN8S10263C2D1Ev();
extern void _ZN8S10263C2D0Ev();
extern void _ZN8S10263C22v9Ev();
extern void _ZN8S10263C23v10Ev();
extern void _ZN8S10263C23v11Ev();
extern void _ZN8S10263C23v12Ev();
extern void _ZN8S10263C23v13Ev();
extern void _ZN8S10263C23v14Ev();
extern void _ZN8S10263C23v15Ev();
static  VTBL_ENTRY vtc_S10263C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10263C2[0]),
  (VTBL_ENTRY)&_ZN8S10263C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10263C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10263C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v15Ev,
};
extern VTBL_ENTRY _ZTI8S10263C2[];
extern  VTBL_ENTRY _ZTV8S10263C2[];
Class_Descriptor cd_S10263C2 = {  "S10263C2", // class name
  0,0,//no base classes
  &(vtc_S10263C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S10263C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10263C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10263C1  : S10263C2 {
  void *s10263c1f0;
  ::S2213C37 s10263c1f1;
  ::S2213C37 s10263c1f2;
  ::S2213C37 s10263c1f3[9];
  ::S2213C37 s10263c1f4;
  ::S2213C37 s10263c1f5;
  ::S2213C37 s10263c1f6;
  ::S2213C37 s10263c1f7;
  ::S2213C37 s10263c1f8;
  void *s10263c1f9[6];
  virtual  ~S10263C1(); // _ZN8S10263C1D1Ev
  virtual void  v1(); // _ZN8S10263C12v1Ev
  virtual void  v2(); // _ZN8S10263C12v2Ev
  virtual void  v3(); // _ZN8S10263C12v3Ev
  virtual void  v4(); // _ZN8S10263C12v4Ev
  virtual void  v5(); // _ZN8S10263C12v5Ev
  virtual void  v6(); // _ZN8S10263C12v6Ev
  virtual void  v7(); // _ZN8S10263C12v7Ev
  virtual void  v8(); // _ZN8S10263C12v8Ev
  S10263C1(); // tgen
};
//SIG(1 S10263C1) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fp Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC6{ m Fp Fi[2] FC7{ m}} FC6 FC6[9] FC6 FC6 FC6 FC6 FC6 Fp[6]}


 S10263C1 ::~S10263C1(){ note_dtor("S10263C1", this);}
void  S10263C1 ::v1(){vfunc_called(this, "_ZN8S10263C12v1Ev");}
void  S10263C1 ::v2(){vfunc_called(this, "_ZN8S10263C12v2Ev");}
void  S10263C1 ::v3(){vfunc_called(this, "_ZN8S10263C12v3Ev");}
void  S10263C1 ::v4(){vfunc_called(this, "_ZN8S10263C12v4Ev");}
void  S10263C1 ::v5(){vfunc_called(this, "_ZN8S10263C12v5Ev");}
void  S10263C1 ::v6(){vfunc_called(this, "_ZN8S10263C12v6Ev");}
void  S10263C1 ::v7(){vfunc_called(this, "_ZN8S10263C12v7Ev");}
void  S10263C1 ::v8(){vfunc_called(this, "_ZN8S10263C12v8Ev");}
S10263C1 ::S10263C1(){ note_ctor("S10263C1", this);} // tgen

static void Test_S10263C1()
{
  extern Class_Descriptor cd_S10263C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(62,79)];
    init_test(&cd_S10263C1, buf);
    S10263C1 *dp, &lv = *(dp=new (buf) S10263C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(488,312), "sizeof(S10263C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10263C1)");
    check_base_class_offset(lv, (S10263C2*), 0, "S10263C1");
    check_field_offset(lv, s10263c1f0, ABISELECT(48,28), "S10263C1.s10263c1f0");
    check_field_offset(lv, s10263c1f1, ABISELECT(56,32), "S10263C1.s10263c1f1");
    check_field_offset(lv, s10263c1f2, ABISELECT(80,48), "S10263C1.s10263c1f2");
    check_field_offset(lv, s10263c1f3, ABISELECT(104,64), "S10263C1.s10263c1f3");
    check_field_offset(lv, s10263c1f4, ABISELECT(320,208), "S10263C1.s10263c1f4");
    check_field_offset(lv, s10263c1f5, ABISELECT(344,224), "S10263C1.s10263c1f5");
    check_field_offset(lv, s10263c1f6, ABISELECT(368,240), "S10263C1.s10263c1f6");
    check_field_offset(lv, s10263c1f7, ABISELECT(392,256), "S10263C1.s10263c1f7");
    check_field_offset(lv, s10263c1f8, ABISELECT(416,272), "S10263C1.s10263c1f8");
    check_field_offset(lv, s10263c1f9, ABISELECT(440,288), "S10263C1.s10263c1f9");
    test_class_info(&lv, &cd_S10263C1);
    dp->~S10263C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10263C1(Test_S10263C1, "S10263C1", ABISELECT(488,312));

#else // __cplusplus

extern void _ZN8S10263C1C1Ev();
extern void _ZN8S10263C1D1Ev();
Name_Map name_map_S10263C1[] = {
  NSPAIR(_ZN8S10263C1C1Ev),
  NSPAIR(_ZN8S10263C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10263C2;
extern VTBL_ENTRY _ZTI8S10263C2[];
extern  VTBL_ENTRY _ZTV8S10263C2[];
static Base_Class bases_S10263C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10263C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10263C1[];
extern void _ZN8S10263C1D1Ev();
extern void _ZN8S10263C1D0Ev();
extern void _ZN8S10263C22v9Ev();
extern void _ZN8S10263C23v10Ev();
extern void _ZN8S10263C23v11Ev();
extern void _ZN8S10263C23v12Ev();
extern void _ZN8S10263C23v13Ev();
extern void _ZN8S10263C23v14Ev();
extern void _ZN8S10263C23v15Ev();
extern void _ZN8S10263C12v1Ev();
extern void _ZN8S10263C12v2Ev();
extern void _ZN8S10263C12v3Ev();
extern void _ZN8S10263C12v4Ev();
extern void _ZN8S10263C12v5Ev();
extern void _ZN8S10263C12v6Ev();
extern void _ZN8S10263C12v7Ev();
extern void _ZN8S10263C12v8Ev();
static  VTBL_ENTRY vtc_S10263C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10263C1[0]),
  (VTBL_ENTRY)&_ZN8S10263C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10263C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10263C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10263C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10263C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10263C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10263C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10263C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10263C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10263C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10263C12v7Ev,
  (VTBL_ENTRY)&_ZN8S10263C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S10263C1[];
extern  VTBL_ENTRY _ZTV8S10263C1[];
Class_Descriptor cd_S10263C1 = {  "S10263C1", // class name
  bases_S10263C1, 1,
  &(vtc_S10263C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(488,312), // object size
  NSPAIRA(_ZTI8S10263C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10263C1),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  S3273C3  {
  __tsi64 s3273c3f0:20;
  ::S19553C8 s3273c3f1;
  int s3273c3f2;
  virtual  ~S3273C3(); // _ZN7S3273C3D1Ev
  virtual void  v5(); // _ZN7S3273C32v5Ev
  virtual void  v6(); // _ZN7S3273C32v6Ev
  virtual void  v7(); // _ZN7S3273C32v7Ev
  virtual void  v8(); // _ZN7S3273C32v8Ev
  virtual void  v9(); // _ZN7S3273C32v9Ev
  S3273C3(); // tgen
};
//SIG(-1 S3273C3) C1{ vd v1 v2 v3 v4 v5 FL:20 FC2{ v6 v7 v8 v9 v10 v11 v12 FD Fp[5]} Fi}


 S3273C3 ::~S3273C3(){ note_dtor("S3273C3", this);}
void  S3273C3 ::v5(){vfunc_called(this, "_ZN7S3273C32v5Ev");}
void  S3273C3 ::v6(){vfunc_called(this, "_ZN7S3273C32v6Ev");}
void  S3273C3 ::v7(){vfunc_called(this, "_ZN7S3273C32v7Ev");}
void  S3273C3 ::v8(){vfunc_called(this, "_ZN7S3273C32v8Ev");}
void  S3273C3 ::v9(){vfunc_called(this, "_ZN7S3273C32v9Ev");}
S3273C3 ::S3273C3(){ note_ctor("S3273C3", this);} // tgen

static void Test_S3273C3()
{
  extern Class_Descriptor cd_S3273C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,13)];
    init_test(&cd_S3273C3, buf);
    S3273C3 *dp, &lv = *(dp=new (buf) S3273C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,48), "sizeof(S3273C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3273C3)");
    set_bf_and_test(lv, s3273c3f0, ABISELECT(8,4), 0, 20, 1, "S3273C3");
    set_bf_and_test(lv, s3273c3f0, ABISELECT(8,4), 0, 20, hide_sll(1LL<<19), "S3273C3");
    check_field_offset(lv, s3273c3f1, ABISELECT(16,8), "S3273C3.s3273c3f1");
    check_field_offset(lv, s3273c3f2, ABISELECT(96,44), "S3273C3.s3273c3f2");
    test_class_info(&lv, &cd_S3273C3);
    dp->~S3273C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3273C3(Test_S3273C3, "S3273C3", ABISELECT(112,48));

#else // __cplusplus

extern void _ZN7S3273C3C1Ev();
extern void _ZN7S3273C3D1Ev();
Name_Map name_map_S3273C3[] = {
  NSPAIR(_ZN7S3273C3C1Ev),
  NSPAIR(_ZN7S3273C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3273C3[];
extern void _ZN7S3273C3D1Ev();
extern void _ZN7S3273C3D0Ev();
extern void _ZN7S3273C32v5Ev();
extern void _ZN7S3273C32v6Ev();
extern void _ZN7S3273C32v7Ev();
extern void _ZN7S3273C32v8Ev();
extern void _ZN7S3273C32v9Ev();
static  VTBL_ENTRY vtc_S3273C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3273C3[0]),
  (VTBL_ENTRY)&_ZN7S3273C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3273C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S3273C3[];
extern  VTBL_ENTRY _ZTV7S3273C3[];
Class_Descriptor cd_S3273C3 = {  "S3273C3", // class name
  0,0,//no base classes
  &(vtc_S3273C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,48), // object size
  NSPAIRA(_ZTI7S3273C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3273C3),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3273C2  : S3273C3 {
  __tsi64 s3273c2f0;
  int s3273c2f1;
  virtual  ~S3273C2(); // _ZN7S3273C2D1Ev
  virtual void  v10(); // _ZN7S3273C23v10Ev
  virtual void  v11(); // _ZN7S3273C23v11Ev
  virtual void  v12(); // _ZN7S3273C23v12Ev
  virtual void  v13(); // _ZN7S3273C23v13Ev
  S3273C2(); // tgen
};
//SIG(-1 S3273C2) C1{ BC2{ vd v5 v6 v7 v8 v9 FL:20 FC3{ v10 v11 v12 v13 v14 v15 v16 FD Fp[5]} Fi} vd v1 v2 v3 v4 FL Fi}


 S3273C2 ::~S3273C2(){ note_dtor("S3273C2", this);}
void  S3273C2 ::v10(){vfunc_called(this, "_ZN7S3273C23v10Ev");}
void  S3273C2 ::v11(){vfunc_called(this, "_ZN7S3273C23v11Ev");}
void  S3273C2 ::v12(){vfunc_called(this, "_ZN7S3273C23v12Ev");}
void  S3273C2 ::v13(){vfunc_called(this, "_ZN7S3273C23v13Ev");}
S3273C2 ::S3273C2(){ note_ctor("S3273C2", this);} // tgen

static void Test_S3273C2()
{
  extern Class_Descriptor cd_S3273C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,16)];
    init_test(&cd_S3273C2, buf);
    S3273C2 *dp, &lv = *(dp=new (buf) S3273C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,60), "sizeof(S3273C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3273C2)");
    check_base_class_offset(lv, (S3273C3*), 0, "S3273C2");
    check_field_offset(lv, s3273c2f0, ABISELECT(104,48), "S3273C2.s3273c2f0");
    check_field_offset(lv, s3273c2f1, ABISELECT(112,56), "S3273C2.s3273c2f1");
    test_class_info(&lv, &cd_S3273C2);
    dp->~S3273C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3273C2(Test_S3273C2, "S3273C2", ABISELECT(128,60));

#else // __cplusplus

extern void _ZN7S3273C2C1Ev();
extern void _ZN7S3273C2D1Ev();
Name_Map name_map_S3273C2[] = {
  NSPAIR(_ZN7S3273C2C1Ev),
  NSPAIR(_ZN7S3273C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3273C3;
extern VTBL_ENTRY _ZTI7S3273C3[];
extern  VTBL_ENTRY _ZTV7S3273C3[];
static Base_Class bases_S3273C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3273C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3273C2[];
extern void _ZN7S3273C2D1Ev();
extern void _ZN7S3273C2D0Ev();
extern void _ZN7S3273C32v5Ev();
extern void _ZN7S3273C32v6Ev();
extern void _ZN7S3273C32v7Ev();
extern void _ZN7S3273C32v8Ev();
extern void _ZN7S3273C32v9Ev();
extern void _ZN7S3273C23v10Ev();
extern void _ZN7S3273C23v11Ev();
extern void _ZN7S3273C23v12Ev();
extern void _ZN7S3273C23v13Ev();
static  VTBL_ENTRY vtc_S3273C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3273C2[0]),
  (VTBL_ENTRY)&_ZN7S3273C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3273C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3273C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3273C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3273C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3273C23v13Ev,
};
extern VTBL_ENTRY _ZTI7S3273C2[];
extern  VTBL_ENTRY _ZTV7S3273C2[];
Class_Descriptor cd_S3273C2 = {  "S3273C2", // class name
  bases_S3273C2, 1,
  &(vtc_S3273C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,60), // object size
  NSPAIRA(_ZTI7S3273C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3273C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3273C5  {
  __tsi64 s3273c5f0;
  long double s3273c5f1;
  virtual  ~S3273C5(); // _ZN7S3273C5D1Ev
  virtual void  v14(); // _ZN7S3273C53v14Ev
  virtual void  v15(); // _ZN7S3273C53v15Ev
  virtual void  v16(); // _ZN7S3273C53v16Ev
  virtual void  v17(); // _ZN7S3273C53v17Ev
  virtual void  v18(); // _ZN7S3273C53v18Ev
  virtual void  v19(); // _ZN7S3273C53v19Ev
  S3273C5(); // tgen
};
//SIG(-1 S3273C5) C1{ vd v1 v2 v3 v4 v5 v6 FL FD}


 S3273C5 ::~S3273C5(){ note_dtor("S3273C5", this);}
void  S3273C5 ::v14(){vfunc_called(this, "_ZN7S3273C53v14Ev");}
void  S3273C5 ::v15(){vfunc_called(this, "_ZN7S3273C53v15Ev");}
void  S3273C5 ::v16(){vfunc_called(this, "_ZN7S3273C53v16Ev");}
void  S3273C5 ::v17(){vfunc_called(this, "_ZN7S3273C53v17Ev");}
void  S3273C5 ::v18(){vfunc_called(this, "_ZN7S3273C53v18Ev");}
void  S3273C5 ::v19(){vfunc_called(this, "_ZN7S3273C53v19Ev");}
S3273C5 ::S3273C5(){ note_ctor("S3273C5", this);} // tgen

static void Test_S3273C5()
{
  extern Class_Descriptor cd_S3273C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,7)];
    init_test(&cd_S3273C5, buf);
    S3273C5 *dp, &lv = *(dp=new (buf) S3273C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3273C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3273C5)");
    check_field_offset(lv, s3273c5f0, ABISELECT(8,4), "S3273C5.s3273c5f0");
    check_field_offset(lv, s3273c5f1, ABISELECT(16,12), "S3273C5.s3273c5f1");
    test_class_info(&lv, &cd_S3273C5);
    dp->~S3273C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3273C5(Test_S3273C5, "S3273C5", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3273C5C1Ev();
extern void _ZN7S3273C5D1Ev();
Name_Map name_map_S3273C5[] = {
  NSPAIR(_ZN7S3273C5C1Ev),
  NSPAIR(_ZN7S3273C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3273C5[];
extern void _ZN7S3273C5D1Ev();
extern void _ZN7S3273C5D0Ev();
extern void _ZN7S3273C53v14Ev();
extern void _ZN7S3273C53v15Ev();
extern void _ZN7S3273C53v16Ev();
extern void _ZN7S3273C53v17Ev();
extern void _ZN7S3273C53v18Ev();
extern void _ZN7S3273C53v19Ev();
static  VTBL_ENTRY vtc_S3273C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3273C5[0]),
  (VTBL_ENTRY)&_ZN7S3273C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3273C5D0Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v16Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v17Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v19Ev,
};
extern VTBL_ENTRY _ZTI7S3273C5[];
extern  VTBL_ENTRY _ZTV7S3273C5[];
Class_Descriptor cd_S3273C5 = {  "S3273C5", // class name
  0,0,//no base classes
  &(vtc_S3273C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3273C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3273C5),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3273C1  : S3273C2 , virtual S3273C5 {
  short s3273c1f0[9];
  virtual void  v1(); // _ZN7S3273C12v1Ev
  virtual void  v2(); // _ZN7S3273C12v2Ev
  virtual void  v3(); // _ZN7S3273C12v3Ev
  virtual void  v4(); // _ZN7S3273C12v4Ev
  ~S3273C1(); // tgen
  S3273C1(); // tgen
};
//SIG(1 S3273C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 FL:20 FC4{ v20 v21 v22 v23 v24 v25 v26 FD Fp[5]} Fi} vd v10 v11 v12 v13 FL Fi} VBC5{ vd v14 v15 v16 v17 v18 v19 FL FD} v1 v2 v3 v4 Fs[9]}


void  S3273C1 ::v1(){vfunc_called(this, "_ZN7S3273C12v1Ev");}
void  S3273C1 ::v2(){vfunc_called(this, "_ZN7S3273C12v2Ev");}
void  S3273C1 ::v3(){vfunc_called(this, "_ZN7S3273C12v3Ev");}
void  S3273C1 ::v4(){vfunc_called(this, "_ZN7S3273C12v4Ev");}
S3273C1 ::~S3273C1(){ note_dtor("S3273C1", this);} // tgen
S3273C1 ::S3273C1(){ note_ctor("S3273C1", this);} // tgen

static void Test_S3273C1()
{
  extern Class_Descriptor cd_S3273C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,27)];
    init_test(&cd_S3273C1, buf);
    S3273C1 *dp, &lv = *(dp=new (buf) S3273C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,104), "sizeof(S3273C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3273C1)");
    check_base_class_offset(lv, (S3273C3*)(S3273C2*), 0, "S3273C1");
    check_base_class_offset(lv, (S3273C2*), 0, "S3273C1");
    check_base_class_offset(lv, (S3273C5*), ABISELECT(144,80), "S3273C1");
    check_field_offset(lv, s3273c1f0, ABISELECT(116,60), "S3273C1.s3273c1f0");
    test_class_info(&lv, &cd_S3273C1);
    dp->~S3273C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3273C1(Test_S3273C1, "S3273C1", ABISELECT(176,104));

#else // __cplusplus

extern void _ZN7S3273C1C1Ev();
extern void _ZN7S3273C1D1Ev();
Name_Map name_map_S3273C1[] = {
  NSPAIR(_ZN7S3273C1C1Ev),
  NSPAIR(_ZN7S3273C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3273C3;
extern VTBL_ENTRY _ZTI7S3273C3[];
extern  VTBL_ENTRY _ZTV7S3273C3[];
extern Class_Descriptor cd_S3273C2;
extern VTBL_ENTRY _ZTI7S3273C2[];
extern  VTBL_ENTRY _ZTV7S3273C2[];
extern Class_Descriptor cd_S3273C5;
extern VTBL_ENTRY _ZTI7S3273C5[];
extern  VTBL_ENTRY _ZTV7S3273C5[];
static Base_Class bases_S3273C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3273C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3273C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3273C5,    ABISELECT(144,80), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3273C1[];
extern void _ZN7S3273C1D1Ev();
extern void _ZN7S3273C1D0Ev();
extern void _ZN7S3273C32v5Ev();
extern void _ZN7S3273C32v6Ev();
extern void _ZN7S3273C32v7Ev();
extern void _ZN7S3273C32v8Ev();
extern void _ZN7S3273C32v9Ev();
extern void _ZN7S3273C23v10Ev();
extern void _ZN7S3273C23v11Ev();
extern void _ZN7S3273C23v12Ev();
extern void _ZN7S3273C23v13Ev();
extern void _ZN7S3273C12v1Ev();
extern void _ZN7S3273C12v2Ev();
extern void _ZN7S3273C12v3Ev();
extern void _ZN7S3273C12v4Ev();
extern void ABISELECT(_ZTv0_n24_N7S3273C1D1Ev,_ZTv0_n12_N7S3273C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S3273C1D1Ev,_ZThn80_N7S3273C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3273C1D0Ev,_ZTv0_n12_N7S3273C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S3273C1D0Ev,_ZThn80_N7S3273C1D0Ev)() __attribute__((weak));
extern void _ZN7S3273C53v14Ev();
extern void _ZN7S3273C53v15Ev();
extern void _ZN7S3273C53v16Ev();
extern void _ZN7S3273C53v17Ev();
extern void _ZN7S3273C53v18Ev();
extern void _ZN7S3273C53v19Ev();
static  VTBL_ENTRY vtc_S3273C1[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S3273C1[0]),
  (VTBL_ENTRY)&_ZN7S3273C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3273C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3273C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3273C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3273C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3273C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3273C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3273C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3273C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3273C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3273C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S3273C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3273C1D1Ev,_ZTv0_n12_N7S3273C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3273C1D0Ev,_ZTv0_n12_N7S3273C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3273C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v16Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v17Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3273C53v19Ev,
};
extern VTBL_ENTRY _ZTV7S3273C1[];
static  VTT_ENTRY vtt_S3273C1[] = {
  {&(_ZTV7S3273C1[3]),  3,35},
  {&(_ZTV7S3273C1[27]),  27,35},
};
extern VTBL_ENTRY _ZTI7S3273C1[];
extern  VTBL_ENTRY _ZTV7S3273C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3273C1[];
static VTBL_ENTRY alt_thunk_names150[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3273C1D0Ev,_ZTv0_n12_N7S3273C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S3273C1D0Ev,_ZThn80_N7S3273C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3273C1D1Ev,_ZTv0_n12_N7S3273C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S3273C1D1Ev,_ZThn80_N7S3273C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3273C1 = {  "S3273C1", // class name
  bases_S3273C1, 3,
  &(vtc_S3273C1[0]), // expected_vtbl_contents
  &(vtt_S3273C1[0]), // expected_vtt_contents
  ABISELECT(176,104), // object size
  NSPAIRA(_ZTI7S3273C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3273C1),35, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3273C1),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names150,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21061C4  {
  void *s21061c4f0[4];
  virtual void  v2(); // _ZN8S21061C42v2Ev
  virtual void  v3(); // _ZN8S21061C42v3Ev
  virtual void  v4(); // _ZN8S21061C42v4Ev
  virtual void  v5(); // _ZN8S21061C42v5Ev
  virtual void  v6(); // _ZN8S21061C42v6Ev
  ~S21061C4(); // tgen
  S21061C4(); // tgen
};
//SIG(-1 S21061C4) C1{ v1 v2 v3 v4 v5 Fp[4]}


void  S21061C4 ::v2(){vfunc_called(this, "_ZN8S21061C42v2Ev");}
void  S21061C4 ::v3(){vfunc_called(this, "_ZN8S21061C42v3Ev");}
void  S21061C4 ::v4(){vfunc_called(this, "_ZN8S21061C42v4Ev");}
void  S21061C4 ::v5(){vfunc_called(this, "_ZN8S21061C42v5Ev");}
void  S21061C4 ::v6(){vfunc_called(this, "_ZN8S21061C42v6Ev");}
S21061C4 ::~S21061C4(){ note_dtor("S21061C4", this);} // tgen
S21061C4 ::S21061C4(){ note_ctor("S21061C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S21061C4C1Ev();
extern void _ZN8S21061C4D1Ev();
Name_Map name_map_S21061C4[] = {
  NSPAIR(_ZN8S21061C4C1Ev),
  NSPAIR(_ZN8S21061C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21061C4[];
extern void _ZN8S21061C42v2Ev();
extern void _ZN8S21061C42v3Ev();
extern void _ZN8S21061C42v4Ev();
extern void _ZN8S21061C42v5Ev();
extern void _ZN8S21061C42v6Ev();
static  VTBL_ENTRY vtc_S21061C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C4[0]),
  (VTBL_ENTRY)&_ZN8S21061C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v4Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S21061C4[];
extern  VTBL_ENTRY _ZTV8S21061C4[];
Class_Descriptor cd_S21061C4 = {  "S21061C4", // class name
  0,0,//no base classes
  &(vtc_S21061C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S21061C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21061C4),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  S21061C3  : virtual S21061C4 {
  ::S19553C7 s21061c3f0;
  virtual void  v7(); // _ZN8S21061C32v7Ev
  virtual void  v8(); // _ZN8S21061C32v8Ev
  virtual void  v9(); // _ZN8S21061C32v9Ev
  virtual void  v10(); // _ZN8S21061C33v10Ev
  ~S21061C3(); // tgen
  S21061C3(); // tgen
};
//SIG(-1 S21061C3) C1{ VBC2{ v5 v6 v7 v8 v9 Fp[4]} v1 v2 v3 v4 FC3{ m FC4{ v10 v11 v12 v13 v14 v15 v16 FD Fp[5]}}}


void  S21061C3 ::v7(){vfunc_called(this, "_ZN8S21061C32v7Ev");}
void  S21061C3 ::v8(){vfunc_called(this, "_ZN8S21061C32v8Ev");}
void  S21061C3 ::v9(){vfunc_called(this, "_ZN8S21061C32v9Ev");}
void  S21061C3 ::v10(){vfunc_called(this, "_ZN8S21061C33v10Ev");}
S21061C3 ::~S21061C3(){ note_dtor("S21061C3", this);} // tgen
S21061C3 ::S21061C3(){ note_ctor("S21061C3", this);} // tgen

static void Test_S21061C3()
{
  extern Class_Descriptor cd_S21061C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,16)];
    init_test(&cd_S21061C3, buf);
    S21061C3 *dp, &lv = *(dp=new (buf) S21061C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,60), "sizeof(S21061C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21061C3)");
    check_base_class_offset(lv, (S21061C4*), ABISELECT(96,40), "S21061C3");
    check_field_offset(lv, s21061c3f0, ABISELECT(16,4), "S21061C3.s21061c3f0");
    test_class_info(&lv, &cd_S21061C3);
    dp->~S21061C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21061C3(Test_S21061C3, "S21061C3", ABISELECT(144,60));

#else // __cplusplus

extern void _ZN8S21061C3C1Ev();
extern void _ZN8S21061C3D1Ev();
Name_Map name_map_S21061C3[] = {
  NSPAIR(_ZN8S21061C3C1Ev),
  NSPAIR(_ZN8S21061C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21061C4;
extern VTBL_ENTRY _ZTI8S21061C4[];
extern  VTBL_ENTRY _ZTV8S21061C4[];
static Base_Class bases_S21061C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21061C4,    ABISELECT(96,40), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21061C3[];
extern void _ZN8S21061C32v7Ev();
extern void _ZN8S21061C32v8Ev();
extern void _ZN8S21061C32v9Ev();
extern void _ZN8S21061C33v10Ev();
extern void _ZN8S21061C42v2Ev();
extern void _ZN8S21061C42v3Ev();
extern void _ZN8S21061C42v4Ev();
extern void _ZN8S21061C42v5Ev();
extern void _ZN8S21061C42v6Ev();
static  VTBL_ENTRY vtc_S21061C3[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C3[0]),
  (VTBL_ENTRY)&_ZN8S21061C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21061C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S21061C3[0]),
  (VTBL_ENTRY)&_ZN8S21061C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v4Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v6Ev,
};
extern VTBL_ENTRY _ZTV8S21061C3[];
static  VTT_ENTRY vtt_S21061C3[] = {
  {&(_ZTV8S21061C3[3]),  3,19},
  {&(_ZTV8S21061C3[14]),  14,19},
};
extern VTBL_ENTRY _ZTI8S21061C3[];
extern  VTBL_ENTRY _ZTV8S21061C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21061C3[];
Class_Descriptor cd_S21061C3 = {  "S21061C3", // class name
  bases_S21061C3, 1,
  &(vtc_S21061C3[0]), // expected_vtbl_contents
  &(vtt_S21061C3[0]), // expected_vtt_contents
  ABISELECT(144,60), // object size
  NSPAIRA(_ZTI8S21061C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21061C3),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21061C3),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  S21061C6  {
  long double s21061c6f0;
  void *s21061c6f1[5];
  virtual void  v11(); // _ZN8S21061C63v11Ev
  virtual void  v12(); // _ZN8S21061C63v12Ev
  virtual void  v13(); // _ZN8S21061C63v13Ev
  virtual void  v14(); // _ZN8S21061C63v14Ev
  virtual void  v15(); // _ZN8S21061C63v15Ev
  virtual void  v16(); // _ZN8S21061C63v16Ev
  virtual void  v17(); // _ZN8S21061C63v17Ev
  ~S21061C6(); // tgen
  S21061C6(); // tgen
};
//SIG(-1 S21061C6) C1{ v1 v2 v3 v4 v5 v6 v7 FD Fp[5]}


void  S21061C6 ::v11(){vfunc_called(this, "_ZN8S21061C63v11Ev");}
void  S21061C6 ::v12(){vfunc_called(this, "_ZN8S21061C63v12Ev");}
void  S21061C6 ::v13(){vfunc_called(this, "_ZN8S21061C63v13Ev");}
void  S21061C6 ::v14(){vfunc_called(this, "_ZN8S21061C63v14Ev");}
void  S21061C6 ::v15(){vfunc_called(this, "_ZN8S21061C63v15Ev");}
void  S21061C6 ::v16(){vfunc_called(this, "_ZN8S21061C63v16Ev");}
void  S21061C6 ::v17(){vfunc_called(this, "_ZN8S21061C63v17Ev");}
S21061C6 ::~S21061C6(){ note_dtor("S21061C6", this);} // tgen
S21061C6 ::S21061C6(){ note_ctor("S21061C6", this);} // tgen

static void Test_S21061C6()
{
  extern Class_Descriptor cd_S21061C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S21061C6, buf);
    S21061C6 *dp, &lv = *(dp=new (buf) S21061C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S21061C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21061C6)");
    check_field_offset(lv, s21061c6f0, ABISELECT(16,4), "S21061C6.s21061c6f0");
    check_field_offset(lv, s21061c6f1, ABISELECT(32,16), "S21061C6.s21061c6f1");
    test_class_info(&lv, &cd_S21061C6);
    dp->~S21061C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21061C6(Test_S21061C6, "S21061C6", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S21061C6C1Ev();
extern void _ZN8S21061C6D1Ev();
Name_Map name_map_S21061C6[] = {
  NSPAIR(_ZN8S21061C6C1Ev),
  NSPAIR(_ZN8S21061C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21061C6[];
extern void _ZN8S21061C63v11Ev();
extern void _ZN8S21061C63v12Ev();
extern void _ZN8S21061C63v13Ev();
extern void _ZN8S21061C63v14Ev();
extern void _ZN8S21061C63v15Ev();
extern void _ZN8S21061C63v16Ev();
extern void _ZN8S21061C63v17Ev();
static  VTBL_ENTRY vtc_S21061C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C6[0]),
  (VTBL_ENTRY)&_ZN8S21061C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v17Ev,
};
extern VTBL_ENTRY _ZTI8S21061C6[];
extern  VTBL_ENTRY _ZTV8S21061C6[];
Class_Descriptor cd_S21061C6 = {  "S21061C6", // class name
  0,0,//no base classes
  &(vtc_S21061C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S21061C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21061C6),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  S21061C7  : virtual S21061C6 , S19553C7 {
  virtual void  v18(); // _ZN8S21061C73v18Ev
  virtual void  v19(); // _ZN8S21061C73v19Ev
  virtual void  v20(); // _ZN8S21061C73v20Ev
  ~S21061C7(); // tgen
  S21061C7(); // tgen
};
//SIG(-1 S21061C7) C1{ VBC2{ v4 v5 v6 v7 v8 v9 v10 FD Fp[5]} BC3{ m FC4{ v11 v12 v13 v14 v15 v16 v17 FD Fp[5]}} v1 v2 v3}


void  S21061C7 ::v18(){vfunc_called(this, "_ZN8S21061C73v18Ev");}
void  S21061C7 ::v19(){vfunc_called(this, "_ZN8S21061C73v19Ev");}
void  S21061C7 ::v20(){vfunc_called(this, "_ZN8S21061C73v20Ev");}
S21061C7 ::~S21061C7(){ note_dtor("S21061C7", this);} // tgen
S21061C7 ::S21061C7(){ note_ctor("S21061C7", this);} // tgen

static void Test_S21061C7()
{
  extern Class_Descriptor cd_S21061C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,20)];
    init_test(&cd_S21061C7, buf);
    S21061C7 *dp, &lv = *(dp=new (buf) S21061C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,76), "sizeof(S21061C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21061C7)");
    check_base_class_offset(lv, (S21061C6*), ABISELECT(96,40), "S21061C7");
    check_base_class_offset(lv, (S19553C7*), ABISELECT(16,4), "S21061C7");
    test_class_info(&lv, &cd_S21061C7);
    dp->~S21061C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21061C7(Test_S21061C7, "S21061C7", ABISELECT(176,76));

#else // __cplusplus

extern void _ZN8S21061C7C1Ev();
extern void _ZN8S21061C7D1Ev();
Name_Map name_map_S21061C7[] = {
  NSPAIR(_ZN8S21061C7C1Ev),
  NSPAIR(_ZN8S21061C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21061C6;
extern VTBL_ENTRY _ZTI8S21061C6[];
extern  VTBL_ENTRY _ZTV8S21061C6[];
extern Class_Descriptor cd_S19553C7;
extern VTBL_ENTRY _ZTI8S19553C7[];
static Base_Class bases_S21061C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21061C6,    ABISELECT(96,40), //bcp->offset
    6, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19553C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21061C7[];
extern void _ZN8S21061C73v18Ev();
extern void _ZN8S21061C73v19Ev();
extern void _ZN8S21061C73v20Ev();
extern void _ZN8S21061C63v11Ev();
extern void _ZN8S21061C63v12Ev();
extern void _ZN8S21061C63v13Ev();
extern void _ZN8S21061C63v14Ev();
extern void _ZN8S21061C63v15Ev();
extern void _ZN8S21061C63v16Ev();
extern void _ZN8S21061C63v17Ev();
static  VTBL_ENTRY vtc_S21061C7[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C7[0]),
  (VTBL_ENTRY)&_ZN8S21061C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v19Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S21061C7[0]),
  (VTBL_ENTRY)&_ZN8S21061C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v17Ev,
};
extern VTBL_ENTRY _ZTV8S21061C7[];
static  VTT_ENTRY vtt_S21061C7[] = {
  {&(_ZTV8S21061C7[3]),  3,22},
  {&(_ZTV8S21061C7[15]),  15,22},
};
extern VTBL_ENTRY _ZTI8S21061C7[];
extern  VTBL_ENTRY _ZTV8S21061C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21061C7[];
Class_Descriptor cd_S21061C7 = {  "S21061C7", // class name
  bases_S21061C7, 2,
  &(vtc_S21061C7[0]), // expected_vtbl_contents
  &(vtt_S21061C7[0]), // expected_vtt_contents
  ABISELECT(176,76), // object size
  NSPAIRA(_ZTI8S21061C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21061C7),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21061C7),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  S21061C2  : virtual S21061C3 , S21061C7 {
  int s21061c2f0[11];
  virtual  ~S21061C2(); // _ZN8S21061C2D2Ev
  virtual void  v21(); // _ZN8S21061C23v21Ev
  virtual void  v22(); // _ZN8S21061C23v22Ev
  virtual void  v23(); // _ZN8S21061C23v23Ev
  virtual void  v24(); // _ZN8S21061C23v24Ev
  S21061C2(); // tgen
};
//SIG(-1 S21061C2) C1{ VBC2{ VBC3{ v5 v6 v7 v8 v9 Fp[4]} v10 v11 v12 v13 FC4{ m FC5{ v24 v25 v26 v27 v28 v29 v30 FD Fp[5]}}} BC6{ VBC7{ v14 v15 v16 v17 v18 v19 v20 FD Fp[5]} BC4 v21 v22 v23} vd v1 v2 v3 v4 Fi[11]}


 S21061C2 ::~S21061C2(){ note_dtor("S21061C2", this);}
void  S21061C2 ::v21(){vfunc_called(this, "_ZN8S21061C23v21Ev");}
void  S21061C2 ::v22(){vfunc_called(this, "_ZN8S21061C23v22Ev");}
void  S21061C2 ::v23(){vfunc_called(this, "_ZN8S21061C23v23Ev");}
void  S21061C2 ::v24(){vfunc_called(this, "_ZN8S21061C23v24Ev");}
S21061C2 ::S21061C2(){ note_ctor("S21061C2", this);} // tgen

static void Test_S21061C2()
{
  extern Class_Descriptor cd_S21061C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,46)];
    init_test(&cd_S21061C2, buf);
    S21061C2 *dp, &lv = *(dp=new (buf) S21061C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,180), "sizeof(S21061C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21061C2)");
    check_base_class_offset(lv, (S21061C4*)(S21061C3*), ABISELECT(240,124), "S21061C2");
    check_base_class_offset(lv, (S21061C3*), ABISELECT(144,84), "S21061C2");
    check_base_class_offset(lv, (S21061C6*)(S21061C7*), ABISELECT(288,144), "S21061C2");
    check_base_class_offset(lv, (S19553C7*)(S21061C7*), ABISELECT(16,4), "S21061C2");
    check_base_class_offset(lv, (S21061C7*), 0, "S21061C2");
    check_field_offset(lv, s21061c2f0, ABISELECT(96,40), "S21061C2.s21061c2f0");
    test_class_info(&lv, &cd_S21061C2);
    dp->~S21061C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21061C2(Test_S21061C2, "S21061C2", ABISELECT(368,180));

#else // __cplusplus

extern void _ZN8S21061C2C1Ev();
extern void _ZN8S21061C2D2Ev();
Name_Map name_map_S21061C2[] = {
  NSPAIR(_ZN8S21061C2C1Ev),
  NSPAIR(_ZN8S21061C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21061C4;
extern VTBL_ENTRY _ZTI8S21061C4[];
extern  VTBL_ENTRY _ZTV8S21061C4[];
extern Class_Descriptor cd_S21061C3;
extern VTBL_ENTRY _ZTI8S21061C3[];
extern  VTBL_ENTRY _ZTV8S21061C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21061C3[];
extern Class_Descriptor cd_S21061C6;
extern VTBL_ENTRY _ZTI8S21061C6[];
extern  VTBL_ENTRY _ZTV8S21061C6[];
extern Class_Descriptor cd_S19553C7;
extern VTBL_ENTRY _ZTI8S19553C7[];
extern Class_Descriptor cd_S21061C7;
extern VTBL_ENTRY _ZTI8S21061C7[];
extern  VTBL_ENTRY _ZTV8S21061C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21061C7[];
static Base_Class bases_S21061C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21061C4,    ABISELECT(240,124), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21061C3,    ABISELECT(144,84), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21061C6,    ABISELECT(288,144), //bcp->offset
    37, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19553C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21061C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21061C2[];
extern void _ZN8S21061C73v18Ev();
extern void _ZN8S21061C73v19Ev();
extern void _ZN8S21061C73v20Ev();
extern void _ZN8S21061C2D1Ev();
extern void _ZN8S21061C2D0Ev();
extern void _ZN8S21061C23v21Ev();
extern void _ZN8S21061C23v22Ev();
extern void _ZN8S21061C23v23Ev();
extern void _ZN8S21061C23v24Ev();
extern void _ZN8S21061C32v7Ev();
extern void _ZN8S21061C32v8Ev();
extern void _ZN8S21061C32v9Ev();
extern void _ZN8S21061C33v10Ev();
extern void _ZN8S21061C42v2Ev();
extern void _ZN8S21061C42v3Ev();
extern void _ZN8S21061C42v4Ev();
extern void _ZN8S21061C42v5Ev();
extern void _ZN8S21061C42v6Ev();
extern void _ZN8S21061C63v11Ev();
extern void _ZN8S21061C63v12Ev();
extern void _ZN8S21061C63v13Ev();
extern void _ZN8S21061C63v14Ev();
extern void _ZN8S21061C63v15Ev();
extern void _ZN8S21061C63v16Ev();
extern void _ZN8S21061C63v17Ev();
static  VTBL_ENTRY vtc_S21061C2[] = {
  ABISELECT(240,124),
  ABISELECT(144,84),
  ABISELECT(288,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C2[0]),
  (VTBL_ENTRY)&_ZN8S21061C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v19Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v20Ev,
  (VTBL_ENTRY)&_ZN8S21061C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21061C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v21Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v22Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v24Ev,
  0,
  0,
  0,
  0,
  ABISELECT(96,40),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21061C2[0]),
  (VTBL_ENTRY)&_ZN8S21061C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21061C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S21061C2[0]),
  (VTBL_ENTRY)&_ZN8S21061C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v4Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI8S21061C2[0]),
  (VTBL_ENTRY)&_ZN8S21061C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v17Ev,
};
extern VTBL_ENTRY _ZTV8S21061C2[];
extern void _ZN8S21061C73v18Ev();
extern void _ZN8S21061C73v19Ev();
extern void _ZN8S21061C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C7__8S21061C2[] = {
  ABISELECT(288,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C7[0]),
  (VTBL_ENTRY)&_ZN8S21061C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v19Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v20Ev,
};
extern void _ZN8S21061C63v11Ev();
extern void _ZN8S21061C63v12Ev();
extern void _ZN8S21061C63v13Ev();
extern void _ZN8S21061C63v14Ev();
extern void _ZN8S21061C63v15Ev();
extern void _ZN8S21061C63v16Ev();
extern void _ZN8S21061C63v17Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C6__8S21061C7__8S21061C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI8S21061C7[0]),
  (VTBL_ENTRY)&_ZN8S21061C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v17Ev,
};
extern void _ZN8S21061C32v7Ev();
extern void _ZN8S21061C32v8Ev();
extern void _ZN8S21061C32v9Ev();
extern void _ZN8S21061C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C3__8S21061C2[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C3[0]),
  (VTBL_ENTRY)&_ZN8S21061C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21061C33v10Ev,
};
extern void _ZN8S21061C42v2Ev();
extern void _ZN8S21061C42v3Ev();
extern void _ZN8S21061C42v4Ev();
extern void _ZN8S21061C42v5Ev();
extern void _ZN8S21061C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C4__8S21061C3__8S21061C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S21061C3[0]),
  (VTBL_ENTRY)&_ZN8S21061C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v4Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v6Ev,
};
static  VTT_ENTRY vtt_S21061C2[] = {
  {&(_ZTV8S21061C2[5]),  5,53},
  {&(_tg__ZTV8S21061C7__8S21061C2[3]),  3,6},
  {&(_tg__ZTV8S21061C6__8S21061C7__8S21061C2[9]),  9,16},
  {&(_ZTV8S21061C2[21]),  21,53},
  {&(_ZTV8S21061C2[32]),  32,53},
  {&(_ZTV8S21061C2[46]),  46,53},
  {&(_tg__ZTV8S21061C3__8S21061C2[3]),  3,7},
  {&(_tg__ZTV8S21061C4__8S21061C3__8S21061C2[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S21061C2[];
extern  VTBL_ENTRY _ZTV8S21061C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21061C2[];
Class_Descriptor cd_S21061C2 = {  "S21061C2", // class name
  bases_S21061C2, 5,
  &(vtc_S21061C2[0]), // expected_vtbl_contents
  &(vtt_S21061C2[0]), // expected_vtt_contents
  ABISELECT(368,180), // object size
  NSPAIRA(_ZTI8S21061C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21061C2),53, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21061C2),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21061C1  : virtual S21061C2 {
  virtual  ~S21061C1(); // _ZN8S21061C1D2Ev
  virtual void  v1(); // _ZN8S21061C12v1Ev
  S21061C1(); // tgen
};
//SIG(1 S21061C1) C1{ VBC2{ VBC3{ VBC4{ v2 v3 v4 v5 v6 Fp[4]} v7 v8 v9 v10 FC5{ m FC6{ v25 v26 v27 v28 v29 v30 v31 FD Fp[5]}}} BC7{ VBC8{ v11 v12 v13 v14 v15 v16 v17 FD Fp[5]} BC5 v18 v19 v20} vd v21 v22 v23 v24 Fi[11]} vd v1}


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

static void Test_S21061C1()
{
  extern Class_Descriptor cd_S21061C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,47)];
    init_test(&cd_S21061C1, buf);
    S21061C1 *dp, &lv = *(dp=new (buf) S21061C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,184), "sizeof(S21061C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21061C1)");
    check_base_class_offset(lv, (S21061C4*)(S21061C3*), ABISELECT(256,128), "S21061C1");
    check_base_class_offset(lv, (S21061C3*)(S21061C2*), ABISELECT(160,88), "S21061C1");
    check_base_class_offset(lv, (S21061C6*)(S21061C7*)(S21061C2*), ABISELECT(304,148), "S21061C1");
    check_base_class_offset(lv, (S19553C7*)(S21061C7*)(S21061C2*), ABISELECT(32,8), "S21061C1");
    check_base_class_offset(lv, (S21061C7*)(S21061C2*), ABISELECT(16,4), "S21061C1");
    check_base_class_offset(lv, (S21061C2*), ABISELECT(16,4), "S21061C1");
    test_class_info(&lv, &cd_S21061C1);
    dp->~S21061C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21061C1(Test_S21061C1, "S21061C1", ABISELECT(384,184));

#else // __cplusplus

extern void _ZN8S21061C1C1Ev();
extern void _ZN8S21061C1D2Ev();
Name_Map name_map_S21061C1[] = {
  NSPAIR(_ZN8S21061C1C1Ev),
  NSPAIR(_ZN8S21061C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21061C4;
extern VTBL_ENTRY _ZTI8S21061C4[];
extern  VTBL_ENTRY _ZTV8S21061C4[];
extern Class_Descriptor cd_S21061C3;
extern VTBL_ENTRY _ZTI8S21061C3[];
extern  VTBL_ENTRY _ZTV8S21061C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21061C3[];
extern Class_Descriptor cd_S21061C6;
extern VTBL_ENTRY _ZTI8S21061C6[];
extern  VTBL_ENTRY _ZTV8S21061C6[];
extern Class_Descriptor cd_S19553C7;
extern VTBL_ENTRY _ZTI8S19553C7[];
extern Class_Descriptor cd_S21061C7;
extern VTBL_ENTRY _ZTI8S21061C7[];
extern  VTBL_ENTRY _ZTV8S21061C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21061C7[];
extern Class_Descriptor cd_S21061C2;
extern VTBL_ENTRY _ZTI8S21061C2[];
extern  VTBL_ENTRY _ZTV8S21061C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21061C2[];
static Base_Class bases_S21061C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21061C4,    ABISELECT(256,128), //bcp->offset
    42, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21061C3,    ABISELECT(160,88), //bcp->offset
    31, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21061C6,    ABISELECT(304,148), //bcp->offset
    54, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19553C7,    ABISELECT(32,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21061C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21061C2,    ABISELECT(16,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21061C1[];
extern void _ZN8S21061C1D1Ev();
extern void _ZN8S21061C1D0Ev();
extern void _ZN8S21061C12v1Ev();
extern void _ZN8S21061C73v18Ev();
extern void _ZN8S21061C73v19Ev();
extern void _ZN8S21061C73v20Ev();
extern void ABISELECT(_ZTv0_n72_N8S21061C1D1Ev,_ZTv0_n36_N8S21061C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21061C1D1Ev,_ZThn4_N8S21061C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21061C1D0Ev,_ZTv0_n36_N8S21061C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21061C1D0Ev,_ZThn4_N8S21061C1D0Ev)() __attribute__((weak));
extern void _ZN8S21061C23v21Ev();
extern void _ZN8S21061C23v22Ev();
extern void _ZN8S21061C23v23Ev();
extern void _ZN8S21061C23v24Ev();
extern void _ZN8S21061C32v7Ev();
extern void _ZN8S21061C32v8Ev();
extern void _ZN8S21061C32v9Ev();
extern void _ZN8S21061C33v10Ev();
extern void _ZN8S21061C42v2Ev();
extern void _ZN8S21061C42v3Ev();
extern void _ZN8S21061C42v4Ev();
extern void _ZN8S21061C42v5Ev();
extern void _ZN8S21061C42v6Ev();
extern void _ZN8S21061C63v11Ev();
extern void _ZN8S21061C63v12Ev();
extern void _ZN8S21061C63v13Ev();
extern void _ZN8S21061C63v14Ev();
extern void _ZN8S21061C63v15Ev();
extern void _ZN8S21061C63v16Ev();
extern void _ZN8S21061C63v17Ev();
static  VTBL_ENTRY vtc_S21061C1[] = {
  ABISELECT(304,148),
  ABISELECT(256,128),
  ABISELECT(160,88),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C1[0]),
  (VTBL_ENTRY)&_ZN8S21061C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21061C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21061C12v1Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  0,
  0,
  0,
  ABISELECT(240,124),
  ABISELECT(144,84),
  ABISELECT(288,144),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21061C1[0]),
  (VTBL_ENTRY)&_ZN8S21061C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v19Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21061C1D1Ev,_ZTv0_n36_N8S21061C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21061C1D0Ev,_ZTv0_n36_N8S21061C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21061C23v21Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v22Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v24Ev,
  0,
  0,
  0,
  0,
  ABISELECT(96,40),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S21061C1[0]),
  (VTBL_ENTRY)&_ZN8S21061C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21061C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI8S21061C1[0]),
  (VTBL_ENTRY)&_ZN8S21061C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v4Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-148),
  (VTBL_ENTRY)&(_ZTI8S21061C1[0]),
  (VTBL_ENTRY)&_ZN8S21061C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v17Ev,
};
extern VTBL_ENTRY _ZTV8S21061C1[];
extern void _ZN8S21061C73v18Ev();
extern void _ZN8S21061C73v19Ev();
extern void _ZN8S21061C73v20Ev();
extern void _ZN8S21061C2D1Ev();
extern void _ZN8S21061C2D0Ev();
extern void _ZN8S21061C23v21Ev();
extern void _ZN8S21061C23v22Ev();
extern void _ZN8S21061C23v23Ev();
extern void _ZN8S21061C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C2__8S21061C1[] = {
  ABISELECT(240,124),
  ABISELECT(144,84),
  ABISELECT(288,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C2[0]),
  (VTBL_ENTRY)&_ZN8S21061C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v19Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v20Ev,
  (VTBL_ENTRY)&_ZN8S21061C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21061C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v21Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v22Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v23Ev,
  (VTBL_ENTRY)&_ZN8S21061C23v24Ev,
};
extern void _ZN8S21061C73v18Ev();
extern void _ZN8S21061C73v19Ev();
extern void _ZN8S21061C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C78S21061C2__8S21061C1[] = {
  ABISELECT(288,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C7[0]),
  (VTBL_ENTRY)&_ZN8S21061C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v19Ev,
  (VTBL_ENTRY)&_ZN8S21061C73v20Ev,
};
extern void _ZN8S21061C63v11Ev();
extern void _ZN8S21061C63v12Ev();
extern void _ZN8S21061C63v13Ev();
extern void _ZN8S21061C63v14Ev();
extern void _ZN8S21061C63v15Ev();
extern void _ZN8S21061C63v16Ev();
extern void _ZN8S21061C63v17Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C6__8S21061C78S21061C2__8S21061C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI8S21061C7[0]),
  (VTBL_ENTRY)&_ZN8S21061C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v17Ev,
};
extern void _ZN8S21061C32v7Ev();
extern void _ZN8S21061C32v8Ev();
extern void _ZN8S21061C32v9Ev();
extern void _ZN8S21061C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C3__8S21061C2__8S21061C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(96,40),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21061C2[0]),
  (VTBL_ENTRY)&_ZN8S21061C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21061C33v10Ev,
};
extern void _ZN8S21061C42v2Ev();
extern void _ZN8S21061C42v3Ev();
extern void _ZN8S21061C42v4Ev();
extern void _ZN8S21061C42v5Ev();
extern void _ZN8S21061C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C4__8S21061C2__8S21061C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI8S21061C2[0]),
  (VTBL_ENTRY)&_ZN8S21061C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v4Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v6Ev,
};
extern void _ZN8S21061C63v11Ev();
extern void _ZN8S21061C63v12Ev();
extern void _ZN8S21061C63v13Ev();
extern void _ZN8S21061C63v14Ev();
extern void _ZN8S21061C63v15Ev();
extern void _ZN8S21061C63v16Ev();
extern void _ZN8S21061C63v17Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C6__8S21061C2__8S21061C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI8S21061C2[0]),
  (VTBL_ENTRY)&_ZN8S21061C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v13Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v14Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v15Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v16Ev,
  (VTBL_ENTRY)&_ZN8S21061C63v17Ev,
};
extern void _ZN8S21061C32v7Ev();
extern void _ZN8S21061C32v8Ev();
extern void _ZN8S21061C32v9Ev();
extern void _ZN8S21061C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C3__8S21061C1[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21061C3[0]),
  (VTBL_ENTRY)&_ZN8S21061C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v8Ev,
  (VTBL_ENTRY)&_ZN8S21061C32v9Ev,
  (VTBL_ENTRY)&_ZN8S21061C33v10Ev,
};
extern void _ZN8S21061C42v2Ev();
extern void _ZN8S21061C42v3Ev();
extern void _ZN8S21061C42v4Ev();
extern void _ZN8S21061C42v5Ev();
extern void _ZN8S21061C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21061C4__8S21061C3__8S21061C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S21061C3[0]),
  (VTBL_ENTRY)&_ZN8S21061C42v2Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v3Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v4Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21061C42v6Ev,
};
static  VTT_ENTRY vtt_S21061C1[] = {
  {&(_ZTV8S21061C1[6]),  6,70},
  {&(_ZTV8S21061C1[22]),  22,70},
  {&(_ZTV8S21061C1[38]),  38,70},
  {&(_ZTV8S21061C1[49]),  49,70},
  {&(_ZTV8S21061C1[63]),  63,70},
  {&(_tg__ZTV8S21061C2__8S21061C1[5]),  5,14},
  {&(_tg__ZTV8S21061C78S21061C2__8S21061C1[3]),  3,6},
  {&(_tg__ZTV8S21061C6__8S21061C78S21061C2__8S21061C1[9]),  9,16},
  {&(_tg__ZTV8S21061C3__8S21061C2__8S21061C1[7]),  7,11},
  {&(_tg__ZTV8S21061C4__8S21061C2__8S21061C1[7]),  7,12},
  {&(_tg__ZTV8S21061C6__8S21061C2__8S21061C1[9]),  9,16},
  {&(_tg__ZTV8S21061C3__8S21061C1[3]),  3,7},
  {&(_tg__ZTV8S21061C4__8S21061C3__8S21061C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S21061C1[];
extern  VTBL_ENTRY _ZTV8S21061C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21061C1[];
static VTBL_ENTRY alt_thunk_names151[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21061C1D0Ev,_ZTv0_n36_N8S21061C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21061C1D0Ev,_ZThn4_N8S21061C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21061C1D1Ev,_ZTv0_n36_N8S21061C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21061C1D1Ev,_ZThn4_N8S21061C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21061C1 = {  "S21061C1", // class name
  bases_S21061C1, 6,
  &(vtc_S21061C1[0]), // expected_vtbl_contents
  &(vtt_S21061C1[0]), // expected_vtt_contents
  ABISELECT(384,184), // object size
  NSPAIRA(_ZTI8S21061C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21061C1),70, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21061C1),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names151,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4396C3  {
  ::S2213C20_nt s4396c3f0;
  int s4396c3f1[2];
  char s4396c3f2;
  virtual  ~S4396C3(); // _ZN7S4396C3D1Ev
  virtual void  v2(); // _ZN7S4396C32v2Ev
  virtual void  v3(); // _ZN7S4396C32v3Ev
  virtual void  v4(); // _ZN7S4396C32v4Ev
  S4396C3(); // tgen
};
//SIG(-1 S4396C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4396C3 ::~S4396C3(){ note_dtor("S4396C3", this);}
void  S4396C3 ::v2(){vfunc_called(this, "_ZN7S4396C32v2Ev");}
void  S4396C3 ::v3(){vfunc_called(this, "_ZN7S4396C32v3Ev");}
void  S4396C3 ::v4(){vfunc_called(this, "_ZN7S4396C32v4Ev");}
S4396C3 ::S4396C3(){ note_ctor("S4396C3", this);} // tgen

static void Test_S4396C3()
{
  extern Class_Descriptor cd_S4396C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4396C3, buf);
    S4396C3 *dp, &lv = *(dp=new (buf) S4396C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4396C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4396C3)");
    check_field_offset(lv, s4396c3f0, ABISELECT(8,4), "S4396C3.s4396c3f0");
    check_field_offset(lv, s4396c3f1, ABISELECT(24,16), "S4396C3.s4396c3f1");
    check_field_offset(lv, s4396c3f2, ABISELECT(32,24), "S4396C3.s4396c3f2");
    test_class_info(&lv, &cd_S4396C3);
    dp->~S4396C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4396C3(Test_S4396C3, "S4396C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4396C3C1Ev();
extern void _ZN7S4396C3D1Ev();
Name_Map name_map_S4396C3[] = {
  NSPAIR(_ZN7S4396C3C1Ev),
  NSPAIR(_ZN7S4396C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4396C3[];
extern void _ZN7S4396C3D1Ev();
extern void _ZN7S4396C3D0Ev();
extern void _ZN7S4396C32v2Ev();
extern void _ZN7S4396C32v3Ev();
extern void _ZN7S4396C32v4Ev();
static  VTBL_ENTRY vtc_S4396C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4396C3[0]),
  (VTBL_ENTRY)&_ZN7S4396C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4396C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4396C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4396C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4396C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4396C3[];
extern  VTBL_ENTRY _ZTV7S4396C3[];
Class_Descriptor cd_S4396C3 = {  "S4396C3", // class name
  0,0,//no base classes
  &(vtc_S4396C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4396C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4396C3),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  S4396C2  : S4396C3 {
  void *s4396c2f0;
  virtual void  v5(); // _ZN7S4396C22v5Ev
  virtual void  v6(); // _ZN7S4396C22v6Ev
  ~S4396C2(); // tgen
  S4396C2(); // tgen
};
//SIG(-1 S4396C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4396C2 ::v5(){vfunc_called(this, "_ZN7S4396C22v5Ev");}
void  S4396C2 ::v6(){vfunc_called(this, "_ZN7S4396C22v6Ev");}
S4396C2 ::~S4396C2(){ note_dtor("S4396C2", this);} // tgen
S4396C2 ::S4396C2(){ note_ctor("S4396C2", this);} // tgen

static void Test_S4396C2()
{
  extern Class_Descriptor cd_S4396C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4396C2, buf);
    S4396C2 *dp, &lv = *(dp=new (buf) S4396C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4396C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4396C2)");
    check_base_class_offset(lv, (S4396C3*), 0, "S4396C2");
    check_field_offset(lv, s4396c2f0, ABISELECT(40,28), "S4396C2.s4396c2f0");
    test_class_info(&lv, &cd_S4396C2);
    dp->~S4396C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4396C2(Test_S4396C2, "S4396C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4396C2C1Ev();
extern void _ZN7S4396C2D1Ev();
Name_Map name_map_S4396C2[] = {
  NSPAIR(_ZN7S4396C2C1Ev),
  NSPAIR(_ZN7S4396C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4396C3;
extern VTBL_ENTRY _ZTI7S4396C3[];
extern  VTBL_ENTRY _ZTV7S4396C3[];
static Base_Class bases_S4396C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4396C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4396C2[];
extern void _ZN7S4396C2D1Ev();
extern void _ZN7S4396C2D0Ev();
extern void _ZN7S4396C32v2Ev();
extern void _ZN7S4396C32v3Ev();
extern void _ZN7S4396C32v4Ev();
extern void _ZN7S4396C22v5Ev();
extern void _ZN7S4396C22v6Ev();
static  VTBL_ENTRY vtc_S4396C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4396C2[0]),
  (VTBL_ENTRY)&_ZN7S4396C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4396C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4396C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4396C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4396C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4396C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4396C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S4396C2[];
extern  VTBL_ENTRY _ZTV7S4396C2[];
Class_Descriptor cd_S4396C2 = {  "S4396C2", // class name
  bases_S4396C2, 1,
  &(vtc_S4396C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4396C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4396C2),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  S4396C1  : S4396C2 {
  ::S18288C7 s4396c1f0;
  char s4396c1f1;
  virtual  ~S4396C1(); // _ZN7S4396C1D1Ev
  virtual void  v1(); // _ZN7S4396C12v1Ev
  S4396C1(); // tgen
};
//SIG(1 S4396C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} vd v1 FC6{ FC7{ FC8{ Fc[20]} Fc[16]} FC8 FC9{ Fc[128]} FU10{ FC11{ Fi Fi} FL FC12{ Fi Fi Fi Fc[128]}}} Fc}


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

static void Test_S4396C1()
{
  extern Class_Descriptor cd_S4396C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,91)];
    init_test(&cd_S4396C1, buf);
    S4396C1 *dp, &lv = *(dp=new (buf) S4396C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,360), "sizeof(S4396C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4396C1)");
    check_base_class_offset(lv, (S4396C3*)(S4396C2*), 0, "S4396C1");
    check_base_class_offset(lv, (S4396C2*), 0, "S4396C1");
    check_field_offset(lv, s4396c1f0, ABISELECT(48,32), "S4396C1.s4396c1f0");
    check_field_offset(lv, s4396c1f1, ABISELECT(376,356), "S4396C1.s4396c1f1");
    test_class_info(&lv, &cd_S4396C1);
    dp->~S4396C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4396C1(Test_S4396C1, "S4396C1", ABISELECT(384,360));

#else // __cplusplus

extern void _ZN7S4396C1C1Ev();
extern void _ZN7S4396C1D1Ev();
Name_Map name_map_S4396C1[] = {
  NSPAIR(_ZN7S4396C1C1Ev),
  NSPAIR(_ZN7S4396C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4396C3;
extern VTBL_ENTRY _ZTI7S4396C3[];
extern  VTBL_ENTRY _ZTV7S4396C3[];
extern Class_Descriptor cd_S4396C2;
extern VTBL_ENTRY _ZTI7S4396C2[];
extern  VTBL_ENTRY _ZTV7S4396C2[];
static Base_Class bases_S4396C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4396C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4396C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4396C1[];
extern void _ZN7S4396C1D1Ev();
extern void _ZN7S4396C1D0Ev();
extern void _ZN7S4396C32v2Ev();
extern void _ZN7S4396C32v3Ev();
extern void _ZN7S4396C32v4Ev();
extern void _ZN7S4396C22v5Ev();
extern void _ZN7S4396C22v6Ev();
extern void _ZN7S4396C12v1Ev();
static  VTBL_ENTRY vtc_S4396C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4396C1[0]),
  (VTBL_ENTRY)&_ZN7S4396C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4396C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4396C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4396C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4396C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4396C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4396C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4396C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4396C1[];
extern  VTBL_ENTRY _ZTV7S4396C1[];
Class_Descriptor cd_S4396C1 = {  "S4396C1", // class name
  bases_S4396C1, 2,
  &(vtc_S4396C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,360), // object size
  NSPAIRA(_ZTI7S4396C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4396C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4397C3  {
  ::S2213C20_nt s4397c3f0;
  int s4397c3f1[2];
  char s4397c3f2;
  virtual  ~S4397C3(); // _ZN7S4397C3D1Ev
  virtual void  v2(); // _ZN7S4397C32v2Ev
  virtual void  v3(); // _ZN7S4397C32v3Ev
  virtual void  v4(); // _ZN7S4397C32v4Ev
  S4397C3(); // tgen
};
//SIG(-1 S4397C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4397C3 ::~S4397C3(){ note_dtor("S4397C3", this);}
void  S4397C3 ::v2(){vfunc_called(this, "_ZN7S4397C32v2Ev");}
void  S4397C3 ::v3(){vfunc_called(this, "_ZN7S4397C32v3Ev");}
void  S4397C3 ::v4(){vfunc_called(this, "_ZN7S4397C32v4Ev");}
S4397C3 ::S4397C3(){ note_ctor("S4397C3", this);} // tgen

static void Test_S4397C3()
{
  extern Class_Descriptor cd_S4397C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4397C3, buf);
    S4397C3 *dp, &lv = *(dp=new (buf) S4397C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4397C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4397C3)");
    check_field_offset(lv, s4397c3f0, ABISELECT(8,4), "S4397C3.s4397c3f0");
    check_field_offset(lv, s4397c3f1, ABISELECT(24,16), "S4397C3.s4397c3f1");
    check_field_offset(lv, s4397c3f2, ABISELECT(32,24), "S4397C3.s4397c3f2");
    test_class_info(&lv, &cd_S4397C3);
    dp->~S4397C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4397C3(Test_S4397C3, "S4397C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4397C3C1Ev();
extern void _ZN7S4397C3D1Ev();
Name_Map name_map_S4397C3[] = {
  NSPAIR(_ZN7S4397C3C1Ev),
  NSPAIR(_ZN7S4397C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4397C3[];
extern void _ZN7S4397C3D1Ev();
extern void _ZN7S4397C3D0Ev();
extern void _ZN7S4397C32v2Ev();
extern void _ZN7S4397C32v3Ev();
extern void _ZN7S4397C32v4Ev();
static  VTBL_ENTRY vtc_S4397C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4397C3[0]),
  (VTBL_ENTRY)&_ZN7S4397C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4397C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4397C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4397C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4397C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4397C3[];
extern  VTBL_ENTRY _ZTV7S4397C3[];
Class_Descriptor cd_S4397C3 = {  "S4397C3", // class name
  0,0,//no base classes
  &(vtc_S4397C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4397C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4397C3),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  S4397C2  : S4397C3 {
  void *s4397c2f0;
  virtual void  v5(); // _ZN7S4397C22v5Ev
  virtual void  v6(); // _ZN7S4397C22v6Ev
  ~S4397C2(); // tgen
  S4397C2(); // tgen
};
//SIG(-1 S4397C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4397C2 ::v5(){vfunc_called(this, "_ZN7S4397C22v5Ev");}
void  S4397C2 ::v6(){vfunc_called(this, "_ZN7S4397C22v6Ev");}
S4397C2 ::~S4397C2(){ note_dtor("S4397C2", this);} // tgen
S4397C2 ::S4397C2(){ note_ctor("S4397C2", this);} // tgen

static void Test_S4397C2()
{
  extern Class_Descriptor cd_S4397C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4397C2, buf);
    S4397C2 *dp, &lv = *(dp=new (buf) S4397C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4397C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4397C2)");
    check_base_class_offset(lv, (S4397C3*), 0, "S4397C2");
    check_field_offset(lv, s4397c2f0, ABISELECT(40,28), "S4397C2.s4397c2f0");
    test_class_info(&lv, &cd_S4397C2);
    dp->~S4397C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4397C2(Test_S4397C2, "S4397C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4397C2C1Ev();
extern void _ZN7S4397C2D1Ev();
Name_Map name_map_S4397C2[] = {
  NSPAIR(_ZN7S4397C2C1Ev),
  NSPAIR(_ZN7S4397C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4397C3;
extern VTBL_ENTRY _ZTI7S4397C3[];
extern  VTBL_ENTRY _ZTV7S4397C3[];
static Base_Class bases_S4397C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4397C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4397C2[];
extern void _ZN7S4397C2D1Ev();
extern void _ZN7S4397C2D0Ev();
extern void _ZN7S4397C32v2Ev();
extern void _ZN7S4397C32v3Ev();
extern void _ZN7S4397C32v4Ev();
extern void _ZN7S4397C22v5Ev();
extern void _ZN7S4397C22v6Ev();
static  VTBL_ENTRY vtc_S4397C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4397C2[0]),
  (VTBL_ENTRY)&_ZN7S4397C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4397C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4397C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4397C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4397C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4397C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4397C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S4397C2[];
extern  VTBL_ENTRY _ZTV7S4397C2[];
Class_Descriptor cd_S4397C2 = {  "S4397C2", // class name
  bases_S4397C2, 1,
  &(vtc_S4397C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4397C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4397C2),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  S4397C1  : S4397C2 {
  ::S18288C7 s4397c1f0;
  virtual  ~S4397C1(); // _ZN7S4397C1D1Ev
  virtual void  v1(); // _ZN7S4397C12v1Ev
  S4397C1(); // tgen
};
//SIG(1 S4397C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} vd v1 FC6{ FC7{ FC8{ Fc[20]} Fc[16]} FC8 FC9{ Fc[128]} FU10{ FC11{ Fi Fi} FL FC12{ Fi Fi Fi Fc[128]}}}}


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

static void Test_S4397C1()
{
  extern Class_Descriptor cd_S4397C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,90)];
    init_test(&cd_S4397C1, buf);
    S4397C1 *dp, &lv = *(dp=new (buf) S4397C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,356), "sizeof(S4397C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4397C1)");
    check_base_class_offset(lv, (S4397C3*)(S4397C2*), 0, "S4397C1");
    check_base_class_offset(lv, (S4397C2*), 0, "S4397C1");
    check_field_offset(lv, s4397c1f0, ABISELECT(48,32), "S4397C1.s4397c1f0");
    test_class_info(&lv, &cd_S4397C1);
    dp->~S4397C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4397C1(Test_S4397C1, "S4397C1", ABISELECT(376,356));

#else // __cplusplus

extern void _ZN7S4397C1C1Ev();
extern void _ZN7S4397C1D1Ev();
Name_Map name_map_S4397C1[] = {
  NSPAIR(_ZN7S4397C1C1Ev),
  NSPAIR(_ZN7S4397C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4397C3;
extern VTBL_ENTRY _ZTI7S4397C3[];
extern  VTBL_ENTRY _ZTV7S4397C3[];
extern Class_Descriptor cd_S4397C2;
extern VTBL_ENTRY _ZTI7S4397C2[];
extern  VTBL_ENTRY _ZTV7S4397C2[];
static Base_Class bases_S4397C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4397C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4397C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4397C1[];
extern void _ZN7S4397C1D1Ev();
extern void _ZN7S4397C1D0Ev();
extern void _ZN7S4397C32v2Ev();
extern void _ZN7S4397C32v3Ev();
extern void _ZN7S4397C32v4Ev();
extern void _ZN7S4397C22v5Ev();
extern void _ZN7S4397C22v6Ev();
extern void _ZN7S4397C12v1Ev();
static  VTBL_ENTRY vtc_S4397C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4397C1[0]),
  (VTBL_ENTRY)&_ZN7S4397C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4397C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4397C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4397C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4397C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4397C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4397C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4397C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4397C1[];
extern  VTBL_ENTRY _ZTV7S4397C1[];
Class_Descriptor cd_S4397C1 = {  "S4397C1", // class name
  bases_S4397C1, 2,
  &(vtc_S4397C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,356), // object size
  NSPAIRA(_ZTI7S4397C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4397C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19384C3_nt  {
  long double s19384c3f0;
  void *s19384c3f1[2];
  virtual  ~S19384C3_nt(); // _ZN11S19384C3_ntD1Ev
  virtual void  v6(); // _ZN11S19384C3_nt2v6Ev
  virtual void  v7(); // _ZN11S19384C3_nt2v7Ev
  virtual void  v8(); // _ZN11S19384C3_nt2v8Ev
  virtual void  v9(); // _ZN11S19384C3_nt2v9Ev
  virtual void  v10(); // _ZN11S19384C3_nt3v10Ev
  S19384C3_nt(); // tgen
};
//SIG(-1 S19384C3_nt) C1{ vd v1 v2 v3 v4 v5 FD Fp[2]}


 S19384C3_nt ::~S19384C3_nt(){ note_dtor("S19384C3_nt", this);}
void  S19384C3_nt ::v6(){vfunc_called(this, "_ZN11S19384C3_nt2v6Ev");}
void  S19384C3_nt ::v7(){vfunc_called(this, "_ZN11S19384C3_nt2v7Ev");}
void  S19384C3_nt ::v8(){vfunc_called(this, "_ZN11S19384C3_nt2v8Ev");}
void  S19384C3_nt ::v9(){vfunc_called(this, "_ZN11S19384C3_nt2v9Ev");}
void  S19384C3_nt ::v10(){vfunc_called(this, "_ZN11S19384C3_nt3v10Ev");}
S19384C3_nt ::S19384C3_nt(){ note_ctor("S19384C3_nt", this);} // tgen

//skip512 S19384C3_nt

#else // __cplusplus

extern void _ZN11S19384C3_ntC1Ev();
extern void _ZN11S19384C3_ntD1Ev();
Name_Map name_map_S19384C3_nt[] = {
  NSPAIR(_ZN11S19384C3_ntC1Ev),
  NSPAIR(_ZN11S19384C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19384C3_nt[];
extern void _ZN11S19384C3_ntD1Ev();
extern void _ZN11S19384C3_ntD0Ev();
extern void _ZN11S19384C3_nt2v6Ev();
extern void _ZN11S19384C3_nt2v7Ev();
extern void _ZN11S19384C3_nt2v8Ev();
extern void _ZN11S19384C3_nt2v9Ev();
extern void _ZN11S19384C3_nt3v10Ev();
static  VTBL_ENTRY vtc_S19384C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19384C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S19384C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI11S19384C3_nt[];
VTBL_ENTRY *P__ZTI11S19384C3_nt = _ZTI11S19384C3_nt; 
extern  VTBL_ENTRY _ZTV11S19384C3_nt[];
Class_Descriptor cd_S19384C3_nt = {  "S19384C3_nt", // class name
  0,0,//no base classes
  &(vtc_S19384C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI11S19384C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19384C3_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  S19384C5_nt  {
  virtual void  v11(); // _ZN11S19384C5_nt3v11Ev
  virtual void  v12(); // _ZN11S19384C5_nt3v12Ev
  ~S19384C5_nt(); // tgen
  S19384C5_nt(); // tgen
};
//SIG(-1 S19384C5_nt) C1{ v1 v2}


void  S19384C5_nt ::v11(){vfunc_called(this, "_ZN11S19384C5_nt3v11Ev");}
void  S19384C5_nt ::v12(){vfunc_called(this, "_ZN11S19384C5_nt3v12Ev");}
S19384C5_nt ::~S19384C5_nt(){ note_dtor("S19384C5_nt", this);} // tgen
S19384C5_nt ::S19384C5_nt(){ note_ctor("S19384C5_nt", this);} // tgen

//skip512 S19384C5_nt

#else // __cplusplus

extern void _ZN11S19384C5_ntC1Ev();
extern void _ZN11S19384C5_ntD1Ev();
Name_Map name_map_S19384C5_nt[] = {
  NSPAIR(_ZN11S19384C5_ntC1Ev),
  NSPAIR(_ZN11S19384C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19384C5_nt[];
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
static  VTBL_ENTRY vtc_S19384C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19384C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI11S19384C5_nt[];
VTBL_ENTRY *P__ZTI11S19384C5_nt = _ZTI11S19384C5_nt; 
extern  VTBL_ENTRY _ZTV11S19384C5_nt[];
Class_Descriptor cd_S19384C5_nt = {  "S19384C5_nt", // class name
  0,0,//no base classes
  &(vtc_S19384C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S19384C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19384C5_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  S19384C6_nt  : S19384C5_nt {
  virtual void  v20(); // _ZN11S19384C6_nt3v20Ev
  virtual void  v21(); // _ZN11S19384C6_nt3v21Ev
  virtual void  v22(); // _ZN11S19384C6_nt3v22Ev
  virtual void  v23(); // _ZN11S19384C6_nt3v23Ev
  ~S19384C6_nt(); // tgen
  S19384C6_nt(); // tgen
};
//SIG(1 S19384C6_nt) C1{ BC2{ v5 v6} v1 v2 v3 v4}


void  S19384C6_nt ::v20(){vfunc_called(this, "_ZN11S19384C6_nt3v20Ev");}
void  S19384C6_nt ::v21(){vfunc_called(this, "_ZN11S19384C6_nt3v21Ev");}
void  S19384C6_nt ::v22(){vfunc_called(this, "_ZN11S19384C6_nt3v22Ev");}
void  S19384C6_nt ::v23(){vfunc_called(this, "_ZN11S19384C6_nt3v23Ev");}
S19384C6_nt ::~S19384C6_nt(){ note_dtor("S19384C6_nt", this);} // tgen
S19384C6_nt ::S19384C6_nt(){ note_ctor("S19384C6_nt", this);} // tgen

//skip512 S19384C6_nt

#else // __cplusplus

extern void _ZN11S19384C6_ntC1Ev();
extern void _ZN11S19384C6_ntD1Ev();
Name_Map name_map_S19384C6_nt[] = {
  NSPAIR(_ZN11S19384C6_ntC1Ev),
  NSPAIR(_ZN11S19384C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19384C5_nt;
extern VTBL_ENTRY _ZTI11S19384C5_nt[];
extern  VTBL_ENTRY _ZTV11S19384C5_nt[];
static Base_Class bases_S19384C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19384C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S19384C6_nt[];
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
extern void _ZN11S19384C6_nt3v20Ev();
extern void _ZN11S19384C6_nt3v21Ev();
extern void _ZN11S19384C6_nt3v22Ev();
extern void _ZN11S19384C6_nt3v23Ev();
static  VTBL_ENTRY vtc_S19384C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19384C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19384C6_nt3v20Ev,
  (VTBL_ENTRY)&_ZN11S19384C6_nt3v21Ev,
  (VTBL_ENTRY)&_ZN11S19384C6_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S19384C6_nt3v23Ev,
};
extern VTBL_ENTRY _ZTI11S19384C6_nt[];
VTBL_ENTRY *P__ZTI11S19384C6_nt = _ZTI11S19384C6_nt; 
extern  VTBL_ENTRY _ZTV11S19384C6_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19384C4  : virtual S19384C5_nt {
  char s19384c4f0;
  ::S19384C6_nt s19384c4f1[2];
  virtual void  v13(); // _ZN8S19384C43v13Ev
  virtual void  v14(); // _ZN8S19384C43v14Ev
  virtual void  v15(); // _ZN8S19384C43v15Ev
  virtual void  v16(); // _ZN8S19384C43v16Ev
  ~S19384C4(); // tgen
  S19384C4(); // tgen
};
//SIG(-1 S19384C4) C1{ VBC2{ v5 v6} v1 v2 v3 v4 Fc FC3{ BC2 v7 v8 v9 v10}[2]}


void  S19384C4 ::v13(){vfunc_called(this, "_ZN8S19384C43v13Ev");}
void  S19384C4 ::v14(){vfunc_called(this, "_ZN8S19384C43v14Ev");}
void  S19384C4 ::v15(){vfunc_called(this, "_ZN8S19384C43v15Ev");}
void  S19384C4 ::v16(){vfunc_called(this, "_ZN8S19384C43v16Ev");}
S19384C4 ::~S19384C4(){ note_dtor("S19384C4", this);} // tgen
S19384C4 ::S19384C4(){ note_ctor("S19384C4", this);} // tgen

static void Test_S19384C4()
{
  extern Class_Descriptor cd_S19384C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19384C4, buf);
    S19384C4 *dp, &lv = *(dp=new (buf) S19384C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19384C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19384C4)");
    check_base_class_offset(lv, (S19384C5_nt*), 0, "S19384C4");
    check_field_offset(lv, s19384c4f0, ABISELECT(8,4), "S19384C4.s19384c4f0");
    check_field_offset(lv, s19384c4f1, ABISELECT(16,8), "S19384C4.s19384c4f1");
    test_class_info(&lv, &cd_S19384C4);
    dp->~S19384C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19384C4(Test_S19384C4, "S19384C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19384C4C1Ev();
extern void _ZN8S19384C4D1Ev();
Name_Map name_map_S19384C4[] = {
  NSPAIR(_ZN8S19384C4C1Ev),
  NSPAIR(_ZN8S19384C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19384C5_nt;
extern VTBL_ENTRY _ZTI11S19384C5_nt[];
extern  VTBL_ENTRY _ZTV11S19384C5_nt[];
static Base_Class bases_S19384C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19384C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19384C4[];
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
extern void _ZN8S19384C43v13Ev();
extern void _ZN8S19384C43v14Ev();
extern void _ZN8S19384C43v15Ev();
extern void _ZN8S19384C43v16Ev();
static  VTBL_ENTRY vtc_S19384C4[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19384C4[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v16Ev,
};
extern VTBL_ENTRY _ZTV8S19384C4[];
static  VTT_ENTRY vtt_S19384C4[] = {
  {&(_ZTV8S19384C4[5]),  5,11},
  {&(_ZTV8S19384C4[5]),  5,11},
};
extern VTBL_ENTRY _ZTI8S19384C4[];
extern  VTBL_ENTRY _ZTV8S19384C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19384C4[];
Class_Descriptor cd_S19384C4 = {  "S19384C4", // class name
  bases_S19384C4, 1,
  &(vtc_S19384C4[0]), // expected_vtbl_contents
  &(vtt_S19384C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19384C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19384C4),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19384C4),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  S19384C2  : S19384C3_nt , S19384C4 {
  virtual  ~S19384C2(); // _ZN8S19384C2D2Ev
  virtual void  v17(); // _ZN8S19384C23v17Ev
  virtual void  v18(); // _ZN8S19384C23v18Ev
  virtual void  v19(); // _ZN8S19384C23v19Ev
  S19384C2(); // tgen
};
//SIG(-1 S19384C2) C1{ BC2{ vd v4 v5 v6 v7 v8 FD Fp[2]} BC3{ VBC4{ v9 v10} v11 v12 v13 v14 Fc FC5{ BC4 v15 v16 v17 v18}[2]} vd v1 v2 v3}


 S19384C2 ::~S19384C2(){ note_dtor("S19384C2", this);}
void  S19384C2 ::v17(){vfunc_called(this, "_ZN8S19384C23v17Ev");}
void  S19384C2 ::v18(){vfunc_called(this, "_ZN8S19384C23v18Ev");}
void  S19384C2 ::v19(){vfunc_called(this, "_ZN8S19384C23v19Ev");}
S19384C2 ::S19384C2(){ note_ctor("S19384C2", this);} // tgen

static void Test_S19384C2()
{
  extern Class_Descriptor cd_S19384C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S19384C2, buf);
    S19384C2 *dp, &lv = *(dp=new (buf) S19384C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19384C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19384C2)");
    check_base_class_offset(lv, (S19384C3_nt*), 0, "S19384C2");
    check_base_class_offset(lv, (S19384C5_nt*)(S19384C4*), ABISELECT(48,24), "S19384C2");
    check_base_class_offset(lv, (S19384C4*), ABISELECT(48,24), "S19384C2");
    test_class_info(&lv, &cd_S19384C2);
    dp->~S19384C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19384C2(Test_S19384C2, "S19384C2", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19384C2C1Ev();
extern void _ZN8S19384C2D2Ev();
Name_Map name_map_S19384C2[] = {
  NSPAIR(_ZN8S19384C2C1Ev),
  NSPAIR(_ZN8S19384C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19384C3_nt;
extern VTBL_ENTRY _ZTI11S19384C3_nt[];
extern  VTBL_ENTRY _ZTV11S19384C3_nt[];
extern Class_Descriptor cd_S19384C5_nt;
extern VTBL_ENTRY _ZTI11S19384C5_nt[];
extern  VTBL_ENTRY _ZTV11S19384C5_nt[];
extern Class_Descriptor cd_S19384C4;
extern VTBL_ENTRY _ZTI8S19384C4[];
extern  VTBL_ENTRY _ZTV8S19384C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19384C4[];
static Base_Class bases_S19384C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19384C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19384C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19384C4,    ABISELECT(48,24), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19384C2[];
extern void _ZN8S19384C2D1Ev();
extern void _ZN8S19384C2D0Ev();
extern void _ZN11S19384C3_nt2v6Ev();
extern void _ZN11S19384C3_nt2v7Ev();
extern void _ZN11S19384C3_nt2v8Ev();
extern void _ZN11S19384C3_nt2v9Ev();
extern void _ZN11S19384C3_nt3v10Ev();
extern void _ZN8S19384C23v17Ev();
extern void _ZN8S19384C23v18Ev();
extern void _ZN8S19384C23v19Ev();
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
extern void _ZN8S19384C43v13Ev();
extern void _ZN8S19384C43v14Ev();
extern void _ZN8S19384C43v15Ev();
extern void _ZN8S19384C43v16Ev();
static  VTBL_ENTRY vtc_S19384C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19384C2[0]),
  (VTBL_ENTRY)&_ZN8S19384C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19384C2D0Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S19384C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19384C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19384C23v19Ev,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19384C2[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v16Ev,
};
extern VTBL_ENTRY _ZTV8S19384C2[];
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
extern void _ZN8S19384C43v13Ev();
extern void _ZN8S19384C43v14Ev();
extern void _ZN8S19384C43v15Ev();
extern void _ZN8S19384C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19384C4__8S19384C2[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19384C4[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v16Ev,
};
static  VTT_ENTRY vtt_S19384C2[] = {
  {&(_ZTV8S19384C2[3]),  3,24},
  {&(_tg__ZTV8S19384C4__8S19384C2[5]),  5,11},
  {&(_tg__ZTV8S19384C4__8S19384C2[5]),  5,11},
  {&(_ZTV8S19384C2[18]),  18,24},
  {&(_ZTV8S19384C2[18]),  18,24},
};
extern VTBL_ENTRY _ZTI8S19384C2[];
extern  VTBL_ENTRY _ZTV8S19384C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19384C2[];
Class_Descriptor cd_S19384C2 = {  "S19384C2", // class name
  bases_S19384C2, 3,
  &(vtc_S19384C2[0]), // expected_vtbl_contents
  &(vtt_S19384C2[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19384C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19384C2),24, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19384C2),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19384C1  : virtual S19384C2 {
  ::S19384C3_nt s19384c1f0;
  virtual  ~S19384C1(); // _ZN8S19384C1D2Ev
  virtual void  v1(); // _ZN8S19384C12v1Ev
  virtual void  v2(); // _ZN8S19384C12v2Ev
  virtual void  v3(); // _ZN8S19384C12v3Ev
  virtual void  v4(); // _ZN8S19384C12v4Ev
  virtual void  v5(); // _ZN8S19384C12v5Ev
  S19384C1(); // tgen
};
//SIG(1 S19384C1) C1{ VBC2{ BC3{ vd v6 v7 v8 v9 v10 FD Fp[2]} BC4{ VBC5{ v11 v12} v13 v14 v15 v16 Fc FC6{ BC5 v20 v21 v22 v23}[2]} vd v17 v18 v19} vd v1 v2 v3 v4 v5 FC3}


 S19384C1 ::~S19384C1(){ note_dtor("S19384C1", this);}
void  S19384C1 ::v1(){vfunc_called(this, "_ZN8S19384C12v1Ev");}
void  S19384C1 ::v2(){vfunc_called(this, "_ZN8S19384C12v2Ev");}
void  S19384C1 ::v3(){vfunc_called(this, "_ZN8S19384C12v3Ev");}
void  S19384C1 ::v4(){vfunc_called(this, "_ZN8S19384C12v4Ev");}
void  S19384C1 ::v5(){vfunc_called(this, "_ZN8S19384C12v5Ev");}
S19384C1 ::S19384C1(){ note_ctor("S19384C1", this);} // tgen

static void Test_S19384C1()
{
  extern Class_Descriptor cd_S19384C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,18)];
    init_test(&cd_S19384C1, buf);
    S19384C1 *dp, &lv = *(dp=new (buf) S19384C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,68), "sizeof(S19384C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19384C1)");
    check_base_class_offset(lv, (S19384C3_nt*)(S19384C2*), ABISELECT(64,28), "S19384C1");
    check_base_class_offset(lv, (S19384C5_nt*)(S19384C4*)(S19384C2*), 0, "S19384C1");
    check_base_class_offset(lv, (S19384C4*)(S19384C2*), ABISELECT(112,52), "S19384C1");
    check_base_class_offset(lv, (S19384C2*), ABISELECT(64,28), "S19384C1");
    check_field_offset(lv, s19384c1f0, ABISELECT(16,4), "S19384C1.s19384c1f0");
    test_class_info(&lv, &cd_S19384C1);
    dp->~S19384C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19384C1(Test_S19384C1, "S19384C1", ABISELECT(144,68));

#else // __cplusplus

extern void _ZN8S19384C1C1Ev();
extern void _ZN8S19384C1D2Ev();
Name_Map name_map_S19384C1[] = {
  NSPAIR(_ZN8S19384C1C1Ev),
  NSPAIR(_ZN8S19384C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19384C3_nt;
extern VTBL_ENTRY _ZTI11S19384C3_nt[];
extern  VTBL_ENTRY _ZTV11S19384C3_nt[];
extern Class_Descriptor cd_S19384C5_nt;
extern VTBL_ENTRY _ZTI11S19384C5_nt[];
extern  VTBL_ENTRY _ZTV11S19384C5_nt[];
extern Class_Descriptor cd_S19384C4;
extern VTBL_ENTRY _ZTI8S19384C4[];
extern  VTBL_ENTRY _ZTV8S19384C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19384C4[];
extern Class_Descriptor cd_S19384C2;
extern VTBL_ENTRY _ZTI8S19384C2[];
extern  VTBL_ENTRY _ZTV8S19384C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19384C2[];
static Base_Class bases_S19384C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19384C3_nt,    ABISELECT(64,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19384C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19384C4,    ABISELECT(112,52), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19384C2,    ABISELECT(64,28), //bcp->offset
    15, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19384C1[];
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
extern void _ZN8S19384C1D1Ev();
extern void _ZN8S19384C1D0Ev();
extern void _ZN8S19384C12v1Ev();
extern void _ZN8S19384C12v2Ev();
extern void _ZN8S19384C12v3Ev();
extern void _ZN8S19384C12v4Ev();
extern void _ZN8S19384C12v5Ev();
extern void ABISELECT(_ZTv0_n32_N8S19384C1D1Ev,_ZTv0_n16_N8S19384C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19384C1D1Ev,_ZThn28_N8S19384C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19384C1D0Ev,_ZTv0_n16_N8S19384C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19384C1D0Ev,_ZThn28_N8S19384C1D0Ev)() __attribute__((weak));
extern void _ZN11S19384C3_nt2v6Ev();
extern void _ZN11S19384C3_nt2v7Ev();
extern void _ZN11S19384C3_nt2v8Ev();
extern void _ZN11S19384C3_nt2v9Ev();
extern void _ZN11S19384C3_nt3v10Ev();
extern void _ZN8S19384C23v17Ev();
extern void _ZN8S19384C23v18Ev();
extern void _ZN8S19384C23v19Ev();
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
extern void _ZN8S19384C43v13Ev();
extern void _ZN8S19384C43v14Ev();
extern void _ZN8S19384C43v15Ev();
extern void _ZN8S19384C43v16Ev();
static  VTBL_ENTRY vtc_S19384C1[] = {
  0,
  ABISELECT(64,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19384C1[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19384C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19384C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19384C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19384C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19384C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19384C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19384C12v5Ev,
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19384C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19384C1D1Ev,_ZTv0_n16_N8S19384C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19384C1D0Ev,_ZTv0_n16_N8S19384C1D0Ev),
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S19384C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19384C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19384C23v19Ev,
  ABISELECT(-112,-52),
  ABISELECT(-112,-52),
  ABISELECT(-112,-52),
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI8S19384C1[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v16Ev,
};
extern VTBL_ENTRY _ZTV8S19384C1[];
extern void _ZN8S19384C2D1Ev();
extern void _ZN8S19384C2D0Ev();
extern void _ZN11S19384C3_nt2v6Ev();
extern void _ZN11S19384C3_nt2v7Ev();
extern void _ZN11S19384C3_nt2v8Ev();
extern void _ZN11S19384C3_nt2v9Ev();
extern void _ZN11S19384C3_nt3v10Ev();
extern void _ZN8S19384C23v17Ev();
extern void _ZN8S19384C23v18Ev();
extern void _ZN8S19384C23v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19384C2__8S19384C1[] = {
  ABISELECT(-64,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19384C2[0]),
  (VTBL_ENTRY)&_ZN8S19384C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19384C2D0Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S19384C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S19384C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19384C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19384C23v19Ev,
};
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
extern void _ZN8S19384C43v13Ev();
extern void _ZN8S19384C43v14Ev();
extern void _ZN8S19384C43v15Ev();
extern void _ZN8S19384C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19384C48S19384C2__8S19384C1[] = {
  ABISELECT(-112,-52),
  ABISELECT(-112,-52),
  ABISELECT(-112,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19384C4[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v16Ev,
};
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19384C5_nt__8S19384C48S19384C2__8S19384C1[] = {
  0,
  0,
  ABISELECT(112,52),
  (VTBL_ENTRY)&(_ZTI8S19384C4[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
};
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
extern void _ZN8S19384C43v13Ev();
extern void _ZN8S19384C43v14Ev();
extern void _ZN8S19384C43v15Ev();
extern void _ZN8S19384C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19384C4__8S19384C2__8S19384C1[] = {
  ABISELECT(-112,-52),
  ABISELECT(-112,-52),
  ABISELECT(-112,-52),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19384C2[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19384C43v16Ev,
};
extern void _ZN11S19384C5_nt3v11Ev();
extern void _ZN11S19384C5_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19384C5_nt__8S19384C2__8S19384C1[] = {
  0,
  0,
  ABISELECT(64,28),
  (VTBL_ENTRY)&(_ZTI8S19384C2[0]),
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19384C5_nt3v12Ev,
};
static  VTT_ENTRY vtt_S19384C1[] = {
  {&(_ZTV8S19384C1[6]),  6,52},
  {&(_ZTV8S19384C1[31]),  31,52},
  {&(_ZTV8S19384C1[46]),  46,52},
  {&(_ZTV8S19384C1[6]),  6,52},
  {&(_tg__ZTV8S19384C2__8S19384C1[3]),  3,13},
  {&(_tg__ZTV8S19384C48S19384C2__8S19384C1[5]),  5,11},
  {&(_tg__ZTV11S19384C5_nt__8S19384C48S19384C2__8S19384C1[4]),  4,6},
  {&(_tg__ZTV8S19384C4__8S19384C2__8S19384C1[5]),  5,11},
  {&(_tg__ZTV11S19384C5_nt__8S19384C2__8S19384C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19384C1[];
extern  VTBL_ENTRY _ZTV8S19384C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19384C1[];
static VTBL_ENTRY alt_thunk_names152[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19384C1D0Ev,_ZTv0_n16_N8S19384C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19384C1D0Ev,_ZThn28_N8S19384C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19384C1D1Ev,_ZTv0_n16_N8S19384C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19384C1D1Ev,_ZThn28_N8S19384C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19384C1 = {  "S19384C1", // class name
  bases_S19384C1, 4,
  &(vtc_S19384C1[0]), // expected_vtbl_contents
  &(vtt_S19384C1[0]), // expected_vtt_contents
  ABISELECT(144,68), // object size
  NSPAIRA(_ZTI8S19384C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19384C1),52, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19384C1),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names152,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19868C4  {
  char s19868c4f0[2];
  __tsi64 s19868c4f1;
  void *s19868c4f2;
  ::S3164C31_nt s19868c4f3;
  virtual void  v4(); // _ZN8S19868C42v4Ev
  ~S19868C4(); // tgen
  S19868C4(); // tgen
};
//SIG(-1 S19868C4) C1{ v1 Fc[2] FL Fp FC2{ m}}


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

static void Test_S19868C4()
{
  extern Class_Descriptor cd_S19868C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19868C4, buf);
    S19868C4 *dp, &lv = *(dp=new (buf) S19868C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19868C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19868C4)");
    check_field_offset(lv, s19868c4f0, ABISELECT(8,4), "S19868C4.s19868c4f0");
    check_field_offset(lv, s19868c4f1, ABISELECT(16,8), "S19868C4.s19868c4f1");
    check_field_offset(lv, s19868c4f2, ABISELECT(24,16), "S19868C4.s19868c4f2");
    check_field_offset(lv, s19868c4f3, ABISELECT(32,20), "S19868C4.s19868c4f3");
    test_class_info(&lv, &cd_S19868C4);
    dp->~S19868C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19868C4(Test_S19868C4, "S19868C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S19868C4C1Ev();
extern void _ZN8S19868C4D1Ev();
Name_Map name_map_S19868C4[] = {
  NSPAIR(_ZN8S19868C4C1Ev),
  NSPAIR(_ZN8S19868C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19868C4[];
extern void _ZN8S19868C42v4Ev();
static  VTBL_ENTRY vtc_S19868C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19868C4[0]),
  (VTBL_ENTRY)&_ZN8S19868C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S19868C4[];
extern  VTBL_ENTRY _ZTV8S19868C4[];
Class_Descriptor cd_S19868C4 = {  "S19868C4", // class name
  0,0,//no base classes
  &(vtc_S19868C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S19868C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19868C4),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  S19868C6  : virtual S19868C4 , virtual S3164C31_nt , S20526C8 {
  __tsi64 s19868c6f0[2];
  void *s19868c6f1[4];
  virtual void  v5(); // _ZN8S19868C62v5Ev
  virtual void  v6(); // _ZN8S19868C62v6Ev
  ~S19868C6(); // tgen
  S19868C6(); // tgen
};
//SIG(-1 S19868C6) C1{ VBC2{ v3 Fc[2] FL Fp FC3{ m}} VBC3 BC4{ m FC5{ v4 Fc[2] FL Fp FC3} FL Fi[3]} v1 v2 FL[2] Fp[4]}


void  S19868C6 ::v5(){vfunc_called(this, "_ZN8S19868C62v5Ev");}
void  S19868C6 ::v6(){vfunc_called(this, "_ZN8S19868C62v6Ev");}
S19868C6 ::~S19868C6(){ note_dtor("S19868C6", this);} // tgen
S19868C6 ::S19868C6(){ note_ctor("S19868C6", this);} // tgen

static void Test_S19868C6()
{
  extern Class_Descriptor cd_S19868C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,27)];
    init_test(&cd_S19868C6, buf);
    S19868C6 *dp, &lv = *(dp=new (buf) S19868C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,104), "sizeof(S19868C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19868C6)");
    check_base_class_offset(lv, (S19868C4*), ABISELECT(120,80), "S19868C6");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S19868C6");
    check_base_class_offset(lv, (S20526C8*), ABISELECT(8,4), "S19868C6");
    check_field_offset(lv, s19868c6f0, ABISELECT(72,48), "S19868C6.s19868c6f0");
    check_field_offset(lv, s19868c6f1, ABISELECT(88,64), "S19868C6.s19868c6f1");
    test_class_info(&lv, &cd_S19868C6);
    dp->~S19868C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19868C6(Test_S19868C6, "S19868C6", ABISELECT(160,104));

#else // __cplusplus

extern void _ZN8S19868C6C1Ev();
extern void _ZN8S19868C6D1Ev();
Name_Map name_map_S19868C6[] = {
  NSPAIR(_ZN8S19868C6C1Ev),
  NSPAIR(_ZN8S19868C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19868C4;
extern VTBL_ENTRY _ZTI8S19868C4[];
extern  VTBL_ENTRY _ZTV8S19868C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
static Base_Class bases_S19868C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19868C4,    ABISELECT(120,80), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20526C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19868C6[];
extern void _ZN8S19868C62v5Ev();
extern void _ZN8S19868C62v6Ev();
extern void _ZN8S19868C42v4Ev();
static  VTBL_ENTRY vtc_S19868C6[] = {
  0,
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19868C6[0]),
  (VTBL_ENTRY)&_ZN8S19868C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19868C62v6Ev,
  0,
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S19868C6[0]),
  (VTBL_ENTRY)&_ZN8S19868C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S19868C6[];
static  VTT_ENTRY vtt_S19868C6[] = {
  {&(_ZTV8S19868C6[4]),  4,10},
  {&(_ZTV8S19868C6[9]),  9,10},
};
extern VTBL_ENTRY _ZTI8S19868C6[];
extern  VTBL_ENTRY _ZTV8S19868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19868C6[];
Class_Descriptor cd_S19868C6 = {  "S19868C6", // class name
  bases_S19868C6, 3,
  &(vtc_S19868C6[0]), // expected_vtbl_contents
  &(vtt_S19868C6[0]), // expected_vtt_contents
  ABISELECT(160,104), // object size
  NSPAIRA(_ZTI8S19868C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19868C6),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19868C6),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  S19868C3  : S19868C4 , S3164C31_nt , S20526C8 , S19868C6 {
  void *s19868c3f0[10];
  int s19868c3f1;
  __tsi64 s19868c3f2;
  void *s19868c3f3;
  ::S19868C6 s19868c3f4;
  virtual void  v7(); // _ZN8S19868C32v7Ev
  ~S19868C3(); // tgen
  S19868C3(); // tgen
};
//SIG(-1 S19868C3) C1{ BC2{ v2 Fc[2] FL Fp FC3{ m}} BC3 BC4{ m FC5{ v5 Fc[2] FL Fp FC3} FL Fi[3]} BC6{ VBC2 VBC3 BC4 v3 v4 FL[2] Fp[4]} v1 Fp[10] Fi FL Fp FC6}


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

static void Test_S19868C3()
{
  extern Class_Descriptor cd_S19868C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,84)];
    init_test(&cd_S19868C3, buf);
    S19868C3 *dp, &lv = *(dp=new (buf) S19868C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,332), "sizeof(S19868C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19868C3)");
    /*is_ambiguous_... S19868C3::S19868C4 */ AMB_check_base_class_offset(lv, (S19868C4*), 0, "S19868C3");
    /*is_ambiguous_... S19868C3::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S19868C3");
    /*is_ambiguous_... S19868C3::S20526C8 */ AMB_check_base_class_offset(lv, (S20526C8*), ABISELECT(40,24), "S19868C3");
    check_base_class_offset(lv, (S19868C4*)(S19868C6*), ABISELECT(488,308), "S19868C3");
    check_base_class_offset(lv, (S3164C31_nt*)(S19868C6*), ABISELECT(521,329), "S19868C3");
    check_base_class_offset(lv, (S20526C8*)(S19868C6*), ABISELECT(112,72), "S19868C3");
    check_base_class_offset(lv, (S19868C6*), ABISELECT(104,68), "S19868C3");
    check_field_offset(lv, s19868c3f0, ABISELECT(224,148), "S19868C3.s19868c3f0");
    check_field_offset(lv, s19868c3f1, ABISELECT(304,188), "S19868C3.s19868c3f1");
    check_field_offset(lv, s19868c3f2, ABISELECT(312,192), "S19868C3.s19868c3f2");
    check_field_offset(lv, s19868c3f3, ABISELECT(320,200), "S19868C3.s19868c3f3");
    check_field_offset(lv, s19868c3f4, ABISELECT(328,204), "S19868C3.s19868c3f4");
    test_class_info(&lv, &cd_S19868C3);
    dp->~S19868C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19868C3(Test_S19868C3, "S19868C3", ABISELECT(528,332));

#else // __cplusplus

extern void _ZN8S19868C3C1Ev();
extern void _ZN8S19868C3D1Ev();
Name_Map name_map_S19868C3[] = {
  NSPAIR(_ZN8S19868C3C1Ev),
  NSPAIR(_ZN8S19868C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19868C4;
extern VTBL_ENTRY _ZTI8S19868C4[];
extern  VTBL_ENTRY _ZTV8S19868C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S19868C4;
extern VTBL_ENTRY _ZTI8S19868C4[];
extern  VTBL_ENTRY _ZTV8S19868C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S19868C6;
extern VTBL_ENTRY _ZTI8S19868C6[];
extern  VTBL_ENTRY _ZTV8S19868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19868C6[];
static Base_Class bases_S19868C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19868C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20526C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19868C4,    ABISELECT(488,308), //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
    6, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(521,329), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20526C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S19868C6,    ABISELECT(104,68), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19868C3[];
extern void _ZN8S19868C42v4Ev();
extern void _ZN8S19868C32v7Ev();
extern void _ZN8S19868C62v5Ev();
extern void _ZN8S19868C62v6Ev();
extern void _ZN8S19868C42v4Ev();
static  VTBL_ENTRY vtc_S19868C3[] = {
  ABISELECT(521,329),
  ABISELECT(488,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19868C3[0]),
  (VTBL_ENTRY)&_ZN8S19868C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19868C32v7Ev,
  ABISELECT(417,261),
  ABISELECT(384,240),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S19868C3[0]),
  (VTBL_ENTRY)&_ZN8S19868C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19868C62v6Ev,
  0,
  ABISELECT(-488,-308),
  (VTBL_ENTRY)&(_ZTI8S19868C3[0]),
  (VTBL_ENTRY)&_ZN8S19868C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S19868C3[];
extern void _ZN8S19868C62v5Ev();
extern void _ZN8S19868C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19868C6__8S19868C3[] = {
  ABISELECT(417,261),
  ABISELECT(384,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19868C6[0]),
  (VTBL_ENTRY)&_ZN8S19868C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19868C62v6Ev,
};
extern void _ZN8S19868C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19868C4__8S19868C6__8S19868C3[] = {
  0,
  ABISELECT(-384,-240),
  (VTBL_ENTRY)&(_ZTI8S19868C6[0]),
  (VTBL_ENTRY)&_ZN8S19868C42v4Ev,
};
static  VTT_ENTRY vtt_S19868C3[] = {
  {&(_ZTV8S19868C3[4]),  4,16},
  {&(_tg__ZTV8S19868C6__8S19868C3[4]),  4,6},
  {&(_tg__ZTV8S19868C4__8S19868C6__8S19868C3[3]),  3,4},
  {&(_ZTV8S19868C3[10]),  10,16},
  {&(_ZTV8S19868C3[15]),  15,16},
};
extern VTBL_ENTRY _ZTI8S19868C3[];
extern  VTBL_ENTRY _ZTV8S19868C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19868C3[];
Class_Descriptor cd_S19868C3 = {  "S19868C3", // class name
  bases_S19868C3, 7,
  &(vtc_S19868C3[0]), // expected_vtbl_contents
  &(vtt_S19868C3[0]), // expected_vtt_contents
  ABISELECT(528,332), // object size
  NSPAIRA(_ZTI8S19868C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19868C3),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19868C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19868C1  : virtual S3164C31_nt , virtual S19868C3 {
  __tsi64 s19868c1f0[5];
  int s19868c1f1;
  virtual  ~S19868C1(); // _ZN8S19868C1D2Ev
  virtual void  v1(); // _ZN8S19868C12v1Ev
  virtual void  v2(); // _ZN8S19868C12v2Ev
  virtual void  v3(); // _ZN8S19868C12v3Ev
  S19868C1(); // tgen
};
//SIG(1 S19868C1) C1{ VBC2{ m} VBC3{ BC4{ v4 Fc[2] FL Fp FC2} BC2 BC5{ m FC6{ v8 Fc[2] FL Fp FC2} FL Fi[3]} BC7{ VBC4 VBC2 BC5 v5 v6 FL[2] Fp[4]} v7 Fp[10] Fi FL Fp FC7} vd v1 v2 v3 FL[5] Fi}


 S19868C1 ::~S19868C1(){ note_dtor("S19868C1", this);}
void  S19868C1 ::v1(){vfunc_called(this, "_ZN8S19868C12v1Ev");}
void  S19868C1 ::v2(){vfunc_called(this, "_ZN8S19868C12v2Ev");}
void  S19868C1 ::v3(){vfunc_called(this, "_ZN8S19868C12v3Ev");}
S19868C1 ::S19868C1(){ note_ctor("S19868C1", this);} // tgen

static void Test_S19868C1()
{
  extern Class_Descriptor cd_S19868C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(74,96)];
    init_test(&cd_S19868C1, buf);
    S19868C1 *dp, &lv = *(dp=new (buf) S19868C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(584,380), "sizeof(S19868C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19868C1)");
    /*is_ambiguous_... S19868C1::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S19868C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S19868C6*)(S19868C3*), 0, "S19868C1");
    /*is_ambiguous_... S19868C3::S19868C4 */ AMB_check_base_class_offset(lv, (S19868C4*)(S19868C3*), ABISELECT(56,48), "S19868C1");
    /*is_ambiguous_... S19868C3::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19868C3*), ABISELECT(56,48), "S19868C1");
    /*is_ambiguous_... S19868C3::S20526C8 */ AMB_check_base_class_offset(lv, (S20526C8*)(S19868C3*), ABISELECT(96,72), "S19868C1");
    check_base_class_offset(lv, (S19868C4*)(S19868C6*)(S19868C3*), ABISELECT(544,356), "S19868C1");
    check_base_class_offset(lv, (S20526C8*)(S19868C6*)(S19868C3*), ABISELECT(168,120), "S19868C1");
    check_base_class_offset(lv, (S19868C6*)(S19868C3*), ABISELECT(160,116), "S19868C1");
    check_base_class_offset(lv, (S19868C3*), ABISELECT(56,48), "S19868C1");
    check_field_offset(lv, s19868c1f0, ABISELECT(8,4), "S19868C1.s19868c1f0");
    check_field_offset(lv, s19868c1f1, ABISELECT(48,44), "S19868C1.s19868c1f1");
    test_class_info(&lv, &cd_S19868C1);
    dp->~S19868C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19868C1(Test_S19868C1, "S19868C1", ABISELECT(584,380));

#else // __cplusplus

extern void _ZN8S19868C1C1Ev();
extern void _ZN8S19868C1D2Ev();
Name_Map name_map_S19868C1[] = {
  NSPAIR(_ZN8S19868C1C1Ev),
  NSPAIR(_ZN8S19868C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19868C4;
extern VTBL_ENTRY _ZTI8S19868C4[];
extern  VTBL_ENTRY _ZTV8S19868C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S19868C4;
extern VTBL_ENTRY _ZTI8S19868C4[];
extern  VTBL_ENTRY _ZTV8S19868C4[];
extern Class_Descriptor cd_S20526C8;
extern VTBL_ENTRY _ZTI8S20526C8[];
extern Class_Descriptor cd_S19868C6;
extern VTBL_ENTRY _ZTI8S19868C6[];
extern  VTBL_ENTRY _ZTV8S19868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19868C6[];
extern Class_Descriptor cd_S19868C3;
extern VTBL_ENTRY _ZTI8S19868C3[];
extern  VTBL_ENTRY _ZTV8S19868C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19868C3[];
static Base_Class bases_S19868C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19868C4,    ABISELECT(56,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
    7, //immediately_derived
  0, 0},
  {&cd_S3164C31_nt,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20526C8,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19868C4,    ABISELECT(544,356), //bcp->offset
    26, //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
    6, //immediately_derived
  0, 1},
  {&cd_S20526C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S19868C6,    ABISELECT(160,116), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19868C3,    ABISELECT(56,48), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19868C1[];
extern void _ZN8S19868C1D1Ev();
extern void _ZN8S19868C1D0Ev();
extern void _ZN8S19868C12v1Ev();
extern void _ZN8S19868C12v2Ev();
extern void _ZN8S19868C12v3Ev();
extern void _ZN8S19868C42v4Ev();
extern void _ZN8S19868C32v7Ev();
extern void _ZN8S19868C62v5Ev();
extern void _ZN8S19868C62v6Ev();
extern void _ZN8S19868C42v4Ev();
static  VTBL_ENTRY vtc_S19868C1[] = {
  ABISELECT(544,356),
  ABISELECT(56,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19868C1[0]),
  (VTBL_ENTRY)&_ZN8S19868C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19868C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19868C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19868C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19868C12v3Ev,
  ABISELECT(104,68),
  ABISELECT(104,68),
  0,
  0,
  ABISELECT(-56,-48),
  ABISELECT(488,308),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S19868C1[0]),
  (VTBL_ENTRY)&_ZN8S19868C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19868C32v7Ev,
  ABISELECT(-160,-116),
  ABISELECT(384,240),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI8S19868C1[0]),
  (VTBL_ENTRY)&_ZN8S19868C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19868C62v6Ev,
  0,
  ABISELECT(-544,-356),
  (VTBL_ENTRY)&(_ZTI8S19868C1[0]),
  (VTBL_ENTRY)&_ZN8S19868C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S19868C1[];
extern void _ZN8S19868C42v4Ev();
extern void _ZN8S19868C32v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19868C3__8S19868C1[] = {
  ABISELECT(-56,-48),
  ABISELECT(488,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19868C3[0]),
  (VTBL_ENTRY)&_ZN8S19868C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19868C32v7Ev,
};
extern void _ZN8S19868C62v5Ev();
extern void _ZN8S19868C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19868C68S19868C3__8S19868C1[] = {
  ABISELECT(-160,-116),
  ABISELECT(384,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19868C6[0]),
  (VTBL_ENTRY)&_ZN8S19868C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19868C62v6Ev,
};
extern void _ZN8S19868C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19868C4__8S19868C68S19868C3__8S19868C1[] = {
  0,
  ABISELECT(-384,-240),
  (VTBL_ENTRY)&(_ZTI8S19868C6[0]),
  (VTBL_ENTRY)&_ZN8S19868C42v4Ev,
};
extern void _ZN8S19868C62v5Ev();
extern void _ZN8S19868C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19868C6__8S19868C3__8S19868C1[] = {
  ABISELECT(-160,-116),
  ABISELECT(384,240),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S19868C3[0]),
  (VTBL_ENTRY)&_ZN8S19868C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19868C62v6Ev,
};
extern void _ZN8S19868C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19868C4__A1__8S19868C3__8S19868C1[] = {
  0,
  ABISELECT(-488,-308),
  (VTBL_ENTRY)&(_ZTI8S19868C3[0]),
  (VTBL_ENTRY)&_ZN8S19868C42v4Ev,
};
static  VTT_ENTRY vtt_S19868C1[] = {
  {&(_ZTV8S19868C1[5]),  5,30},
  {&(_ZTV8S19868C1[18]),  18,30},
  {&(_ZTV8S19868C1[24]),  24,30},
  {&(_ZTV8S19868C1[29]),  29,30},
  {&(_tg__ZTV8S19868C3__8S19868C1[4]),  4,6},
  {&(_tg__ZTV8S19868C68S19868C3__8S19868C1[4]),  4,6},
  {&(_tg__ZTV8S19868C4__8S19868C68S19868C3__8S19868C1[3]),  3,4},
  {&(_tg__ZTV8S19868C6__8S19868C3__8S19868C1[4]),  4,6},
  {&(_tg__ZTV8S19868C4__A1__8S19868C3__8S19868C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19868C1[];
extern  VTBL_ENTRY _ZTV8S19868C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19868C1[];
Class_Descriptor cd_S19868C1 = {  "S19868C1", // class name
  bases_S19868C1, 8,
  &(vtc_S19868C1[0]), // expected_vtbl_contents
  &(vtt_S19868C1[0]), // expected_vtt_contents
  ABISELECT(584,380), // object size
  NSPAIRA(_ZTI8S19868C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19868C1),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19868C1),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19867C4  {
  char s19867c4f0[2];
  __tsi64 s19867c4f1;
  void *s19867c4f2;
  ::S3164C31_nt s19867c4f3;
  virtual void  v4(); // _ZN8S19867C42v4Ev
  ~S19867C4(); // tgen
  S19867C4(); // tgen
};
//SIG(-1 S19867C4) C1{ v1 Fc[2] FL Fp FC2{ m}}


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

static void Test_S19867C4()
{
  extern Class_Descriptor cd_S19867C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19867C4, buf);
    S19867C4 *dp, &lv = *(dp=new (buf) S19867C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19867C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19867C4)");
    check_field_offset(lv, s19867c4f0, ABISELECT(8,4), "S19867C4.s19867c4f0");
    check_field_offset(lv, s19867c4f1, ABISELECT(16,8), "S19867C4.s19867c4f1");
    check_field_offset(lv, s19867c4f2, ABISELECT(24,16), "S19867C4.s19867c4f2");
    check_field_offset(lv, s19867c4f3, ABISELECT(32,20), "S19867C4.s19867c4f3");
    test_class_info(&lv, &cd_S19867C4);
    dp->~S19867C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19867C4(Test_S19867C4, "S19867C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S19867C4C1Ev();
extern void _ZN8S19867C4D1Ev();
Name_Map name_map_S19867C4[] = {
  NSPAIR(_ZN8S19867C4C1Ev),
  NSPAIR(_ZN8S19867C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19867C4[];
extern void _ZN8S19867C42v4Ev();
static  VTBL_ENTRY vtc_S19867C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19867C4[0]),
  (VTBL_ENTRY)&_ZN8S19867C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S19867C4[];
extern  VTBL_ENTRY _ZTV8S19867C4[];
Class_Descriptor cd_S19867C4 = {  "S19867C4", // class name
  0,0,//no base classes
  &(vtc_S19867C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S19867C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19867C4),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  S19867C6  : virtual S19867C4 , virtual S3164C31_nt , S20525C8 {
  __tsi64 s19867c6f0;
  long s19867c6f1;
  void *s19867c6f2[4];
  virtual void  v5(); // _ZN8S19867C62v5Ev
  virtual void  v6(); // _ZN8S19867C62v6Ev
  ~S19867C6(); // tgen
  S19867C6(); // tgen
};
//SIG(-1 S19867C6) C1{ VBC2{ v3 Fc[2] FL Fp FC3{ m}} VBC3 BC4{ m FC5{ v4 Fc[2] FL Fp FC3} Fl Fi[3]} v1 v2 FL Fl Fp[4]}


void  S19867C6 ::v5(){vfunc_called(this, "_ZN8S19867C62v5Ev");}
void  S19867C6 ::v6(){vfunc_called(this, "_ZN8S19867C62v6Ev");}
S19867C6 ::~S19867C6(){ note_dtor("S19867C6", this);} // tgen
S19867C6 ::S19867C6(){ note_ctor("S19867C6", this);} // tgen

static void Test_S19867C6()
{
  extern Class_Descriptor cd_S19867C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,25)];
    init_test(&cd_S19867C6, buf);
    S19867C6 *dp, &lv = *(dp=new (buf) S19867C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,96), "sizeof(S19867C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19867C6)");
    check_base_class_offset(lv, (S19867C4*), ABISELECT(120,72), "S19867C6");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S19867C6");
    check_base_class_offset(lv, (S20525C8*), ABISELECT(8,4), "S19867C6");
    check_field_offset(lv, s19867c6f0, ABISELECT(72,44), "S19867C6.s19867c6f0");
    check_field_offset(lv, s19867c6f1, ABISELECT(80,52), "S19867C6.s19867c6f1");
    check_field_offset(lv, s19867c6f2, ABISELECT(88,56), "S19867C6.s19867c6f2");
    test_class_info(&lv, &cd_S19867C6);
    dp->~S19867C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19867C6(Test_S19867C6, "S19867C6", ABISELECT(160,96));

#else // __cplusplus

extern void _ZN8S19867C6C1Ev();
extern void _ZN8S19867C6D1Ev();
Name_Map name_map_S19867C6[] = {
  NSPAIR(_ZN8S19867C6C1Ev),
  NSPAIR(_ZN8S19867C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19867C4;
extern VTBL_ENTRY _ZTI8S19867C4[];
extern  VTBL_ENTRY _ZTV8S19867C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
static Base_Class bases_S19867C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19867C4,    ABISELECT(120,72), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20525C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19867C6[];
extern void _ZN8S19867C62v5Ev();
extern void _ZN8S19867C62v6Ev();
extern void _ZN8S19867C42v4Ev();
static  VTBL_ENTRY vtc_S19867C6[] = {
  0,
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19867C6[0]),
  (VTBL_ENTRY)&_ZN8S19867C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19867C62v6Ev,
  0,
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S19867C6[0]),
  (VTBL_ENTRY)&_ZN8S19867C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S19867C6[];
static  VTT_ENTRY vtt_S19867C6[] = {
  {&(_ZTV8S19867C6[4]),  4,10},
  {&(_ZTV8S19867C6[9]),  9,10},
};
extern VTBL_ENTRY _ZTI8S19867C6[];
extern  VTBL_ENTRY _ZTV8S19867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19867C6[];
Class_Descriptor cd_S19867C6 = {  "S19867C6", // class name
  bases_S19867C6, 3,
  &(vtc_S19867C6[0]), // expected_vtbl_contents
  &(vtt_S19867C6[0]), // expected_vtt_contents
  ABISELECT(160,96), // object size
  NSPAIRA(_ZTI8S19867C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19867C6),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19867C6),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  S19867C3  : S19867C4 , S3164C31_nt , S20525C8 , S19867C6 {
  void *s19867c3f0[10];
  int s19867c3f1;
  long s19867c3f2;
  void *s19867c3f3;
  ::S19867C6 s19867c3f4;
  virtual void  v7(); // _ZN8S19867C32v7Ev
  ~S19867C3(); // tgen
  S19867C3(); // tgen
};
//SIG(-1 S19867C3) C1{ BC2{ v2 Fc[2] FL Fp FC3{ m}} BC3 BC4{ m FC5{ v5 Fc[2] FL Fp FC3} Fl Fi[3]} BC6{ VBC2 VBC3 BC4 v3 v4 FL Fl Fp[4]} v1 Fp[10] Fi Fl Fp FC6}


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

static void Test_S19867C3()
{
  extern Class_Descriptor cd_S19867C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,78)];
    init_test(&cd_S19867C3, buf);
    S19867C3 *dp, &lv = *(dp=new (buf) S19867C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,308), "sizeof(S19867C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19867C3)");
    /*is_ambiguous_... S19867C3::S19867C4 */ AMB_check_base_class_offset(lv, (S19867C4*), 0, "S19867C3");
    /*is_ambiguous_... S19867C3::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S19867C3");
    /*is_ambiguous_... S19867C3::S20525C8 */ AMB_check_base_class_offset(lv, (S20525C8*), ABISELECT(40,24), "S19867C3");
    check_base_class_offset(lv, (S19867C4*)(S19867C6*), ABISELECT(488,284), "S19867C3");
    check_base_class_offset(lv, (S3164C31_nt*)(S19867C6*), ABISELECT(521,305), "S19867C3");
    check_base_class_offset(lv, (S20525C8*)(S19867C6*), ABISELECT(112,68), "S19867C3");
    check_base_class_offset(lv, (S19867C6*), ABISELECT(104,64), "S19867C3");
    check_field_offset(lv, s19867c3f0, ABISELECT(224,136), "S19867C3.s19867c3f0");
    check_field_offset(lv, s19867c3f1, ABISELECT(304,176), "S19867C3.s19867c3f1");
    check_field_offset(lv, s19867c3f2, ABISELECT(312,180), "S19867C3.s19867c3f2");
    check_field_offset(lv, s19867c3f3, ABISELECT(320,184), "S19867C3.s19867c3f3");
    check_field_offset(lv, s19867c3f4, ABISELECT(328,188), "S19867C3.s19867c3f4");
    test_class_info(&lv, &cd_S19867C3);
    dp->~S19867C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19867C3(Test_S19867C3, "S19867C3", ABISELECT(528,308));

#else // __cplusplus

extern void _ZN8S19867C3C1Ev();
extern void _ZN8S19867C3D1Ev();
Name_Map name_map_S19867C3[] = {
  NSPAIR(_ZN8S19867C3C1Ev),
  NSPAIR(_ZN8S19867C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19867C4;
extern VTBL_ENTRY _ZTI8S19867C4[];
extern  VTBL_ENTRY _ZTV8S19867C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S19867C4;
extern VTBL_ENTRY _ZTI8S19867C4[];
extern  VTBL_ENTRY _ZTV8S19867C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S19867C6;
extern VTBL_ENTRY _ZTI8S19867C6[];
extern  VTBL_ENTRY _ZTV8S19867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19867C6[];
static Base_Class bases_S19867C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19867C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20525C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19867C4,    ABISELECT(488,284), //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
    6, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(521,305), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20525C8,    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_S19867C6,    ABISELECT(104,64), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19867C3[];
extern void _ZN8S19867C42v4Ev();
extern void _ZN8S19867C32v7Ev();
extern void _ZN8S19867C62v5Ev();
extern void _ZN8S19867C62v6Ev();
extern void _ZN8S19867C42v4Ev();
static  VTBL_ENTRY vtc_S19867C3[] = {
  ABISELECT(521,305),
  ABISELECT(488,284),
  0,
  (VTBL_ENTRY)&(_ZTI8S19867C3[0]),
  (VTBL_ENTRY)&_ZN8S19867C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19867C32v7Ev,
  ABISELECT(417,241),
  ABISELECT(384,220),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S19867C3[0]),
  (VTBL_ENTRY)&_ZN8S19867C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19867C62v6Ev,
  0,
  ABISELECT(-488,-284),
  (VTBL_ENTRY)&(_ZTI8S19867C3[0]),
  (VTBL_ENTRY)&_ZN8S19867C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S19867C3[];
extern void _ZN8S19867C62v5Ev();
extern void _ZN8S19867C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19867C6__8S19867C3[] = {
  ABISELECT(417,241),
  ABISELECT(384,220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19867C6[0]),
  (VTBL_ENTRY)&_ZN8S19867C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19867C62v6Ev,
};
extern void _ZN8S19867C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19867C4__8S19867C6__8S19867C3[] = {
  0,
  ABISELECT(-384,-220),
  (VTBL_ENTRY)&(_ZTI8S19867C6[0]),
  (VTBL_ENTRY)&_ZN8S19867C42v4Ev,
};
static  VTT_ENTRY vtt_S19867C3[] = {
  {&(_ZTV8S19867C3[4]),  4,16},
  {&(_tg__ZTV8S19867C6__8S19867C3[4]),  4,6},
  {&(_tg__ZTV8S19867C4__8S19867C6__8S19867C3[3]),  3,4},
  {&(_ZTV8S19867C3[10]),  10,16},
  {&(_ZTV8S19867C3[15]),  15,16},
};
extern VTBL_ENTRY _ZTI8S19867C3[];
extern  VTBL_ENTRY _ZTV8S19867C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19867C3[];
Class_Descriptor cd_S19867C3 = {  "S19867C3", // class name
  bases_S19867C3, 7,
  &(vtc_S19867C3[0]), // expected_vtbl_contents
  &(vtt_S19867C3[0]), // expected_vtt_contents
  ABISELECT(528,308), // object size
  NSPAIRA(_ZTI8S19867C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19867C3),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19867C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19867C1  : virtual S3164C31_nt , virtual S19867C3 {
  long s19867c1f0[5];
  int s19867c1f1;
  virtual  ~S19867C1(); // _ZN8S19867C1D2Ev
  virtual void  v1(); // _ZN8S19867C12v1Ev
  virtual void  v2(); // _ZN8S19867C12v2Ev
  virtual void  v3(); // _ZN8S19867C12v3Ev
  S19867C1(); // tgen
};
//SIG(1 S19867C1) C1{ VBC2{ m} VBC3{ BC4{ v4 Fc[2] FL Fp FC2} BC2 BC5{ m FC6{ v8 Fc[2] FL Fp FC2} Fl Fi[3]} BC7{ VBC4 VBC2 BC5 v5 v6 FL Fl Fp[4]} v7 Fp[10] Fi Fl Fp FC7} vd v1 v2 v3 Fl[5] Fi}


 S19867C1 ::~S19867C1(){ note_dtor("S19867C1", this);}
void  S19867C1 ::v1(){vfunc_called(this, "_ZN8S19867C12v1Ev");}
void  S19867C1 ::v2(){vfunc_called(this, "_ZN8S19867C12v2Ev");}
void  S19867C1 ::v3(){vfunc_called(this, "_ZN8S19867C12v3Ev");}
S19867C1 ::S19867C1(){ note_ctor("S19867C1", this);} // tgen

static void Test_S19867C1()
{
  extern Class_Descriptor cd_S19867C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(74,85)];
    init_test(&cd_S19867C1, buf);
    S19867C1 *dp, &lv = *(dp=new (buf) S19867C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(584,336), "sizeof(S19867C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19867C1)");
    /*is_ambiguous_... S19867C1::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S19867C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S19867C6*)(S19867C3*), 0, "S19867C1");
    /*is_ambiguous_... S19867C3::S19867C4 */ AMB_check_base_class_offset(lv, (S19867C4*)(S19867C3*), ABISELECT(56,28), "S19867C1");
    /*is_ambiguous_... S19867C3::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S19867C3*), ABISELECT(56,28), "S19867C1");
    /*is_ambiguous_... S19867C3::S20525C8 */ AMB_check_base_class_offset(lv, (S20525C8*)(S19867C3*), ABISELECT(96,52), "S19867C1");
    check_base_class_offset(lv, (S19867C4*)(S19867C6*)(S19867C3*), ABISELECT(544,312), "S19867C1");
    check_base_class_offset(lv, (S20525C8*)(S19867C6*)(S19867C3*), ABISELECT(168,96), "S19867C1");
    check_base_class_offset(lv, (S19867C6*)(S19867C3*), ABISELECT(160,92), "S19867C1");
    check_base_class_offset(lv, (S19867C3*), ABISELECT(56,28), "S19867C1");
    check_field_offset(lv, s19867c1f0, ABISELECT(8,4), "S19867C1.s19867c1f0");
    check_field_offset(lv, s19867c1f1, ABISELECT(48,24), "S19867C1.s19867c1f1");
    test_class_info(&lv, &cd_S19867C1);
    dp->~S19867C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19867C1(Test_S19867C1, "S19867C1", ABISELECT(584,336));

#else // __cplusplus

extern void _ZN8S19867C1C1Ev();
extern void _ZN8S19867C1D2Ev();
Name_Map name_map_S19867C1[] = {
  NSPAIR(_ZN8S19867C1C1Ev),
  NSPAIR(_ZN8S19867C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S19867C4;
extern VTBL_ENTRY _ZTI8S19867C4[];
extern  VTBL_ENTRY _ZTV8S19867C4[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S19867C4;
extern VTBL_ENTRY _ZTI8S19867C4[];
extern  VTBL_ENTRY _ZTV8S19867C4[];
extern Class_Descriptor cd_S20525C8;
extern VTBL_ENTRY _ZTI8S20525C8[];
extern Class_Descriptor cd_S19867C6;
extern VTBL_ENTRY _ZTI8S19867C6[];
extern  VTBL_ENTRY _ZTV8S19867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19867C6[];
extern Class_Descriptor cd_S19867C3;
extern VTBL_ENTRY _ZTI8S19867C3[];
extern  VTBL_ENTRY _ZTV8S19867C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19867C3[];
static Base_Class bases_S19867C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19867C4,    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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3164C31_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
    7, //immediately_derived
  0, 0},
  {&cd_S20525C8,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19867C4,    ABISELECT(544,312), //bcp->offset
    26, //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
    6, //immediately_derived
  0, 1},
  {&cd_S20525C8,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19867C6,    ABISELECT(160,92), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19867C3,    ABISELECT(56,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19867C1[];
extern void _ZN8S19867C1D1Ev();
extern void _ZN8S19867C1D0Ev();
extern void _ZN8S19867C12v1Ev();
extern void _ZN8S19867C12v2Ev();
extern void _ZN8S19867C12v3Ev();
extern void _ZN8S19867C42v4Ev();
extern void _ZN8S19867C32v7Ev();
extern void _ZN8S19867C62v5Ev();
extern void _ZN8S19867C62v6Ev();
extern void _ZN8S19867C42v4Ev();
static  VTBL_ENTRY vtc_S19867C1[] = {
  ABISELECT(544,312),
  ABISELECT(56,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19867C1[0]),
  (VTBL_ENTRY)&_ZN8S19867C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19867C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19867C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19867C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19867C12v3Ev,
  ABISELECT(104,64),
  ABISELECT(104,64),
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(488,284),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19867C1[0]),
  (VTBL_ENTRY)&_ZN8S19867C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19867C32v7Ev,
  ABISELECT(-160,-92),
  ABISELECT(384,220),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19867C1[0]),
  (VTBL_ENTRY)&_ZN8S19867C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19867C62v6Ev,
  0,
  ABISELECT(-544,-312),
  (VTBL_ENTRY)&(_ZTI8S19867C1[0]),
  (VTBL_ENTRY)&_ZN8S19867C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S19867C1[];
extern void _ZN8S19867C42v4Ev();
extern void _ZN8S19867C32v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19867C3__8S19867C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(488,284),
  0,
  (VTBL_ENTRY)&(_ZTI8S19867C3[0]),
  (VTBL_ENTRY)&_ZN8S19867C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19867C32v7Ev,
};
extern void _ZN8S19867C62v5Ev();
extern void _ZN8S19867C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19867C68S19867C3__8S19867C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(384,220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19867C6[0]),
  (VTBL_ENTRY)&_ZN8S19867C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19867C62v6Ev,
};
extern void _ZN8S19867C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19867C4__8S19867C68S19867C3__8S19867C1[] = {
  0,
  ABISELECT(-384,-220),
  (VTBL_ENTRY)&(_ZTI8S19867C6[0]),
  (VTBL_ENTRY)&_ZN8S19867C42v4Ev,
};
extern void _ZN8S19867C62v5Ev();
extern void _ZN8S19867C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19867C6__8S19867C3__8S19867C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(384,220),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S19867C3[0]),
  (VTBL_ENTRY)&_ZN8S19867C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19867C62v6Ev,
};
extern void _ZN8S19867C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19867C4__A1__8S19867C3__8S19867C1[] = {
  0,
  ABISELECT(-488,-284),
  (VTBL_ENTRY)&(_ZTI8S19867C3[0]),
  (VTBL_ENTRY)&_ZN8S19867C42v4Ev,
};
static  VTT_ENTRY vtt_S19867C1[] = {
  {&(_ZTV8S19867C1[5]),  5,30},
  {&(_ZTV8S19867C1[18]),  18,30},
  {&(_ZTV8S19867C1[24]),  24,30},
  {&(_ZTV8S19867C1[29]),  29,30},
  {&(_tg__ZTV8S19867C3__8S19867C1[4]),  4,6},
  {&(_tg__ZTV8S19867C68S19867C3__8S19867C1[4]),  4,6},
  {&(_tg__ZTV8S19867C4__8S19867C68S19867C3__8S19867C1[3]),  3,4},
  {&(_tg__ZTV8S19867C6__8S19867C3__8S19867C1[4]),  4,6},
  {&(_tg__ZTV8S19867C4__A1__8S19867C3__8S19867C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19867C1[];
extern  VTBL_ENTRY _ZTV8S19867C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19867C1[];
Class_Descriptor cd_S19867C1 = {  "S19867C1", // class name
  bases_S19867C1, 8,
  &(vtc_S19867C1[0]), // expected_vtbl_contents
  &(vtt_S19867C1[0]), // expected_vtt_contents
  ABISELECT(584,336), // object size
  NSPAIRA(_ZTI8S19867C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19867C1),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19867C1),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9214C2  {
  ::S2213C20_nt s9214c2f0;
  int s9214c2f1[2];
  char s9214c2f2;
  virtual  ~S9214C2(); // _ZN7S9214C2D1Ev
  virtual void  v3(); // _ZN7S9214C22v3Ev
  virtual void  v4(); // _ZN7S9214C22v4Ev
  virtual void  v5(); // _ZN7S9214C22v5Ev
  S9214C2(); // tgen
};
//SIG(-1 S9214C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9214C2 ::~S9214C2(){ note_dtor("S9214C2", this);}
void  S9214C2 ::v3(){vfunc_called(this, "_ZN7S9214C22v3Ev");}
void  S9214C2 ::v4(){vfunc_called(this, "_ZN7S9214C22v4Ev");}
void  S9214C2 ::v5(){vfunc_called(this, "_ZN7S9214C22v5Ev");}
S9214C2 ::S9214C2(){ note_ctor("S9214C2", this);} // tgen

static void Test_S9214C2()
{
  extern Class_Descriptor cd_S9214C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9214C2, buf);
    S9214C2 *dp, &lv = *(dp=new (buf) S9214C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9214C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9214C2)");
    check_field_offset(lv, s9214c2f0, ABISELECT(8,4), "S9214C2.s9214c2f0");
    check_field_offset(lv, s9214c2f1, ABISELECT(24,16), "S9214C2.s9214c2f1");
    check_field_offset(lv, s9214c2f2, ABISELECT(32,24), "S9214C2.s9214c2f2");
    test_class_info(&lv, &cd_S9214C2);
    dp->~S9214C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9214C2(Test_S9214C2, "S9214C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9214C2C1Ev();
extern void _ZN7S9214C2D1Ev();
Name_Map name_map_S9214C2[] = {
  NSPAIR(_ZN7S9214C2C1Ev),
  NSPAIR(_ZN7S9214C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9214C2[];
extern void _ZN7S9214C2D1Ev();
extern void _ZN7S9214C2D0Ev();
extern void _ZN7S9214C22v3Ev();
extern void _ZN7S9214C22v4Ev();
extern void _ZN7S9214C22v5Ev();
static  VTBL_ENTRY vtc_S9214C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9214C2[0]),
  (VTBL_ENTRY)&_ZN7S9214C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9214C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9214C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9214C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9214C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9214C2[];
extern  VTBL_ENTRY _ZTV7S9214C2[];
Class_Descriptor cd_S9214C2 = {  "S9214C2", // class name
  0,0,//no base classes
  &(vtc_S9214C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9214C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9214C2),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  S9214C1  : S9214C2 {
  ::S18288C7 s9214c1f0;
  virtual void  v1(); // _ZN7S9214C12v1Ev
  virtual void  v2(); // _ZN7S9214C12v2Ev
  ~S9214C1(); // tgen
  S9214C1(); // tgen
};
//SIG(1 S9214C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 FC5{ FC6{ FC7{ Fc[20]} Fc[16]} FC7 FC8{ Fc[128]} FU9{ FC10{ Fi Fi} FL FC11{ Fi Fi Fi Fc[128]}}}}


void  S9214C1 ::v1(){vfunc_called(this, "_ZN7S9214C12v1Ev");}
void  S9214C1 ::v2(){vfunc_called(this, "_ZN7S9214C12v2Ev");}
S9214C1 ::~S9214C1(){ note_dtor("S9214C1", this);} // tgen
S9214C1 ::S9214C1(){ note_ctor("S9214C1", this);} // tgen

static void Test_S9214C1()
{
  extern Class_Descriptor cd_S9214C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(47,89)];
    init_test(&cd_S9214C1, buf);
    S9214C1 *dp, &lv = *(dp=new (buf) S9214C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,352), "sizeof(S9214C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9214C1)");
    check_base_class_offset(lv, (S9214C2*), 0, "S9214C1");
    check_field_offset(lv, s9214c1f0, ABISELECT(40,28), "S9214C1.s9214c1f0");
    test_class_info(&lv, &cd_S9214C1);
    dp->~S9214C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9214C1(Test_S9214C1, "S9214C1", ABISELECT(368,352));

#else // __cplusplus

extern void _ZN7S9214C1C1Ev();
extern void _ZN7S9214C1D1Ev();
Name_Map name_map_S9214C1[] = {
  NSPAIR(_ZN7S9214C1C1Ev),
  NSPAIR(_ZN7S9214C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9214C2;
extern VTBL_ENTRY _ZTI7S9214C2[];
extern  VTBL_ENTRY _ZTV7S9214C2[];
static Base_Class bases_S9214C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9214C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9214C1[];
extern void _ZN7S9214C1D1Ev();
extern void _ZN7S9214C1D0Ev();
extern void _ZN7S9214C22v3Ev();
extern void _ZN7S9214C22v4Ev();
extern void _ZN7S9214C22v5Ev();
extern void _ZN7S9214C12v1Ev();
extern void _ZN7S9214C12v2Ev();
static  VTBL_ENTRY vtc_S9214C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9214C1[0]),
  (VTBL_ENTRY)&_ZN7S9214C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9214C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9214C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9214C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9214C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9214C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9214C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9214C1[];
extern  VTBL_ENTRY _ZTV7S9214C1[];
Class_Descriptor cd_S9214C1 = {  "S9214C1", // class name
  bases_S9214C1, 1,
  &(vtc_S9214C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(368,352), // object size
  NSPAIRA(_ZTI7S9214C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9214C1),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  S18999C7  {
  virtual void  v6(); // _ZN8S18999C72v6Ev
  virtual void  v7(); // _ZN8S18999C72v7Ev
  virtual void  v8(); // _ZN8S18999C72v8Ev
  ~S18999C7(); // tgen
  S18999C7(); // tgen
};
//SIG(-1 S18999C7) C1{ v1 v2 v3}


void  S18999C7 ::v6(){vfunc_called(this, "_ZN8S18999C72v6Ev");}
void  S18999C7 ::v7(){vfunc_called(this, "_ZN8S18999C72v7Ev");}
void  S18999C7 ::v8(){vfunc_called(this, "_ZN8S18999C72v8Ev");}
S18999C7 ::~S18999C7(){ note_dtor("S18999C7", this);} // tgen
S18999C7 ::S18999C7(){ note_ctor("S18999C7", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S18999C7C1Ev();
extern void _ZN8S18999C7D1Ev();
Name_Map name_map_S18999C7[] = {
  NSPAIR(_ZN8S18999C7C1Ev),
  NSPAIR(_ZN8S18999C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18999C7[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY vtc_S18999C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C7[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
Class_Descriptor cd_S18999C7 = {  "S18999C7", // class name
  0,0,//no base classes
  &(vtc_S18999C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18999C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18999C7),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  S18999C6  : S18999C7 {
  virtual  ~S18999C6(); // _ZN8S18999C6D1Ev
  virtual void  v9(); // _ZN8S18999C62v9Ev
  S18999C6(); // tgen
};
//SIG(-1 S18999C6) C1{ BC2{ v2 v3 v4} vd v1}


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

static void Test_S18999C6()
{
  extern Class_Descriptor cd_S18999C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18999C6, buf);
    S18999C6 *dp, &lv = *(dp=new (buf) S18999C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18999C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18999C6)");
    check_base_class_offset(lv, (S18999C7*), 0, "S18999C6");
    test_class_info(&lv, &cd_S18999C6);
    dp->~S18999C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18999C6(Test_S18999C6, "S18999C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18999C6C1Ev();
extern void _ZN8S18999C6D1Ev();
Name_Map name_map_S18999C6[] = {
  NSPAIR(_ZN8S18999C6C1Ev),
  NSPAIR(_ZN8S18999C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
static Base_Class bases_S18999C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18999C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18999C6[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void _ZN8S18999C6D1Ev();
extern void _ZN8S18999C6D0Ev();
extern void _ZN8S18999C62v9Ev();
static  VTBL_ENTRY vtc_S18999C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C6[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&_ZN8S18999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S18999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
};
extern VTBL_ENTRY _ZTI8S18999C6[];
extern  VTBL_ENTRY _ZTV8S18999C6[];
Class_Descriptor cd_S18999C6 = {  "S18999C6", // class name
  bases_S18999C6, 1,
  &(vtc_S18999C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18999C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S18999C6),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  S18999C5  : virtual S18999C6 , virtual S18999C7 {
  int s18999c5f0;
  virtual void  v10(); // _ZN8S18999C53v10Ev
  virtual void  v11(); // _ZN8S18999C53v11Ev
  ~S18999C5(); // tgen
  S18999C5(); // tgen
};
//SIG(-1 S18999C5) C1{ VBC2{ BC3{ v3 v4 v5} vd v6} VBC3 v1 v2 Fi}


void  S18999C5 ::v10(){vfunc_called(this, "_ZN8S18999C53v10Ev");}
void  S18999C5 ::v11(){vfunc_called(this, "_ZN8S18999C53v11Ev");}
S18999C5 ::~S18999C5(){ note_dtor("S18999C5", this);} // tgen
S18999C5 ::S18999C5(){ note_ctor("S18999C5", this);} // tgen

static void Test_S18999C5()
{
  extern Class_Descriptor cd_S18999C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S18999C5, buf);
    S18999C5 *dp, &lv = *(dp=new (buf) S18999C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S18999C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18999C5)");
    check_base_class_offset(lv, (S18999C7*)(S18999C6*), 0, "S18999C5");
    check_base_class_offset(lv, (S18999C6*), 0, "S18999C5");
    /*is_ambiguous_... S18999C5::S18999C7 */ AMB_check_base_class_offset(lv, (S18999C7*), ABISELECT(16,8), "S18999C5");
    check_field_offset(lv, s18999c5f0, ABISELECT(8,4), "S18999C5.s18999c5f0");
    test_class_info(&lv, &cd_S18999C5);
    dp->~S18999C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18999C5(Test_S18999C5, "S18999C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S18999C5C1Ev();
extern void _ZN8S18999C5D1Ev();
Name_Map name_map_S18999C5[] = {
  NSPAIR(_ZN8S18999C5C1Ev),
  NSPAIR(_ZN8S18999C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
extern Class_Descriptor cd_S18999C6;
extern VTBL_ENTRY _ZTI8S18999C6[];
extern  VTBL_ENTRY _ZTV8S18999C6[];
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
static Base_Class bases_S18999C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18999C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S18999C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18999C7,    ABISELECT(16,8), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18999C5[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void _ZN8S18999C5D1Ev();
extern void _ZN8S18999C5D0Ev();
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY vtc_S18999C5[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C5[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&_ZN8S18999C5D1Ev,
  (VTBL_ENTRY)&_ZN8S18999C5D0Ev,
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18999C5[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern VTBL_ENTRY _ZTV8S18999C5[];
static  VTT_ENTRY vtt_S18999C5[] = {
  {&(_ZTV8S18999C5[9]),  9,25},
  {&(_ZTV8S18999C5[9]),  9,25},
  {&(_ZTV8S18999C5[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S18999C5[];
extern  VTBL_ENTRY _ZTV8S18999C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C5[];
Class_Descriptor cd_S18999C5 = {  "S18999C5", // class name
  bases_S18999C5, 3,
  &(vtc_S18999C5[0]), // expected_vtbl_contents
  &(vtt_S18999C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S18999C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18999C5),25, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18999C5),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18999C4  : S18999C5 {
  virtual  ~S18999C4(); // _ZN8S18999C4D2Ev
  virtual void  v12(); // _ZN8S18999C43v12Ev
  S18999C4(); // tgen
};
//SIG(-1 S18999C4) C1{ BC2{ VBC3{ BC4{ v2 v3 v4} vd v5} VBC4 v6 v7 Fi} vd v1}


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

static void Test_S18999C4()
{
  extern Class_Descriptor cd_S18999C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S18999C4, buf);
    S18999C4 *dp, &lv = *(dp=new (buf) S18999C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S18999C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18999C4)");
    check_base_class_offset(lv, (S18999C7*)(S18999C6*), 0, "S18999C4");
    check_base_class_offset(lv, (S18999C6*)(S18999C5*), 0, "S18999C4");
    /*is_ambiguous_... S18999C5::S18999C7 */ AMB_check_base_class_offset(lv, (S18999C7*)(S18999C5*), ABISELECT(16,8), "S18999C4");
    check_base_class_offset(lv, (S18999C5*), 0, "S18999C4");
    test_class_info(&lv, &cd_S18999C4);
    dp->~S18999C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18999C4(Test_S18999C4, "S18999C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S18999C4C1Ev();
extern void _ZN8S18999C4D2Ev();
Name_Map name_map_S18999C4[] = {
  NSPAIR(_ZN8S18999C4C1Ev),
  NSPAIR(_ZN8S18999C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
extern Class_Descriptor cd_S18999C6;
extern VTBL_ENTRY _ZTI8S18999C6[];
extern  VTBL_ENTRY _ZTV8S18999C6[];
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
extern Class_Descriptor cd_S18999C5;
extern VTBL_ENTRY _ZTI8S18999C5[];
extern  VTBL_ENTRY _ZTV8S18999C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C5[];
static Base_Class bases_S18999C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18999C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S18999C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18999C7,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18999C5,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18999C4[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void _ZN8S18999C4D1Ev();
extern void _ZN8S18999C4D0Ev();
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C43v12Ev();
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY vtc_S18999C4[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C4[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&_ZN8S18999C4D1Ev,
  (VTBL_ENTRY)&_ZN8S18999C4D0Ev,
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18999C43v12Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18999C4[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern VTBL_ENTRY _ZTV8S18999C4[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void _ZN8S18999C5D1Ev();
extern void _ZN8S18999C5D0Ev();
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C5__8S18999C4[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C5[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&_ZN8S18999C5D1Ev,
  (VTBL_ENTRY)&_ZN8S18999C5D0Ev,
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C7__A1__8S18999C5__8S18999C4[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18999C5[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
static  VTT_ENTRY vtt_S18999C4[] = {
  {&(_ZTV8S18999C4[9]),  9,26},
  {&(_tg__ZTV8S18999C5__8S18999C4[9]),  9,17},
  {&(_tg__ZTV8S18999C5__8S18999C4[9]),  9,17},
  {&(_tg__ZTV8S18999C7__A1__8S18999C5__8S18999C4[5]),  5,8},
  {&(_ZTV8S18999C4[9]),  9,26},
  {&(_ZTV8S18999C4[23]),  23,26},
};
extern VTBL_ENTRY _ZTI8S18999C4[];
extern  VTBL_ENTRY _ZTV8S18999C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C4[];
Class_Descriptor cd_S18999C4 = {  "S18999C4", // class name
  bases_S18999C4, 4,
  &(vtc_S18999C4[0]), // expected_vtbl_contents
  &(vtt_S18999C4[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S18999C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S18999C4),26, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18999C4),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  S18999C3  : S18999C4 {
  virtual void  v13(); // _ZN8S18999C33v13Ev
  virtual void  v14(); // _ZN8S18999C33v14Ev
  ~S18999C3(); // tgen
  S18999C3(); // tgen
};
//SIG(-1 S18999C3) C1{ BC2{ BC3{ VBC4{ BC5{ v3 v4 v5} vd v6} VBC5 v7 v8 Fi} vd v9} v1 v2}


void  S18999C3 ::v13(){vfunc_called(this, "_ZN8S18999C33v13Ev");}
void  S18999C3 ::v14(){vfunc_called(this, "_ZN8S18999C33v14Ev");}
S18999C3 ::~S18999C3(){ note_dtor("S18999C3", this);} // tgen
S18999C3 ::S18999C3(){ note_ctor("S18999C3", this);} // tgen

static void Test_S18999C3()
{
  extern Class_Descriptor cd_S18999C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S18999C3, buf);
    S18999C3 *dp, &lv = *(dp=new (buf) S18999C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S18999C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18999C3)");
    check_base_class_offset(lv, (S18999C7*)(S18999C6*), 0, "S18999C3");
    check_base_class_offset(lv, (S18999C6*)(S18999C5*)(S18999C4*), 0, "S18999C3");
    /*is_ambiguous_... S18999C5::S18999C7 */ AMB_check_base_class_offset(lv, (S18999C7*)(S18999C5*)(S18999C4*), ABISELECT(16,8), "S18999C3");
    check_base_class_offset(lv, (S18999C5*)(S18999C4*), 0, "S18999C3");
    check_base_class_offset(lv, (S18999C4*), 0, "S18999C3");
    test_class_info(&lv, &cd_S18999C3);
    dp->~S18999C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18999C3(Test_S18999C3, "S18999C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S18999C3C1Ev();
extern void _ZN8S18999C3D1Ev();
Name_Map name_map_S18999C3[] = {
  NSPAIR(_ZN8S18999C3C1Ev),
  NSPAIR(_ZN8S18999C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
extern Class_Descriptor cd_S18999C6;
extern VTBL_ENTRY _ZTI8S18999C6[];
extern  VTBL_ENTRY _ZTV8S18999C6[];
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
extern Class_Descriptor cd_S18999C5;
extern VTBL_ENTRY _ZTI8S18999C5[];
extern  VTBL_ENTRY _ZTV8S18999C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C5[];
extern Class_Descriptor cd_S18999C4;
extern VTBL_ENTRY _ZTI8S18999C4[];
extern  VTBL_ENTRY _ZTV8S18999C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C4[];
static Base_Class bases_S18999C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18999C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S18999C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18999C7,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18999C5,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S18999C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18999C3[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void _ZN8S18999C3D1Ev();
extern void _ZN8S18999C3D0Ev();
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C43v12Ev();
extern void _ZN8S18999C33v13Ev();
extern void _ZN8S18999C33v14Ev();
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY vtc_S18999C3[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C3[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&_ZN8S18999C3D1Ev,
  (VTBL_ENTRY)&_ZN8S18999C3D0Ev,
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18999C43v12Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v14Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18999C3[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern VTBL_ENTRY _ZTV8S18999C3[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void _ZN8S18999C4D1Ev();
extern void _ZN8S18999C4D0Ev();
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C4__8S18999C3[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C4[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&_ZN8S18999C4D1Ev,
  (VTBL_ENTRY)&_ZN8S18999C4D0Ev,
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18999C43v12Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void ABISELECT(_ZTv0_n48_N8S18999C5D1Ev,_ZTv0_n24_N8S18999C5D1Ev)();
extern void _ZN8S18999C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S18999C5D0Ev,_ZTv0_n24_N8S18999C5D0Ev)();
extern void _ZN8S18999C5D0Ev() __attribute__((weak));
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C58S18999C4__8S18999C3[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C5[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C5D1Ev,_ZTv0_n24_N8S18999C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C5D0Ev,_ZTv0_n24_N8S18999C5D0Ev),
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C7__A1__8S18999C58S18999C4__8S18999C3[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18999C5[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C7__A1__8S18999C4__8S18999C3[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18999C4[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
static  VTT_ENTRY vtt_S18999C3[] = {
  {&(_ZTV8S18999C3[9]),  9,28},
  {&(_tg__ZTV8S18999C4__8S18999C3[9]),  9,18},
  {&(_tg__ZTV8S18999C58S18999C4__8S18999C3[9]),  9,17},
  {&(_tg__ZTV8S18999C58S18999C4__8S18999C3[9]),  9,17},
  {&(_tg__ZTV8S18999C7__A1__8S18999C58S18999C4__8S18999C3[5]),  5,8},
  {&(_tg__ZTV8S18999C4__8S18999C3[9]),  9,18},
  {&(_tg__ZTV8S18999C7__A1__8S18999C4__8S18999C3[5]),  5,8},
  {&(_ZTV8S18999C3[9]),  9,28},
  {&(_ZTV8S18999C3[25]),  25,28},
};
extern VTBL_ENTRY _ZTI8S18999C3[];
extern  VTBL_ENTRY _ZTV8S18999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C3[];
static VTBL_ENTRY alt_thunk_names153[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C5D0Ev,_ZTv0_n24_N8S18999C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S18999C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C5D1Ev,_ZTv0_n24_N8S18999C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S18999C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18999C3 = {  "S18999C3", // class name
  bases_S18999C3, 5,
  &(vtc_S18999C3[0]), // expected_vtbl_contents
  &(vtt_S18999C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S18999C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S18999C3),28, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18999C3),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names153,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18999C2  : S18999C3 {
  int s18999c2f0;
  virtual void  v15(); // _ZN8S18999C23v15Ev
  virtual void  v16(); // _ZN8S18999C23v16Ev
  virtual void  v17(); // _ZN8S18999C23v17Ev
  virtual void  v18(); // _ZN8S18999C23v18Ev
  virtual void  v19(); // _ZN8S18999C23v19Ev
  virtual void  v20(); // _ZN8S18999C23v20Ev
  virtual void  v21(); // _ZN8S18999C23v21Ev
  virtual void  v22(); // _ZN8S18999C23v22Ev
  virtual void  v23(); // _ZN8S18999C23v23Ev
  ~S18999C2(); // tgen
  S18999C2(); // tgen
};
//SIG(-1 S18999C2) C1{ BC2{ BC3{ BC4{ VBC5{ BC6{ v10 v11 v12} vd v13} VBC6 v14 v15 Fi} vd v16} v17 v18} v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi}


void  S18999C2 ::v15(){vfunc_called(this, "_ZN8S18999C23v15Ev");}
void  S18999C2 ::v16(){vfunc_called(this, "_ZN8S18999C23v16Ev");}
void  S18999C2 ::v17(){vfunc_called(this, "_ZN8S18999C23v17Ev");}
void  S18999C2 ::v18(){vfunc_called(this, "_ZN8S18999C23v18Ev");}
void  S18999C2 ::v19(){vfunc_called(this, "_ZN8S18999C23v19Ev");}
void  S18999C2 ::v20(){vfunc_called(this, "_ZN8S18999C23v20Ev");}
void  S18999C2 ::v21(){vfunc_called(this, "_ZN8S18999C23v21Ev");}
void  S18999C2 ::v22(){vfunc_called(this, "_ZN8S18999C23v22Ev");}
void  S18999C2 ::v23(){vfunc_called(this, "_ZN8S18999C23v23Ev");}
S18999C2 ::~S18999C2(){ note_dtor("S18999C2", this);} // tgen
S18999C2 ::S18999C2(){ note_ctor("S18999C2", this);} // tgen

static void Test_S18999C2()
{
  extern Class_Descriptor cd_S18999C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S18999C2, buf);
    S18999C2 *dp, &lv = *(dp=new (buf) S18999C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18999C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18999C2)");
    check_base_class_offset(lv, (S18999C7*)(S18999C6*), 0, "S18999C2");
    check_base_class_offset(lv, (S18999C6*)(S18999C5*)(S18999C4*)(S18999C3*), 0, "S18999C2");
    /*is_ambiguous_... S18999C5::S18999C7 */ AMB_check_base_class_offset(lv, (S18999C7*)(S18999C5*)(S18999C4*)(S18999C3*), ABISELECT(16,12), "S18999C2");
    check_base_class_offset(lv, (S18999C5*)(S18999C4*)(S18999C3*), 0, "S18999C2");
    check_base_class_offset(lv, (S18999C4*)(S18999C3*), 0, "S18999C2");
    check_base_class_offset(lv, (S18999C3*), 0, "S18999C2");
    check_field_offset(lv, s18999c2f0, ABISELECT(12,8), "S18999C2.s18999c2f0");
    test_class_info(&lv, &cd_S18999C2);
    dp->~S18999C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18999C2(Test_S18999C2, "S18999C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S18999C2C1Ev();
extern void _ZN8S18999C2D1Ev();
Name_Map name_map_S18999C2[] = {
  NSPAIR(_ZN8S18999C2C1Ev),
  NSPAIR(_ZN8S18999C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
extern Class_Descriptor cd_S18999C6;
extern VTBL_ENTRY _ZTI8S18999C6[];
extern  VTBL_ENTRY _ZTV8S18999C6[];
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
extern Class_Descriptor cd_S18999C5;
extern VTBL_ENTRY _ZTI8S18999C5[];
extern  VTBL_ENTRY _ZTV8S18999C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C5[];
extern Class_Descriptor cd_S18999C4;
extern VTBL_ENTRY _ZTI8S18999C4[];
extern  VTBL_ENTRY _ZTV8S18999C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C4[];
extern Class_Descriptor cd_S18999C3;
extern VTBL_ENTRY _ZTI8S18999C3[];
extern  VTBL_ENTRY _ZTV8S18999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C3[];
static Base_Class bases_S18999C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18999C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S18999C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18999C7,    ABISELECT(16,12), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18999C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //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_S18999C4,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18999C3,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18999C2[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void _ZN8S18999C2D1Ev();
extern void _ZN8S18999C2D0Ev();
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C43v12Ev();
extern void _ZN8S18999C33v13Ev();
extern void _ZN8S18999C33v14Ev();
extern void _ZN8S18999C23v15Ev();
extern void _ZN8S18999C23v16Ev();
extern void _ZN8S18999C23v17Ev();
extern void _ZN8S18999C23v18Ev();
extern void _ZN8S18999C23v19Ev();
extern void _ZN8S18999C23v20Ev();
extern void _ZN8S18999C23v21Ev();
extern void _ZN8S18999C23v22Ev();
extern void _ZN8S18999C23v23Ev();
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY vtc_S18999C2[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C2[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&_ZN8S18999C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18999C2D0Ev,
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18999C43v12Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v15Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v16Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v17Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v18Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v19Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v20Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v21Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v22Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v23Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S18999C2[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern VTBL_ENTRY _ZTV8S18999C2[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void _ZN8S18999C3D1Ev();
extern void _ZN8S18999C3D0Ev();
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C43v12Ev();
extern void _ZN8S18999C33v13Ev();
extern void _ZN8S18999C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C3__8S18999C2[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C3[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&_ZN8S18999C3D1Ev,
  (VTBL_ENTRY)&_ZN8S18999C3D0Ev,
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18999C43v12Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v14Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void ABISELECT(_ZTv0_n48_N8S18999C4D1Ev,_ZTv0_n24_N8S18999C4D1Ev)();
extern void _ZN8S18999C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S18999C4D0Ev,_ZTv0_n24_N8S18999C4D0Ev)();
extern void _ZN8S18999C4D0Ev() __attribute__((weak));
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C48S18999C3__8S18999C2[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C4[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C4D1Ev,_ZTv0_n24_N8S18999C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C4D0Ev,_ZTv0_n24_N8S18999C4D0Ev),
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18999C43v12Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void ABISELECT(_ZTv0_n48_N8S18999C5D1Ev,_ZTv0_n24_N8S18999C5D1Ev)();
extern void _ZN8S18999C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S18999C5D0Ev,_ZTv0_n24_N8S18999C5D0Ev)();
extern void _ZN8S18999C5D0Ev() __attribute__((weak));
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C58S18999C48S18999C3__8S18999C2[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C5[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C5D1Ev,_ZTv0_n24_N8S18999C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C5D0Ev,_ZTv0_n24_N8S18999C5D0Ev),
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C7__A1__8S18999C58S18999C48S18999C3__8S18999C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S18999C5[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C7__A1__8S18999C48S18999C3__8S18999C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S18999C4[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C7__A1__8S18999C3__8S18999C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S18999C3[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
static  VTT_ENTRY vtt_S18999C2[] = {
  {&(_ZTV8S18999C2[9]),  9,37},
  {&(_tg__ZTV8S18999C3__8S18999C2[9]),  9,20},
  {&(_tg__ZTV8S18999C48S18999C3__8S18999C2[9]),  9,18},
  {&(_tg__ZTV8S18999C58S18999C48S18999C3__8S18999C2[9]),  9,17},
  {&(_tg__ZTV8S18999C58S18999C48S18999C3__8S18999C2[9]),  9,17},
  {&(_tg__ZTV8S18999C7__A1__8S18999C58S18999C48S18999C3__8S18999C2[5]),  5,8},
  {&(_tg__ZTV8S18999C48S18999C3__8S18999C2[9]),  9,18},
  {&(_tg__ZTV8S18999C7__A1__8S18999C48S18999C3__8S18999C2[5]),  5,8},
  {&(_tg__ZTV8S18999C3__8S18999C2[9]),  9,20},
  {&(_tg__ZTV8S18999C7__A1__8S18999C3__8S18999C2[5]),  5,8},
  {&(_ZTV8S18999C2[9]),  9,37},
  {&(_ZTV8S18999C2[34]),  34,37},
};
extern VTBL_ENTRY _ZTI8S18999C2[];
extern  VTBL_ENTRY _ZTV8S18999C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C2[];
static VTBL_ENTRY alt_thunk_names154[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C5D0Ev,_ZTv0_n24_N8S18999C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S18999C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C5D1Ev,_ZTv0_n24_N8S18999C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S18999C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C4D0Ev,_ZTv0_n24_N8S18999C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S18999C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C4D1Ev,_ZTv0_n24_N8S18999C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S18999C4D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18999C2 = {  "S18999C2", // class name
  bases_S18999C2, 6,
  &(vtc_S18999C2[0]), // expected_vtbl_contents
  &(vtt_S18999C2[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S18999C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S18999C2),37, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18999C2),12, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names154,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18999C1  : virtual S18999C2 {
  short s18999c1f0;
  void *s18999c1f1;
  virtual  ~S18999C1(); // _ZN8S18999C1D2Ev
  virtual void  v1(); // _ZN8S18999C12v1Ev
  virtual void  v2(); // _ZN8S18999C12v2Ev
  virtual void  v3(); // _ZN8S18999C12v3Ev
  virtual void  v4(); // _ZN8S18999C12v4Ev
  virtual void  v5(); // _ZN8S18999C12v5Ev
  S18999C1(); // tgen
};
//SIG(1 S18999C1) C1{ VBC2{ BC3{ BC4{ BC5{ VBC6{ BC7{ v6 v7 v8} vd v9} VBC7 v10 v11 Fi} vd v12} v13 v14} v15 v16 v17 v18 v19 v20 v21 v22 v23 Fi} vd v1 v2 v3 v4 v5 Fs Fp}


 S18999C1 ::~S18999C1(){ note_dtor("S18999C1", this);}
void  S18999C1 ::v1(){vfunc_called(this, "_ZN8S18999C12v1Ev");}
void  S18999C1 ::v2(){vfunc_called(this, "_ZN8S18999C12v2Ev");}
void  S18999C1 ::v3(){vfunc_called(this, "_ZN8S18999C12v3Ev");}
void  S18999C1 ::v4(){vfunc_called(this, "_ZN8S18999C12v4Ev");}
void  S18999C1 ::v5(){vfunc_called(this, "_ZN8S18999C12v5Ev");}
S18999C1 ::S18999C1(){ note_ctor("S18999C1", this);} // tgen

static void Test_S18999C1()
{
  extern Class_Descriptor cd_S18999C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S18999C1, buf);
    S18999C1 *dp, &lv = *(dp=new (buf) S18999C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S18999C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18999C1)");
    check_base_class_offset(lv, (S18999C7*)(S18999C6*), ABISELECT(24,12), "S18999C1");
    check_base_class_offset(lv, (S18999C6*)(S18999C5*)(S18999C4*)(S18999C3*)(S18999C2*), ABISELECT(24,12), "S18999C1");
    /*is_ambiguous_... S18999C5::S18999C7 */ AMB_check_base_class_offset(lv, (S18999C7*)(S18999C5*)(S18999C4*)(S18999C3*)(S18999C2*), 0, "S18999C1");
    check_base_class_offset(lv, (S18999C5*)(S18999C4*)(S18999C3*)(S18999C2*), ABISELECT(24,12), "S18999C1");
    check_base_class_offset(lv, (S18999C4*)(S18999C3*)(S18999C2*), ABISELECT(24,12), "S18999C1");
    check_base_class_offset(lv, (S18999C3*)(S18999C2*), ABISELECT(24,12), "S18999C1");
    check_base_class_offset(lv, (S18999C2*), ABISELECT(24,12), "S18999C1");
    check_field_offset(lv, s18999c1f0, ABISELECT(8,4), "S18999C1.s18999c1f0");
    check_field_offset(lv, s18999c1f1, ABISELECT(16,8), "S18999C1.s18999c1f1");
    test_class_info(&lv, &cd_S18999C1);
    dp->~S18999C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18999C1(Test_S18999C1, "S18999C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S18999C1C1Ev();
extern void _ZN8S18999C1D2Ev();
Name_Map name_map_S18999C1[] = {
  NSPAIR(_ZN8S18999C1C1Ev),
  NSPAIR(_ZN8S18999C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
extern Class_Descriptor cd_S18999C6;
extern VTBL_ENTRY _ZTI8S18999C6[];
extern  VTBL_ENTRY _ZTV8S18999C6[];
extern Class_Descriptor cd_S18999C7;
extern VTBL_ENTRY _ZTI8S18999C7[];
extern  VTBL_ENTRY _ZTV8S18999C7[];
extern Class_Descriptor cd_S18999C5;
extern VTBL_ENTRY _ZTI8S18999C5[];
extern  VTBL_ENTRY _ZTV8S18999C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C5[];
extern Class_Descriptor cd_S18999C4;
extern VTBL_ENTRY _ZTI8S18999C4[];
extern  VTBL_ENTRY _ZTV8S18999C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C4[];
extern Class_Descriptor cd_S18999C3;
extern VTBL_ENTRY _ZTI8S18999C3[];
extern  VTBL_ENTRY _ZTV8S18999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C3[];
extern Class_Descriptor cd_S18999C2;
extern VTBL_ENTRY _ZTI8S18999C2[];
extern  VTBL_ENTRY _ZTV8S18999C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C2[];
static Base_Class bases_S18999C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18999C7,    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_S18999C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18999C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18999C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S18999C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18999C3,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S18999C2,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18999C1[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void _ZN8S18999C1D1Ev();
extern void _ZN8S18999C1D0Ev();
extern void _ZN8S18999C12v1Ev();
extern void _ZN8S18999C12v2Ev();
extern void _ZN8S18999C12v3Ev();
extern void _ZN8S18999C12v4Ev();
extern void _ZN8S18999C12v5Ev();
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void ABISELECT(_ZTv0_n48_N8S18999C1D1Ev,_ZTv0_n24_N8S18999C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S18999C1D1Ev,_ZThn12_N8S18999C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S18999C1D0Ev,_ZTv0_n24_N8S18999C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S18999C1D0Ev,_ZThn12_N8S18999C1D0Ev)() __attribute__((weak));
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C43v12Ev();
extern void _ZN8S18999C33v13Ev();
extern void _ZN8S18999C33v14Ev();
extern void _ZN8S18999C23v15Ev();
extern void _ZN8S18999C23v16Ev();
extern void _ZN8S18999C23v17Ev();
extern void _ZN8S18999C23v18Ev();
extern void _ZN8S18999C23v19Ev();
extern void _ZN8S18999C23v20Ev();
extern void _ZN8S18999C23v21Ev();
extern void _ZN8S18999C23v22Ev();
extern void _ZN8S18999C23v23Ev();
static  VTBL_ENTRY vtc_S18999C1[] = {
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C1[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&_ZN8S18999C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18999C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18999C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18999C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18999C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18999C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18999C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  0,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18999C1[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C1D1Ev,_ZTv0_n24_N8S18999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C1D0Ev,_ZTv0_n24_N8S18999C1D0Ev),
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18999C43v12Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v15Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v16Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v17Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v18Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v19Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v20Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v21Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v22Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v23Ev,
};
extern VTBL_ENTRY _ZTV8S18999C1[];
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void ABISELECT(_ZTv0_n48_N8S18999C2D1Ev,_ZTv0_n24_N8S18999C2D1Ev)();
extern void _ZN8S18999C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S18999C2D0Ev,_ZTv0_n24_N8S18999C2D0Ev)();
extern void _ZN8S18999C2D0Ev() __attribute__((weak));
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C43v12Ev();
extern void _ZN8S18999C33v13Ev();
extern void _ZN8S18999C33v14Ev();
extern void _ZN8S18999C23v15Ev();
extern void _ZN8S18999C23v16Ev();
extern void _ZN8S18999C23v17Ev();
extern void _ZN8S18999C23v18Ev();
extern void _ZN8S18999C23v19Ev();
extern void _ZN8S18999C23v20Ev();
extern void _ZN8S18999C23v21Ev();
extern void _ZN8S18999C23v22Ev();
extern void _ZN8S18999C23v23Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C2__8S18999C1[] = {
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C2[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C2D1Ev,_ZTv0_n24_N8S18999C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C2D0Ev,_ZTv0_n24_N8S18999C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18999C43v12Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v15Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v16Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v17Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v18Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v19Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v20Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v21Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v22Ev,
  (VTBL_ENTRY)&_ZN8S18999C23v23Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void ABISELECT(_ZTv0_n48_N8S18999C3D1Ev,_ZTv0_n24_N8S18999C3D1Ev)();
extern void _ZN8S18999C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S18999C3D0Ev,_ZTv0_n24_N8S18999C3D0Ev)();
extern void _ZN8S18999C3D0Ev() __attribute__((weak));
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C43v12Ev();
extern void _ZN8S18999C33v13Ev();
extern void _ZN8S18999C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C38S18999C2__8S18999C1[] = {
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C3[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C3D1Ev,_ZTv0_n24_N8S18999C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C3D0Ev,_ZTv0_n24_N8S18999C3D0Ev),
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18999C43v12Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18999C33v14Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void ABISELECT(_ZTv0_n48_N8S18999C4D1Ev,_ZTv0_n24_N8S18999C4D1Ev)();
extern void _ZN8S18999C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S18999C4D0Ev,_ZTv0_n24_N8S18999C4D0Ev)();
extern void _ZN8S18999C4D0Ev() __attribute__((weak));
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
extern void _ZN8S18999C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C48S18999C38S18999C2__8S18999C1[] = {
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C4[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C4D1Ev,_ZTv0_n24_N8S18999C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C4D0Ev,_ZTv0_n24_N8S18999C4D0Ev),
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18999C43v12Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
extern void ABISELECT(_ZTv0_n48_N8S18999C5D1Ev,_ZTv0_n24_N8S18999C5D1Ev)();
extern void _ZN8S18999C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S18999C5D0Ev,_ZTv0_n24_N8S18999C5D0Ev)();
extern void _ZN8S18999C5D0Ev() __attribute__((weak));
extern void _ZN8S18999C62v9Ev();
extern void _ZN8S18999C53v10Ev();
extern void _ZN8S18999C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C58S18999C48S18999C38S18999C2__8S18999C1[] = {
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18999C5[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C5D1Ev,_ZTv0_n24_N8S18999C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S18999C5D0Ev,_ZTv0_n24_N8S18999C5D0Ev),
  (VTBL_ENTRY)&_ZN8S18999C62v9Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v10Ev,
  (VTBL_ENTRY)&_ZN8S18999C53v11Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C7__A1__8S18999C58S18999C48S18999C38S18999C2__8S18999C1[] = {
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S18999C5[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C7__A1__8S18999C48S18999C38S18999C2__8S18999C1[] = {
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S18999C4[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C7__A1__8S18999C38S18999C2__8S18999C1[] = {
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S18999C3[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
extern void _ZN8S18999C72v6Ev();
extern void _ZN8S18999C72v7Ev();
extern void _ZN8S18999C72v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18999C7__A1__8S18999C2__8S18999C1[] = {
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S18999C2[0]),
  (VTBL_ENTRY)&_ZN8S18999C72v6Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18999C72v8Ev,
};
static  VTT_ENTRY vtt_S18999C1[] = {
  {&(_ZTV8S18999C1[8]),  8,61},
  {&(_ZTV8S18999C1[41]),  41,61},
  {&(_ZTV8S18999C1[41]),  41,61},
  {&(_ZTV8S18999C1[8]),  8,61},
  {&(_tg__ZTV8S18999C2__8S18999C1[9]),  9,29},
  {&(_tg__ZTV8S18999C38S18999C2__8S18999C1[9]),  9,20},
  {&(_tg__ZTV8S18999C48S18999C38S18999C2__8S18999C1[9]),  9,18},
  {&(_tg__ZTV8S18999C58S18999C48S18999C38S18999C2__8S18999C1[9]),  9,17},
  {&(_tg__ZTV8S18999C58S18999C48S18999C38S18999C2__8S18999C1[9]),  9,17},
  {&(_tg__ZTV8S18999C7__A1__8S18999C58S18999C48S18999C38S18999C2__8S18999C1[5]),  5,8},
  {&(_tg__ZTV8S18999C48S18999C38S18999C2__8S18999C1[9]),  9,18},
  {&(_tg__ZTV8S18999C7__A1__8S18999C48S18999C38S18999C2__8S18999C1[5]),  5,8},
  {&(_tg__ZTV8S18999C38S18999C2__8S18999C1[9]),  9,20},
  {&(_tg__ZTV8S18999C7__A1__8S18999C38S18999C2__8S18999C1[5]),  5,8},
  {&(_tg__ZTV8S18999C2__8S18999C1[9]),  9,29},
  {&(_tg__ZTV8S18999C7__A1__8S18999C2__8S18999C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S18999C1[];
extern  VTBL_ENTRY _ZTV8S18999C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18999C1[];
static VTBL_ENTRY alt_thunk_names155[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C5D0Ev,_ZTv0_n24_N8S18999C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S18999C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C5D1Ev,_ZTv0_n24_N8S18999C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S18999C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C4D0Ev,_ZTv0_n24_N8S18999C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S18999C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C4D1Ev,_ZTv0_n24_N8S18999C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S18999C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C3D0Ev,_ZTv0_n24_N8S18999C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S18999C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C3D1Ev,_ZTv0_n24_N8S18999C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S18999C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C2D0Ev,_ZTv0_n24_N8S18999C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S18999C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C2D1Ev,_ZTv0_n24_N8S18999C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S18999C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C1D0Ev,_ZTv0_n24_N8S18999C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S18999C1D0Ev,_ZThn12_N8S18999C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S18999C1D1Ev,_ZTv0_n24_N8S18999C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S18999C1D1Ev,_ZThn12_N8S18999C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18999C1 = {  "S18999C1", // class name
  bases_S18999C1, 7,
  &(vtc_S18999C1[0]), // expected_vtbl_contents
  &(vtt_S18999C1[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S18999C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S18999C1),61, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18999C1),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names155,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9898C2  {
  ::S2213C19_nt s9898c2f0;
  void *s9898c2f1;
  int s9898c2f2;
  virtual  ~S9898C2(); // _ZN7S9898C2D1Ev
  virtual void  v5(); // _ZN7S9898C22v5Ev
  virtual void  v6(); // _ZN7S9898C22v6Ev
  virtual void  v7(); // _ZN7S9898C22v7Ev
  virtual void  v8(); // _ZN7S9898C22v8Ev
  virtual void  v9(); // _ZN7S9898C22v9Ev
  virtual void  v10(); // _ZN7S9898C23v10Ev
  virtual void  v11(); // _ZN7S9898C23v11Ev
  S9898C2(); // tgen
};
//SIG(-1 S9898C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fp Fi}


 S9898C2 ::~S9898C2(){ note_dtor("S9898C2", this);}
void  S9898C2 ::v5(){vfunc_called(this, "_ZN7S9898C22v5Ev");}
void  S9898C2 ::v6(){vfunc_called(this, "_ZN7S9898C22v6Ev");}
void  S9898C2 ::v7(){vfunc_called(this, "_ZN7S9898C22v7Ev");}
void  S9898C2 ::v8(){vfunc_called(this, "_ZN7S9898C22v8Ev");}
void  S9898C2 ::v9(){vfunc_called(this, "_ZN7S9898C22v9Ev");}
void  S9898C2 ::v10(){vfunc_called(this, "_ZN7S9898C23v10Ev");}
void  S9898C2 ::v11(){vfunc_called(this, "_ZN7S9898C23v11Ev");}
S9898C2 ::S9898C2(){ note_ctor("S9898C2", this);} // tgen

static void Test_S9898C2()
{
  extern Class_Descriptor cd_S9898C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S9898C2, buf);
    S9898C2 *dp, &lv = *(dp=new (buf) S9898C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S9898C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9898C2)");
    check_field_offset(lv, s9898c2f0, ABISELECT(8,4), "S9898C2.s9898c2f0");
    check_field_offset(lv, s9898c2f1, ABISELECT(32,20), "S9898C2.s9898c2f1");
    check_field_offset(lv, s9898c2f2, ABISELECT(40,24), "S9898C2.s9898c2f2");
    test_class_info(&lv, &cd_S9898C2);
    dp->~S9898C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9898C2(Test_S9898C2, "S9898C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S9898C2C1Ev();
extern void _ZN7S9898C2D1Ev();
Name_Map name_map_S9898C2[] = {
  NSPAIR(_ZN7S9898C2C1Ev),
  NSPAIR(_ZN7S9898C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9898C2[];
extern void _ZN7S9898C2D1Ev();
extern void _ZN7S9898C2D0Ev();
extern void _ZN7S9898C22v5Ev();
extern void _ZN7S9898C22v6Ev();
extern void _ZN7S9898C22v7Ev();
extern void _ZN7S9898C22v8Ev();
extern void _ZN7S9898C22v9Ev();
extern void _ZN7S9898C23v10Ev();
extern void _ZN7S9898C23v11Ev();
static  VTBL_ENTRY vtc_S9898C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9898C2[0]),
  (VTBL_ENTRY)&_ZN7S9898C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9898C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9898C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9898C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9898C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9898C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9898C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9898C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9898C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S9898C2[];
extern  VTBL_ENTRY _ZTV7S9898C2[];
Class_Descriptor cd_S9898C2 = {  "S9898C2", // class name
  0,0,//no base classes
  &(vtc_S9898C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S9898C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9898C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9898C1  : S9898C2 {
  void *s9898c1f0[2];
  int s9898c1f1;
  void *s9898c1f2;
  ::S2137C23_nt s9898c1f3;
  ::S9312C5_nt s9898c1f4;
  int s9898c1f5;
  void *s9898c1f6;
  char s9898c1f7;
  virtual  ~S9898C1(); // _ZN7S9898C1D1Ev
  virtual void  v1(); // _ZN7S9898C12v1Ev
  virtual void  v2(); // _ZN7S9898C12v2Ev
  virtual void  v3(); // _ZN7S9898C12v3Ev
  virtual void  v4(); // _ZN7S9898C12v4Ev
  S9898C1(); // tgen
};
//SIG(1 S9898C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fp Fi} vd v1 v2 v3 v4 Fp[2] Fi Fp FC6{ m Fp[2]} FC7{ vd m Fp Fi} Fi Fp Fc}


 S9898C1 ::~S9898C1(){ note_dtor("S9898C1", this);}
void  S9898C1 ::v1(){vfunc_called(this, "_ZN7S9898C12v1Ev");}
void  S9898C1 ::v2(){vfunc_called(this, "_ZN7S9898C12v2Ev");}
void  S9898C1 ::v3(){vfunc_called(this, "_ZN7S9898C12v3Ev");}
void  S9898C1 ::v4(){vfunc_called(this, "_ZN7S9898C12v4Ev");}
S9898C1 ::S9898C1(){ note_ctor("S9898C1", this);} // tgen

static void Test_S9898C1()
{
  extern Class_Descriptor cd_S9898C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,20)];
    init_test(&cd_S9898C1, buf);
    S9898C1 *dp, &lv = *(dp=new (buf) S9898C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S9898C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9898C1)");
    check_base_class_offset(lv, (S9898C2*), 0, "S9898C1");
    check_field_offset(lv, s9898c1f0, ABISELECT(48,28), "S9898C1.s9898c1f0");
    check_field_offset(lv, s9898c1f1, ABISELECT(64,36), "S9898C1.s9898c1f1");
    check_field_offset(lv, s9898c1f2, ABISELECT(72,40), "S9898C1.s9898c1f2");
    check_field_offset(lv, s9898c1f3, ABISELECT(80,44), "S9898C1.s9898c1f3");
    check_field_offset(lv, s9898c1f4, ABISELECT(96,52), "S9898C1.s9898c1f4");
    check_field_offset(lv, s9898c1f5, ABISELECT(120,64), "S9898C1.s9898c1f5");
    check_field_offset(lv, s9898c1f6, ABISELECT(128,68), "S9898C1.s9898c1f6");
    check_field_offset(lv, s9898c1f7, ABISELECT(136,72), "S9898C1.s9898c1f7");
    test_class_info(&lv, &cd_S9898C1);
    dp->~S9898C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9898C1(Test_S9898C1, "S9898C1", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN7S9898C1C1Ev();
extern void _ZN7S9898C1D1Ev();
Name_Map name_map_S9898C1[] = {
  NSPAIR(_ZN7S9898C1C1Ev),
  NSPAIR(_ZN7S9898C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9898C2;
extern VTBL_ENTRY _ZTI7S9898C2[];
extern  VTBL_ENTRY _ZTV7S9898C2[];
static Base_Class bases_S9898C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9898C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9898C1[];
extern void _ZN7S9898C1D1Ev();
extern void _ZN7S9898C1D0Ev();
extern void _ZN7S9898C22v5Ev();
extern void _ZN7S9898C22v6Ev();
extern void _ZN7S9898C22v7Ev();
extern void _ZN7S9898C22v8Ev();
extern void _ZN7S9898C22v9Ev();
extern void _ZN7S9898C23v10Ev();
extern void _ZN7S9898C23v11Ev();
extern void _ZN7S9898C12v1Ev();
extern void _ZN7S9898C12v2Ev();
extern void _ZN7S9898C12v3Ev();
extern void _ZN7S9898C12v4Ev();
static  VTBL_ENTRY vtc_S9898C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9898C1[0]),
  (VTBL_ENTRY)&_ZN7S9898C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9898C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9898C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9898C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9898C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9898C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9898C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9898C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9898C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9898C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9898C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9898C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9898C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9898C1[];
extern  VTBL_ENTRY _ZTV7S9898C1[];
Class_Descriptor cd_S9898C1 = {  "S9898C1", // class name
  bases_S9898C1, 1,
  &(vtc_S9898C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI7S9898C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9898C1),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  S19542C4_nt  {
  long double s19542c4f0;
  void *s19542c4f1;
  virtual void  v6(); // _ZN11S19542C4_nt2v6Ev
  virtual void  v7(); // _ZN11S19542C4_nt2v7Ev
  virtual void  v8(); // _ZN11S19542C4_nt2v8Ev
  virtual void  v9(); // _ZN11S19542C4_nt2v9Ev
  ~S19542C4_nt(); // tgen
  S19542C4_nt(); // tgen
};
//SIG(-1 S19542C4_nt) C1{ v1 v2 v3 v4 FD Fp}


void  S19542C4_nt ::v6(){vfunc_called(this, "_ZN11S19542C4_nt2v6Ev");}
void  S19542C4_nt ::v7(){vfunc_called(this, "_ZN11S19542C4_nt2v7Ev");}
void  S19542C4_nt ::v8(){vfunc_called(this, "_ZN11S19542C4_nt2v8Ev");}
void  S19542C4_nt ::v9(){vfunc_called(this, "_ZN11S19542C4_nt2v9Ev");}
S19542C4_nt ::~S19542C4_nt(){ note_dtor("S19542C4_nt", this);} // tgen
S19542C4_nt ::S19542C4_nt(){ note_ctor("S19542C4_nt", this);} // tgen

//skip512 S19542C4_nt

#else // __cplusplus

extern void _ZN11S19542C4_ntC1Ev();
extern void _ZN11S19542C4_ntD1Ev();
Name_Map name_map_S19542C4_nt[] = {
  NSPAIR(_ZN11S19542C4_ntC1Ev),
  NSPAIR(_ZN11S19542C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19542C4_nt[];
extern void _ZN11S19542C4_nt2v6Ev();
extern void _ZN11S19542C4_nt2v7Ev();
extern void _ZN11S19542C4_nt2v8Ev();
extern void _ZN11S19542C4_nt2v9Ev();
static  VTBL_ENTRY vtc_S19542C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19542C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI11S19542C4_nt[];
VTBL_ENTRY *P__ZTI11S19542C4_nt = _ZTI11S19542C4_nt; 
extern  VTBL_ENTRY _ZTV11S19542C4_nt[];
Class_Descriptor cd_S19542C4_nt = {  "S19542C4_nt", // class name
  0,0,//no base classes
  &(vtc_S19542C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI11S19542C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19542C4_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  S19542C3  : virtual S19542C4_nt {
  virtual void  v10(); // _ZN8S19542C33v10Ev
  virtual void  v11(); // _ZN8S19542C33v11Ev
  ~S19542C3(); // tgen
  S19542C3(); // tgen
};
//SIG(-1 S19542C3) C1{ VBC2{ v3 v4 v5 v6 FD Fp} v1 v2}


void  S19542C3 ::v10(){vfunc_called(this, "_ZN8S19542C33v10Ev");}
void  S19542C3 ::v11(){vfunc_called(this, "_ZN8S19542C33v11Ev");}
S19542C3 ::~S19542C3(){ note_dtor("S19542C3", this);} // tgen
S19542C3 ::S19542C3(){ note_ctor("S19542C3", this);} // tgen

static void Test_S19542C3()
{
  extern Class_Descriptor cd_S19542C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19542C3, buf);
    S19542C3 *dp, &lv = *(dp=new (buf) S19542C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,24), "sizeof(S19542C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19542C3)");
    check_base_class_offset(lv, (S19542C4_nt*), ABISELECT(16,4), "S19542C3");
    test_class_info(&lv, &cd_S19542C3);
    dp->~S19542C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19542C3(Test_S19542C3, "S19542C3", ABISELECT(64,24));

#else // __cplusplus

extern void _ZN8S19542C3C1Ev();
extern void _ZN8S19542C3D1Ev();
Name_Map name_map_S19542C3[] = {
  NSPAIR(_ZN8S19542C3C1Ev),
  NSPAIR(_ZN8S19542C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19542C4_nt;
extern VTBL_ENTRY _ZTI11S19542C4_nt[];
extern  VTBL_ENTRY _ZTV11S19542C4_nt[];
static Base_Class bases_S19542C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19542C4_nt,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19542C3[];
extern void _ZN8S19542C33v10Ev();
extern void _ZN8S19542C33v11Ev();
extern void _ZN11S19542C4_nt2v6Ev();
extern void _ZN11S19542C4_nt2v7Ev();
extern void _ZN11S19542C4_nt2v8Ev();
extern void _ZN11S19542C4_nt2v9Ev();
static  VTBL_ENTRY vtc_S19542C3[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19542C3[0]),
  (VTBL_ENTRY)&_ZN8S19542C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19542C33v11Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19542C3[0]),
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v9Ev,
};
extern VTBL_ENTRY _ZTV8S19542C3[];
static  VTT_ENTRY vtt_S19542C3[] = {
  {&(_ZTV8S19542C3[3]),  3,15},
  {&(_ZTV8S19542C3[11]),  11,15},
};
extern VTBL_ENTRY _ZTI8S19542C3[];
extern  VTBL_ENTRY _ZTV8S19542C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19542C3[];
Class_Descriptor cd_S19542C3 = {  "S19542C3", // class name
  bases_S19542C3, 1,
  &(vtc_S19542C3[0]), // expected_vtbl_contents
  &(vtt_S19542C3[0]), // expected_vtt_contents
  ABISELECT(64,24), // object size
  NSPAIRA(_ZTI8S19542C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19542C3),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19542C3),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  S19542C6  {
  virtual void  v12(); // _ZN8S19542C63v12Ev
  virtual void  v13(); // _ZN8S19542C63v13Ev
  virtual void  v14(); // _ZN8S19542C63v14Ev
  ~S19542C6(); // tgen
  S19542C6(); // tgen
};
//SIG(-1 S19542C6) C1{ v1 v2 v3}


void  S19542C6 ::v12(){vfunc_called(this, "_ZN8S19542C63v12Ev");}
void  S19542C6 ::v13(){vfunc_called(this, "_ZN8S19542C63v13Ev");}
void  S19542C6 ::v14(){vfunc_called(this, "_ZN8S19542C63v14Ev");}
S19542C6 ::~S19542C6(){ note_dtor("S19542C6", this);} // tgen
S19542C6 ::S19542C6(){ note_ctor("S19542C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19542C6C1Ev();
extern void _ZN8S19542C6D1Ev();
Name_Map name_map_S19542C6[] = {
  NSPAIR(_ZN8S19542C6C1Ev),
  NSPAIR(_ZN8S19542C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19542C6[];
extern void _ZN8S19542C63v12Ev();
extern void _ZN8S19542C63v13Ev();
extern void _ZN8S19542C63v14Ev();
static  VTBL_ENTRY vtc_S19542C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19542C6[0]),
  (VTBL_ENTRY)&_ZN8S19542C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v14Ev,
};
extern VTBL_ENTRY _ZTI8S19542C6[];
extern  VTBL_ENTRY _ZTV8S19542C6[];
Class_Descriptor cd_S19542C6 = {  "S19542C6", // class name
  0,0,//no base classes
  &(vtc_S19542C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19542C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19542C6),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  S19542C5_nt  : virtual S19542C6 {
  virtual void  v15(); // _ZN11S19542C5_nt3v15Ev
  ~S19542C5_nt(); // tgen
  S19542C5_nt(); // tgen
};
//SIG(-1 S19542C5_nt) C1{ VBC2{ v2 v3 v4} v1}


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

//skip512 S19542C5_nt

#else // __cplusplus

extern void _ZN11S19542C5_ntC1Ev();
extern void _ZN11S19542C5_ntD1Ev();
Name_Map name_map_S19542C5_nt[] = {
  NSPAIR(_ZN11S19542C5_ntC1Ev),
  NSPAIR(_ZN11S19542C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19542C6;
extern VTBL_ENTRY _ZTI8S19542C6[];
extern  VTBL_ENTRY _ZTV8S19542C6[];
static Base_Class bases_S19542C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19542C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S19542C5_nt[];
extern void _ZN8S19542C63v12Ev();
extern void _ZN8S19542C63v13Ev();
extern void _ZN8S19542C63v14Ev();
extern void _ZN11S19542C5_nt3v15Ev();
static  VTBL_ENTRY vtc_S19542C5_nt[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S19542C5_nt[0]),
  (VTBL_ENTRY)&_ZN8S19542C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v14Ev,
  (VTBL_ENTRY)&_ZN11S19542C5_nt3v15Ev,
};
extern VTBL_ENTRY _ZTV11S19542C5_nt[];
static  VTT_ENTRY vtt_S19542C5_nt[] = {
  {&(_ZTV11S19542C5_nt[6]),  6,10},
  {&(_ZTV11S19542C5_nt[6]),  6,10},
};
extern VTBL_ENTRY _ZTI11S19542C5_nt[];
VTBL_ENTRY *P__ZTI11S19542C5_nt = _ZTI11S19542C5_nt; 
extern  VTBL_ENTRY _ZTV11S19542C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19542C5_nt[];
Class_Descriptor cd_S19542C5_nt = {  "S19542C5_nt", // class name
  bases_S19542C5_nt, 1,
  &(vtc_S19542C5_nt[0]), // expected_vtbl_contents
  &(vtt_S19542C5_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S19542C5_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S19542C5_nt),10, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19542C5_nt),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19542C2  : S19542C3 , virtual S19542C5_nt {
  int s19542c2f0:25;
  virtual void  v16(); // _ZN8S19542C23v16Ev
  virtual void  v17(); // _ZN8S19542C23v17Ev
  ~S19542C2(); // tgen
  S19542C2(); // tgen
};
//SIG(-1 S19542C2) C1{ BC2{ VBC3{ v3 v4 v5 v6 FD Fp} v7 v8} VBC4{ VBC5{ v9 v10 v11} v12} v1 v2 Fi:25}


void  S19542C2 ::v16(){vfunc_called(this, "_ZN8S19542C23v16Ev");}
void  S19542C2 ::v17(){vfunc_called(this, "_ZN8S19542C23v17Ev");}
S19542C2 ::~S19542C2(){ note_dtor("S19542C2", this);} // tgen
S19542C2 ::S19542C2(){ note_ctor("S19542C2", this);} // tgen

static void Test_S19542C2()
{
  extern Class_Descriptor cd_S19542C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S19542C2, buf);
    S19542C2 *dp, &lv = *(dp=new (buf) S19542C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19542C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19542C2)");
    check_base_class_offset(lv, (S19542C4_nt*)(S19542C3*), ABISELECT(16,8), "S19542C2");
    check_base_class_offset(lv, (S19542C3*), 0, "S19542C2");
    check_base_class_offset(lv, (S19542C6*)(S19542C5_nt*), ABISELECT(56,28), "S19542C2");
    check_base_class_offset(lv, (S19542C5_nt*), ABISELECT(56,28), "S19542C2");
    set_bf_and_test(lv, s19542c2f0, ABISELECT(8,4), 0, 25, 1, "S19542C2");
    set_bf_and_test(lv, s19542c2f0, ABISELECT(8,4), 0, 25, hide_sll(1LL<<24), "S19542C2");
    test_class_info(&lv, &cd_S19542C2);
    dp->~S19542C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19542C2(Test_S19542C2, "S19542C2", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S19542C2C1Ev();
extern void _ZN8S19542C2D1Ev();
Name_Map name_map_S19542C2[] = {
  NSPAIR(_ZN8S19542C2C1Ev),
  NSPAIR(_ZN8S19542C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19542C4_nt;
extern VTBL_ENTRY _ZTI11S19542C4_nt[];
extern  VTBL_ENTRY _ZTV11S19542C4_nt[];
extern Class_Descriptor cd_S19542C3;
extern VTBL_ENTRY _ZTI8S19542C3[];
extern  VTBL_ENTRY _ZTV8S19542C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19542C3[];
extern Class_Descriptor cd_S19542C6;
extern VTBL_ENTRY _ZTI8S19542C6[];
extern  VTBL_ENTRY _ZTV8S19542C6[];
extern Class_Descriptor cd_S19542C5_nt;
extern VTBL_ENTRY _ZTI11S19542C5_nt[];
extern  VTBL_ENTRY _ZTV11S19542C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19542C5_nt[];
static Base_Class bases_S19542C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19542C4_nt,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19542C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19542C6,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19542C5_nt,    ABISELECT(56,28), //bcp->offset
    19, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19542C2[];
extern void _ZN8S19542C33v10Ev();
extern void _ZN8S19542C33v11Ev();
extern void _ZN8S19542C23v16Ev();
extern void _ZN8S19542C23v17Ev();
extern void _ZN11S19542C4_nt2v6Ev();
extern void _ZN11S19542C4_nt2v7Ev();
extern void _ZN11S19542C4_nt2v8Ev();
extern void _ZN11S19542C4_nt2v9Ev();
extern void _ZN8S19542C63v12Ev();
extern void _ZN8S19542C63v13Ev();
extern void _ZN8S19542C63v14Ev();
extern void _ZN11S19542C5_nt3v15Ev();
static  VTBL_ENTRY vtc_S19542C2[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19542C2[0]),
  (VTBL_ENTRY)&_ZN8S19542C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19542C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19542C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19542C23v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19542C2[0]),
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v9Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19542C2[0]),
  (VTBL_ENTRY)&_ZN8S19542C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v14Ev,
  (VTBL_ENTRY)&_ZN11S19542C5_nt3v15Ev,
};
extern VTBL_ENTRY _ZTV8S19542C2[];
extern void _ZN8S19542C33v10Ev();
extern void _ZN8S19542C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19542C3__8S19542C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19542C3[0]),
  (VTBL_ENTRY)&_ZN8S19542C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19542C33v11Ev,
};
extern void _ZN11S19542C4_nt2v6Ev();
extern void _ZN11S19542C4_nt2v7Ev();
extern void _ZN11S19542C4_nt2v8Ev();
extern void _ZN11S19542C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19542C4_nt__8S19542C3__8S19542C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19542C3[0]),
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v9Ev,
};
extern void _ZN8S19542C63v12Ev();
extern void _ZN8S19542C63v13Ev();
extern void _ZN8S19542C63v14Ev();
extern void _ZN11S19542C5_nt3v15Ev();
static  VTBL_ENTRY _tg__ZTV11S19542C5_nt__8S19542C2[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S19542C5_nt[0]),
  (VTBL_ENTRY)&_ZN8S19542C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v14Ev,
  (VTBL_ENTRY)&_ZN11S19542C5_nt3v15Ev,
};
static  VTT_ENTRY vtt_S19542C2[] = {
  {&(_ZTV8S19542C2[5]),  5,30},
  {&(_tg__ZTV8S19542C3__8S19542C2[3]),  3,5},
  {&(_tg__ZTV11S19542C4_nt__8S19542C3__8S19542C2[6]),  6,10},
  {&(_ZTV8S19542C2[15]),  15,30},
  {&(_ZTV8S19542C2[26]),  26,30},
  {&(_ZTV8S19542C2[26]),  26,30},
  {&(_tg__ZTV11S19542C5_nt__8S19542C2[6]),  6,10},
  {&(_tg__ZTV11S19542C5_nt__8S19542C2[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19542C2[];
extern  VTBL_ENTRY _ZTV8S19542C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19542C2[];
Class_Descriptor cd_S19542C2 = {  "S19542C2", // class name
  bases_S19542C2, 4,
  &(vtc_S19542C2[0]), // expected_vtbl_contents
  &(vtt_S19542C2[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S19542C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19542C2),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19542C2),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19542C7_nt  {
  void *s19542c7f0;
  virtual void  v18(); // _ZN11S19542C7_nt3v18Ev
  virtual void  v19(); // _ZN11S19542C7_nt3v19Ev
  virtual void  v20(); // _ZN11S19542C7_nt3v20Ev
  virtual void  v21(); // _ZN11S19542C7_nt3v21Ev
  ~S19542C7_nt(); // tgen
  S19542C7_nt(); // tgen
};
//SIG(-1 S19542C7_nt) C1{ v1 v2 v3 v4 Fp}


void  S19542C7_nt ::v18(){vfunc_called(this, "_ZN11S19542C7_nt3v18Ev");}
void  S19542C7_nt ::v19(){vfunc_called(this, "_ZN11S19542C7_nt3v19Ev");}
void  S19542C7_nt ::v20(){vfunc_called(this, "_ZN11S19542C7_nt3v20Ev");}
void  S19542C7_nt ::v21(){vfunc_called(this, "_ZN11S19542C7_nt3v21Ev");}
S19542C7_nt ::~S19542C7_nt(){ note_dtor("S19542C7_nt", this);} // tgen
S19542C7_nt ::S19542C7_nt(){ note_ctor("S19542C7_nt", this);} // tgen

//skip512 S19542C7_nt

#else // __cplusplus

extern void _ZN11S19542C7_ntC1Ev();
extern void _ZN11S19542C7_ntD1Ev();
Name_Map name_map_S19542C7_nt[] = {
  NSPAIR(_ZN11S19542C7_ntC1Ev),
  NSPAIR(_ZN11S19542C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19542C7_nt[];
extern void _ZN11S19542C7_nt3v18Ev();
extern void _ZN11S19542C7_nt3v19Ev();
extern void _ZN11S19542C7_nt3v20Ev();
extern void _ZN11S19542C7_nt3v21Ev();
static  VTBL_ENTRY vtc_S19542C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19542C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S19542C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S19542C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN11S19542C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN11S19542C7_nt3v21Ev,
};
extern VTBL_ENTRY _ZTI11S19542C7_nt[];
VTBL_ENTRY *P__ZTI11S19542C7_nt = _ZTI11S19542C7_nt; 
extern  VTBL_ENTRY _ZTV11S19542C7_nt[];
Class_Descriptor cd_S19542C7_nt = {  "S19542C7_nt", // class name
  0,0,//no base classes
  &(vtc_S19542C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S19542C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19542C7_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  S19542C1  : virtual S19542C2 , virtual S19542C7_nt {
  int s19542c1f0;
  virtual  ~S19542C1(); // _ZN8S19542C1D2Ev
  virtual void  v1(); // _ZN8S19542C12v1Ev
  virtual void  v2(); // _ZN8S19542C12v2Ev
  virtual void  v3(); // _ZN8S19542C12v3Ev
  virtual void  v4(); // _ZN8S19542C12v4Ev
  virtual void  v5(); // _ZN8S19542C12v5Ev
  S19542C1(); // tgen
};
//SIG(1 S19542C1) C1{ VBC2{ BC3{ VBC4{ v6 v7 v8 v9 FD Fp} v10 v11} VBC5{ VBC6{ v12 v13 v14} v15} v16 v17 Fi:25} VBC7{ v18 v19 v20 v21 Fp} vd v1 v2 v3 v4 v5 Fi}


 S19542C1 ::~S19542C1(){ note_dtor("S19542C1", this);}
void  S19542C1 ::v1(){vfunc_called(this, "_ZN8S19542C12v1Ev");}
void  S19542C1 ::v2(){vfunc_called(this, "_ZN8S19542C12v2Ev");}
void  S19542C1 ::v3(){vfunc_called(this, "_ZN8S19542C12v3Ev");}
void  S19542C1 ::v4(){vfunc_called(this, "_ZN8S19542C12v4Ev");}
void  S19542C1 ::v5(){vfunc_called(this, "_ZN8S19542C12v5Ev");}
S19542C1 ::S19542C1(){ note_ctor("S19542C1", this);} // tgen

static void Test_S19542C1()
{
  extern Class_Descriptor cd_S19542C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19542C1, buf);
    S19542C1 *dp, &lv = *(dp=new (buf) S19542C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,44), "sizeof(S19542C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19542C1)");
    check_base_class_offset(lv, (S19542C4_nt*)(S19542C3*)(S19542C2*), ABISELECT(32,16), "S19542C1");
    check_base_class_offset(lv, (S19542C3*)(S19542C2*), ABISELECT(16,8), "S19542C1");
    check_base_class_offset(lv, (S19542C6*)(S19542C5_nt*), 0, "S19542C1");
    check_base_class_offset(lv, (S19542C5_nt*)(S19542C2*), 0, "S19542C1");
    check_base_class_offset(lv, (S19542C2*), ABISELECT(16,8), "S19542C1");
    check_base_class_offset(lv, (S19542C7_nt*), ABISELECT(72,36), "S19542C1");
    check_field_offset(lv, s19542c1f0, ABISELECT(8,4), "S19542C1.s19542c1f0");
    test_class_info(&lv, &cd_S19542C1);
    dp->~S19542C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19542C1(Test_S19542C1, "S19542C1", ABISELECT(96,44));

#else // __cplusplus

extern void _ZN8S19542C1C1Ev();
extern void _ZN8S19542C1D2Ev();
Name_Map name_map_S19542C1[] = {
  NSPAIR(_ZN8S19542C1C1Ev),
  NSPAIR(_ZN8S19542C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19542C4_nt;
extern VTBL_ENTRY _ZTI11S19542C4_nt[];
extern  VTBL_ENTRY _ZTV11S19542C4_nt[];
extern Class_Descriptor cd_S19542C3;
extern VTBL_ENTRY _ZTI8S19542C3[];
extern  VTBL_ENTRY _ZTV8S19542C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19542C3[];
extern Class_Descriptor cd_S19542C6;
extern VTBL_ENTRY _ZTI8S19542C6[];
extern  VTBL_ENTRY _ZTV8S19542C6[];
extern Class_Descriptor cd_S19542C5_nt;
extern VTBL_ENTRY _ZTI11S19542C5_nt[];
extern  VTBL_ENTRY _ZTV11S19542C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19542C5_nt[];
extern Class_Descriptor cd_S19542C2;
extern VTBL_ENTRY _ZTI8S19542C2[];
extern  VTBL_ENTRY _ZTV8S19542C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19542C2[];
extern Class_Descriptor cd_S19542C7_nt;
extern VTBL_ENTRY _ZTI11S19542C7_nt[];
extern  VTBL_ENTRY _ZTV11S19542C7_nt[];
static Base_Class bases_S19542C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19542C4_nt,    ABISELECT(32,16), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19542C3,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19542C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19542C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19542C2,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19542C7_nt,    ABISELECT(72,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19542C1[];
extern void _ZN8S19542C63v12Ev();
extern void _ZN8S19542C63v13Ev();
extern void _ZN8S19542C63v14Ev();
extern void _ZN11S19542C5_nt3v15Ev();
extern void _ZN8S19542C1D1Ev();
extern void _ZN8S19542C1D0Ev();
extern void _ZN8S19542C12v1Ev();
extern void _ZN8S19542C12v2Ev();
extern void _ZN8S19542C12v3Ev();
extern void _ZN8S19542C12v4Ev();
extern void _ZN8S19542C12v5Ev();
extern void _ZN8S19542C33v10Ev();
extern void _ZN8S19542C33v11Ev();
extern void _ZN8S19542C23v16Ev();
extern void _ZN8S19542C23v17Ev();
extern void _ZN11S19542C4_nt2v6Ev();
extern void _ZN11S19542C4_nt2v7Ev();
extern void _ZN11S19542C4_nt2v8Ev();
extern void _ZN11S19542C4_nt2v9Ev();
extern void _ZN11S19542C7_nt3v18Ev();
extern void _ZN11S19542C7_nt3v19Ev();
extern void _ZN11S19542C7_nt3v20Ev();
extern void _ZN11S19542C7_nt3v21Ev();
static  VTBL_ENTRY vtc_S19542C1[] = {
  ABISELECT(72,36),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19542C1[0]),
  (VTBL_ENTRY)&_ZN8S19542C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v14Ev,
  (VTBL_ENTRY)&_ZN11S19542C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S19542C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19542C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19542C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19542C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19542C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19542C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19542C12v5Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19542C1[0]),
  (VTBL_ENTRY)&_ZN8S19542C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19542C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19542C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19542C23v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19542C1[0]),
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v9Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19542C1[0]),
  (VTBL_ENTRY)&_ZN11S19542C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S19542C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN11S19542C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN11S19542C7_nt3v21Ev,
};
extern VTBL_ENTRY _ZTV8S19542C1[];
extern void _ZN8S19542C33v10Ev();
extern void _ZN8S19542C33v11Ev();
extern void _ZN8S19542C23v16Ev();
extern void _ZN8S19542C23v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19542C2__8S19542C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19542C2[0]),
  (VTBL_ENTRY)&_ZN8S19542C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19542C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19542C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19542C23v17Ev,
};
extern void _ZN8S19542C33v10Ev();
extern void _ZN8S19542C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19542C38S19542C2__8S19542C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19542C3[0]),
  (VTBL_ENTRY)&_ZN8S19542C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19542C33v11Ev,
};
extern void _ZN11S19542C4_nt2v6Ev();
extern void _ZN11S19542C4_nt2v7Ev();
extern void _ZN11S19542C4_nt2v8Ev();
extern void _ZN11S19542C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19542C4_nt__8S19542C38S19542C2__8S19542C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19542C3[0]),
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v9Ev,
};
extern void _ZN11S19542C4_nt2v6Ev();
extern void _ZN11S19542C4_nt2v7Ev();
extern void _ZN11S19542C4_nt2v8Ev();
extern void _ZN11S19542C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19542C4_nt__8S19542C2__8S19542C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19542C2[0]),
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19542C4_nt2v9Ev,
};
extern void _ZN8S19542C63v12Ev();
extern void _ZN8S19542C63v13Ev();
extern void _ZN8S19542C63v14Ev();
extern void _ZN11S19542C5_nt3v15Ev();
static  VTBL_ENTRY _tg__ZTV11S19542C5_nt__8S19542C2__8S19542C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19542C2[0]),
  (VTBL_ENTRY)&_ZN8S19542C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v14Ev,
  (VTBL_ENTRY)&_ZN11S19542C5_nt3v15Ev,
};
extern void _ZN8S19542C63v12Ev();
extern void _ZN8S19542C63v13Ev();
extern void _ZN8S19542C63v14Ev();
extern void _ZN11S19542C5_nt3v15Ev();
static  VTBL_ENTRY _tg__ZTV11S19542C5_nt__8S19542C1[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S19542C5_nt[0]),
  (VTBL_ENTRY)&_ZN8S19542C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19542C63v14Ev,
  (VTBL_ENTRY)&_ZN11S19542C5_nt3v15Ev,
};
static  VTT_ENTRY vtt_S19542C1[] = {
  {&(_ZTV8S19542C1[11]),  11,55},
  {&(_ZTV8S19542C1[31]),  31,55},
  {&(_ZTV8S19542C1[41]),  41,55},
  {&(_ZTV8S19542C1[11]),  11,55},
  {&(_ZTV8S19542C1[11]),  11,55},
  {&(_ZTV8S19542C1[51]),  51,55},
  {&(_tg__ZTV8S19542C2__8S19542C1[5]),  5,9},
  {&(_tg__ZTV8S19542C38S19542C2__8S19542C1[3]),  3,5},
  {&(_tg__ZTV11S19542C4_nt__8S19542C38S19542C2__8S19542C1[6]),  6,10},
  {&(_tg__ZTV11S19542C4_nt__8S19542C2__8S19542C1[6]),  6,10},
  {&(_tg__ZTV11S19542C5_nt__8S19542C2__8S19542C1[7]),  7,11},
  {&(_tg__ZTV11S19542C5_nt__8S19542C2__8S19542C1[7]),  7,11},
  {&(_tg__ZTV11S19542C5_nt__8S19542C1[6]),  6,10},
  {&(_tg__ZTV11S19542C5_nt__8S19542C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19542C1[];
extern  VTBL_ENTRY _ZTV8S19542C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19542C1[];
Class_Descriptor cd_S19542C1 = {  "S19542C1", // class name
  bases_S19542C1, 6,
  &(vtc_S19542C1[0]), // expected_vtbl_contents
  &(vtt_S19542C1[0]), // expected_vtt_contents
  ABISELECT(96,44), // object size
  NSPAIRA(_ZTI8S19542C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19542C1),55, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19542C1),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20710C5  : S2367C19 , S5228C4_nt {
  void *s20710c5f0;
  ~S20710C5(); // tgen
  S20710C5(); // tgen
};
//SIG(-1 S20710C5) C1{ BC2{ m Fp} BC3{ vd m} Fp}


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

static void Test_S20710C5()
{
  extern Class_Descriptor cd_S20710C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20710C5, buf);
    S20710C5 *dp, &lv = *(dp=new (buf) S20710C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20710C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20710C5)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S20710C5");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S20710C5");
    check_field_offset(lv, s20710c5f0, ABISELECT(16,8), "S20710C5.s20710c5f0");
    test_class_info(&lv, &cd_S20710C5);
    dp->~S20710C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20710C5(Test_S20710C5, "S20710C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20710C5C1Ev();
extern void _ZN8S20710C5D1Ev();
Name_Map name_map_S20710C5[] = {
  NSPAIR(_ZN8S20710C5C1Ev),
  NSPAIR(_ZN8S20710C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S20710C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20710C5[];
extern void _ZN8S20710C5D1Ev();
extern void _ZN8S20710C5D0Ev();
static  VTBL_ENTRY vtc_S20710C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C5[0]),
  (VTBL_ENTRY)&_ZN8S20710C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20710C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S20710C5[];
extern  VTBL_ENTRY _ZTV8S20710C5[];
Class_Descriptor cd_S20710C5 = {  "S20710C5", // class name
  bases_S20710C5, 2,
  &(vtc_S20710C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20710C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20710C5),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  S20710C8  : virtual S2367C19 , virtual S5228C4_nt {
  int s20710c8f0;
  virtual  ~S20710C8(); // _ZN8S20710C8D2Ev
  S20710C8(); // tgen
};
//SIG(-1 S20710C8) C1{ VBC2{ m Fp} VBC3{ vd m} vd Fi}


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

static void Test_S20710C8()
{
  extern Class_Descriptor cd_S20710C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20710C8, buf);
    S20710C8 *dp, &lv = *(dp=new (buf) S20710C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20710C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20710C8)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(16,8), "S20710C8");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S20710C8");
    check_field_offset(lv, s20710c8f0, ABISELECT(8,4), "S20710C8.s20710c8f0");
    test_class_info(&lv, &cd_S20710C8);
    dp->~S20710C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20710C8(Test_S20710C8, "S20710C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20710C8C1Ev();
extern void _ZN8S20710C8D2Ev();
Name_Map name_map_S20710C8[] = {
  NSPAIR(_ZN8S20710C8C1Ev),
  NSPAIR(_ZN8S20710C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S20710C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20710C8[];
extern void _ZN8S20710C8D1Ev();
extern void _ZN8S20710C8D0Ev();
static  VTBL_ENTRY vtc_S20710C8[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C8[0]),
  (VTBL_ENTRY)&_ZN8S20710C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20710C8D0Ev,
};
extern VTBL_ENTRY _ZTV8S20710C8[];
static  VTT_ENTRY vtt_S20710C8[] = {
  {&(_ZTV8S20710C8[5]),  5,7},
  {&(_ZTV8S20710C8[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20710C8[];
extern  VTBL_ENTRY _ZTV8S20710C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C8[];
Class_Descriptor cd_S20710C8 = {  "S20710C8", // class name
  bases_S20710C8, 2,
  &(vtc_S20710C8[0]), // expected_vtbl_contents
  &(vtt_S20710C8[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20710C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20710C8),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20710C8),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  S20710C10  : S5228C4_nt {
  void *s20710c10f0;
  ~S20710C10(); // tgen
  S20710C10(); // tgen
};
//SIG(-1 S20710C10) C1{ BC2{ vd m} Fp}


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

static void Test_S20710C10()
{
  extern Class_Descriptor cd_S20710C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20710C10, buf);
    S20710C10 *dp, &lv = *(dp=new (buf) S20710C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20710C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20710C10)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S20710C10");
    check_field_offset(lv, s20710c10f0, ABISELECT(8,4), "S20710C10.s20710c10f0");
    test_class_info(&lv, &cd_S20710C10);
    dp->~S20710C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20710C10(Test_S20710C10, "S20710C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20710C10C1Ev();
extern void _ZN9S20710C10D1Ev();
Name_Map name_map_S20710C10[] = {
  NSPAIR(_ZN9S20710C10C1Ev),
  NSPAIR(_ZN9S20710C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S20710C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20710C10[];
extern void _ZN9S20710C10D1Ev();
extern void _ZN9S20710C10D0Ev();
static  VTBL_ENTRY vtc_S20710C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20710C10[0]),
  (VTBL_ENTRY)&_ZN9S20710C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20710C10D0Ev,
};
extern VTBL_ENTRY _ZTI9S20710C10[];
extern  VTBL_ENTRY _ZTV9S20710C10[];
Class_Descriptor cd_S20710C10 = {  "S20710C10", // class name
  bases_S20710C10, 1,
  &(vtc_S20710C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20710C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20710C10),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  S20710C9  : S3164C31_nt , virtual S2367C19 , S20710C5 , S5228C4_nt , S20710C10 {
  ~S20710C9(); // tgen
  S20710C9(); // tgen
};
//SIG(-1 S20710C9) C1{ BC2{ m} VBC3{ m Fp} BC4{ BC3 BC5{ vd m} Fp} BC5 BC6{ BC5 Fp}}


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

static void Test_S20710C9()
{
  extern Class_Descriptor cd_S20710C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S20710C9, buf);
    S20710C9 *dp, &lv = *(dp=new (buf) S20710C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S20710C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20710C9)");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S20710C9");
    /*is_ambiguous_... S20710C9::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*), ABISELECT(48,24), "S20710C9");
    check_base_class_offset(lv, (S2367C19*)(S20710C5*), ABISELECT(8,4), "S20710C9");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C5*), 0, "S20710C9");
    check_base_class_offset(lv, (S20710C5*), 0, "S20710C9");
    /*is_ambiguous_... S20710C9::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(24,12), "S20710C9");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C10*), ABISELECT(32,16), "S20710C9");
    check_base_class_offset(lv, (S20710C10*), ABISELECT(32,16), "S20710C9");
    test_class_info(&lv, &cd_S20710C9);
    dp->~S20710C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20710C9(Test_S20710C9, "S20710C9", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S20710C9C1Ev();
extern void _ZN8S20710C9D1Ev();
Name_Map name_map_S20710C9[] = {
  NSPAIR(_ZN8S20710C9C1Ev),
  NSPAIR(_ZN8S20710C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C5;
extern VTBL_ENTRY _ZTI8S20710C5[];
extern  VTBL_ENTRY _ZTV8S20710C5[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C10;
extern VTBL_ENTRY _ZTI9S20710C10[];
extern  VTBL_ENTRY _ZTV9S20710C10[];
static Base_Class bases_S20710C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2367C19,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20710C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S5228C4_nt,    ABISELECT(24,12), //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_S5228C4_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_S20710C10,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20710C9[];
extern void _ZN8S20710C9D1Ev();
extern void _ZN8S20710C9D0Ev();
extern void ABISELECT(_ZThn24_N8S20710C9D1Ev,_ZThn12_N8S20710C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S20710C9D0Ev,_ZThn12_N8S20710C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S20710C9D1Ev,_ZThn16_N8S20710C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S20710C9D0Ev,_ZThn16_N8S20710C9D0Ev)();
static  VTBL_ENTRY vtc_S20710C9[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C9[0]),
  (VTBL_ENTRY)&_ZN8S20710C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20710C9D0Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20710C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20710C9D1Ev,_ZThn12_N8S20710C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20710C9D0Ev,_ZThn12_N8S20710C9D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20710C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20710C9D1Ev,_ZThn16_N8S20710C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20710C9D0Ev,_ZThn16_N8S20710C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S20710C9[];
static  VTT_ENTRY vtt_S20710C9[] = {
  {&(_ZTV8S20710C9[3]),  3,13},
};
extern VTBL_ENTRY _ZTI8S20710C9[];
extern  VTBL_ENTRY _ZTV8S20710C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C9[];
Class_Descriptor cd_S20710C9 = {  "S20710C9", // class name
  bases_S20710C9, 8,
  &(vtc_S20710C9[0]), // expected_vtbl_contents
  &(vtt_S20710C9[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S20710C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20710C9),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20710C9),1, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20710C4  : virtual S3164C31_nt , virtual S20710C5 , virtual S5228C4_nt , virtual S20710C8 , virtual S20710C9 {
  char s20710c4f0:5;
  ~S20710C4(); // tgen
  S20710C4(); // tgen
};
//SIG(-1 S20710C4) C1{ VBC2{ m} VBC3{ BC4{ m Fp} BC5{ vd m} Fp} VBC5 VBC6{ VBC4 VBC5 vd Fi} VBC7{ BC2 VBC4 BC3 BC5 BC8{ BC5 Fp}} Fc:5}


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

static void Test_S20710C4()
{
  extern Class_Descriptor cd_S20710C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S20710C4, buf);
    S20710C4 *dp, &lv = *(dp=new (buf) S20710C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S20710C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20710C4)");
    /*is_ambiguous_... S20710C4::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20710C4");
    /*is_ambiguous_... S20710C4::S20710C5 */ AMB_check_base_class_offset(lv, (S2367C19*)(S20710C5*), ABISELECT(24,12), "S20710C4");
    /*is_ambiguous_... S20710C4::S20710C5 */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S20710C5*), ABISELECT(16,8), "S20710C4");
    /*is_ambiguous_... S20710C4::S20710C5 */ AMB_check_base_class_offset(lv, (S20710C5*), ABISELECT(16,8), "S20710C4");
    /*is_ambiguous_... S20710C4::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*), 0, "S20710C4");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C8*), 0, "S20710C4");
    check_base_class_offset(lv, (S2367C19*)(S20710C8*), ABISELECT(56,28), "S20710C4");
    /*is_ambiguous_... S20710C9::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*)(S20710C9*), ABISELECT(56,28), "S20710C4");
    check_base_class_offset(lv, (S20710C8*), ABISELECT(40,20), "S20710C4");
    check_base_class_offset(lv, (S3164C31_nt*)(S20710C9*), ABISELECT(64,32), "S20710C4");
    check_base_class_offset(lv, (S2367C19*)(S20710C5*)(S20710C9*), ABISELECT(72,36), "S20710C4");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C5*)(S20710C9*), ABISELECT(64,32), "S20710C4");
    check_base_class_offset(lv, (S20710C5*)(S20710C9*), ABISELECT(64,32), "S20710C4");
    /*is_ambiguous_... S20710C9::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S20710C9*), ABISELECT(88,44), "S20710C4");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C10*)(S20710C9*), ABISELECT(96,48), "S20710C4");
    check_base_class_offset(lv, (S20710C10*)(S20710C9*), ABISELECT(96,48), "S20710C4");
    check_base_class_offset(lv, (S20710C9*), ABISELECT(64,32), "S20710C4");
    set_bf_and_test(lv, s20710c4f0, ABISELECT(8,4), 0, 5, 1, "S20710C4");
    set_bf_and_test(lv, s20710c4f0, ABISELECT(8,4), 0, 5, hide_sll(1LL<<4), "S20710C4");
    test_class_info(&lv, &cd_S20710C4);
    dp->~S20710C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20710C4(Test_S20710C4, "S20710C4", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S20710C4C1Ev();
extern void _ZN8S20710C4D1Ev();
Name_Map name_map_S20710C4[] = {
  NSPAIR(_ZN8S20710C4C1Ev),
  NSPAIR(_ZN8S20710C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C5;
extern VTBL_ENTRY _ZTI8S20710C5[];
extern  VTBL_ENTRY _ZTV8S20710C5[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S20710C8;
extern VTBL_ENTRY _ZTI8S20710C8[];
extern  VTBL_ENTRY _ZTV8S20710C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C5;
extern VTBL_ENTRY _ZTI8S20710C5[];
extern  VTBL_ENTRY _ZTV8S20710C5[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C10;
extern VTBL_ENTRY _ZTI9S20710C10[];
extern  VTBL_ENTRY _ZTV9S20710C10[];
extern Class_Descriptor cd_S20710C9;
extern VTBL_ENTRY _ZTI8S20710C9[];
extern  VTBL_ENTRY _ZTV8S20710C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C9[];
static Base_Class bases_S20710C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    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_S5228C4_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_S20710C5,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5228C4_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20710C8,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_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
    14, //immediately_derived
  0, 0},
  {&cd_S2367C19,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20710C5,    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
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(88,44), //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_S5228C4_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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20710C10,    ABISELECT(96,48), //bcp->offset
    33, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20710C9,    ABISELECT(64,32), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20710C4[];
extern void ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev)();
extern void _ZN8S20710C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev)();
extern void _ZN8S20710C4D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20710C4D1Ev,_ZThn8_N8S20710C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20710C4D0Ev,_ZThn8_N8S20710C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S20710C4D1Ev,_ZThn20_N8S20710C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S20710C4D0Ev,_ZThn20_N8S20710C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20710C4D1Ev,_ZTv0_n16_N8S20710C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20710C4D1Ev,_ZThn32_N8S20710C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20710C4D0Ev,_ZTv0_n16_N8S20710C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20710C4D0Ev,_ZThn32_N8S20710C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n32_N8S20710C4D1Ev,_ZTvn12_n16_N8S20710C4D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S20710C4D0Ev,_ZTvn12_n16_N8S20710C4D0Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20710C4D1Ev,_ZTvn16_n16_N8S20710C4D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20710C4D0Ev,_ZTvn16_n16_N8S20710C4D0Ev)();
static  VTBL_ENTRY vtc_S20710C4[] = {
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C4D1Ev,_ZTv0_n16_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C4D0Ev,_ZTv0_n16_N8S20710C4D0Ev),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C4D1Ev,_ZTvn12_n16_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C4D0Ev,_ZTvn12_n16_N8S20710C4D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C4D1Ev,_ZTvn16_n16_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C4D0Ev,_ZTvn16_n16_N8S20710C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20710C4[];
extern void ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev)();
extern void _ZN8S20710C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev)();
extern void _ZN8S20710C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C8__8S20710C4[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt__8S20710C8__8S20710C4[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20710C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev),
};
extern void _ZN8S20710C9D1Ev();
extern void _ZN8S20710C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20710C9__8S20710C4[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C9[0]),
  (VTBL_ENTRY)&_ZN8S20710C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20710C9D0Ev,
};
static  VTT_ENTRY vtt_S20710C4[] = {
  {&(_ZTV8S20710C4[9]),  9,37},
  {&(_ZTV8S20710C4[14]),  14,37},
  {&(_ZTV8S20710C4[9]),  9,37},
  {&(_ZTV8S20710C4[21]),  21,37},
  {&(_ZTV8S20710C4[27]),  27,37},
  {&(_ZTV8S20710C4[31]),  31,37},
  {&(_ZTV8S20710C4[35]),  35,37},
  {&(_tg__ZTV8S20710C8__8S20710C4[5]),  5,7},
  {&(_tg__ZTV10S5228C4_nt__8S20710C8__8S20710C4[3]),  3,5},
  {&(_tg__ZTV8S20710C9__8S20710C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20710C4[];
extern  VTBL_ENTRY _ZTV8S20710C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C4[];
static VTBL_ENTRY alt_thunk_names156[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20710C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20710C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C4D0Ev,_ZTv0_n16_N8S20710C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20710C4D0Ev,_ZThn32_N8S20710C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C4D1Ev,_ZTv0_n16_N8S20710C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20710C4D1Ev,_ZThn32_N8S20710C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20710C4D0Ev,_ZThn20_N8S20710C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20710C4D0Ev,_ZThn8_N8S20710C4D0Ev),
  (VTBL_ENTRY)_ZN8S20710C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20710C4D1Ev,_ZThn20_N8S20710C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20710C4D1Ev,_ZThn8_N8S20710C4D1Ev),
  (VTBL_ENTRY)_ZN8S20710C4D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20710C4 = {  "S20710C4", // class name
  bases_S20710C4, 15,
  &(vtc_S20710C4[0]), // expected_vtbl_contents
  &(vtt_S20710C4[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S20710C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20710C4),37, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20710C4),10, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names156,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20710C2  : virtual S3164C31_nt , S20710C4 {
  long s20710c2f0;
  ~S20710C2(); // tgen
  S20710C2(); // tgen
};
//SIG(-1 S20710C2) C1{ VBC2{ m} BC3{ VBC2 VBC4{ BC5{ m Fp} BC6{ vd m} Fp} VBC6 VBC7{ VBC5 VBC6 vd Fi} VBC8{ BC2 VBC5 BC4 BC6 BC9{ BC6 Fp}} Fc:5} Fl}


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

static void Test_S20710C2()
{
  extern Class_Descriptor cd_S20710C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[16];
    init_test(&cd_S20710C2, buf);
    S20710C2 *dp, &lv = *(dp=new (buf) S20710C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,60), "sizeof(S20710C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20710C2)");
    /*is_ambiguous_... S20710C2::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*), 0, "S20710C2");
    /*is_ambiguous_... S20710C4::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20710C4*), 0, "S20710C2");
    /*is_ambiguous_... S20710C2::S20710C5 */ AMB_check_base_class_offset(lv, (S2367C19*)(S20710C5*), ABISELECT(32,16), "S20710C2");
    /*is_ambiguous_... S20710C2::S20710C5 */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S20710C5*), ABISELECT(24,12), "S20710C2");
    /*is_ambiguous_... S20710C4::S20710C5 */ AMB_check_base_class_offset(lv, (S20710C5*)(S20710C4*), ABISELECT(24,12), "S20710C2");
    /*is_ambiguous_... S20710C4::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S20710C4*), 0, "S20710C2");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C8*), 0, "S20710C2");
    check_base_class_offset(lv, (S2367C19*)(S20710C8*), ABISELECT(64,32), "S20710C2");
    /*is_ambiguous_... S20710C9::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*)(S20710C9*), ABISELECT(64,32), "S20710C2");
    check_base_class_offset(lv, (S20710C8*)(S20710C4*), ABISELECT(48,24), "S20710C2");
    check_base_class_offset(lv, (S3164C31_nt*)(S20710C9*), ABISELECT(72,36), "S20710C2");
    check_base_class_offset(lv, (S2367C19*)(S20710C5*)(S20710C9*), ABISELECT(80,40), "S20710C2");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C5*)(S20710C9*), ABISELECT(72,36), "S20710C2");
    check_base_class_offset(lv, (S20710C5*)(S20710C9*), ABISELECT(72,36), "S20710C2");
    /*is_ambiguous_... S20710C9::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S20710C9*), ABISELECT(96,48), "S20710C2");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C10*)(S20710C9*), ABISELECT(104,52), "S20710C2");
    check_base_class_offset(lv, (S20710C10*)(S20710C9*), ABISELECT(104,52), "S20710C2");
    check_base_class_offset(lv, (S20710C9*)(S20710C4*), ABISELECT(72,36), "S20710C2");
    check_base_class_offset(lv, (S20710C4*), 0, "S20710C2");
    check_field_offset(lv, s20710c2f0, ABISELECT(16,8), "S20710C2.s20710c2f0");
    test_class_info(&lv, &cd_S20710C2);
    dp->~S20710C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20710C2(Test_S20710C2, "S20710C2", ABISELECT(120,60));

#else // __cplusplus

extern void _ZN8S20710C2C1Ev();
extern void _ZN8S20710C2D1Ev();
Name_Map name_map_S20710C2[] = {
  NSPAIR(_ZN8S20710C2C1Ev),
  NSPAIR(_ZN8S20710C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C5;
extern VTBL_ENTRY _ZTI8S20710C5[];
extern  VTBL_ENTRY _ZTV8S20710C5[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S20710C8;
extern VTBL_ENTRY _ZTI8S20710C8[];
extern  VTBL_ENTRY _ZTV8S20710C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C5;
extern VTBL_ENTRY _ZTI8S20710C5[];
extern  VTBL_ENTRY _ZTV8S20710C5[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C10;
extern VTBL_ENTRY _ZTI9S20710C10[];
extern  VTBL_ENTRY _ZTV9S20710C10[];
extern Class_Descriptor cd_S20710C9;
extern VTBL_ENTRY _ZTI8S20710C9[];
extern  VTBL_ENTRY _ZTV8S20710C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C9[];
extern Class_Descriptor cd_S20710C4;
extern VTBL_ENTRY _ZTI8S20710C4[];
extern  VTBL_ENTRY _ZTV8S20710C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C4[];
static Base_Class bases_S20710C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5228C4_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_S20710C5,    ABISELECT(24,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2367C19,    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
    6, //immediately_derived
  0, 1},
  {&cd_S20710C8,    ABISELECT(48,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_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
    14, //immediately_derived
  0, 0},
  {&cd_S2367C19,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20710C5,    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
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(96,48), //bcp->offset
    29, //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
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20710C10,    ABISELECT(104,52), //bcp->offset
    33, //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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20710C9,    ABISELECT(72,36), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20710C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20710C2[];
extern void ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev)();
extern void _ZN8S20710C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev)();
extern void _ZN8S20710C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20710C2D1Ev,_ZThn12_N8S20710C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20710C2D0Ev,_ZThn12_N8S20710C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20710C2D1Ev,_ZThn24_N8S20710C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20710C2D0Ev,_ZThn24_N8S20710C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20710C2D1Ev,_ZTv0_n16_N8S20710C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20710C2D1Ev,_ZThn36_N8S20710C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20710C2D0Ev,_ZTv0_n16_N8S20710C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20710C2D0Ev,_ZThn36_N8S20710C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n32_N8S20710C2D1Ev,_ZTvn12_n16_N8S20710C2D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S20710C2D0Ev,_ZTvn12_n16_N8S20710C2D0Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20710C2D1Ev,_ZTvn16_n16_N8S20710C2D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20710C2D0Ev,_ZTvn16_n16_N8S20710C2D0Ev)();
static  VTBL_ENTRY vtc_S20710C2[] = {
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(48,24),
  0,
  ABISELECT(24,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-8,-4),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C2D1Ev,_ZTv0_n16_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C2D0Ev,_ZTv0_n16_N8S20710C2D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C2D1Ev,_ZTvn12_n16_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C2D0Ev,_ZTvn12_n16_N8S20710C2D0Ev),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C2D1Ev,_ZTvn16_n16_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C2D0Ev,_ZTvn16_n16_N8S20710C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20710C2[];
extern void ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev)();
extern void _ZN8S20710C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev)();
extern void _ZN8S20710C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C4__8S20710C2[] = {
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(48,24),
  0,
  ABISELECT(24,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev)();
extern void ABISELECT(_ZThn24_N8S20710C4D1Ev,_ZThn12_N8S20710C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev)();
extern void ABISELECT(_ZThn24_N8S20710C4D0Ev,_ZThn12_N8S20710C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C5__8S20710C4__8S20710C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S20710C4D1Ev,_ZThn24_N8S20710C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S20710C4D0Ev,_ZThn24_N8S20710C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C8__8S20710C4__8S20710C2[] = {
  ABISELECT(-48,-24),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20710C4D1Ev,_ZTv0_n16_N8S20710C4D1Ev)();
extern void ABISELECT(_ZThn72_N8S20710C4D1Ev,_ZThn36_N8S20710C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20710C4D0Ev,_ZTv0_n16_N8S20710C4D0Ev)();
extern void ABISELECT(_ZThn72_N8S20710C4D0Ev,_ZThn36_N8S20710C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C9__8S20710C4__8S20710C2[] = {
  ABISELECT(-72,-36),
  ABISELECT(-8,-4),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C4D1Ev,_ZTv0_n16_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C4D0Ev,_ZTv0_n16_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTvn24_n32_N8S20710C4D1Ev,_ZTvn12_n16_N8S20710C4D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S20710C4D0Ev,_ZTvn12_n16_N8S20710C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt8S20710C9__A3__8S20710C4__8S20710C2[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C4D1Ev,_ZTvn12_n16_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C4D0Ev,_ZTvn12_n16_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S20710C4D1Ev,_ZTvn16_n16_N8S20710C4D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20710C4D0Ev,_ZTvn16_n16_N8S20710C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20710C108S20710C9__8S20710C4__8S20710C2[] = {
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C4D1Ev,_ZTvn16_n16_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C4D0Ev,_ZTvn16_n16_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev)();
extern void _ZN8S20710C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev)();
extern void _ZN8S20710C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C8__8S20710C2[] = {
  ABISELECT(-48,-24),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt__8S20710C8__8S20710C2[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20710C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev),
};
extern void _ZN8S20710C9D1Ev();
extern void _ZN8S20710C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20710C9__8S20710C2[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C9[0]),
  (VTBL_ENTRY)&_ZN8S20710C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20710C9D0Ev,
};
static  VTT_ENTRY vtt_S20710C2[] = {
  {&(_ZTV8S20710C2[9]),  9,37},
  {&(_tg__ZTV8S20710C4__8S20710C2[9]),  9,11},
  {&(_tg__ZTV8S20710C5__8S20710C4__8S20710C2[3]),  3,5},
  {&(_tg__ZTV8S20710C4__8S20710C2[9]),  9,11},
  {&(_tg__ZTV8S20710C8__8S20710C4__8S20710C2[5]),  5,7},
  {&(_tg__ZTV8S20710C9__8S20710C4__8S20710C2[4]),  4,6},
  {&(_tg__ZTV10S5228C4_nt8S20710C9__A3__8S20710C4__8S20710C2[2]),  2,4},
  {&(_tg__ZTV9S20710C108S20710C9__8S20710C4__8S20710C2[2]),  2,4},
  {&(_ZTV8S20710C2[14]),  14,37},
  {&(_ZTV8S20710C2[9]),  9,37},
  {&(_ZTV8S20710C2[21]),  21,37},
  {&(_ZTV8S20710C2[27]),  27,37},
  {&(_ZTV8S20710C2[31]),  31,37},
  {&(_ZTV8S20710C2[35]),  35,37},
  {&(_tg__ZTV8S20710C8__8S20710C2[5]),  5,7},
  {&(_tg__ZTV10S5228C4_nt__8S20710C8__8S20710C2[3]),  3,5},
  {&(_tg__ZTV8S20710C9__8S20710C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20710C2[];
extern  VTBL_ENTRY _ZTV8S20710C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C2[];
static VTBL_ENTRY alt_thunk_names157[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20710C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20710C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C4D0Ev,_ZTv0_n16_N8S20710C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20710C4D0Ev,_ZThn36_N8S20710C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C4D1Ev,_ZTv0_n16_N8S20710C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20710C4D1Ev,_ZThn36_N8S20710C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20710C4D0Ev,_ZThn24_N8S20710C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20710C4D0Ev,_ZThn12_N8S20710C4D0Ev),
  (VTBL_ENTRY)_ZN8S20710C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20710C4D1Ev,_ZThn24_N8S20710C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20710C4D1Ev,_ZThn12_N8S20710C4D1Ev),
  (VTBL_ENTRY)_ZN8S20710C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C2D0Ev,_ZTv0_n16_N8S20710C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20710C2D0Ev,_ZThn36_N8S20710C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C2D1Ev,_ZTv0_n16_N8S20710C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20710C2D1Ev,_ZThn36_N8S20710C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20710C2D0Ev,_ZThn24_N8S20710C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20710C2D0Ev,_ZThn12_N8S20710C2D0Ev),
  (VTBL_ENTRY)_ZN8S20710C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20710C2D1Ev,_ZThn24_N8S20710C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20710C2D1Ev,_ZThn12_N8S20710C2D1Ev),
  (VTBL_ENTRY)_ZN8S20710C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20710C2 = {  "S20710C2", // class name
  bases_S20710C2, 16,
  &(vtc_S20710C2[0]), // expected_vtbl_contents
  &(vtt_S20710C2[0]), // expected_vtt_contents
  ABISELECT(120,60), // object size
  NSPAIRA(_ZTI8S20710C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20710C2),37, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20710C2),17, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names157,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20710C1  : virtual S20710C2 , virtual S20710C10 {
  virtual  ~S20710C1(); // _ZN8S20710C1D2Ev
  S20710C1(); // tgen
};
//SIG(1 S20710C1) C1{ VBC2{ VBC3{ m} BC4{ VBC3 VBC5{ BC6{ m Fp} BC7{ vd m} Fp} VBC7 VBC8{ VBC6 VBC7 vd Fi} VBC9{ BC3 VBC6 BC5 BC7 BC10{ BC7 Fp}} Fc:5} Fl} VBC10 vd}


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

static void Test_S20710C1()
{
  extern Class_Descriptor cd_S20710C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[19];
    init_test(&cd_S20710C1, buf);
    S20710C1 *dp, &lv = *(dp=new (buf) S20710C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,72), "sizeof(S20710C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20710C1)");
    /*is_ambiguous_... S20710C2::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20710C2*), 0, "S20710C1");
    /*is_ambiguous_... S20710C4::S3164C31_nt */ AMB_check_base_class_offset(lv, (S3164C31_nt*)(S20710C4*)(S20710C2*), 0, "S20710C1");
    /*is_ambiguous_... S20710C1::S20710C5 */ AMB_check_base_class_offset(lv, (S2367C19*)(S20710C5*), ABISELECT(40,20), "S20710C1");
    /*is_ambiguous_... S20710C1::S20710C5 */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S20710C5*), ABISELECT(32,16), "S20710C1");
    /*is_ambiguous_... S20710C4::S20710C5 */ AMB_check_base_class_offset(lv, (S20710C5*)(S20710C4*)(S20710C2*), ABISELECT(32,16), "S20710C1");
    /*is_ambiguous_... S20710C4::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S20710C4*)(S20710C2*), 0, "S20710C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C8*), 0, "S20710C1");
    check_base_class_offset(lv, (S2367C19*)(S20710C8*), ABISELECT(72,36), "S20710C1");
    /*is_ambiguous_... S20710C9::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*)(S20710C9*), ABISELECT(72,36), "S20710C1");
    check_base_class_offset(lv, (S20710C8*)(S20710C4*)(S20710C2*), ABISELECT(56,28), "S20710C1");
    check_base_class_offset(lv, (S3164C31_nt*)(S20710C9*), ABISELECT(80,40), "S20710C1");
    check_base_class_offset(lv, (S2367C19*)(S20710C5*)(S20710C9*), ABISELECT(88,44), "S20710C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C5*)(S20710C9*), ABISELECT(80,40), "S20710C1");
    check_base_class_offset(lv, (S20710C5*)(S20710C9*), ABISELECT(80,40), "S20710C1");
    /*is_ambiguous_... S20710C9::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S20710C9*), ABISELECT(104,52), "S20710C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S20710C10*)(S20710C9*), ABISELECT(112,56), "S20710C1");
    check_base_class_offset(lv, (S20710C10*)(S20710C9*), ABISELECT(112,56), "S20710C1");
    check_base_class_offset(lv, (S20710C9*)(S20710C4*)(S20710C2*), ABISELECT(80,40), "S20710C1");
    check_base_class_offset(lv, (S20710C4*)(S20710C2*), ABISELECT(8,4), "S20710C1");
    check_base_class_offset(lv, (S20710C2*), ABISELECT(8,4), "S20710C1");
    /*is_ambiguous_... S20710C1::S20710C10 */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S20710C10*), ABISELECT(128,64), "S20710C1");
    /*is_ambiguous_... S20710C1::S20710C10 */ AMB_check_base_class_offset(lv, (S20710C10*), ABISELECT(128,64), "S20710C1");
    test_class_info(&lv, &cd_S20710C1);
    dp->~S20710C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20710C1(Test_S20710C1, "S20710C1", ABISELECT(144,72));

#else // __cplusplus

extern void _ZN8S20710C1C1Ev();
extern void _ZN8S20710C1D2Ev();
Name_Map name_map_S20710C1[] = {
  NSPAIR(_ZN8S20710C1C1Ev),
  NSPAIR(_ZN8S20710C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C5;
extern VTBL_ENTRY _ZTI8S20710C5[];
extern  VTBL_ENTRY _ZTV8S20710C5[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S20710C8;
extern VTBL_ENTRY _ZTI8S20710C8[];
extern  VTBL_ENTRY _ZTV8S20710C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C5;
extern VTBL_ENTRY _ZTI8S20710C5[];
extern  VTBL_ENTRY _ZTV8S20710C5[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C10;
extern VTBL_ENTRY _ZTI9S20710C10[];
extern  VTBL_ENTRY _ZTV9S20710C10[];
extern Class_Descriptor cd_S20710C9;
extern VTBL_ENTRY _ZTI8S20710C9[];
extern  VTBL_ENTRY _ZTV8S20710C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C9[];
extern Class_Descriptor cd_S20710C4;
extern VTBL_ENTRY _ZTI8S20710C4[];
extern  VTBL_ENTRY _ZTV8S20710C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C4[];
extern Class_Descriptor cd_S20710C2;
extern VTBL_ENTRY _ZTI8S20710C2[];
extern  VTBL_ENTRY _ZTV8S20710C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C2[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20710C10;
extern VTBL_ENTRY _ZTI9S20710C10[];
extern  VTBL_ENTRY _ZTV9S20710C10[];
static Base_Class bases_S20710C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2367C19,    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
    3, //immediately_derived
  0, 0},
  {&cd_S5228C4_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, 0},
  {&cd_S20710C5,    ABISELECT(32,16), //bcp->offset
    24, //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
    15, //immediately_derived
  0, 1},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2367C19,    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
    6, //immediately_derived
  0, 1},
  {&cd_S20710C8,    ABISELECT(56,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3164C31_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2367C19,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20710C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(104,52), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20710C10,    ABISELECT(112,56), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20710C9,    ABISELECT(80,40), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20710C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20710C2,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5228C4_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20710C10,    ABISELECT(128,64), //bcp->offset
    50, //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
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20710C1[];
extern void ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev)();
extern void _ZN8S20710C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev)();
extern void _ZN8S20710C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20710C1D1Ev,_ZThn4_N8S20710C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20710C1D0Ev,_ZThn4_N8S20710C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20710C1D1Ev,_ZThn16_N8S20710C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20710C1D0Ev,_ZThn16_N8S20710C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S20710C1D1Ev,_ZThn28_N8S20710C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S20710C1D0Ev,_ZThn28_N8S20710C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20710C1D1Ev,_ZTv0_n16_N8S20710C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20710C1D1Ev,_ZThn40_N8S20710C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20710C1D0Ev,_ZTv0_n16_N8S20710C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20710C1D0Ev,_ZThn40_N8S20710C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n32_N8S20710C1D1Ev,_ZTvn12_n16_N8S20710C1D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S20710C1D0Ev,_ZTvn12_n16_N8S20710C1D0Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20710C1D1Ev,_ZTvn16_n16_N8S20710C1D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20710C1D0Ev,_ZTvn16_n16_N8S20710C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S20710C1D1Ev,_ZThn64_N8S20710C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S20710C1D0Ev,_ZThn64_N8S20710C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20710C1[] = {
  ABISELECT(128,64),
  ABISELECT(80,40),
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev),
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(-8,-4),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20710C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20710C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20710C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-8,-4),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20710C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C1D1Ev,_ZTv0_n16_N8S20710C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C1D0Ev,_ZTv0_n16_N8S20710C1D0Ev),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20710C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C1D1Ev,_ZTvn12_n16_N8S20710C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C1D0Ev,_ZTvn12_n16_N8S20710C1D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20710C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C1D1Ev,_ZTvn16_n16_N8S20710C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C1D0Ev,_ZTvn16_n16_N8S20710C1D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20710C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20710C1[];
extern void ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev)();
extern void _ZN8S20710C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev)();
extern void _ZN8S20710C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C2__8S20710C1[] = {
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(-8,-4),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev)();
extern void _ZN8S20710C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev)();
extern void _ZN8S20710C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C48S20710C2__8S20710C1[] = {
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(48,24),
  ABISELECT(-8,-4),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev)();
extern void ABISELECT(_ZThn24_N8S20710C4D1Ev,_ZThn12_N8S20710C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev)();
extern void ABISELECT(_ZThn24_N8S20710C4D0Ev,_ZThn12_N8S20710C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C5__8S20710C48S20710C2__8S20710C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt__A1__8S20710C48S20710C2__8S20710C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S20710C4D1Ev,_ZThn24_N8S20710C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S20710C4D0Ev,_ZThn24_N8S20710C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C8__8S20710C48S20710C2__8S20710C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20710C4D1Ev,_ZTv0_n16_N8S20710C4D1Ev)();
extern void ABISELECT(_ZThn72_N8S20710C4D1Ev,_ZThn36_N8S20710C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20710C4D0Ev,_ZTv0_n16_N8S20710C4D0Ev)();
extern void ABISELECT(_ZThn72_N8S20710C4D0Ev,_ZThn36_N8S20710C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C9__8S20710C48S20710C2__8S20710C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-8,-4),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C4D1Ev,_ZTv0_n16_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C4D0Ev,_ZTv0_n16_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTvn24_n32_N8S20710C4D1Ev,_ZTvn12_n16_N8S20710C4D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S20710C4D0Ev,_ZTvn12_n16_N8S20710C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt8S20710C9__A3__8S20710C48S20710C2__8S20710C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C4D1Ev,_ZTvn12_n16_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C4D0Ev,_ZTvn12_n16_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S20710C4D1Ev,_ZTvn16_n16_N8S20710C4D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20710C4D0Ev,_ZTvn16_n16_N8S20710C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20710C108S20710C9__8S20710C48S20710C2__8S20710C1[] = {
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20710C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C4D1Ev,_ZTvn16_n16_N8S20710C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C4D0Ev,_ZTvn16_n16_N8S20710C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20710C2D1Ev,_ZThn12_N8S20710C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20710C2D0Ev,_ZThn12_N8S20710C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C5__8S20710C2__8S20710C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt__A1__8S20710C2__8S20710C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20710C2D1Ev,_ZThn24_N8S20710C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20710C2D0Ev,_ZThn24_N8S20710C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C8__8S20710C2__8S20710C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20710C2D1Ev,_ZTv0_n16_N8S20710C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20710C2D1Ev,_ZThn36_N8S20710C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20710C2D0Ev,_ZTv0_n16_N8S20710C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20710C2D0Ev,_ZThn36_N8S20710C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C9__8S20710C2__8S20710C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-8,-4),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C2D1Ev,_ZTv0_n16_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20710C2D0Ev,_ZTv0_n16_N8S20710C2D0Ev),
};
extern void ABISELECT(_ZTvn24_n32_N8S20710C2D1Ev,_ZTvn12_n16_N8S20710C2D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N8S20710C2D0Ev,_ZTvn12_n16_N8S20710C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt8S20710C9__A3__8S20710C2__8S20710C1[] = {
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C2D1Ev,_ZTvn12_n16_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N8S20710C2D0Ev,_ZTvn12_n16_N8S20710C2D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S20710C2D1Ev,_ZTvn16_n16_N8S20710C2D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20710C2D0Ev,_ZTvn16_n16_N8S20710C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20710C108S20710C9__8S20710C2__8S20710C1[] = {
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20710C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C2D1Ev,_ZTvn16_n16_N8S20710C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20710C2D0Ev,_ZTvn16_n16_N8S20710C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev)();
extern void _ZN8S20710C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev)();
extern void _ZN8S20710C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20710C8__8S20710C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt__8S20710C8__8S20710C1[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S20710C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev),
};
extern void _ZN8S20710C9D1Ev();
extern void _ZN8S20710C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20710C9__8S20710C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20710C9[0]),
  (VTBL_ENTRY)&_ZN8S20710C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20710C9D0Ev,
};
static  VTT_ENTRY vtt_S20710C1[] = {
  {&(_ZTV8S20710C1[11]),  11,55},
  {&(_ZTV8S20710C1[22]),  22,55},
  {&(_ZTV8S20710C1[27]),  27,55},
  {&(_ZTV8S20710C1[11]),  11,55},
  {&(_ZTV8S20710C1[34]),  34,55},
  {&(_ZTV8S20710C1[40]),  40,55},
  {&(_ZTV8S20710C1[44]),  44,55},
  {&(_ZTV8S20710C1[48]),  48,55},
  {&(_ZTV8S20710C1[53]),  53,55},
  {&(_tg__ZTV8S20710C2__8S20710C1[9]),  9,11},
  {&(_tg__ZTV8S20710C48S20710C2__8S20710C1[9]),  9,11},
  {&(_tg__ZTV8S20710C5__8S20710C48S20710C2__8S20710C1[3]),  3,5},
  {&(_tg__ZTV10S5228C4_nt__A1__8S20710C48S20710C2__8S20710C1[3]),  3,5},
  {&(_tg__ZTV8S20710C8__8S20710C48S20710C2__8S20710C1[5]),  5,7},
  {&(_tg__ZTV8S20710C9__8S20710C48S20710C2__8S20710C1[4]),  4,6},
  {&(_tg__ZTV10S5228C4_nt8S20710C9__A3__8S20710C48S20710C2__8S20710C1[2]),  2,4},
  {&(_tg__ZTV9S20710C108S20710C9__8S20710C48S20710C2__8S20710C1[2]),  2,4},
  {&(_tg__ZTV8S20710C5__8S20710C2__8S20710C1[3]),  3,5},
  {&(_tg__ZTV10S5228C4_nt__A1__8S20710C2__8S20710C1[3]),  3,5},
  {&(_tg__ZTV8S20710C8__8S20710C2__8S20710C1[5]),  5,7},
  {&(_tg__ZTV8S20710C9__8S20710C2__8S20710C1[4]),  4,6},
  {&(_tg__ZTV10S5228C4_nt8S20710C9__A3__8S20710C2__8S20710C1[2]),  2,4},
  {&(_tg__ZTV9S20710C108S20710C9__8S20710C2__8S20710C1[2]),  2,4},
  {&(_tg__ZTV8S20710C8__8S20710C1[5]),  5,7},
  {&(_tg__ZTV10S5228C4_nt__8S20710C8__8S20710C1[3]),  3,5},
  {&(_tg__ZTV8S20710C9__8S20710C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20710C1[];
extern  VTBL_ENTRY _ZTV8S20710C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20710C1[];
static VTBL_ENTRY alt_thunk_names158[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C8D0Ev,_ZTv0_n12_N8S20710C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20710C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C8D1Ev,_ZTv0_n12_N8S20710C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20710C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C2D0Ev,_ZTv0_n16_N8S20710C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20710C2D0Ev,_ZThn36_N8S20710C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C2D1Ev,_ZTv0_n16_N8S20710C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20710C2D1Ev,_ZThn36_N8S20710C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C4D0Ev,_ZTv0_n16_N8S20710C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20710C4D0Ev,_ZThn36_N8S20710C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C4D1Ev,_ZTv0_n16_N8S20710C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20710C4D1Ev,_ZThn36_N8S20710C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C4D0Ev,_ZTv0_n12_N8S20710C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20710C4D0Ev,_ZThn24_N8S20710C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20710C4D0Ev,_ZThn12_N8S20710C4D0Ev),
  (VTBL_ENTRY)_ZN8S20710C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C4D1Ev,_ZTv0_n12_N8S20710C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20710C4D1Ev,_ZThn24_N8S20710C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20710C4D1Ev,_ZThn12_N8S20710C4D1Ev),
  (VTBL_ENTRY)_ZN8S20710C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C2D0Ev,_ZTv0_n12_N8S20710C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20710C2D0Ev,_ZThn24_N8S20710C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20710C2D0Ev,_ZThn12_N8S20710C2D0Ev),
  (VTBL_ENTRY)_ZN8S20710C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C2D1Ev,_ZTv0_n12_N8S20710C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20710C2D1Ev,_ZThn24_N8S20710C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20710C2D1Ev,_ZThn12_N8S20710C2D1Ev),
  (VTBL_ENTRY)_ZN8S20710C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C1D0Ev,_ZTv0_n16_N8S20710C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20710C1D0Ev,_ZThn40_N8S20710C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20710C1D1Ev,_ZTv0_n16_N8S20710C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20710C1D1Ev,_ZThn40_N8S20710C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C1D0Ev,_ZTv0_n12_N8S20710C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20710C1D0Ev,_ZThn64_N8S20710C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20710C1D0Ev,_ZThn28_N8S20710C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20710C1D0Ev,_ZThn16_N8S20710C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20710C1D0Ev,_ZThn4_N8S20710C1D0Ev),
  (VTBL_ENTRY)_ZN8S20710C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20710C1D1Ev,_ZTv0_n12_N8S20710C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20710C1D1Ev,_ZThn64_N8S20710C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20710C1D1Ev,_ZThn28_N8S20710C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20710C1D1Ev,_ZThn16_N8S20710C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20710C1D1Ev,_ZThn4_N8S20710C1D1Ev),
  (VTBL_ENTRY)_ZN8S20710C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20710C1 = {  "S20710C1", // class name
  bases_S20710C1, 19,
  &(vtc_S20710C1[0]), // expected_vtbl_contents
  &(vtt_S20710C1[0]), // expected_vtt_contents
  ABISELECT(144,72), // object size
  NSPAIRA(_ZTI8S20710C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20710C1),55, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20710C1),26, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names158,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7658C3  {
  long double s7658c3f0;
  void *s7658c3f1[5];
  virtual void  v7(); // _ZN7S7658C32v7Ev
  virtual void  v8(); // _ZN7S7658C32v8Ev
  virtual void  v9(); // _ZN7S7658C32v9Ev
  virtual void  v10(); // _ZN7S7658C33v10Ev
  virtual void  v11(); // _ZN7S7658C33v11Ev
  virtual void  v12(); // _ZN7S7658C33v12Ev
  virtual void  v13(); // _ZN7S7658C33v13Ev
  ~S7658C3(); // tgen
  S7658C3(); // tgen
};
//SIG(-1 S7658C3) C1{ v1 v2 v3 v4 v5 v6 v7 FD Fp[5]}


void  S7658C3 ::v7(){vfunc_called(this, "_ZN7S7658C32v7Ev");}
void  S7658C3 ::v8(){vfunc_called(this, "_ZN7S7658C32v8Ev");}
void  S7658C3 ::v9(){vfunc_called(this, "_ZN7S7658C32v9Ev");}
void  S7658C3 ::v10(){vfunc_called(this, "_ZN7S7658C33v10Ev");}
void  S7658C3 ::v11(){vfunc_called(this, "_ZN7S7658C33v11Ev");}
void  S7658C3 ::v12(){vfunc_called(this, "_ZN7S7658C33v12Ev");}
void  S7658C3 ::v13(){vfunc_called(this, "_ZN7S7658C33v13Ev");}
S7658C3 ::~S7658C3(){ note_dtor("S7658C3", this);} // tgen
S7658C3 ::S7658C3(){ note_ctor("S7658C3", this);} // tgen

static void Test_S7658C3()
{
  extern Class_Descriptor cd_S7658C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S7658C3, buf);
    S7658C3 *dp, &lv = *(dp=new (buf) S7658C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S7658C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7658C3)");
    check_field_offset(lv, s7658c3f0, ABISELECT(16,4), "S7658C3.s7658c3f0");
    check_field_offset(lv, s7658c3f1, ABISELECT(32,16), "S7658C3.s7658c3f1");
    test_class_info(&lv, &cd_S7658C3);
    dp->~S7658C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7658C3(Test_S7658C3, "S7658C3", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN7S7658C3C1Ev();
extern void _ZN7S7658C3D1Ev();
Name_Map name_map_S7658C3[] = {
  NSPAIR(_ZN7S7658C3C1Ev),
  NSPAIR(_ZN7S7658C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7658C3[];
extern void _ZN7S7658C32v7Ev();
extern void _ZN7S7658C32v8Ev();
extern void _ZN7S7658C32v9Ev();
extern void _ZN7S7658C33v10Ev();
extern void _ZN7S7658C33v11Ev();
extern void _ZN7S7658C33v12Ev();
extern void _ZN7S7658C33v13Ev();
static  VTBL_ENTRY vtc_S7658C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7658C3[0]),
  (VTBL_ENTRY)&_ZN7S7658C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7658C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7658C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v13Ev,
};
extern VTBL_ENTRY _ZTI7S7658C3[];
extern  VTBL_ENTRY _ZTV7S7658C3[];
Class_Descriptor cd_S7658C3 = {  "S7658C3", // class name
  0,0,//no base classes
  &(vtc_S7658C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI7S7658C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7658C3),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  S7658C2  : virtual S7658C3 , S19553C7 {
  __tsi64 s7658c2f0;
  virtual  ~S7658C2(); // _ZN7S7658C2D2Ev
  virtual void  v14(); // _ZN7S7658C23v14Ev
  S7658C2(); // tgen
};
//SIG(-1 S7658C2) C1{ VBC2{ v2 v3 v4 v5 v6 v7 v8 FD Fp[5]} BC3{ m FC4{ v9 v10 v11 v12 v13 v14 v15 FD Fp[5]}} vd v1 FL}


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

static void Test_S7658C2()
{
  extern Class_Descriptor cd_S7658C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,22)];
    init_test(&cd_S7658C2, buf);
    S7658C2 *dp, &lv = *(dp=new (buf) S7658C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,84), "sizeof(S7658C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7658C2)");
    check_base_class_offset(lv, (S7658C3*), ABISELECT(112,48), "S7658C2");
    check_base_class_offset(lv, (S19553C7*), ABISELECT(16,4), "S7658C2");
    check_field_offset(lv, s7658c2f0, ABISELECT(96,40), "S7658C2.s7658c2f0");
    test_class_info(&lv, &cd_S7658C2);
    dp->~S7658C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7658C2(Test_S7658C2, "S7658C2", ABISELECT(192,84));

#else // __cplusplus

extern void _ZN7S7658C2C1Ev();
extern void _ZN7S7658C2D2Ev();
Name_Map name_map_S7658C2[] = {
  NSPAIR(_ZN7S7658C2C1Ev),
  NSPAIR(_ZN7S7658C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7658C3;
extern VTBL_ENTRY _ZTI7S7658C3[];
extern  VTBL_ENTRY _ZTV7S7658C3[];
extern Class_Descriptor cd_S19553C7;
extern VTBL_ENTRY _ZTI8S19553C7[];
static Base_Class bases_S7658C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7658C3,    ABISELECT(112,48), //bcp->offset
    6, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19553C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7658C2[];
extern void _ZN7S7658C2D1Ev();
extern void _ZN7S7658C2D0Ev();
extern void _ZN7S7658C23v14Ev();
extern void _ZN7S7658C32v7Ev();
extern void _ZN7S7658C32v8Ev();
extern void _ZN7S7658C32v9Ev();
extern void _ZN7S7658C33v10Ev();
extern void _ZN7S7658C33v11Ev();
extern void _ZN7S7658C33v12Ev();
extern void _ZN7S7658C33v13Ev();
static  VTBL_ENTRY vtc_S7658C2[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7658C2[0]),
  (VTBL_ENTRY)&_ZN7S7658C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7658C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7658C23v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI7S7658C2[0]),
  (VTBL_ENTRY)&_ZN7S7658C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7658C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7658C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v13Ev,
};
extern VTBL_ENTRY _ZTV7S7658C2[];
static  VTT_ENTRY vtt_S7658C2[] = {
  {&(_ZTV7S7658C2[3]),  3,22},
  {&(_ZTV7S7658C2[15]),  15,22},
};
extern VTBL_ENTRY _ZTI7S7658C2[];
extern  VTBL_ENTRY _ZTV7S7658C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7658C2[];
Class_Descriptor cd_S7658C2 = {  "S7658C2", // class name
  bases_S7658C2, 2,
  &(vtc_S7658C2[0]), // expected_vtbl_contents
  &(vtt_S7658C2[0]), // expected_vtt_contents
  ABISELECT(192,84), // object size
  NSPAIRA(_ZTI7S7658C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7658C2),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7658C2),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  S7658C1  : S7658C2 {
  char s7658c1f0:8;
  ::S21061C4 s7658c1f1;
  char s7658c1f2;
  virtual  ~S7658C1(); // _ZN7S7658C1D2Ev
  virtual void  v1(); // _ZN7S7658C12v1Ev
  virtual void  v2(); // _ZN7S7658C12v2Ev
  virtual void  v3(); // _ZN7S7658C12v3Ev
  virtual void  v4(); // _ZN7S7658C12v4Ev
  virtual void  v5(); // _ZN7S7658C12v5Ev
  virtual void  v6(); // _ZN7S7658C12v6Ev
  S7658C1(); // tgen
};
//SIG(1 S7658C1) C1{ BC2{ VBC3{ v7 v8 v9 v10 v11 v12 v13 FD Fp[5]} BC4{ m FC5{ v15 v16 v17 v18 v19 v20 v21 FD Fp[5]}} vd v14 FL} vd v1 v2 v3 v4 v5 v6 Fc:8 FC6{ v22 v23 v24 v25 v26 Fp[4]} Fc}


 S7658C1 ::~S7658C1(){ note_dtor("S7658C1", this);}
void  S7658C1 ::v1(){vfunc_called(this, "_ZN7S7658C12v1Ev");}
void  S7658C1 ::v2(){vfunc_called(this, "_ZN7S7658C12v2Ev");}
void  S7658C1 ::v3(){vfunc_called(this, "_ZN7S7658C12v3Ev");}
void  S7658C1 ::v4(){vfunc_called(this, "_ZN7S7658C12v4Ev");}
void  S7658C1 ::v5(){vfunc_called(this, "_ZN7S7658C12v5Ev");}
void  S7658C1 ::v6(){vfunc_called(this, "_ZN7S7658C12v6Ev");}
S7658C1 ::S7658C1(){ note_ctor("S7658C1", this);} // tgen

static void Test_S7658C1()
{
  extern Class_Descriptor cd_S7658C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,29)];
    init_test(&cd_S7658C1, buf);
    S7658C1 *dp, &lv = *(dp=new (buf) S7658C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,112), "sizeof(S7658C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7658C1)");
    check_base_class_offset(lv, (S7658C3*)(S7658C2*), ABISELECT(160,76), "S7658C1");
    check_base_class_offset(lv, (S19553C7*)(S7658C2*), ABISELECT(16,4), "S7658C1");
    check_base_class_offset(lv, (S7658C2*), 0, "S7658C1");
    set_bf_and_test(lv, s7658c1f0, ABISELECT(104,48), 0, 8, 1, "S7658C1");
    set_bf_and_test(lv, s7658c1f0, ABISELECT(104,48), 0, 8, hide_sll(1LL<<7), "S7658C1");
    check_field_offset(lv, s7658c1f1, ABISELECT(112,52), "S7658C1.s7658c1f1");
    check_field_offset(lv, s7658c1f2, ABISELECT(152,72), "S7658C1.s7658c1f2");
    test_class_info(&lv, &cd_S7658C1);
    dp->~S7658C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7658C1(Test_S7658C1, "S7658C1", ABISELECT(240,112));

#else // __cplusplus

extern void _ZN7S7658C1C1Ev();
extern void _ZN7S7658C1D2Ev();
Name_Map name_map_S7658C1[] = {
  NSPAIR(_ZN7S7658C1C1Ev),
  NSPAIR(_ZN7S7658C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7658C3;
extern VTBL_ENTRY _ZTI7S7658C3[];
extern  VTBL_ENTRY _ZTV7S7658C3[];
extern Class_Descriptor cd_S19553C7;
extern VTBL_ENTRY _ZTI8S19553C7[];
extern Class_Descriptor cd_S7658C2;
extern VTBL_ENTRY _ZTI7S7658C2[];
extern  VTBL_ENTRY _ZTV7S7658C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7658C2[];
static Base_Class bases_S7658C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7658C3,    ABISELECT(160,76), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19553C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7658C2,    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 _ZTI7S7658C1[];
extern void _ZN7S7658C1D1Ev();
extern void _ZN7S7658C1D0Ev();
extern void _ZN7S7658C23v14Ev();
extern void _ZN7S7658C12v1Ev();
extern void _ZN7S7658C12v2Ev();
extern void _ZN7S7658C12v3Ev();
extern void _ZN7S7658C12v4Ev();
extern void _ZN7S7658C12v5Ev();
extern void _ZN7S7658C12v6Ev();
extern void _ZN7S7658C32v7Ev();
extern void _ZN7S7658C32v8Ev();
extern void _ZN7S7658C32v9Ev();
extern void _ZN7S7658C33v10Ev();
extern void _ZN7S7658C33v11Ev();
extern void _ZN7S7658C33v12Ev();
extern void _ZN7S7658C33v13Ev();
static  VTBL_ENTRY vtc_S7658C1[] = {
  ABISELECT(160,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7658C1[0]),
  (VTBL_ENTRY)&_ZN7S7658C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7658C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7658C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7658C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7658C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7658C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7658C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7658C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7658C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-76),
  (VTBL_ENTRY)&(_ZTI7S7658C1[0]),
  (VTBL_ENTRY)&_ZN7S7658C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7658C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7658C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v13Ev,
};
extern VTBL_ENTRY _ZTV7S7658C1[];
extern void _ZN7S7658C2D1Ev();
extern void _ZN7S7658C2D0Ev();
extern void _ZN7S7658C23v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7658C2__7S7658C1[] = {
  ABISELECT(160,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7658C2[0]),
  (VTBL_ENTRY)&_ZN7S7658C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7658C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7658C23v14Ev,
};
extern void _ZN7S7658C32v7Ev();
extern void _ZN7S7658C32v8Ev();
extern void _ZN7S7658C32v9Ev();
extern void _ZN7S7658C33v10Ev();
extern void _ZN7S7658C33v11Ev();
extern void _ZN7S7658C33v12Ev();
extern void _ZN7S7658C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7658C3__7S7658C2__7S7658C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-76),
  (VTBL_ENTRY)&(_ZTI7S7658C2[0]),
  (VTBL_ENTRY)&_ZN7S7658C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7658C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7658C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7658C33v13Ev,
};
static  VTT_ENTRY vtt_S7658C1[] = {
  {&(_ZTV7S7658C1[3]),  3,28},
  {&(_tg__ZTV7S7658C2__7S7658C1[3]),  3,6},
  {&(_tg__ZTV7S7658C3__7S7658C2__7S7658C1[9]),  9,16},
  {&(_ZTV7S7658C1[21]),  21,28},
};
extern VTBL_ENTRY _ZTI7S7658C1[];
extern  VTBL_ENTRY _ZTV7S7658C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7658C1[];
Class_Descriptor cd_S7658C1 = {  "S7658C1", // class name
  bases_S7658C1, 3,
  &(vtc_S7658C1[0]), // expected_vtbl_contents
  &(vtt_S7658C1[0]), // expected_vtt_contents
  ABISELECT(240,112), // object size
  NSPAIRA(_ZTI7S7658C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7658C1),28, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7658C1),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2860C5  : S2367C19 , S5228C4_nt {
  void *s2860c5f0;
  ~S2860C5(); // tgen
  S2860C5(); // tgen
};
//SIG(-1 S2860C5) C1{ BC2{ m Fp} BC3{ vd m} Fp}


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

static void Test_S2860C5()
{
  extern Class_Descriptor cd_S2860C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S2860C5, buf);
    S2860C5 *dp, &lv = *(dp=new (buf) S2860C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S2860C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2860C5)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S2860C5");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S2860C5");
    check_field_offset(lv, s2860c5f0, ABISELECT(16,8), "S2860C5.s2860c5f0");
    test_class_info(&lv, &cd_S2860C5);
    dp->~S2860C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2860C5(Test_S2860C5, "S2860C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S2860C5C1Ev();
extern void _ZN7S2860C5D1Ev();
Name_Map name_map_S2860C5[] = {
  NSPAIR(_ZN7S2860C5C1Ev),
  NSPAIR(_ZN7S2860C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S2860C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2860C5[];
extern void _ZN7S2860C5D1Ev();
extern void _ZN7S2860C5D0Ev();
static  VTBL_ENTRY vtc_S2860C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2860C5[0]),
  (VTBL_ENTRY)&_ZN7S2860C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2860C5D0Ev,
};
extern VTBL_ENTRY _ZTI7S2860C5[];
extern  VTBL_ENTRY _ZTV7S2860C5[];
Class_Descriptor cd_S2860C5 = {  "S2860C5", // class name
  bases_S2860C5, 2,
  &(vtc_S2860C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S2860C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2860C5),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  S2860C7  : S5228C4_nt {
  void *s2860c7f0;
  ~S2860C7(); // tgen
  S2860C7(); // tgen
};
//SIG(-1 S2860C7) C1{ BC2{ vd m} Fp}


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

static void Test_S2860C7()
{
  extern Class_Descriptor cd_S2860C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2860C7, buf);
    S2860C7 *dp, &lv = *(dp=new (buf) S2860C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2860C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2860C7)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S2860C7");
    check_field_offset(lv, s2860c7f0, ABISELECT(8,4), "S2860C7.s2860c7f0");
    test_class_info(&lv, &cd_S2860C7);
    dp->~S2860C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2860C7(Test_S2860C7, "S2860C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2860C7C1Ev();
extern void _ZN7S2860C7D1Ev();
Name_Map name_map_S2860C7[] = {
  NSPAIR(_ZN7S2860C7C1Ev),
  NSPAIR(_ZN7S2860C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S2860C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2860C7[];
extern void _ZN7S2860C7D1Ev();
extern void _ZN7S2860C7D0Ev();
static  VTBL_ENTRY vtc_S2860C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2860C7[0]),
  (VTBL_ENTRY)&_ZN7S2860C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2860C7D0Ev,
};
extern VTBL_ENTRY _ZTI7S2860C7[];
extern  VTBL_ENTRY _ZTV7S2860C7[];
Class_Descriptor cd_S2860C7 = {  "S2860C7", // class name
  bases_S2860C7, 1,
  &(vtc_S2860C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2860C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2860C7),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  S2860C2  : S3164C31_nt , virtual S2367C19 , S2860C5 , S5228C4_nt , S2860C7 {
  ~S2860C2(); // tgen
  S2860C2(); // tgen
};
//SIG(-1 S2860C2) C1{ BC2{ m} VBC3{ m Fp} BC4{ BC3 BC5{ vd m} Fp} BC5 BC6{ BC5 Fp}}


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

static void Test_S2860C2()
{
  extern Class_Descriptor cd_S2860C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S2860C2, buf);
    S2860C2 *dp, &lv = *(dp=new (buf) S2860C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S2860C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2860C2)");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S2860C2");
    /*is_ambiguous_... S2860C2::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*), ABISELECT(48,24), "S2860C2");
    check_base_class_offset(lv, (S2367C19*)(S2860C5*), ABISELECT(8,4), "S2860C2");
    check_base_class_offset(lv, (S5228C4_nt*)(S2860C5*), 0, "S2860C2");
    check_base_class_offset(lv, (S2860C5*), 0, "S2860C2");
    /*is_ambiguous_... S2860C2::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(24,12), "S2860C2");
    check_base_class_offset(lv, (S5228C4_nt*)(S2860C7*), ABISELECT(32,16), "S2860C2");
    check_base_class_offset(lv, (S2860C7*), ABISELECT(32,16), "S2860C2");
    test_class_info(&lv, &cd_S2860C2);
    dp->~S2860C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2860C2(Test_S2860C2, "S2860C2", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S2860C2C1Ev();
extern void _ZN7S2860C2D1Ev();
Name_Map name_map_S2860C2[] = {
  NSPAIR(_ZN7S2860C2C1Ev),
  NSPAIR(_ZN7S2860C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2860C5;
extern VTBL_ENTRY _ZTI7S2860C5[];
extern  VTBL_ENTRY _ZTV7S2860C5[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2860C7;
extern VTBL_ENTRY _ZTI7S2860C7[];
extern  VTBL_ENTRY _ZTV7S2860C7[];
static Base_Class bases_S2860C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2367C19,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2860C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S5228C4_nt,    ABISELECT(24,12), //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_S5228C4_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_S2860C7,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2860C2[];
extern void _ZN7S2860C2D1Ev();
extern void _ZN7S2860C2D0Ev();
extern void ABISELECT(_ZThn24_N7S2860C2D1Ev,_ZThn12_N7S2860C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S2860C2D0Ev,_ZThn12_N7S2860C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S2860C2D1Ev,_ZThn16_N7S2860C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S2860C2D0Ev,_ZThn16_N7S2860C2D0Ev)();
static  VTBL_ENTRY vtc_S2860C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2860C2[0]),
  (VTBL_ENTRY)&_ZN7S2860C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2860C2D0Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S2860C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S2860C2D1Ev,_ZThn12_N7S2860C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S2860C2D0Ev,_ZThn12_N7S2860C2D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S2860C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S2860C2D1Ev,_ZThn16_N7S2860C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S2860C2D0Ev,_ZThn16_N7S2860C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S2860C2[];
static  VTT_ENTRY vtt_S2860C2[] = {
  {&(_ZTV7S2860C2[3]),  3,13},
};
extern VTBL_ENTRY _ZTI7S2860C2[];
extern  VTBL_ENTRY _ZTV7S2860C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2860C2[];
Class_Descriptor cd_S2860C2 = {  "S2860C2", // class name
  bases_S2860C2, 8,
  &(vtc_S2860C2[0]), // expected_vtbl_contents
  &(vtt_S2860C2[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S2860C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2860C2),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2860C2),1, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2860C9_nt  : S5228C4_nt {
  virtual  ~S2860C9_nt(); // _ZN10S2860C9_ntD1Ev
  S2860C9_nt(); // tgen
};
//SIG(-1 S2860C9_nt) C1{ BC2{ vd m} vd}


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

//skip512 S2860C9_nt

#else // __cplusplus

extern void _ZN10S2860C9_ntC1Ev();
extern void _ZN10S2860C9_ntD1Ev();
Name_Map name_map_S2860C9_nt[] = {
  NSPAIR(_ZN10S2860C9_ntC1Ev),
  NSPAIR(_ZN10S2860C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S2860C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2860C9_nt[];
extern void _ZN10S2860C9_ntD1Ev();
extern void _ZN10S2860C9_ntD0Ev();
static  VTBL_ENTRY vtc_S2860C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2860C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2860C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2860C9_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S2860C9_nt[];
VTBL_ENTRY *P__ZTI10S2860C9_nt = _ZTI10S2860C9_nt; 
extern  VTBL_ENTRY _ZTV10S2860C9_nt[];
Class_Descriptor cd_S2860C9_nt = {  "S2860C9_nt", // class name
  bases_S2860C9_nt, 1,
  &(vtc_S2860C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S2860C9_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2860C9_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  S2860C8  : virtual S2860C9_nt {
  int s2860c8f0;
  virtual  ~S2860C8(); // _ZN7S2860C8D2Ev
  S2860C8(); // tgen
};
//SIG(-1 S2860C8) C1{ VBC2{ BC3{ vd m} vd} vd Fi}


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

static void Test_S2860C8()
{
  extern Class_Descriptor cd_S2860C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2860C8, buf);
    S2860C8 *dp, &lv = *(dp=new (buf) S2860C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2860C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2860C8)");
    check_base_class_offset(lv, (S5228C4_nt*)(S2860C9_nt*), 0, "S2860C8");
    check_base_class_offset(lv, (S2860C9_nt*), 0, "S2860C8");
    check_field_offset(lv, s2860c8f0, ABISELECT(8,4), "S2860C8.s2860c8f0");
    test_class_info(&lv, &cd_S2860C8);
    dp->~S2860C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2860C8(Test_S2860C8, "S2860C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2860C8C1Ev();
extern void _ZN7S2860C8D2Ev();
Name_Map name_map_S2860C8[] = {
  NSPAIR(_ZN7S2860C8C1Ev),
  NSPAIR(_ZN7S2860C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2860C9_nt;
extern VTBL_ENTRY _ZTI10S2860C9_nt[];
extern  VTBL_ENTRY _ZTV10S2860C9_nt[];
static Base_Class bases_S2860C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2860C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2860C8[];
extern void _ZN7S2860C8D1Ev();
extern void _ZN7S2860C8D0Ev();
static  VTBL_ENTRY vtc_S2860C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2860C8[0]),
  (VTBL_ENTRY)&_ZN7S2860C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2860C8D0Ev,
};
extern VTBL_ENTRY _ZTV7S2860C8[];
static  VTT_ENTRY vtt_S2860C8[] = {
  {&(_ZTV7S2860C8[4]),  4,6},
  {&(_ZTV7S2860C8[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S2860C8[];
extern  VTBL_ENTRY _ZTV7S2860C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2860C8[];
Class_Descriptor cd_S2860C8 = {  "S2860C8", // class name
  bases_S2860C8, 2,
  &(vtc_S2860C8[0]), // expected_vtbl_contents
  &(vtt_S2860C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2860C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2860C8),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2860C8),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  S2860C11  : S5228C4_nt , virtual S2367C19 {
  virtual  ~S2860C11(); // _ZN8S2860C11D2Ev
  S2860C11(); // tgen
};
//SIG(-1 S2860C11) C1{ BC2{ vd m} VBC3{ m Fp} vd}


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

static void Test_S2860C11()
{
  extern Class_Descriptor cd_S2860C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2860C11, buf);
    S2860C11 *dp, &lv = *(dp=new (buf) S2860C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2860C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2860C11)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S2860C11");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S2860C11");
    test_class_info(&lv, &cd_S2860C11);
    dp->~S2860C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2860C11(Test_S2860C11, "S2860C11", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S2860C11C1Ev();
extern void _ZN8S2860C11D2Ev();
Name_Map name_map_S2860C11[] = {
  NSPAIR(_ZN8S2860C11C1Ev),
  NSPAIR(_ZN8S2860C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
static Base_Class bases_S2860C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S2860C11[];
extern void _ZN8S2860C11D1Ev();
extern void _ZN8S2860C11D0Ev();
static  VTBL_ENTRY vtc_S2860C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2860C11[0]),
  (VTBL_ENTRY)&_ZN8S2860C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2860C11D0Ev,
};
extern VTBL_ENTRY _ZTV8S2860C11[];
static  VTT_ENTRY vtt_S2860C11[] = {
  {&(_ZTV8S2860C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2860C11[];
extern  VTBL_ENTRY _ZTV8S2860C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2860C11[];
Class_Descriptor cd_S2860C11 = {  "S2860C11", // class name
  bases_S2860C11, 2,
  &(vtc_S2860C11[0]), // expected_vtbl_contents
  &(vtt_S2860C11[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S2860C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2860C11),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2860C11),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2860C10  : S2860C11 , virtual S3164C8_nt {
  virtual  ~S2860C10(); // _ZN8S2860C10D2Ev
  S2860C10(); // tgen
};
//SIG(-1 S2860C10) C1{ BC2{ BC3{ vd m} VBC4{ m Fp} vd} VBC5{ m Fi} vd}


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

static void Test_S2860C10()
{
  extern Class_Descriptor cd_S2860C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S2860C10, buf);
    S2860C10 *dp, &lv = *(dp=new (buf) S2860C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S2860C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2860C10)");
    check_base_class_offset(lv, (S5228C4_nt*)(S2860C11*), 0, "S2860C10");
    check_base_class_offset(lv, (S2367C19*)(S2860C11*), ABISELECT(8,4), "S2860C10");
    check_base_class_offset(lv, (S2860C11*), 0, "S2860C10");
    check_base_class_offset(lv, (S3164C8_nt*), ABISELECT(16,8), "S2860C10");
    test_class_info(&lv, &cd_S2860C10);
    dp->~S2860C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2860C10(Test_S2860C10, "S2860C10", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S2860C10C1Ev();
extern void _ZN8S2860C10D2Ev();
Name_Map name_map_S2860C10[] = {
  NSPAIR(_ZN8S2860C10C1Ev),
  NSPAIR(_ZN8S2860C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S2860C11;
extern VTBL_ENTRY _ZTI8S2860C11[];
extern  VTBL_ENTRY _ZTV8S2860C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2860C11[];
extern Class_Descriptor cd_S3164C8_nt;
extern VTBL_ENTRY _ZTI10S3164C8_nt[];
static Base_Class bases_S2860C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2860C11,    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_S3164C8_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 _ZTI8S2860C10[];
extern void _ZN8S2860C10D1Ev();
extern void _ZN8S2860C10D0Ev();
static  VTBL_ENTRY vtc_S2860C10[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2860C10[0]),
  (VTBL_ENTRY)&_ZN8S2860C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2860C10D0Ev,
};
extern VTBL_ENTRY _ZTV8S2860C10[];
extern void _ZN8S2860C11D1Ev();
extern void _ZN8S2860C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2860C11__8S2860C10[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2860C11[0]),
  (VTBL_ENTRY)&_ZN8S2860C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2860C11D0Ev,
};
static  VTT_ENTRY vtt_S2860C10[] = {
  {&(_ZTV8S2860C10[4]),  4,6},
  {&(_tg__ZTV8S2860C11__8S2860C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2860C10[];
extern  VTBL_ENTRY _ZTV8S2860C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2860C10[];
Class_Descriptor cd_S2860C10 = {  "S2860C10", // class name
  bases_S2860C10, 4,
  &(vtc_S2860C10[0]), // expected_vtbl_contents
  &(vtt_S2860C10[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S2860C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2860C10),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2860C10),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  S2860C1  : S2860C2 , virtual S2860C8 , virtual S2860C10 {
  virtual  ~S2860C1(); // _ZN7S2860C1D2Ev
  S2860C1(); // tgen
};
//SIG(1 S2860C1) C1{ BC2{ BC3{ m} VBC4{ m Fp} BC5{ BC4 BC6{ vd m} Fp} BC6 BC7{ BC6 Fp}} VBC8{ VBC9{ BC6 vd} vd Fi} VBC10{ BC11{ BC6 VBC4 vd} VBC12{ m Fi} vd} vd}


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

static void Test_S2860C1()
{
  extern Class_Descriptor cd_S2860C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S2860C1, buf);
    S2860C1 *dp, &lv = *(dp=new (buf) S2860C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S2860C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2860C1)");
    check_base_class_offset(lv, (S3164C31_nt*)(S2860C2*), 0, "S2860C1");
    /*is_ambiguous_... S2860C2::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*)(S2860C2*), ABISELECT(48,24), "S2860C1");
    check_base_class_offset(lv, (S2367C19*)(S2860C11*)(S2860C10*), ABISELECT(48,24), "S2860C1");
    check_base_class_offset(lv, (S2367C19*)(S2860C5*)(S2860C2*), ABISELECT(8,4), "S2860C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S2860C5*)(S2860C2*), 0, "S2860C1");
    check_base_class_offset(lv, (S2860C5*)(S2860C2*), 0, "S2860C1");
    /*is_ambiguous_... S2860C2::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S2860C2*), ABISELECT(24,12), "S2860C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S2860C7*)(S2860C2*), ABISELECT(32,16), "S2860C1");
    check_base_class_offset(lv, (S2860C7*)(S2860C2*), ABISELECT(32,16), "S2860C1");
    check_base_class_offset(lv, (S2860C2*), 0, "S2860C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S2860C9_nt*), ABISELECT(56,28), "S2860C1");
    check_base_class_offset(lv, (S2860C9_nt*)(S2860C8*), ABISELECT(56,28), "S2860C1");
    check_base_class_offset(lv, (S2860C8*), ABISELECT(56,28), "S2860C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S2860C11*)(S2860C10*), ABISELECT(72,36), "S2860C1");
    check_base_class_offset(lv, (S2860C11*)(S2860C10*), ABISELECT(72,36), "S2860C1");
    check_base_class_offset(lv, (S3164C8_nt*)(S2860C10*), ABISELECT(80,40), "S2860C1");
    check_base_class_offset(lv, (S2860C10*), ABISELECT(72,36), "S2860C1");
    test_class_info(&lv, &cd_S2860C1);
    dp->~S2860C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2860C1(Test_S2860C1, "S2860C1", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN7S2860C1C1Ev();
extern void _ZN7S2860C1D2Ev();
Name_Map name_map_S2860C1[] = {
  NSPAIR(_ZN7S2860C1C1Ev),
  NSPAIR(_ZN7S2860C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2860C5;
extern VTBL_ENTRY _ZTI7S2860C5[];
extern  VTBL_ENTRY _ZTV7S2860C5[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2860C7;
extern VTBL_ENTRY _ZTI7S2860C7[];
extern  VTBL_ENTRY _ZTV7S2860C7[];
extern Class_Descriptor cd_S2860C2;
extern VTBL_ENTRY _ZTI7S2860C2[];
extern  VTBL_ENTRY _ZTV7S2860C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2860C2[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2860C9_nt;
extern VTBL_ENTRY _ZTI10S2860C9_nt[];
extern  VTBL_ENTRY _ZTV10S2860C9_nt[];
extern Class_Descriptor cd_S2860C8;
extern VTBL_ENTRY _ZTI7S2860C8[];
extern  VTBL_ENTRY _ZTV7S2860C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2860C8[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2860C11;
extern VTBL_ENTRY _ZTI8S2860C11[];
extern  VTBL_ENTRY _ZTV8S2860C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2860C11[];
extern Class_Descriptor cd_S3164C8_nt;
extern VTBL_ENTRY _ZTI10S3164C8_nt[];
extern Class_Descriptor cd_S2860C10;
extern VTBL_ENTRY _ZTI8S2860C10[];
extern  VTBL_ENTRY _ZTV8S2860C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2860C10[];
static Base_Class bases_S2860C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2367C19,    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_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2860C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(24,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    7, //immediately_derived
  0, 0},
  {&cd_S2860C7,    ABISELECT(32,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2860C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_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, 0},
  {&cd_S2860C9_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S2860C8,    ABISELECT(56,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5228C4_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
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2860C11,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3164C8_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2860C10,    ABISELECT(72,36), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2860C1[];
extern void _ZN7S2860C1D1Ev();
extern void _ZN7S2860C1D0Ev();
extern void ABISELECT(_ZThn24_N7S2860C1D1Ev,_ZThn12_N7S2860C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S2860C1D0Ev,_ZThn12_N7S2860C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S2860C1D1Ev,_ZThn16_N7S2860C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S2860C1D0Ev,_ZThn16_N7S2860C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2860C1D1Ev,_ZTv0_n12_N7S2860C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S2860C1D1Ev,_ZThn28_N7S2860C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2860C1D0Ev,_ZTv0_n12_N7S2860C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S2860C1D0Ev,_ZThn28_N7S2860C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2860C1D1Ev,_ZTv0_n20_N7S2860C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S2860C1D1Ev,_ZThn36_N7S2860C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2860C1D0Ev,_ZTv0_n20_N7S2860C1D0Ev)();
extern void ABISELECT(_ZThn72_N7S2860C1D0Ev,_ZThn36_N7S2860C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2860C1[] = {
  ABISELECT(80,40),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2860C1[0]),
  (VTBL_ENTRY)&_ZN7S2860C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2860C1D0Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S2860C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S2860C1D1Ev,_ZThn12_N7S2860C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S2860C1D0Ev,_ZThn12_N7S2860C1D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S2860C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S2860C1D1Ev,_ZThn16_N7S2860C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S2860C1D0Ev,_ZThn16_N7S2860C1D0Ev),
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S2860C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2860C1D1Ev,_ZTv0_n12_N7S2860C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2860C1D0Ev,_ZTv0_n12_N7S2860C1D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S2860C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2860C1D1Ev,_ZTv0_n20_N7S2860C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2860C1D0Ev,_ZTv0_n20_N7S2860C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2860C1[];
extern void _ZN7S2860C2D1Ev();
extern void _ZN7S2860C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2860C2__7S2860C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2860C2[0]),
  (VTBL_ENTRY)&_ZN7S2860C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2860C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2860C8D1Ev,_ZTv0_n12_N7S2860C8D1Ev)();
extern void _ZN7S2860C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2860C8D0Ev,_ZTv0_n12_N7S2860C8D0Ev)();
extern void _ZN7S2860C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2860C8__7S2860C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2860C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2860C8D1Ev,_ZTv0_n12_N7S2860C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2860C8D0Ev,_ZTv0_n12_N7S2860C8D0Ev),
};
extern void _ZN8S2860C10D1Ev();
extern void _ZN8S2860C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2860C10__7S2860C1[] = {
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S2860C10[0]),
  (VTBL_ENTRY)&_ZN8S2860C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2860C10D0Ev,
};
extern void _ZN8S2860C11D1Ev();
extern void _ZN8S2860C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2860C118S2860C10__7S2860C1[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S2860C11[0]),
  (VTBL_ENTRY)&_ZN8S2860C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2860C11D0Ev,
};
static  VTT_ENTRY vtt_S2860C1[] = {
  {&(_ZTV7S2860C1[7]),  7,30},
  {&(_tg__ZTV7S2860C2__7S2860C1[3]),  3,5},
  {&(_ZTV7S2860C1[21]),  21,30},
  {&(_ZTV7S2860C1[21]),  21,30},
  {&(_ZTV7S2860C1[28]),  28,30},
  {&(_tg__ZTV7S2860C8__7S2860C1[4]),  4,6},
  {&(_tg__ZTV7S2860C8__7S2860C1[4]),  4,6},
  {&(_tg__ZTV8S2860C10__7S2860C1[4]),  4,6},
  {&(_tg__ZTV8S2860C118S2860C10__7S2860C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2860C1[];
extern  VTBL_ENTRY _ZTV7S2860C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2860C1[];
static VTBL_ENTRY alt_thunk_names159[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2860C8D0Ev,_ZTv0_n12_N7S2860C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S2860C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2860C8D1Ev,_ZTv0_n12_N7S2860C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S2860C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2860C1D0Ev,_ZTv0_n20_N7S2860C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2860C1D0Ev,_ZThn36_N7S2860C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2860C1D1Ev,_ZTv0_n20_N7S2860C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2860C1D1Ev,_ZThn36_N7S2860C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2860C1D0Ev,_ZTv0_n12_N7S2860C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2860C1D0Ev,_ZThn28_N7S2860C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2860C1D1Ev,_ZTv0_n12_N7S2860C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2860C1D1Ev,_ZThn28_N7S2860C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2860C1 = {  "S2860C1", // class name
  bases_S2860C1, 16,
  &(vtc_S2860C1[0]), // expected_vtbl_contents
  &(vtt_S2860C1[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI7S2860C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2860C1),30, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2860C1),9, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names159,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9304C2  {
  ::S2213C20_nt s9304c2f0;
  int s9304c2f1[2];
  char s9304c2f2;
  virtual  ~S9304C2(); // _ZN7S9304C2D1Ev
  virtual void  v3(); // _ZN7S9304C22v3Ev
  virtual void  v4(); // _ZN7S9304C22v4Ev
  virtual void  v5(); // _ZN7S9304C22v5Ev
  S9304C2(); // tgen
};
//SIG(-1 S9304C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9304C2 ::~S9304C2(){ note_dtor("S9304C2", this);}
void  S9304C2 ::v3(){vfunc_called(this, "_ZN7S9304C22v3Ev");}
void  S9304C2 ::v4(){vfunc_called(this, "_ZN7S9304C22v4Ev");}
void  S9304C2 ::v5(){vfunc_called(this, "_ZN7S9304C22v5Ev");}
S9304C2 ::S9304C2(){ note_ctor("S9304C2", this);} // tgen

static void Test_S9304C2()
{
  extern Class_Descriptor cd_S9304C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9304C2, buf);
    S9304C2 *dp, &lv = *(dp=new (buf) S9304C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9304C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9304C2)");
    check_field_offset(lv, s9304c2f0, ABISELECT(8,4), "S9304C2.s9304c2f0");
    check_field_offset(lv, s9304c2f1, ABISELECT(24,16), "S9304C2.s9304c2f1");
    check_field_offset(lv, s9304c2f2, ABISELECT(32,24), "S9304C2.s9304c2f2");
    test_class_info(&lv, &cd_S9304C2);
    dp->~S9304C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9304C2(Test_S9304C2, "S9304C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9304C2C1Ev();
extern void _ZN7S9304C2D1Ev();
Name_Map name_map_S9304C2[] = {
  NSPAIR(_ZN7S9304C2C1Ev),
  NSPAIR(_ZN7S9304C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9304C2[];
extern void _ZN7S9304C2D1Ev();
extern void _ZN7S9304C2D0Ev();
extern void _ZN7S9304C22v3Ev();
extern void _ZN7S9304C22v4Ev();
extern void _ZN7S9304C22v5Ev();
static  VTBL_ENTRY vtc_S9304C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9304C2[0]),
  (VTBL_ENTRY)&_ZN7S9304C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9304C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9304C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9304C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9304C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9304C2[];
extern  VTBL_ENTRY _ZTV7S9304C2[];
Class_Descriptor cd_S9304C2 = {  "S9304C2", // class name
  0,0,//no base classes
  &(vtc_S9304C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9304C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9304C2),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  S9304C7_nt  {
  long s9304c7f0;
};
//SIG(-1 S9304C7_nt) C1{ Fl}



//skip512 S9304C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9304C6  {
  char s9304c6f0[128];
  ::S9304C7_nt s9304c6f1;
  ::S9304C7_nt s9304c6f2;
  ::S9304C7_nt s9304c6f3;
  int s9304c6f4[2];
  char s9304c6f5[67];
};
//SIG(-1 S9304C6) C1{ Fc[128] FC2{ Fl} FC2 FC2 Fi[2] Fc[67]}



static void Test_S9304C6()
{
  {
    init_simple_test("S9304C6");
    S9304C6 lv;
    check2(sizeof(lv), ABISELECT(232,216), "sizeof(S9304C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9304C6)");
    check_field_offset(lv, s9304c6f0, 0, "S9304C6.s9304c6f0");
    check_field_offset(lv, s9304c6f1, 128, "S9304C6.s9304c6f1");
    check_field_offset(lv, s9304c6f2, ABISELECT(136,132), "S9304C6.s9304c6f2");
    check_field_offset(lv, s9304c6f3, ABISELECT(144,136), "S9304C6.s9304c6f3");
    check_field_offset(lv, s9304c6f4, ABISELECT(152,140), "S9304C6.s9304c6f4");
    check_field_offset(lv, s9304c6f5, ABISELECT(160,148), "S9304C6.s9304c6f5");
  }
}
static Arrange_To_Call_Me vS9304C6(Test_S9304C6, "S9304C6", ABISELECT(232,216));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9304C1  : S9304C2 {
  ::S2137C23_nt s9304c1f0;
  void *s9304c1f1;
  char s9304c1f2;
  ::S9304C6 s9304c1f3;
  char s9304c1f4[2];
  virtual  ~S9304C1(); // _ZN7S9304C1D1Ev
  virtual void  v1(); // _ZN7S9304C12v1Ev
  virtual void  v2(); // _ZN7S9304C12v2Ev
  S9304C1(); // tgen
};
//SIG(1 S9304C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FC5{ m Fp[2]} Fp Fc FC6{ Fc[128] FC7{ Fl} FC7 FC7 Fi[2] Fc[67]} Fc[2]}


 S9304C1 ::~S9304C1(){ note_dtor("S9304C1", this);}
void  S9304C1 ::v1(){vfunc_called(this, "_ZN7S9304C12v1Ev");}
void  S9304C1 ::v2(){vfunc_called(this, "_ZN7S9304C12v2Ev");}
S9304C1 ::S9304C1(){ note_ctor("S9304C1", this);} // tgen

static void Test_S9304C1()
{
  extern Class_Descriptor cd_S9304C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,67)];
    init_test(&cd_S9304C1, buf);
    S9304C1 *dp, &lv = *(dp=new (buf) S9304C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,264), "sizeof(S9304C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9304C1)");
    check_base_class_offset(lv, (S9304C2*), 0, "S9304C1");
    check_field_offset(lv, s9304c1f0, ABISELECT(40,28), "S9304C1.s9304c1f0");
    check_field_offset(lv, s9304c1f1, ABISELECT(56,36), "S9304C1.s9304c1f1");
    check_field_offset(lv, s9304c1f2, ABISELECT(64,40), "S9304C1.s9304c1f2");
    check_field_offset(lv, s9304c1f3, ABISELECT(72,44), "S9304C1.s9304c1f3");
    check_field_offset(lv, s9304c1f4, ABISELECT(304,260), "S9304C1.s9304c1f4");
    test_class_info(&lv, &cd_S9304C1);
    dp->~S9304C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9304C1(Test_S9304C1, "S9304C1", ABISELECT(312,264));

#else // __cplusplus

extern void _ZN7S9304C1C1Ev();
extern void _ZN7S9304C1D1Ev();
Name_Map name_map_S9304C1[] = {
  NSPAIR(_ZN7S9304C1C1Ev),
  NSPAIR(_ZN7S9304C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9304C2;
extern VTBL_ENTRY _ZTI7S9304C2[];
extern  VTBL_ENTRY _ZTV7S9304C2[];
static Base_Class bases_S9304C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9304C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9304C1[];
extern void _ZN7S9304C1D1Ev();
extern void _ZN7S9304C1D0Ev();
extern void _ZN7S9304C22v3Ev();
extern void _ZN7S9304C22v4Ev();
extern void _ZN7S9304C22v5Ev();
extern void _ZN7S9304C12v1Ev();
extern void _ZN7S9304C12v2Ev();
static  VTBL_ENTRY vtc_S9304C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9304C1[0]),
  (VTBL_ENTRY)&_ZN7S9304C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9304C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9304C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9304C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9304C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9304C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9304C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9304C1[];
extern  VTBL_ENTRY _ZTV7S9304C1[];
Class_Descriptor cd_S9304C1 = {  "S9304C1", // class name
  bases_S9304C1, 1,
  &(vtc_S9304C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,264), // object size
  NSPAIRA(_ZTI7S9304C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9304C1),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  S18033C3_nt  {
  void *s18033c3f0[2];
  void  mf18033c3(); // _ZN11S18033C3_nt9mf18033c3Ev
};
//SIG(-1 S18033C3_nt) C1{ m Fp[2]}


void  S18033C3_nt ::mf18033c3(){}

//skip512 S18033C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18033C5  {
  void *s18033c5f0[2];
  void  mf18033c5(); // _ZN8S18033C59mf18033c5Ev
};
//SIG(-1 S18033C5) C1{ m Fp[2]}


void  S18033C5 ::mf18033c5(){}

static void Test_S18033C5()
{
  {
    init_simple_test("S18033C5");
    S18033C5 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S18033C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18033C5)");
    check_field_offset(lv, s18033c5f0, 0, "S18033C5.s18033c5f0");
  }
}
static Arrange_To_Call_Me vS18033C5(Test_S18033C5, "S18033C5", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18033C1  {
  void *s18033c1f0[2];
  ::S2137C23_nt s18033c1f1;
  ::S18033C3_nt s18033c1f2;
  ::S18033C3_nt s18033c1f3;
  ::S18033C5 s18033c1f4;
  void *s18033c1f5;
  char s18033c1f6[2];
  int s18033c1f7[2];
  ::S9304C6 s18033c1f8;
  ::S18033C3_nt s18033c1f9;
  void  mf18033c1(); // _ZN8S18033C19mf18033c1Ev
};
//SIG(1 S18033C1) C1{ m Fp[2] FC2{ m Fp[2]} FC3{ m Fp[2]} FC3 FC4{ m Fp[2]} Fp Fc[2] Fi[2] FC5{ Fc[128] FC6{ Fl} FC6 FC6 Fi[2] Fc[67]} FC3}


void  S18033C1 ::mf18033c1(){}

static void Test_S18033C1()
{
  {
    init_simple_test("S18033C1");
    S18033C1 lv;
    check2(sizeof(lv), ABISELECT(352,280), "sizeof(S18033C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18033C1)");
    check_field_offset(lv, s18033c1f0, 0, "S18033C1.s18033c1f0");
    check_field_offset(lv, s18033c1f1, ABISELECT(16,8), "S18033C1.s18033c1f1");
    check_field_offset(lv, s18033c1f2, ABISELECT(32,16), "S18033C1.s18033c1f2");
    check_field_offset(lv, s18033c1f3, ABISELECT(48,24), "S18033C1.s18033c1f3");
    check_field_offset(lv, s18033c1f4, ABISELECT(64,32), "S18033C1.s18033c1f4");
    check_field_offset(lv, s18033c1f5, ABISELECT(80,40), "S18033C1.s18033c1f5");
    check_field_offset(lv, s18033c1f6, ABISELECT(88,44), "S18033C1.s18033c1f6");
    check_field_offset(lv, s18033c1f7, ABISELECT(92,48), "S18033C1.s18033c1f7");
    check_field_offset(lv, s18033c1f8, ABISELECT(104,56), "S18033C1.s18033c1f8");
    check_field_offset(lv, s18033c1f9, ABISELECT(336,272), "S18033C1.s18033c1f9");
  }
}
static Arrange_To_Call_Me vS18033C1(Test_S18033C1, "S18033C1", ABISELECT(352,280));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4036C5  {
  void *s4036c5f0;
  virtual  ~S4036C5(); // _ZN7S4036C5D1Ev
  virtual void  v7(); // _ZN7S4036C52v7Ev
  virtual void  v8(); // _ZN7S4036C52v8Ev
  virtual void  v9(); // _ZN7S4036C52v9Ev
  virtual void  v10(); // _ZN7S4036C53v10Ev
  virtual void  v11(); // _ZN7S4036C53v11Ev
  virtual void  v12(); // _ZN7S4036C53v12Ev
  virtual void  v13(); // _ZN7S4036C53v13Ev
  virtual void  v14(); // _ZN7S4036C53v14Ev
  virtual void  v15(); // _ZN7S4036C53v15Ev
  S4036C5(); // tgen
};
//SIG(-1 S4036C5) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp}


 S4036C5 ::~S4036C5(){ note_dtor("S4036C5", this);}
void  S4036C5 ::v7(){vfunc_called(this, "_ZN7S4036C52v7Ev");}
void  S4036C5 ::v8(){vfunc_called(this, "_ZN7S4036C52v8Ev");}
void  S4036C5 ::v9(){vfunc_called(this, "_ZN7S4036C52v9Ev");}
void  S4036C5 ::v10(){vfunc_called(this, "_ZN7S4036C53v10Ev");}
void  S4036C5 ::v11(){vfunc_called(this, "_ZN7S4036C53v11Ev");}
void  S4036C5 ::v12(){vfunc_called(this, "_ZN7S4036C53v12Ev");}
void  S4036C5 ::v13(){vfunc_called(this, "_ZN7S4036C53v13Ev");}
void  S4036C5 ::v14(){vfunc_called(this, "_ZN7S4036C53v14Ev");}
void  S4036C5 ::v15(){vfunc_called(this, "_ZN7S4036C53v15Ev");}
S4036C5 ::S4036C5(){ note_ctor("S4036C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S4036C5C1Ev();
extern void _ZN7S4036C5D1Ev();
Name_Map name_map_S4036C5[] = {
  NSPAIR(_ZN7S4036C5C1Ev),
  NSPAIR(_ZN7S4036C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4036C5[];
extern void _ZN7S4036C5D1Ev();
extern void _ZN7S4036C5D0Ev();
extern void _ZN7S4036C52v7Ev();
extern void _ZN7S4036C52v8Ev();
extern void _ZN7S4036C52v9Ev();
extern void _ZN7S4036C53v10Ev();
extern void _ZN7S4036C53v11Ev();
extern void _ZN7S4036C53v12Ev();
extern void _ZN7S4036C53v13Ev();
extern void _ZN7S4036C53v14Ev();
extern void _ZN7S4036C53v15Ev();
static  VTBL_ENTRY vtc_S4036C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4036C5[0]),
  (VTBL_ENTRY)&_ZN7S4036C5D1Ev,
  (VTBL_ENTRY)&_ZN7S4036C5D0Ev,
  (VTBL_ENTRY)&_ZN7S4036C52v7Ev,
  (VTBL_ENTRY)&_ZN7S4036C52v8Ev,
  (VTBL_ENTRY)&_ZN7S4036C52v9Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v10Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v11Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v12Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v13Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v14Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v15Ev,
};
extern VTBL_ENTRY _ZTI7S4036C5[];
extern  VTBL_ENTRY _ZTV7S4036C5[];
Class_Descriptor cd_S4036C5 = {  "S4036C5", // class name
  0,0,//no base classes
  &(vtc_S4036C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S4036C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4036C5),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  S4036C4  : S4036C5 {
  int s4036c4f0[3];
  void *s4036c4f1;
  virtual  ~S4036C4(); // _ZN7S4036C4D1Ev
  virtual void  v1(); // _ZN7S4036C42v1Ev
  virtual void  v2(); // _ZN7S4036C42v2Ev
  virtual void  v3(); // _ZN7S4036C42v3Ev
  virtual void  v4(); // _ZN7S4036C42v4Ev
  virtual void  v5(); // _ZN7S4036C42v5Ev
  virtual void  v6(); // _ZN7S4036C42v6Ev
  S4036C4(); // tgen
};
//SIG(-1 S4036C4) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp} vd v1 v2 v3 v4 v5 v6 Fi[3] Fp}


 S4036C4 ::~S4036C4(){ note_dtor("S4036C4", this);}
void  S4036C4 ::v1(){vfunc_called(this, "_ZN7S4036C42v1Ev");}
void  S4036C4 ::v2(){vfunc_called(this, "_ZN7S4036C42v2Ev");}
void  S4036C4 ::v3(){vfunc_called(this, "_ZN7S4036C42v3Ev");}
void  S4036C4 ::v4(){vfunc_called(this, "_ZN7S4036C42v4Ev");}
void  S4036C4 ::v5(){vfunc_called(this, "_ZN7S4036C42v5Ev");}
void  S4036C4 ::v6(){vfunc_called(this, "_ZN7S4036C42v6Ev");}
S4036C4 ::S4036C4(){ note_ctor("S4036C4", this);} // tgen

static void Test_S4036C4()
{
  extern Class_Descriptor cd_S4036C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S4036C4, buf);
    S4036C4 *dp, &lv = *(dp=new (buf) S4036C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S4036C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4036C4)");
    check_base_class_offset(lv, (S4036C5*), 0, "S4036C4");
    check_field_offset(lv, s4036c4f0, ABISELECT(16,8), "S4036C4.s4036c4f0");
    check_field_offset(lv, s4036c4f1, ABISELECT(32,20), "S4036C4.s4036c4f1");
    test_class_info(&lv, &cd_S4036C4);
    dp->~S4036C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4036C4(Test_S4036C4, "S4036C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S4036C4C1Ev();
extern void _ZN7S4036C4D1Ev();
Name_Map name_map_S4036C4[] = {
  NSPAIR(_ZN7S4036C4C1Ev),
  NSPAIR(_ZN7S4036C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4036C5;
extern VTBL_ENTRY _ZTI7S4036C5[];
extern  VTBL_ENTRY _ZTV7S4036C5[];
static Base_Class bases_S4036C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4036C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4036C4[];
extern void _ZN7S4036C4D1Ev();
extern void _ZN7S4036C4D0Ev();
extern void _ZN7S4036C52v7Ev();
extern void _ZN7S4036C52v8Ev();
extern void _ZN7S4036C52v9Ev();
extern void _ZN7S4036C53v10Ev();
extern void _ZN7S4036C53v11Ev();
extern void _ZN7S4036C53v12Ev();
extern void _ZN7S4036C53v13Ev();
extern void _ZN7S4036C53v14Ev();
extern void _ZN7S4036C53v15Ev();
extern void _ZN7S4036C42v1Ev();
extern void _ZN7S4036C42v2Ev();
extern void _ZN7S4036C42v3Ev();
extern void _ZN7S4036C42v4Ev();
extern void _ZN7S4036C42v5Ev();
extern void _ZN7S4036C42v6Ev();
static  VTBL_ENTRY vtc_S4036C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4036C4[0]),
  (VTBL_ENTRY)&_ZN7S4036C4D1Ev,
  (VTBL_ENTRY)&_ZN7S4036C4D0Ev,
  (VTBL_ENTRY)&_ZN7S4036C52v7Ev,
  (VTBL_ENTRY)&_ZN7S4036C52v8Ev,
  (VTBL_ENTRY)&_ZN7S4036C52v9Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v10Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v11Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v12Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v13Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v14Ev,
  (VTBL_ENTRY)&_ZN7S4036C53v15Ev,
  (VTBL_ENTRY)&_ZN7S4036C42v1Ev,
  (VTBL_ENTRY)&_ZN7S4036C42v2Ev,
  (VTBL_ENTRY)&_ZN7S4036C42v3Ev,
  (VTBL_ENTRY)&_ZN7S4036C42v4Ev,
  (VTBL_ENTRY)&_ZN7S4036C42v5Ev,
  (VTBL_ENTRY)&_ZN7S4036C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S4036C4[];
extern  VTBL_ENTRY _ZTV7S4036C4[];
Class_Descriptor cd_S4036C4 = {  "S4036C4", // class name
  bases_S4036C4, 1,
  &(vtc_S4036C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S4036C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4036C4),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  S4036C2  : S5228C4_nt {
  int s4036c2f0[2];
  ::S4036C4 s4036c2f1;
  int s4036c2f2;
  virtual  ~S4036C2(); // _ZN7S4036C2D1Ev
  S4036C2(); // tgen
};
//SIG(-1 S4036C2) C1{ BC2{ vd m} vd Fi[2] FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp} vd v1 v2 v3 v4 v5 v6 Fi[3] Fp} Fi}


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

static void Test_S4036C2()
{
  extern Class_Descriptor cd_S4036C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S4036C2, buf);
    S4036C2 *dp, &lv = *(dp=new (buf) S4036C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S4036C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4036C2)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S4036C2");
    check_field_offset(lv, s4036c2f0, ABISELECT(8,4), "S4036C2.s4036c2f0");
    check_field_offset(lv, s4036c2f1, ABISELECT(16,12), "S4036C2.s4036c2f1");
    check_field_offset(lv, s4036c2f2, ABISELECT(56,36), "S4036C2.s4036c2f2");
    test_class_info(&lv, &cd_S4036C2);
    dp->~S4036C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4036C2(Test_S4036C2, "S4036C2", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S4036C2C1Ev();
extern void _ZN7S4036C2D1Ev();
Name_Map name_map_S4036C2[] = {
  NSPAIR(_ZN7S4036C2C1Ev),
  NSPAIR(_ZN7S4036C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S4036C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4036C2[];
extern void _ZN7S4036C2D1Ev();
extern void _ZN7S4036C2D0Ev();
static  VTBL_ENTRY vtc_S4036C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4036C2[0]),
  (VTBL_ENTRY)&_ZN7S4036C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4036C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S4036C2[];
extern  VTBL_ENTRY _ZTV7S4036C2[];
Class_Descriptor cd_S4036C2 = {  "S4036C2", // class name
  bases_S4036C2, 1,
  &(vtc_S4036C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S4036C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4036C2),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  S4036C1  : S4036C2 {
  void *s4036c1f0[2];
  virtual  ~S4036C1(); // _ZN7S4036C1D1Ev
  S4036C1(); // tgen
};
//SIG(1 S4036C1) C1{ BC2{ BC3{ vd m} vd Fi[2] FC4{ BC5{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp} vd v1 v2 v3 v4 v5 v6 Fi[3] Fp} Fi} vd Fp[2]}


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

static void Test_S4036C1()
{
  extern Class_Descriptor cd_S4036C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S4036C1, buf);
    S4036C1 *dp, &lv = *(dp=new (buf) S4036C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S4036C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4036C1)");
    check_base_class_offset(lv, (S5228C4_nt*)(S4036C2*), 0, "S4036C1");
    check_base_class_offset(lv, (S4036C2*), 0, "S4036C1");
    check_field_offset(lv, s4036c1f0, ABISELECT(64,40), "S4036C1.s4036c1f0");
    test_class_info(&lv, &cd_S4036C1);
    dp->~S4036C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4036C1(Test_S4036C1, "S4036C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S4036C1C1Ev();
extern void _ZN7S4036C1D1Ev();
Name_Map name_map_S4036C1[] = {
  NSPAIR(_ZN7S4036C1C1Ev),
  NSPAIR(_ZN7S4036C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4036C2;
extern VTBL_ENTRY _ZTI7S4036C2[];
extern  VTBL_ENTRY _ZTV7S4036C2[];
static Base_Class bases_S4036C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4036C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4036C1[];
extern void _ZN7S4036C1D1Ev();
extern void _ZN7S4036C1D0Ev();
static  VTBL_ENTRY vtc_S4036C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4036C1[0]),
  (VTBL_ENTRY)&_ZN7S4036C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4036C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S4036C1[];
extern  VTBL_ENTRY _ZTV7S4036C1[];
Class_Descriptor cd_S4036C1 = {  "S4036C1", // class name
  bases_S4036C1, 2,
  &(vtc_S4036C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S4036C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4036C1),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  S19532C4  {
  long double s19532c4f0;
  void *s19532c4f1;
  virtual void  v5(); // _ZN8S19532C42v5Ev
  virtual void  v6(); // _ZN8S19532C42v6Ev
  virtual void  v7(); // _ZN8S19532C42v7Ev
  virtual void  v8(); // _ZN8S19532C42v8Ev
  ~S19532C4(); // tgen
  S19532C4(); // tgen
};
//SIG(-1 S19532C4) C1{ v1 v2 v3 v4 FD Fp}


void  S19532C4 ::v5(){vfunc_called(this, "_ZN8S19532C42v5Ev");}
void  S19532C4 ::v6(){vfunc_called(this, "_ZN8S19532C42v6Ev");}
void  S19532C4 ::v7(){vfunc_called(this, "_ZN8S19532C42v7Ev");}
void  S19532C4 ::v8(){vfunc_called(this, "_ZN8S19532C42v8Ev");}
S19532C4 ::~S19532C4(){ note_dtor("S19532C4", this);} // tgen
S19532C4 ::S19532C4(){ note_ctor("S19532C4", this);} // tgen

static void Test_S19532C4()
{
  extern Class_Descriptor cd_S19532C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19532C4, buf);
    S19532C4 *dp, &lv = *(dp=new (buf) S19532C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19532C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19532C4)");
    check_field_offset(lv, s19532c4f0, ABISELECT(16,4), "S19532C4.s19532c4f0");
    check_field_offset(lv, s19532c4f1, ABISELECT(32,16), "S19532C4.s19532c4f1");
    test_class_info(&lv, &cd_S19532C4);
    dp->~S19532C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19532C4(Test_S19532C4, "S19532C4", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S19532C4C1Ev();
extern void _ZN8S19532C4D1Ev();
Name_Map name_map_S19532C4[] = {
  NSPAIR(_ZN8S19532C4C1Ev),
  NSPAIR(_ZN8S19532C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19532C4[];
extern void _ZN8S19532C42v5Ev();
extern void _ZN8S19532C42v6Ev();
extern void _ZN8S19532C42v7Ev();
extern void _ZN8S19532C42v8Ev();
static  VTBL_ENTRY vtc_S19532C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C4[0]),
  (VTBL_ENTRY)&_ZN8S19532C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S19532C4[];
extern  VTBL_ENTRY _ZTV8S19532C4[];
Class_Descriptor cd_S19532C4 = {  "S19532C4", // class name
  0,0,//no base classes
  &(vtc_S19532C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S19532C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19532C4),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  S19532C3  : virtual S19532C4 {
  virtual void  v9(); // _ZN8S19532C32v9Ev
  virtual void  v10(); // _ZN8S19532C33v10Ev
  ~S19532C3(); // tgen
  S19532C3(); // tgen
};
//SIG(-1 S19532C3) C1{ VBC2{ v3 v4 v5 v6 FD Fp} v1 v2}


void  S19532C3 ::v9(){vfunc_called(this, "_ZN8S19532C32v9Ev");}
void  S19532C3 ::v10(){vfunc_called(this, "_ZN8S19532C33v10Ev");}
S19532C3 ::~S19532C3(){ note_dtor("S19532C3", this);} // tgen
S19532C3 ::S19532C3(){ note_ctor("S19532C3", this);} // tgen

static void Test_S19532C3()
{
  extern Class_Descriptor cd_S19532C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19532C3, buf);
    S19532C3 *dp, &lv = *(dp=new (buf) S19532C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,24), "sizeof(S19532C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19532C3)");
    check_base_class_offset(lv, (S19532C4*), ABISELECT(16,4), "S19532C3");
    test_class_info(&lv, &cd_S19532C3);
    dp->~S19532C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19532C3(Test_S19532C3, "S19532C3", ABISELECT(64,24));

#else // __cplusplus

extern void _ZN8S19532C3C1Ev();
extern void _ZN8S19532C3D1Ev();
Name_Map name_map_S19532C3[] = {
  NSPAIR(_ZN8S19532C3C1Ev),
  NSPAIR(_ZN8S19532C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19532C4;
extern VTBL_ENTRY _ZTI8S19532C4[];
extern  VTBL_ENTRY _ZTV8S19532C4[];
static Base_Class bases_S19532C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19532C4,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19532C3[];
extern void _ZN8S19532C32v9Ev();
extern void _ZN8S19532C33v10Ev();
extern void _ZN8S19532C42v5Ev();
extern void _ZN8S19532C42v6Ev();
extern void _ZN8S19532C42v7Ev();
extern void _ZN8S19532C42v8Ev();
static  VTBL_ENTRY vtc_S19532C3[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C3[0]),
  (VTBL_ENTRY)&_ZN8S19532C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19532C33v10Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19532C3[0]),
  (VTBL_ENTRY)&_ZN8S19532C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S19532C3[];
static  VTT_ENTRY vtt_S19532C3[] = {
  {&(_ZTV8S19532C3[3]),  3,15},
  {&(_ZTV8S19532C3[11]),  11,15},
};
extern VTBL_ENTRY _ZTI8S19532C3[];
extern  VTBL_ENTRY _ZTV8S19532C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19532C3[];
Class_Descriptor cd_S19532C3 = {  "S19532C3", // class name
  bases_S19532C3, 1,
  &(vtc_S19532C3[0]), // expected_vtbl_contents
  &(vtt_S19532C3[0]), // expected_vtt_contents
  ABISELECT(64,24), // object size
  NSPAIRA(_ZTI8S19532C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19532C3),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19532C3),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  S19532C6  {
  virtual void  v11(); // _ZN8S19532C63v11Ev
  virtual void  v12(); // _ZN8S19532C63v12Ev
  virtual void  v13(); // _ZN8S19532C63v13Ev
  ~S19532C6(); // tgen
  S19532C6(); // tgen
};
//SIG(-1 S19532C6) C1{ v1 v2 v3}


void  S19532C6 ::v11(){vfunc_called(this, "_ZN8S19532C63v11Ev");}
void  S19532C6 ::v12(){vfunc_called(this, "_ZN8S19532C63v12Ev");}
void  S19532C6 ::v13(){vfunc_called(this, "_ZN8S19532C63v13Ev");}
S19532C6 ::~S19532C6(){ note_dtor("S19532C6", this);} // tgen
S19532C6 ::S19532C6(){ note_ctor("S19532C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19532C6C1Ev();
extern void _ZN8S19532C6D1Ev();
Name_Map name_map_S19532C6[] = {
  NSPAIR(_ZN8S19532C6C1Ev),
  NSPAIR(_ZN8S19532C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19532C6[];
extern void _ZN8S19532C63v11Ev();
extern void _ZN8S19532C63v12Ev();
extern void _ZN8S19532C63v13Ev();
static  VTBL_ENTRY vtc_S19532C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C6[0]),
  (VTBL_ENTRY)&_ZN8S19532C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v13Ev,
};
extern VTBL_ENTRY _ZTI8S19532C6[];
extern  VTBL_ENTRY _ZTV8S19532C6[];
Class_Descriptor cd_S19532C6 = {  "S19532C6", // class name
  0,0,//no base classes
  &(vtc_S19532C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19532C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19532C6),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  S19532C5  : virtual S19532C6 {
  virtual void  v14(); // _ZN8S19532C53v14Ev
  ~S19532C5(); // tgen
  S19532C5(); // tgen
};
//SIG(-1 S19532C5) C1{ VBC2{ v2 v3 v4} v1}


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

static void Test_S19532C5()
{
  extern Class_Descriptor cd_S19532C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19532C5, buf);
    S19532C5 *dp, &lv = *(dp=new (buf) S19532C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19532C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19532C5)");
    check_base_class_offset(lv, (S19532C6*), 0, "S19532C5");
    test_class_info(&lv, &cd_S19532C5);
    dp->~S19532C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19532C5(Test_S19532C5, "S19532C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19532C5C1Ev();
extern void _ZN8S19532C5D1Ev();
Name_Map name_map_S19532C5[] = {
  NSPAIR(_ZN8S19532C5C1Ev),
  NSPAIR(_ZN8S19532C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19532C6;
extern VTBL_ENTRY _ZTI8S19532C6[];
extern  VTBL_ENTRY _ZTV8S19532C6[];
static Base_Class bases_S19532C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19532C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19532C5[];
extern void _ZN8S19532C63v11Ev();
extern void _ZN8S19532C63v12Ev();
extern void _ZN8S19532C63v13Ev();
extern void _ZN8S19532C53v14Ev();
static  VTBL_ENTRY vtc_S19532C5[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C5[0]),
  (VTBL_ENTRY)&_ZN8S19532C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19532C53v14Ev,
};
extern VTBL_ENTRY _ZTV8S19532C5[];
static  VTT_ENTRY vtt_S19532C5[] = {
  {&(_ZTV8S19532C5[6]),  6,10},
  {&(_ZTV8S19532C5[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19532C5[];
extern  VTBL_ENTRY _ZTV8S19532C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19532C5[];
Class_Descriptor cd_S19532C5 = {  "S19532C5", // class name
  bases_S19532C5, 1,
  &(vtc_S19532C5[0]), // expected_vtbl_contents
  &(vtt_S19532C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19532C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19532C5),10, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19532C5),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  S19532C2  : S19532C3 , virtual S19532C5 {
  int s19532c2f0:25;
  virtual void  v15(); // _ZN8S19532C23v15Ev
  virtual void  v16(); // _ZN8S19532C23v16Ev
  ~S19532C2(); // tgen
  S19532C2(); // tgen
};
//SIG(-1 S19532C2) C1{ BC2{ VBC3{ v3 v4 v5 v6 FD Fp} v7 v8} VBC4{ VBC5{ v9 v10 v11} v12} v1 v2 Fi:25}


void  S19532C2 ::v15(){vfunc_called(this, "_ZN8S19532C23v15Ev");}
void  S19532C2 ::v16(){vfunc_called(this, "_ZN8S19532C23v16Ev");}
S19532C2 ::~S19532C2(){ note_dtor("S19532C2", this);} // tgen
S19532C2 ::S19532C2(){ note_ctor("S19532C2", this);} // tgen

static void Test_S19532C2()
{
  extern Class_Descriptor cd_S19532C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S19532C2, buf);
    S19532C2 *dp, &lv = *(dp=new (buf) S19532C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19532C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19532C2)");
    check_base_class_offset(lv, (S19532C4*)(S19532C3*), ABISELECT(16,8), "S19532C2");
    check_base_class_offset(lv, (S19532C3*), 0, "S19532C2");
    check_base_class_offset(lv, (S19532C6*)(S19532C5*), ABISELECT(56,28), "S19532C2");
    check_base_class_offset(lv, (S19532C5*), ABISELECT(56,28), "S19532C2");
    set_bf_and_test(lv, s19532c2f0, ABISELECT(8,4), 0, 25, 1, "S19532C2");
    set_bf_and_test(lv, s19532c2f0, ABISELECT(8,4), 0, 25, hide_sll(1LL<<24), "S19532C2");
    test_class_info(&lv, &cd_S19532C2);
    dp->~S19532C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19532C2(Test_S19532C2, "S19532C2", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S19532C2C1Ev();
extern void _ZN8S19532C2D1Ev();
Name_Map name_map_S19532C2[] = {
  NSPAIR(_ZN8S19532C2C1Ev),
  NSPAIR(_ZN8S19532C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19532C4;
extern VTBL_ENTRY _ZTI8S19532C4[];
extern  VTBL_ENTRY _ZTV8S19532C4[];
extern Class_Descriptor cd_S19532C3;
extern VTBL_ENTRY _ZTI8S19532C3[];
extern  VTBL_ENTRY _ZTV8S19532C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19532C3[];
extern Class_Descriptor cd_S19532C6;
extern VTBL_ENTRY _ZTI8S19532C6[];
extern  VTBL_ENTRY _ZTV8S19532C6[];
extern Class_Descriptor cd_S19532C5;
extern VTBL_ENTRY _ZTI8S19532C5[];
extern  VTBL_ENTRY _ZTV8S19532C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19532C5[];
static Base_Class bases_S19532C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19532C4,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19532C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19532C6,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19532C5,    ABISELECT(56,28), //bcp->offset
    19, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19532C2[];
extern void _ZN8S19532C32v9Ev();
extern void _ZN8S19532C33v10Ev();
extern void _ZN8S19532C23v15Ev();
extern void _ZN8S19532C23v16Ev();
extern void _ZN8S19532C42v5Ev();
extern void _ZN8S19532C42v6Ev();
extern void _ZN8S19532C42v7Ev();
extern void _ZN8S19532C42v8Ev();
extern void _ZN8S19532C63v11Ev();
extern void _ZN8S19532C63v12Ev();
extern void _ZN8S19532C63v13Ev();
extern void _ZN8S19532C53v14Ev();
static  VTBL_ENTRY vtc_S19532C2[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C2[0]),
  (VTBL_ENTRY)&_ZN8S19532C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19532C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19532C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19532C23v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19532C2[0]),
  (VTBL_ENTRY)&_ZN8S19532C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v8Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19532C2[0]),
  (VTBL_ENTRY)&_ZN8S19532C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19532C53v14Ev,
};
extern VTBL_ENTRY _ZTV8S19532C2[];
extern void _ZN8S19532C32v9Ev();
extern void _ZN8S19532C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19532C3__8S19532C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C3[0]),
  (VTBL_ENTRY)&_ZN8S19532C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19532C33v10Ev,
};
extern void _ZN8S19532C42v5Ev();
extern void _ZN8S19532C42v6Ev();
extern void _ZN8S19532C42v7Ev();
extern void _ZN8S19532C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19532C4__8S19532C3__8S19532C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19532C3[0]),
  (VTBL_ENTRY)&_ZN8S19532C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v8Ev,
};
extern void _ZN8S19532C63v11Ev();
extern void _ZN8S19532C63v12Ev();
extern void _ZN8S19532C63v13Ev();
extern void _ZN8S19532C53v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19532C5__8S19532C2[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C5[0]),
  (VTBL_ENTRY)&_ZN8S19532C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19532C53v14Ev,
};
static  VTT_ENTRY vtt_S19532C2[] = {
  {&(_ZTV8S19532C2[5]),  5,30},
  {&(_tg__ZTV8S19532C3__8S19532C2[3]),  3,5},
  {&(_tg__ZTV8S19532C4__8S19532C3__8S19532C2[6]),  6,10},
  {&(_ZTV8S19532C2[15]),  15,30},
  {&(_ZTV8S19532C2[26]),  26,30},
  {&(_ZTV8S19532C2[26]),  26,30},
  {&(_tg__ZTV8S19532C5__8S19532C2[6]),  6,10},
  {&(_tg__ZTV8S19532C5__8S19532C2[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19532C2[];
extern  VTBL_ENTRY _ZTV8S19532C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19532C2[];
Class_Descriptor cd_S19532C2 = {  "S19532C2", // class name
  bases_S19532C2, 4,
  &(vtc_S19532C2[0]), // expected_vtbl_contents
  &(vtt_S19532C2[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S19532C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19532C2),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19532C2),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19532C1  : virtual S19532C2 {
  int s19532c1f0;
  long double s19532c1f1[4];
  ::S19532C6 s19532c1f2[8];
  long double s19532c1f3;
  virtual void  v1(); // _ZN8S19532C12v1Ev
  virtual void  v2(); // _ZN8S19532C12v2Ev
  virtual void  v3(); // _ZN8S19532C12v3Ev
  virtual void  v4(); // _ZN8S19532C12v4Ev
  ~S19532C1(); // tgen
  S19532C1(); // tgen
};
//SIG(1 S19532C1) C1{ VBC2{ BC3{ VBC4{ v5 v6 v7 v8 FD Fp} v9 v10} VBC5{ VBC6{ v11 v12 v13} v14} v15 v16 Fi:25} v1 v2 v3 v4 Fi FD[4] FC6[8] FD}


void  S19532C1 ::v1(){vfunc_called(this, "_ZN8S19532C12v1Ev");}
void  S19532C1 ::v2(){vfunc_called(this, "_ZN8S19532C12v2Ev");}
void  S19532C1 ::v3(){vfunc_called(this, "_ZN8S19532C12v3Ev");}
void  S19532C1 ::v4(){vfunc_called(this, "_ZN8S19532C12v4Ev");}
S19532C1 ::~S19532C1(){ note_dtor("S19532C1", this);} // tgen
S19532C1 ::S19532C1(){ note_ctor("S19532C1", this);} // tgen

static void Test_S19532C1()
{
  extern Class_Descriptor cd_S19532C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,33)];
    init_test(&cd_S19532C1, buf);
    S19532C1 *dp, &lv = *(dp=new (buf) S19532C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,128), "sizeof(S19532C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19532C1)");
    check_base_class_offset(lv, (S19532C4*)(S19532C3*)(S19532C2*), ABISELECT(176,108), "S19532C1");
    check_base_class_offset(lv, (S19532C3*)(S19532C2*), ABISELECT(160,100), "S19532C1");
    check_base_class_offset(lv, (S19532C6*)(S19532C5*), 0, "S19532C1");
    check_base_class_offset(lv, (S19532C5*)(S19532C2*), 0, "S19532C1");
    check_base_class_offset(lv, (S19532C2*), ABISELECT(160,100), "S19532C1");
    check_field_offset(lv, s19532c1f0, ABISELECT(8,4), "S19532C1.s19532c1f0");
    check_field_offset(lv, s19532c1f1, ABISELECT(16,8), "S19532C1.s19532c1f1");
    check_field_offset(lv, s19532c1f2, ABISELECT(80,56), "S19532C1.s19532c1f2");
    check_field_offset(lv, s19532c1f3, ABISELECT(144,88), "S19532C1.s19532c1f3");
    test_class_info(&lv, &cd_S19532C1);
    dp->~S19532C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19532C1(Test_S19532C1, "S19532C1", ABISELECT(224,128));

#else // __cplusplus

extern void _ZN8S19532C1C1Ev();
extern void _ZN8S19532C1D1Ev();
Name_Map name_map_S19532C1[] = {
  NSPAIR(_ZN8S19532C1C1Ev),
  NSPAIR(_ZN8S19532C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19532C4;
extern VTBL_ENTRY _ZTI8S19532C4[];
extern  VTBL_ENTRY _ZTV8S19532C4[];
extern Class_Descriptor cd_S19532C3;
extern VTBL_ENTRY _ZTI8S19532C3[];
extern  VTBL_ENTRY _ZTV8S19532C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19532C3[];
extern Class_Descriptor cd_S19532C6;
extern VTBL_ENTRY _ZTI8S19532C6[];
extern  VTBL_ENTRY _ZTV8S19532C6[];
extern Class_Descriptor cd_S19532C5;
extern VTBL_ENTRY _ZTI8S19532C5[];
extern  VTBL_ENTRY _ZTV8S19532C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19532C5[];
extern Class_Descriptor cd_S19532C2;
extern VTBL_ENTRY _ZTI8S19532C2[];
extern  VTBL_ENTRY _ZTV8S19532C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19532C2[];
static Base_Class bases_S19532C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19532C4,    ABISELECT(176,108), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19532C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19532C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19532C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19532C2,    ABISELECT(160,100), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19532C1[];
extern void _ZN8S19532C63v11Ev();
extern void _ZN8S19532C63v12Ev();
extern void _ZN8S19532C63v13Ev();
extern void _ZN8S19532C53v14Ev();
extern void _ZN8S19532C12v1Ev();
extern void _ZN8S19532C12v2Ev();
extern void _ZN8S19532C12v3Ev();
extern void _ZN8S19532C12v4Ev();
extern void _ZN8S19532C32v9Ev();
extern void _ZN8S19532C33v10Ev();
extern void _ZN8S19532C23v15Ev();
extern void _ZN8S19532C23v16Ev();
extern void _ZN8S19532C42v5Ev();
extern void _ZN8S19532C42v6Ev();
extern void _ZN8S19532C42v7Ev();
extern void _ZN8S19532C42v8Ev();
static  VTBL_ENTRY vtc_S19532C1[] = {
  0,
  ABISELECT(176,108),
  ABISELECT(160,100),
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C1[0]),
  (VTBL_ENTRY)&_ZN8S19532C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19532C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19532C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19532C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19532C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19532C12v4Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(16,8),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S19532C1[0]),
  (VTBL_ENTRY)&_ZN8S19532C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19532C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19532C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19532C23v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S19532C1[0]),
  (VTBL_ENTRY)&_ZN8S19532C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S19532C1[];
extern void _ZN8S19532C32v9Ev();
extern void _ZN8S19532C33v10Ev();
extern void _ZN8S19532C23v15Ev();
extern void _ZN8S19532C23v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19532C2__8S19532C1[] = {
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C2[0]),
  (VTBL_ENTRY)&_ZN8S19532C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19532C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19532C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19532C23v16Ev,
};
extern void _ZN8S19532C32v9Ev();
extern void _ZN8S19532C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19532C38S19532C2__8S19532C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C3[0]),
  (VTBL_ENTRY)&_ZN8S19532C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19532C33v10Ev,
};
extern void _ZN8S19532C42v5Ev();
extern void _ZN8S19532C42v6Ev();
extern void _ZN8S19532C42v7Ev();
extern void _ZN8S19532C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19532C4__8S19532C38S19532C2__8S19532C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19532C3[0]),
  (VTBL_ENTRY)&_ZN8S19532C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v8Ev,
};
extern void _ZN8S19532C42v5Ev();
extern void _ZN8S19532C42v6Ev();
extern void _ZN8S19532C42v7Ev();
extern void _ZN8S19532C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19532C4__8S19532C2__8S19532C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19532C2[0]),
  (VTBL_ENTRY)&_ZN8S19532C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19532C42v8Ev,
};
extern void _ZN8S19532C63v11Ev();
extern void _ZN8S19532C63v12Ev();
extern void _ZN8S19532C63v13Ev();
extern void _ZN8S19532C53v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19532C5__8S19532C2__8S19532C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI8S19532C2[0]),
  (VTBL_ENTRY)&_ZN8S19532C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19532C53v14Ev,
};
extern void _ZN8S19532C63v11Ev();
extern void _ZN8S19532C63v12Ev();
extern void _ZN8S19532C63v13Ev();
extern void _ZN8S19532C53v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19532C5__8S19532C1[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19532C5[0]),
  (VTBL_ENTRY)&_ZN8S19532C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19532C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19532C53v14Ev,
};
static  VTT_ENTRY vtt_S19532C1[] = {
  {&(_ZTV8S19532C1[10]),  10,41},
  {&(_ZTV8S19532C1[27]),  27,41},
  {&(_ZTV8S19532C1[37]),  37,41},
  {&(_ZTV8S19532C1[10]),  10,41},
  {&(_ZTV8S19532C1[10]),  10,41},
  {&(_tg__ZTV8S19532C2__8S19532C1[5]),  5,9},
  {&(_tg__ZTV8S19532C38S19532C2__8S19532C1[3]),  3,5},
  {&(_tg__ZTV8S19532C4__8S19532C38S19532C2__8S19532C1[6]),  6,10},
  {&(_tg__ZTV8S19532C4__8S19532C2__8S19532C1[6]),  6,10},
  {&(_tg__ZTV8S19532C5__8S19532C2__8S19532C1[7]),  7,11},
  {&(_tg__ZTV8S19532C5__8S19532C2__8S19532C1[7]),  7,11},
  {&(_tg__ZTV8S19532C5__8S19532C1[6]),  6,10},
  {&(_tg__ZTV8S19532C5__8S19532C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19532C1[];
extern  VTBL_ENTRY _ZTV8S19532C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19532C1[];
Class_Descriptor cd_S19532C1 = {  "S19532C1", // class name
  bases_S19532C1, 5,
  &(vtc_S19532C1[0]), // expected_vtbl_contents
  &(vtt_S19532C1[0]), // expected_vtt_contents
  ABISELECT(224,128), // object size
  NSPAIRA(_ZTI8S19532C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19532C1),41, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19532C1),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4037C2  : S5228C4_nt {
  int s4037c2f0[2];
  ::S4036C4 s4037c2f1;
  int s4037c2f2;
  virtual  ~S4037C2(); // _ZN7S4037C2D1Ev
  S4037C2(); // tgen
};
//SIG(-1 S4037C2) C1{ BC2{ vd m} vd Fi[2] FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp} vd v1 v2 v3 v4 v5 v6 Fi[3] Fp} Fi}


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

static void Test_S4037C2()
{
  extern Class_Descriptor cd_S4037C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S4037C2, buf);
    S4037C2 *dp, &lv = *(dp=new (buf) S4037C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S4037C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4037C2)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S4037C2");
    check_field_offset(lv, s4037c2f0, ABISELECT(8,4), "S4037C2.s4037c2f0");
    check_field_offset(lv, s4037c2f1, ABISELECT(16,12), "S4037C2.s4037c2f1");
    check_field_offset(lv, s4037c2f2, ABISELECT(56,36), "S4037C2.s4037c2f2");
    test_class_info(&lv, &cd_S4037C2);
    dp->~S4037C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4037C2(Test_S4037C2, "S4037C2", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S4037C2C1Ev();
extern void _ZN7S4037C2D1Ev();
Name_Map name_map_S4037C2[] = {
  NSPAIR(_ZN7S4037C2C1Ev),
  NSPAIR(_ZN7S4037C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S4037C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4037C2[];
extern void _ZN7S4037C2D1Ev();
extern void _ZN7S4037C2D0Ev();
static  VTBL_ENTRY vtc_S4037C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4037C2[0]),
  (VTBL_ENTRY)&_ZN7S4037C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4037C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S4037C2[];
extern  VTBL_ENTRY _ZTV7S4037C2[];
Class_Descriptor cd_S4037C2 = {  "S4037C2", // class name
  bases_S4037C2, 1,
  &(vtc_S4037C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S4037C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4037C2),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  S4037C1  : S4037C2 {
  void *s4037c1f0;
  virtual  ~S4037C1(); // _ZN7S4037C1D1Ev
  S4037C1(); // tgen
};
//SIG(1 S4037C1) C1{ BC2{ BC3{ vd m} vd Fi[2] FC4{ BC5{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp} vd v1 v2 v3 v4 v5 v6 Fi[3] Fp} Fi} vd Fp}


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

static void Test_S4037C1()
{
  extern Class_Descriptor cd_S4037C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S4037C1, buf);
    S4037C1 *dp, &lv = *(dp=new (buf) S4037C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S4037C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4037C1)");
    check_base_class_offset(lv, (S5228C4_nt*)(S4037C2*), 0, "S4037C1");
    check_base_class_offset(lv, (S4037C2*), 0, "S4037C1");
    check_field_offset(lv, s4037c1f0, ABISELECT(64,40), "S4037C1.s4037c1f0");
    test_class_info(&lv, &cd_S4037C1);
    dp->~S4037C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4037C1(Test_S4037C1, "S4037C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S4037C1C1Ev();
extern void _ZN7S4037C1D1Ev();
Name_Map name_map_S4037C1[] = {
  NSPAIR(_ZN7S4037C1C1Ev),
  NSPAIR(_ZN7S4037C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4037C2;
extern VTBL_ENTRY _ZTI7S4037C2[];
extern  VTBL_ENTRY _ZTV7S4037C2[];
static Base_Class bases_S4037C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4037C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4037C1[];
extern void _ZN7S4037C1D1Ev();
extern void _ZN7S4037C1D0Ev();
static  VTBL_ENTRY vtc_S4037C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4037C1[0]),
  (VTBL_ENTRY)&_ZN7S4037C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4037C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S4037C1[];
extern  VTBL_ENTRY _ZTV7S4037C1[];
Class_Descriptor cd_S4037C1 = {  "S4037C1", // class name
  bases_S4037C1, 2,
  &(vtc_S4037C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S4037C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4037C1),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  S4008C2  : S5228C4_nt {
  void *s4008c2f0;
  ~S4008C2(); // tgen
  S4008C2(); // tgen
};
//SIG(-1 S4008C2) C1{ BC2{ vd m} Fp}


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

static void Test_S4008C2()
{
  extern Class_Descriptor cd_S4008C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S4008C2, buf);
    S4008C2 *dp, &lv = *(dp=new (buf) S4008C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S4008C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4008C2)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S4008C2");
    check_field_offset(lv, s4008c2f0, ABISELECT(8,4), "S4008C2.s4008c2f0");
    test_class_info(&lv, &cd_S4008C2);
    dp->~S4008C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4008C2(Test_S4008C2, "S4008C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S4008C2C1Ev();
extern void _ZN7S4008C2D1Ev();
Name_Map name_map_S4008C2[] = {
  NSPAIR(_ZN7S4008C2C1Ev),
  NSPAIR(_ZN7S4008C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S4008C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4008C2[];
extern void _ZN7S4008C2D1Ev();
extern void _ZN7S4008C2D0Ev();
static  VTBL_ENTRY vtc_S4008C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4008C2[0]),
  (VTBL_ENTRY)&_ZN7S4008C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4008C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S4008C2[];
extern  VTBL_ENTRY _ZTV7S4008C2[];
Class_Descriptor cd_S4008C2 = {  "S4008C2", // class name
  bases_S4008C2, 1,
  &(vtc_S4008C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S4008C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4008C2),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  S4008C6  : S2367C19 , S5228C4_nt {
  void *s4008c6f0;
  ~S4008C6(); // tgen
  S4008C6(); // tgen
};
//SIG(-1 S4008C6) C1{ BC2{ m Fp} BC3{ vd m} Fp}


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

static void Test_S4008C6()
{
  extern Class_Descriptor cd_S4008C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4008C6, buf);
    S4008C6 *dp, &lv = *(dp=new (buf) S4008C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4008C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4008C6)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S4008C6");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S4008C6");
    check_field_offset(lv, s4008c6f0, ABISELECT(16,8), "S4008C6.s4008c6f0");
    test_class_info(&lv, &cd_S4008C6);
    dp->~S4008C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4008C6(Test_S4008C6, "S4008C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S4008C6C1Ev();
extern void _ZN7S4008C6D1Ev();
Name_Map name_map_S4008C6[] = {
  NSPAIR(_ZN7S4008C6C1Ev),
  NSPAIR(_ZN7S4008C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S4008C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4008C6[];
extern void _ZN7S4008C6D1Ev();
extern void _ZN7S4008C6D0Ev();
static  VTBL_ENTRY vtc_S4008C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4008C6[0]),
  (VTBL_ENTRY)&_ZN7S4008C6D1Ev,
  (VTBL_ENTRY)&_ZN7S4008C6D0Ev,
};
extern VTBL_ENTRY _ZTI7S4008C6[];
extern  VTBL_ENTRY _ZTV7S4008C6[];
Class_Descriptor cd_S4008C6 = {  "S4008C6", // class name
  bases_S4008C6, 2,
  &(vtc_S4008C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S4008C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4008C6),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  S4008C5  : S4008C6 {
  virtual  ~S4008C5(); // _ZN7S4008C5D1Ev
  S4008C5(); // tgen
};
//SIG(-1 S4008C5) C1{ BC2{ BC3{ m Fp} BC4{ vd m} Fp} vd}


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

static void Test_S4008C5()
{
  extern Class_Descriptor cd_S4008C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4008C5, buf);
    S4008C5 *dp, &lv = *(dp=new (buf) S4008C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4008C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4008C5)");
    check_base_class_offset(lv, (S2367C19*)(S4008C6*), ABISELECT(8,4), "S4008C5");
    check_base_class_offset(lv, (S5228C4_nt*)(S4008C6*), 0, "S4008C5");
    check_base_class_offset(lv, (S4008C6*), 0, "S4008C5");
    test_class_info(&lv, &cd_S4008C5);
    dp->~S4008C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4008C5(Test_S4008C5, "S4008C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S4008C5C1Ev();
extern void _ZN7S4008C5D1Ev();
Name_Map name_map_S4008C5[] = {
  NSPAIR(_ZN7S4008C5C1Ev),
  NSPAIR(_ZN7S4008C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4008C6;
extern VTBL_ENTRY _ZTI7S4008C6[];
extern  VTBL_ENTRY _ZTV7S4008C6[];
static Base_Class bases_S4008C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S4008C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4008C5[];
extern void _ZN7S4008C5D1Ev();
extern void _ZN7S4008C5D0Ev();
static  VTBL_ENTRY vtc_S4008C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4008C5[0]),
  (VTBL_ENTRY)&_ZN7S4008C5D1Ev,
  (VTBL_ENTRY)&_ZN7S4008C5D0Ev,
};
extern VTBL_ENTRY _ZTI7S4008C5[];
extern  VTBL_ENTRY _ZTV7S4008C5[];
Class_Descriptor cd_S4008C5 = {  "S4008C5", // class name
  bases_S4008C5, 3,
  &(vtc_S4008C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S4008C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4008C5),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  S4008C4  : virtual S4008C5 , virtual S4008C6 , S3164C8_nt {
  short s4008c4f0:8;
  ~S4008C4(); // tgen
  S4008C4(); // tgen
};
//SIG(-1 S4008C4) C1{ VBC2{ BC3{ BC4{ m Fp} BC5{ vd m} Fp} vd} VBC3 BC6{ m Fi} Fs:8}


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

static void Test_S4008C4()
{
  extern Class_Descriptor cd_S4008C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S4008C4, buf);
    S4008C4 *dp, &lv = *(dp=new (buf) S4008C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S4008C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4008C4)");
    check_base_class_offset(lv, (S2367C19*)(S4008C6*)(S4008C5*), ABISELECT(24,16), "S4008C4");
    check_base_class_offset(lv, (S5228C4_nt*)(S4008C6*)(S4008C5*), ABISELECT(16,12), "S4008C4");
    check_base_class_offset(lv, (S4008C6*)(S4008C5*), ABISELECT(16,12), "S4008C4");
    check_base_class_offset(lv, (S4008C5*), ABISELECT(16,12), "S4008C4");
    /*is_ambiguous_... S4008C4::S4008C6 */ AMB_check_base_class_offset(lv, (S2367C19*)(S4008C6*), ABISELECT(48,28), "S4008C4");
    /*is_ambiguous_... S4008C4::S4008C6 */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S4008C6*), ABISELECT(40,24), "S4008C4");
    /*is_ambiguous_... S4008C4::S4008C6 */ AMB_check_base_class_offset(lv, (S4008C6*), ABISELECT(40,24), "S4008C4");
    check_base_class_offset(lv, (S3164C8_nt*), ABISELECT(8,4), "S4008C4");
    set_bf_and_test(lv, s4008c4f0, ABISELECT(12,8), 0, 8, 1, "S4008C4");
    set_bf_and_test(lv, s4008c4f0, ABISELECT(12,8), 0, 8, hide_sll(1LL<<7), "S4008C4");
    test_class_info(&lv, &cd_S4008C4);
    dp->~S4008C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4008C4(Test_S4008C4, "S4008C4", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S4008C4C1Ev();
extern void _ZN7S4008C4D1Ev();
Name_Map name_map_S4008C4[] = {
  NSPAIR(_ZN7S4008C4C1Ev),
  NSPAIR(_ZN7S4008C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4008C6;
extern VTBL_ENTRY _ZTI7S4008C6[];
extern  VTBL_ENTRY _ZTV7S4008C6[];
extern Class_Descriptor cd_S4008C5;
extern VTBL_ENTRY _ZTI7S4008C5[];
extern  VTBL_ENTRY _ZTV7S4008C5[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4008C6;
extern VTBL_ENTRY _ZTI7S4008C6[];
extern  VTBL_ENTRY _ZTV7S4008C6[];
extern Class_Descriptor cd_S3164C8_nt;
extern VTBL_ENTRY _ZTI10S3164C8_nt[];
static Base_Class bases_S4008C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    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, 0},
  {&cd_S5228C4_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_S4008C6,    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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4008C5,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    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_S5228C4_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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4008C6,    ABISELECT(40,24), //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4008C4[];
extern void _ZN7S4008C4D1Ev();
extern void _ZN7S4008C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S4008C4D1Ev,_ZTv0_n12_N7S4008C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S4008C4D1Ev,_ZThn12_N7S4008C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C4D0Ev,_ZTv0_n12_N7S4008C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S4008C4D0Ev,_ZThn12_N7S4008C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C4D1Ev,_ZTv0_n12_N7S4008C4D1Ev)();
extern void ABISELECT(_ZThn40_N7S4008C4D1Ev,_ZThn24_N7S4008C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C4D0Ev,_ZTv0_n12_N7S4008C4D0Ev)();
extern void ABISELECT(_ZThn40_N7S4008C4D0Ev,_ZThn24_N7S4008C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S4008C4[] = {
  ABISELECT(40,24),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S4008C4[0]),
  (VTBL_ENTRY)&_ZN7S4008C4D1Ev,
  (VTBL_ENTRY)&_ZN7S4008C4D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S4008C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C4D1Ev,_ZTv0_n12_N7S4008C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C4D0Ev,_ZTv0_n12_N7S4008C4D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S4008C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C4D1Ev,_ZTv0_n12_N7S4008C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C4D0Ev,_ZTv0_n12_N7S4008C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S4008C4[];
static  VTT_ENTRY vtt_S4008C4[] = {
  {&(_ZTV7S4008C4[4]),  4,16},
  {&(_ZTV7S4008C4[9]),  9,16},
  {&(_ZTV7S4008C4[14]),  14,16},
};
extern VTBL_ENTRY _ZTI7S4008C4[];
extern  VTBL_ENTRY _ZTV7S4008C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S4008C4[];
static VTBL_ENTRY alt_thunk_names160[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4008C4D0Ev,_ZTv0_n12_N7S4008C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S4008C4D0Ev,_ZThn24_N7S4008C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S4008C4D0Ev,_ZThn12_N7S4008C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4008C4D1Ev,_ZTv0_n12_N7S4008C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S4008C4D1Ev,_ZThn24_N7S4008C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S4008C4D1Ev,_ZThn12_N7S4008C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S4008C4 = {  "S4008C4", // class name
  bases_S4008C4, 8,
  &(vtc_S4008C4[0]), // expected_vtbl_contents
  &(vtt_S4008C4[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S4008C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S4008C4),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S4008C4),3, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names160,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4008C10  : virtual S2367C19 , virtual S5228C4_nt {
  int s4008c10f0;
  virtual  ~S4008C10(); // _ZN8S4008C10D2Ev
  S4008C10(); // tgen
};
//SIG(-1 S4008C10) C1{ VBC2{ m Fp} VBC3{ vd m} vd Fi}


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

static void Test_S4008C10()
{
  extern Class_Descriptor cd_S4008C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4008C10, buf);
    S4008C10 *dp, &lv = *(dp=new (buf) S4008C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4008C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4008C10)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(16,8), "S4008C10");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S4008C10");
    check_field_offset(lv, s4008c10f0, ABISELECT(8,4), "S4008C10.s4008c10f0");
    test_class_info(&lv, &cd_S4008C10);
    dp->~S4008C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4008C10(Test_S4008C10, "S4008C10", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S4008C10C1Ev();
extern void _ZN8S4008C10D2Ev();
Name_Map name_map_S4008C10[] = {
  NSPAIR(_ZN8S4008C10C1Ev),
  NSPAIR(_ZN8S4008C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S4008C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S4008C10[];
extern void _ZN8S4008C10D1Ev();
extern void _ZN8S4008C10D0Ev();
static  VTBL_ENTRY vtc_S4008C10[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S4008C10[0]),
  (VTBL_ENTRY)&_ZN8S4008C10D1Ev,
  (VTBL_ENTRY)&_ZN8S4008C10D0Ev,
};
extern VTBL_ENTRY _ZTV8S4008C10[];
static  VTT_ENTRY vtt_S4008C10[] = {
  {&(_ZTV8S4008C10[5]),  5,7},
  {&(_ZTV8S4008C10[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S4008C10[];
extern  VTBL_ENTRY _ZTV8S4008C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S4008C10[];
Class_Descriptor cd_S4008C10 = {  "S4008C10", // class name
  bases_S4008C10, 2,
  &(vtc_S4008C10[0]), // expected_vtbl_contents
  &(vtt_S4008C10[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S4008C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S4008C10),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S4008C10),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  S4008C9  : virtual S4008C2 , virtual S4008C10 {
  virtual void  v1(); // _ZN7S4008C92v1Ev
  ~S4008C9(); // tgen
  S4008C9(); // tgen
};
//SIG(-1 S4008C9) C1{ VBC2{ BC3{ vd m} Fp} VBC4{ VBC5{ m Fp} VBC3 vd Fi} v1}


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

static void Test_S4008C9()
{
  extern Class_Descriptor cd_S4008C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S4008C9, buf);
    S4008C9 *dp, &lv = *(dp=new (buf) S4008C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S4008C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4008C9)");
    check_base_class_offset(lv, (S5228C4_nt*)(S4008C2*), ABISELECT(8,4), "S4008C9");
    check_base_class_offset(lv, (S4008C2*), ABISELECT(8,4), "S4008C9");
    check_base_class_offset(lv, (S2367C19*)(S4008C10*), ABISELECT(40,20), "S4008C9");
    check_base_class_offset(lv, (S5228C4_nt*)(S4008C10*), 0, "S4008C9");
    check_base_class_offset(lv, (S4008C10*), ABISELECT(24,12), "S4008C9");
    test_class_info(&lv, &cd_S4008C9);
    dp->~S4008C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4008C9(Test_S4008C9, "S4008C9", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S4008C9C1Ev();
extern void _ZN7S4008C9D1Ev();
Name_Map name_map_S4008C9[] = {
  NSPAIR(_ZN7S4008C9C1Ev),
  NSPAIR(_ZN7S4008C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4008C2;
extern VTBL_ENTRY _ZTI7S4008C2[];
extern  VTBL_ENTRY _ZTV7S4008C2[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4008C10;
extern VTBL_ENTRY _ZTI8S4008C10[];
extern  VTBL_ENTRY _ZTV8S4008C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S4008C10[];
static Base_Class bases_S4008C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4008C2,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4008C10,    ABISELECT(24,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S4008C9[];
extern void ABISELECT(_ZTv0_n24_N7S4008C9D1Ev,_ZTv0_n12_N7S4008C9D1Ev)();
extern void _ZN7S4008C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C9D0Ev,_ZTv0_n12_N7S4008C9D0Ev)();
extern void _ZN7S4008C9D0Ev() __attribute__((weak));
extern void _ZN7S4008C92v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S4008C9D1Ev,_ZTv0_n12_N7S4008C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S4008C9D1Ev,_ZThn4_N7S4008C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C9D0Ev,_ZTv0_n12_N7S4008C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S4008C9D0Ev,_ZThn4_N7S4008C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C9D1Ev,_ZTv0_n12_N7S4008C9D1Ev)();
extern void ABISELECT(_ZThn24_N7S4008C9D1Ev,_ZThn12_N7S4008C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C9D0Ev,_ZTv0_n12_N7S4008C9D0Ev)();
extern void ABISELECT(_ZThn24_N7S4008C9D0Ev,_ZThn12_N7S4008C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S4008C9[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S4008C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C9D1Ev,_ZTv0_n12_N7S4008C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C9D0Ev,_ZTv0_n12_N7S4008C9D0Ev),
  (VTBL_ENTRY)&_ZN7S4008C92v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S4008C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C9D1Ev,_ZTv0_n12_N7S4008C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C9D0Ev,_ZTv0_n12_N7S4008C9D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S4008C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C9D1Ev,_ZTv0_n12_N7S4008C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C9D0Ev,_ZTv0_n12_N7S4008C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S4008C9[];
extern void ABISELECT(_ZTv0_n24_N8S4008C10D1Ev,_ZTv0_n12_N8S4008C10D1Ev)();
extern void _ZN8S4008C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S4008C10D0Ev,_ZTv0_n12_N8S4008C10D0Ev)();
extern void _ZN8S4008C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S4008C10__7S4008C9[] = {
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S4008C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S4008C10D1Ev,_ZTv0_n12_N8S4008C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S4008C10D0Ev,_ZTv0_n12_N8S4008C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S4008C10D1Ev,_ZTv0_n12_N8S4008C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S4008C10D0Ev,_ZTv0_n12_N8S4008C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt__8S4008C10__7S4008C9[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S4008C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S4008C10D1Ev,_ZTv0_n12_N8S4008C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S4008C10D0Ev,_ZTv0_n12_N8S4008C10D0Ev),
};
static  VTT_ENTRY vtt_S4008C9[] = {
  {&(_ZTV7S4008C9[7]),  7,22},
  {&(_ZTV7S4008C9[13]),  13,22},
  {&(_ZTV7S4008C9[20]),  20,22},
  {&(_ZTV7S4008C9[7]),  7,22},
  {&(_tg__ZTV8S4008C10__7S4008C9[5]),  5,7},
  {&(_tg__ZTV10S5228C4_nt__8S4008C10__7S4008C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S4008C9[];
extern  VTBL_ENTRY _ZTV7S4008C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S4008C9[];
static VTBL_ENTRY alt_thunk_names161[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S4008C10D0Ev,_ZTv0_n12_N8S4008C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S4008C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S4008C10D1Ev,_ZTv0_n12_N8S4008C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S4008C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4008C9D0Ev,_ZTv0_n12_N7S4008C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S4008C9D0Ev,_ZThn12_N7S4008C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S4008C9D0Ev,_ZThn4_N7S4008C9D0Ev),
  (VTBL_ENTRY)_ZN7S4008C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4008C9D1Ev,_ZTv0_n12_N7S4008C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S4008C9D1Ev,_ZThn12_N7S4008C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S4008C9D1Ev,_ZThn4_N7S4008C9D1Ev),
  (VTBL_ENTRY)_ZN7S4008C9D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S4008C9 = {  "S4008C9", // class name
  bases_S4008C9, 5,
  &(vtc_S4008C9[0]), // expected_vtbl_contents
  &(vtt_S4008C9[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S4008C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4008C9),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S4008C9),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names161,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4008C1  : S4008C2 , S4008C4 , S5228C4_nt {
  ::S4008C9 s4008c1f0;
  ~S4008C1(); // tgen
  S4008C1(); // tgen
};
//SIG(1 S4008C1) C1{ BC2{ BC3{ vd m} Fp} BC4{ VBC5{ BC6{ BC7{ m Fp} BC3 Fp} vd} VBC6 BC8{ m Fi} Fs:8} BC3 FC9{ VBC2 VBC10{ VBC7 VBC3 vd Fi} v1}}


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

static void Test_S4008C1()
{
  extern Class_Descriptor cd_S4008C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,19)];
    init_test(&cd_S4008C1, buf);
    S4008C1 *dp, &lv = *(dp=new (buf) S4008C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,72), "sizeof(S4008C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4008C1)");
    check_base_class_offset(lv, (S5228C4_nt*)(S4008C2*), 0, "S4008C1");
    check_base_class_offset(lv, (S4008C2*), 0, "S4008C1");
    check_base_class_offset(lv, (S2367C19*)(S4008C6*)(S4008C5*), ABISELECT(96,52), "S4008C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S4008C6*)(S4008C5*), ABISELECT(88,48), "S4008C1");
    check_base_class_offset(lv, (S4008C6*)(S4008C5*), ABISELECT(88,48), "S4008C1");
    check_base_class_offset(lv, (S4008C5*)(S4008C4*), ABISELECT(88,48), "S4008C1");
    /*is_ambiguous_... S4008C1::S4008C6 */ AMB_check_base_class_offset(lv, (S2367C19*)(S4008C6*), ABISELECT(120,64), "S4008C1");
    /*is_ambiguous_... S4008C1::S4008C6 */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S4008C6*), ABISELECT(112,60), "S4008C1");
    /*is_ambiguous_... S4008C4::S4008C6 */ AMB_check_base_class_offset(lv, (S4008C6*)(S4008C4*), ABISELECT(112,60), "S4008C1");
    check_base_class_offset(lv, (S3164C8_nt*)(S4008C4*), ABISELECT(24,12), "S4008C1");
    check_base_class_offset(lv, (S4008C4*), ABISELECT(16,8), "S4008C1");
    /*is_ambiguous_... S4008C1::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(32,20), "S4008C1");
    check_field_offset(lv, s4008c1f0, ABISELECT(40,24), "S4008C1.s4008c1f0");
    test_class_info(&lv, &cd_S4008C1);
    dp->~S4008C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4008C1(Test_S4008C1, "S4008C1", ABISELECT(136,72));

#else // __cplusplus

extern void _ZN7S4008C1C1Ev();
extern void _ZN7S4008C1D1Ev();
Name_Map name_map_S4008C1[] = {
  NSPAIR(_ZN7S4008C1C1Ev),
  NSPAIR(_ZN7S4008C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4008C2;
extern VTBL_ENTRY _ZTI7S4008C2[];
extern  VTBL_ENTRY _ZTV7S4008C2[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4008C6;
extern VTBL_ENTRY _ZTI7S4008C6[];
extern  VTBL_ENTRY _ZTV7S4008C6[];
extern Class_Descriptor cd_S4008C5;
extern VTBL_ENTRY _ZTI7S4008C5[];
extern  VTBL_ENTRY _ZTV7S4008C5[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4008C6;
extern VTBL_ENTRY _ZTI7S4008C6[];
extern  VTBL_ENTRY _ZTV7S4008C6[];
extern Class_Descriptor cd_S3164C8_nt;
extern VTBL_ENTRY _ZTI10S3164C8_nt[];
extern Class_Descriptor cd_S4008C4;
extern VTBL_ENTRY _ZTI7S4008C4[];
extern  VTBL_ENTRY _ZTV7S4008C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S4008C4[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S4008C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4008C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2367C19,    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
    4, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    4, //immediately_derived
  0, 0},
  {&cd_S4008C6,    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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S4008C5,    ABISELECT(88,48), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2367C19,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4008C6,    ABISELECT(112,60), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3164C8_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4008C4,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //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_S5228C4_nt,    ABISELECT(32,20), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4008C1[];
extern void _ZN7S4008C1D1Ev();
extern void _ZN7S4008C1D0Ev();
extern void ABISELECT(_ZThn16_N7S4008C1D1Ev,_ZThn8_N7S4008C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S4008C1D0Ev,_ZThn8_N7S4008C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S4008C1D1Ev,_ZThn20_N7S4008C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S4008C1D0Ev,_ZThn20_N7S4008C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S4008C1D1Ev,_ZTv0_n12_N7S4008C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S4008C1D1Ev,_ZThn48_N7S4008C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C1D0Ev,_ZTv0_n12_N7S4008C1D0Ev)();
extern void ABISELECT(_ZThn88_N7S4008C1D0Ev,_ZThn48_N7S4008C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C1D1Ev,_ZTv0_n12_N7S4008C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S4008C1D1Ev,_ZThn60_N7S4008C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C1D0Ev,_ZTv0_n12_N7S4008C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S4008C1D0Ev,_ZThn60_N7S4008C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S4008C1[] = {
  ABISELECT(112,60),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S4008C1[0]),
  (VTBL_ENTRY)&_ZN7S4008C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4008C1D0Ev,
  ABISELECT(96,52),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S4008C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4008C1D1Ev,_ZThn8_N7S4008C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4008C1D0Ev,_ZThn8_N7S4008C1D0Ev),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S4008C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S4008C1D1Ev,_ZThn20_N7S4008C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S4008C1D0Ev,_ZThn20_N7S4008C1D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S4008C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C1D1Ev,_ZTv0_n12_N7S4008C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C1D0Ev,_ZTv0_n12_N7S4008C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S4008C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C1D1Ev,_ZTv0_n12_N7S4008C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C1D0Ev,_ZTv0_n12_N7S4008C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S4008C1[];
extern void _ZN7S4008C4D1Ev();
extern void _ZN7S4008C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S4008C4__7S4008C1[] = {
  ABISELECT(96,52),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S4008C4[0]),
  (VTBL_ENTRY)&_ZN7S4008C4D1Ev,
  (VTBL_ENTRY)&_ZN7S4008C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S4008C4D1Ev,_ZTv0_n12_N7S4008C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S4008C4D1Ev,_ZThn40_N7S4008C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C4D0Ev,_ZTv0_n12_N7S4008C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S4008C4D0Ev,_ZThn40_N7S4008C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S4008C5__7S4008C4__7S4008C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S4008C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C4D1Ev,_ZTv0_n12_N7S4008C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C4D0Ev,_ZTv0_n12_N7S4008C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S4008C4D1Ev,_ZTv0_n12_N7S4008C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S4008C4D1Ev,_ZThn52_N7S4008C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4008C4D0Ev,_ZTv0_n12_N7S4008C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S4008C4D0Ev,_ZThn52_N7S4008C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S4008C6__A1__7S4008C4__7S4008C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S4008C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C4D1Ev,_ZTv0_n12_N7S4008C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4008C4D0Ev,_ZTv0_n12_N7S4008C4D0Ev),
};
static  VTT_ENTRY vtt_S4008C1[] = {
  {&(_ZTV7S4008C1[4]),  4,26},
  {&(_tg__ZTV7S4008C4__7S4008C1[4]),  4,6},
  {&(_tg__ZTV7S4008C5__7S4008C4__7S4008C1[3]),  3,5},
  {&(_tg__ZTV7S4008C6__A1__7S4008C4__7S4008C1[3]),  3,5},
  {&(_ZTV7S4008C1[10]),  10,26},
  {&(_ZTV7S4008C1[19]),  19,26},
  {&(_ZTV7S4008C1[24]),  24,26},
};
extern VTBL_ENTRY _ZTI7S4008C1[];
extern  VTBL_ENTRY _ZTV7S4008C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S4008C1[];
static VTBL_ENTRY alt_thunk_names162[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4008C4D0Ev,_ZTv0_n12_N7S4008C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S4008C4D0Ev,_ZThn52_N7S4008C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S4008C4D0Ev,_ZThn40_N7S4008C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4008C4D1Ev,_ZTv0_n12_N7S4008C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S4008C4D1Ev,_ZThn52_N7S4008C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S4008C4D1Ev,_ZThn40_N7S4008C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4008C1D0Ev,_ZTv0_n12_N7S4008C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S4008C1D0Ev,_ZThn60_N7S4008C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S4008C1D0Ev,_ZThn48_N7S4008C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4008C1D1Ev,_ZTv0_n12_N7S4008C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S4008C1D1Ev,_ZThn60_N7S4008C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S4008C1D1Ev,_ZThn48_N7S4008C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S4008C1 = {  "S4008C1", // class name
  bases_S4008C1, 12,
  &(vtc_S4008C1[0]), // expected_vtbl_contents
  &(vtt_S4008C1[0]), // expected_vtt_contents
  ABISELECT(136,72), // object size
  NSPAIRA(_ZTI7S4008C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S4008C1),26, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S4008C1),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names162,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13735C5_nt  {
  int s13735c5f0;
  void  mf13735c5(); // _ZN11S13735C5_nt9mf13735c5Ev
  virtual  ~S13735C5_nt(); // _ZN11S13735C5_ntD1Ev
  S13735C5_nt(); // tgen
};
//SIG(-1 S13735C5_nt) C1{ vd m Fi}


void  S13735C5_nt ::mf13735c5(){}
 S13735C5_nt ::~S13735C5_nt(){ note_dtor("S13735C5_nt", this);}
S13735C5_nt ::S13735C5_nt(){ note_ctor("S13735C5_nt", this);} // tgen

//skip512 S13735C5_nt

#else // __cplusplus

extern void _ZN11S13735C5_ntC1Ev();
extern void _ZN11S13735C5_ntD1Ev();
Name_Map name_map_S13735C5_nt[] = {
  NSPAIR(_ZN11S13735C5_ntC1Ev),
  NSPAIR(_ZN11S13735C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S13735C5_nt[];
extern void _ZN11S13735C5_ntD1Ev();
extern void _ZN11S13735C5_ntD0Ev();
static  VTBL_ENTRY vtc_S13735C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S13735C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S13735C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S13735C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S13735C5_nt[];
VTBL_ENTRY *P__ZTI11S13735C5_nt = _ZTI11S13735C5_nt; 
extern  VTBL_ENTRY _ZTV11S13735C5_nt[];
Class_Descriptor cd_S13735C5_nt = {  "S13735C5_nt", // class name
  0,0,//no base classes
  &(vtc_S13735C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S13735C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S13735C5_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  S13735C4  : S13735C5_nt {
  void *s13735c4f0;
  int s13735c4f1;
  ::S18033C5 s13735c4f2;
  ~S13735C4(); // tgen
  S13735C4(); // tgen
};
//SIG(-1 S13735C4) C1{ BC2{ vd m Fi} Fp Fi FC3{ m Fp[2]}}


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

static void Test_S13735C4()
{
  extern Class_Descriptor cd_S13735C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S13735C4, buf);
    S13735C4 *dp, &lv = *(dp=new (buf) S13735C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S13735C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13735C4)");
    check_base_class_offset(lv, (S13735C5_nt*), 0, "S13735C4");
    check_field_offset(lv, s13735c4f0, ABISELECT(16,8), "S13735C4.s13735c4f0");
    check_field_offset(lv, s13735c4f1, ABISELECT(24,12), "S13735C4.s13735c4f1");
    check_field_offset(lv, s13735c4f2, ABISELECT(32,16), "S13735C4.s13735c4f2");
    test_class_info(&lv, &cd_S13735C4);
    dp->~S13735C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS13735C4(Test_S13735C4, "S13735C4", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S13735C4C1Ev();
extern void _ZN8S13735C4D1Ev();
Name_Map name_map_S13735C4[] = {
  NSPAIR(_ZN8S13735C4C1Ev),
  NSPAIR(_ZN8S13735C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S13735C5_nt;
extern VTBL_ENTRY _ZTI11S13735C5_nt[];
extern  VTBL_ENTRY _ZTV11S13735C5_nt[];
static Base_Class bases_S13735C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S13735C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S13735C4[];
extern void _ZN8S13735C4D1Ev();
extern void _ZN8S13735C4D0Ev();
static  VTBL_ENTRY vtc_S13735C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S13735C4[0]),
  (VTBL_ENTRY)&_ZN8S13735C4D1Ev,
  (VTBL_ENTRY)&_ZN8S13735C4D0Ev,
};
extern VTBL_ENTRY _ZTI8S13735C4[];
extern  VTBL_ENTRY _ZTV8S13735C4[];
Class_Descriptor cd_S13735C4 = {  "S13735C4", // class name
  bases_S13735C4, 1,
  &(vtc_S13735C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S13735C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S13735C4),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  S13735C1  {
  __tsi64 s13735c1f0;
  ::S2213C20_nt s13735c1f1;
  ::S2213C20_nt s13735c1f2;
  ::S13735C4 s13735c1f3;
  ::S2213C20_nt s13735c1f4;
  int s13735c1f5;
  ::S2213C20_nt s13735c1f6;
  ::S3164C31_nt s13735c1f7;
  int s13735c1f8;
  ::S18288C8_nt s13735c1f9;
};
//SIG(1 S13735C1) C1{ FL FC2{ m Fp Fi FC3{ m}} FC2 FC4{ BC5{ vd m Fi} Fp Fi FC6{ m Fp[2]}} FC2 Fi FC2 FC7{ m} Fi FC8{ FC9{ Fc[20]} Fc[16]}}



static void Test_S13735C1()
{
  {
    init_simple_test("S13735C1");
    S13735C1 lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S13735C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13735C1)");
    check_field_offset(lv, s13735c1f0, 0, "S13735C1.s13735c1f0");
    check_field_offset(lv, s13735c1f1, 8, "S13735C1.s13735c1f1");
    check_field_offset(lv, s13735c1f2, ABISELECT(24,20), "S13735C1.s13735c1f2");
    check_field_offset(lv, s13735c1f3, ABISELECT(40,32), "S13735C1.s13735c1f3");
    check_field_offset(lv, s13735c1f4, ABISELECT(88,56), "S13735C1.s13735c1f4");
    check_field_offset(lv, s13735c1f5, ABISELECT(104,68), "S13735C1.s13735c1f5");
    check_field_offset(lv, s13735c1f6, ABISELECT(112,72), "S13735C1.s13735c1f6");
    check_field_offset(lv, s13735c1f7, ABISELECT(128,84), "S13735C1.s13735c1f7");
    check_field_offset(lv, s13735c1f8, ABISELECT(132,88), "S13735C1.s13735c1f8");
    check_field_offset(lv, s13735c1f9, ABISELECT(136,92), "S13735C1.s13735c1f9");
  }
}
static Arrange_To_Call_Me vS13735C1(Test_S13735C1, "S13735C1", ABISELECT(176,128));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10227C2_nt  {
  virtual  ~S10227C2_nt(); // _ZN11S10227C2_ntD1Ev
  virtual void  v8(); // _ZN11S10227C2_nt2v8Ev
  virtual void  v9(); // _ZN11S10227C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10227C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10227C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10227C2_nt3v12Ev
  virtual void  v13(); // _ZN11S10227C2_nt3v13Ev
  virtual void  v14(); // _ZN11S10227C2_nt3v14Ev
  S10227C2_nt(); // tgen
};
//SIG(-1 S10227C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S10227C2_nt ::~S10227C2_nt(){ note_dtor("S10227C2_nt", this);}
void  S10227C2_nt ::v8(){vfunc_called(this, "_ZN11S10227C2_nt2v8Ev");}
void  S10227C2_nt ::v9(){vfunc_called(this, "_ZN11S10227C2_nt2v9Ev");}
void  S10227C2_nt ::v10(){vfunc_called(this, "_ZN11S10227C2_nt3v10Ev");}
void  S10227C2_nt ::v11(){vfunc_called(this, "_ZN11S10227C2_nt3v11Ev");}
void  S10227C2_nt ::v12(){vfunc_called(this, "_ZN11S10227C2_nt3v12Ev");}
void  S10227C2_nt ::v13(){vfunc_called(this, "_ZN11S10227C2_nt3v13Ev");}
void  S10227C2_nt ::v14(){vfunc_called(this, "_ZN11S10227C2_nt3v14Ev");}
S10227C2_nt ::S10227C2_nt(){ note_ctor("S10227C2_nt", this);} // tgen

//skip512 S10227C2_nt

#else // __cplusplus

extern void _ZN11S10227C2_ntC1Ev();
extern void _ZN11S10227C2_ntD1Ev();
Name_Map name_map_S10227C2_nt[] = {
  NSPAIR(_ZN11S10227C2_ntC1Ev),
  NSPAIR(_ZN11S10227C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10227C2_nt[];
extern void _ZN11S10227C2_ntD1Ev();
extern void _ZN11S10227C2_ntD0Ev();
extern void _ZN11S10227C2_nt2v8Ev();
extern void _ZN11S10227C2_nt2v9Ev();
extern void _ZN11S10227C2_nt3v10Ev();
extern void _ZN11S10227C2_nt3v11Ev();
extern void _ZN11S10227C2_nt3v12Ev();
extern void _ZN11S10227C2_nt3v13Ev();
extern void _ZN11S10227C2_nt3v14Ev();
static  VTBL_ENTRY vtc_S10227C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10227C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10227C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI11S10227C2_nt[];
VTBL_ENTRY *P__ZTI11S10227C2_nt = _ZTI11S10227C2_nt; 
extern  VTBL_ENTRY _ZTV11S10227C2_nt[];
Class_Descriptor cd_S10227C2_nt = {  "S10227C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10227C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S10227C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10227C2_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10227C1  : S10227C2_nt {
  char s10227c1f0;
  void *s10227c1f1;
  ::S2213C25 s10227c1f2;
  void *s10227c1f3[2];
  int s10227c1f4;
  virtual  ~S10227C1(); // _ZN8S10227C1D1Ev
  virtual void  v1(); // _ZN8S10227C12v1Ev
  virtual void  v2(); // _ZN8S10227C12v2Ev
  virtual void  v3(); // _ZN8S10227C12v3Ev
  virtual void  v4(); // _ZN8S10227C12v4Ev
  virtual void  v5(); // _ZN8S10227C12v5Ev
  virtual void  v6(); // _ZN8S10227C12v6Ev
  virtual void  v7(); // _ZN8S10227C12v7Ev
  S10227C1(); // tgen
};
//SIG(1 S10227C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 v6 v7 Fc Fp FC3{ BC4{ m Fp Fi FC5{ m} FC5}} Fp[2] Fi}


 S10227C1 ::~S10227C1(){ note_dtor("S10227C1", this);}
void  S10227C1 ::v1(){vfunc_called(this, "_ZN8S10227C12v1Ev");}
void  S10227C1 ::v2(){vfunc_called(this, "_ZN8S10227C12v2Ev");}
void  S10227C1 ::v3(){vfunc_called(this, "_ZN8S10227C12v3Ev");}
void  S10227C1 ::v4(){vfunc_called(this, "_ZN8S10227C12v4Ev");}
void  S10227C1 ::v5(){vfunc_called(this, "_ZN8S10227C12v5Ev");}
void  S10227C1 ::v6(){vfunc_called(this, "_ZN8S10227C12v6Ev");}
void  S10227C1 ::v7(){vfunc_called(this, "_ZN8S10227C12v7Ev");}
S10227C1 ::S10227C1(){ note_ctor("S10227C1", this);} // tgen

static void Test_S10227C1()
{
  extern Class_Descriptor cd_S10227C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S10227C1, buf);
    S10227C1 *dp, &lv = *(dp=new (buf) S10227C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S10227C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10227C1)");
    check_base_class_offset(lv, (S10227C2_nt*), 0, "S10227C1");
    check_field_offset(lv, s10227c1f0, ABISELECT(8,4), "S10227C1.s10227c1f0");
    check_field_offset(lv, s10227c1f1, ABISELECT(16,8), "S10227C1.s10227c1f1");
    check_field_offset(lv, s10227c1f2, ABISELECT(24,12), "S10227C1.s10227c1f2");
    check_field_offset(lv, s10227c1f3, ABISELECT(40,24), "S10227C1.s10227c1f3");
    check_field_offset(lv, s10227c1f4, ABISELECT(56,32), "S10227C1.s10227c1f4");
    test_class_info(&lv, &cd_S10227C1);
    dp->~S10227C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10227C1(Test_S10227C1, "S10227C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S10227C1C1Ev();
extern void _ZN8S10227C1D1Ev();
Name_Map name_map_S10227C1[] = {
  NSPAIR(_ZN8S10227C1C1Ev),
  NSPAIR(_ZN8S10227C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10227C2_nt;
extern VTBL_ENTRY _ZTI11S10227C2_nt[];
extern  VTBL_ENTRY _ZTV11S10227C2_nt[];
static Base_Class bases_S10227C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10227C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10227C1[];
extern void _ZN8S10227C1D1Ev();
extern void _ZN8S10227C1D0Ev();
extern void _ZN11S10227C2_nt2v8Ev();
extern void _ZN11S10227C2_nt2v9Ev();
extern void _ZN11S10227C2_nt3v10Ev();
extern void _ZN11S10227C2_nt3v11Ev();
extern void _ZN11S10227C2_nt3v12Ev();
extern void _ZN11S10227C2_nt3v13Ev();
extern void _ZN11S10227C2_nt3v14Ev();
extern void _ZN8S10227C12v1Ev();
extern void _ZN8S10227C12v2Ev();
extern void _ZN8S10227C12v3Ev();
extern void _ZN8S10227C12v4Ev();
extern void _ZN8S10227C12v5Ev();
extern void _ZN8S10227C12v6Ev();
extern void _ZN8S10227C12v7Ev();
static  VTBL_ENTRY vtc_S10227C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10227C1[0]),
  (VTBL_ENTRY)&_ZN8S10227C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10227C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10227C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S10227C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10227C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10227C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10227C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10227C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10227C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10227C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S10227C1[];
extern  VTBL_ENTRY _ZTV8S10227C1[];
Class_Descriptor cd_S10227C1 = {  "S10227C1", // class name
  bases_S10227C1, 1,
  &(vtc_S10227C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S10227C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10227C1),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  S10061C2  {
  virtual  ~S10061C2(); // _ZN8S10061C2D1Ev
  virtual void  v6(); // _ZN8S10061C22v6Ev
  virtual void  v7(); // _ZN8S10061C22v7Ev
  virtual void  v8(); // _ZN8S10061C22v8Ev
  virtual void  v9(); // _ZN8S10061C22v9Ev
  virtual void  v10(); // _ZN8S10061C23v10Ev
  virtual void  v11(); // _ZN8S10061C23v11Ev
  virtual void  v12(); // _ZN8S10061C23v12Ev
  S10061C2(); // tgen
};
//SIG(-1 S10061C2) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S10061C2 ::~S10061C2(){ note_dtor("S10061C2", this);}
void  S10061C2 ::v6(){vfunc_called(this, "_ZN8S10061C22v6Ev");}
void  S10061C2 ::v7(){vfunc_called(this, "_ZN8S10061C22v7Ev");}
void  S10061C2 ::v8(){vfunc_called(this, "_ZN8S10061C22v8Ev");}
void  S10061C2 ::v9(){vfunc_called(this, "_ZN8S10061C22v9Ev");}
void  S10061C2 ::v10(){vfunc_called(this, "_ZN8S10061C23v10Ev");}
void  S10061C2 ::v11(){vfunc_called(this, "_ZN8S10061C23v11Ev");}
void  S10061C2 ::v12(){vfunc_called(this, "_ZN8S10061C23v12Ev");}
S10061C2 ::S10061C2(){ note_ctor("S10061C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10061C2C1Ev();
extern void _ZN8S10061C2D1Ev();
Name_Map name_map_S10061C2[] = {
  NSPAIR(_ZN8S10061C2C1Ev),
  NSPAIR(_ZN8S10061C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10061C2[];
extern void _ZN8S10061C2D1Ev();
extern void _ZN8S10061C2D0Ev();
extern void _ZN8S10061C22v6Ev();
extern void _ZN8S10061C22v7Ev();
extern void _ZN8S10061C22v8Ev();
extern void _ZN8S10061C22v9Ev();
extern void _ZN8S10061C23v10Ev();
extern void _ZN8S10061C23v11Ev();
extern void _ZN8S10061C23v12Ev();
static  VTBL_ENTRY vtc_S10061C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10061C2[0]),
  (VTBL_ENTRY)&_ZN8S10061C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10061C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10061C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10061C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10061C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10061C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10061C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10061C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10061C23v12Ev,
};
extern VTBL_ENTRY _ZTI8S10061C2[];
extern  VTBL_ENTRY _ZTV8S10061C2[];
Class_Descriptor cd_S10061C2 = {  "S10061C2", // class name
  0,0,//no base classes
  &(vtc_S10061C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10061C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10061C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10061C3_nt  {
  void *s10061c3f0;
  int s10061c3f1[3];
};
//SIG(1 S10061C3_nt) C1{ Fp Fi[3]}



//skip512 S10061C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10061C1  : S10061C2 {
  void *s10061c1f0;
  ::S10061C3_nt s10061c1f1[9];
  int s10061c1f2;
  char s10061c1f3;
  int s10061c1f4;
  ::S2367C8_nt s10061c1f5;
  int s10061c1f6[3];
  void *s10061c1f7;
  int s10061c1f8;
  virtual  ~S10061C1(); // _ZN8S10061C1D1Ev
  virtual void  v1(); // _ZN8S10061C12v1Ev
  virtual void  v2(); // _ZN8S10061C12v2Ev
  virtual void  v3(); // _ZN8S10061C12v3Ev
  virtual void  v4(); // _ZN8S10061C12v4Ev
  virtual void  v5(); // _ZN8S10061C12v5Ev
  S10061C1(); // tgen
};
//SIG(1 S10061C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12} vd v1 v2 v3 v4 v5 Fp FC3{ Fp Fi[3]}[9] Fi Fc Fi FC4{ FL[4]} Fi[3] Fp Fi}


 S10061C1 ::~S10061C1(){ note_dtor("S10061C1", this);}
void  S10061C1 ::v1(){vfunc_called(this, "_ZN8S10061C12v1Ev");}
void  S10061C1 ::v2(){vfunc_called(this, "_ZN8S10061C12v2Ev");}
void  S10061C1 ::v3(){vfunc_called(this, "_ZN8S10061C12v3Ev");}
void  S10061C1 ::v4(){vfunc_called(this, "_ZN8S10061C12v4Ev");}
void  S10061C1 ::v5(){vfunc_called(this, "_ZN8S10061C12v5Ev");}
S10061C1 ::S10061C1(){ note_ctor("S10061C1", this);} // tgen

static void Test_S10061C1()
{
  extern Class_Descriptor cd_S10061C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,55)];
    init_test(&cd_S10061C1, buf);
    S10061C1 *dp, &lv = *(dp=new (buf) S10061C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,216), "sizeof(S10061C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10061C1)");
    check_base_class_offset(lv, (S10061C2*), 0, "S10061C1");
    check_field_offset(lv, s10061c1f0, ABISELECT(8,4), "S10061C1.s10061c1f0");
    check_field_offset(lv, s10061c1f1, ABISELECT(16,8), "S10061C1.s10061c1f1");
    check_field_offset(lv, s10061c1f2, ABISELECT(232,152), "S10061C1.s10061c1f2");
    check_field_offset(lv, s10061c1f3, ABISELECT(236,156), "S10061C1.s10061c1f3");
    check_field_offset(lv, s10061c1f4, ABISELECT(240,160), "S10061C1.s10061c1f4");
    check_field_offset(lv, s10061c1f5, ABISELECT(248,164), "S10061C1.s10061c1f5");
    check_field_offset(lv, s10061c1f6, ABISELECT(280,196), "S10061C1.s10061c1f6");
    check_field_offset(lv, s10061c1f7, ABISELECT(296,208), "S10061C1.s10061c1f7");
    check_field_offset(lv, s10061c1f8, ABISELECT(304,212), "S10061C1.s10061c1f8");
    test_class_info(&lv, &cd_S10061C1);
    dp->~S10061C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10061C1(Test_S10061C1, "S10061C1", ABISELECT(312,216));

#else // __cplusplus

extern void _ZN8S10061C1C1Ev();
extern void _ZN8S10061C1D1Ev();
Name_Map name_map_S10061C1[] = {
  NSPAIR(_ZN8S10061C1C1Ev),
  NSPAIR(_ZN8S10061C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10061C2;
extern VTBL_ENTRY _ZTI8S10061C2[];
extern  VTBL_ENTRY _ZTV8S10061C2[];
static Base_Class bases_S10061C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10061C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10061C1[];
extern void _ZN8S10061C1D1Ev();
extern void _ZN8S10061C1D0Ev();
extern void _ZN8S10061C22v6Ev();
extern void _ZN8S10061C22v7Ev();
extern void _ZN8S10061C22v8Ev();
extern void _ZN8S10061C22v9Ev();
extern void _ZN8S10061C23v10Ev();
extern void _ZN8S10061C23v11Ev();
extern void _ZN8S10061C23v12Ev();
extern void _ZN8S10061C12v1Ev();
extern void _ZN8S10061C12v2Ev();
extern void _ZN8S10061C12v3Ev();
extern void _ZN8S10061C12v4Ev();
extern void _ZN8S10061C12v5Ev();
static  VTBL_ENTRY vtc_S10061C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10061C1[0]),
  (VTBL_ENTRY)&_ZN8S10061C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10061C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10061C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10061C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10061C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10061C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10061C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10061C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10061C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10061C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10061C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10061C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10061C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10061C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10061C1[];
extern  VTBL_ENTRY _ZTV8S10061C1[];
Class_Descriptor cd_S10061C1 = {  "S10061C1", // class name
  bases_S10061C1, 1,
  &(vtc_S10061C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,216), // object size
  NSPAIRA(_ZTI8S10061C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10061C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20244C2  {
  long double s20244c2f0;
  void *s20244c2f1;
  virtual void  v5(); // _ZN8S20244C22v5Ev
  virtual void  v6(); // _ZN8S20244C22v6Ev
  virtual void  v7(); // _ZN8S20244C22v7Ev
  virtual void  v8(); // _ZN8S20244C22v8Ev
  ~S20244C2(); // tgen
  S20244C2(); // tgen
};
//SIG(-1 S20244C2) C1{ v1 v2 v3 v4 FD Fp}


void  S20244C2 ::v5(){vfunc_called(this, "_ZN8S20244C22v5Ev");}
void  S20244C2 ::v6(){vfunc_called(this, "_ZN8S20244C22v6Ev");}
void  S20244C2 ::v7(){vfunc_called(this, "_ZN8S20244C22v7Ev");}
void  S20244C2 ::v8(){vfunc_called(this, "_ZN8S20244C22v8Ev");}
S20244C2 ::~S20244C2(){ note_dtor("S20244C2", this);} // tgen
S20244C2 ::S20244C2(){ note_ctor("S20244C2", this);} // tgen

static void Test_S20244C2()
{
  extern Class_Descriptor cd_S20244C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20244C2, buf);
    S20244C2 *dp, &lv = *(dp=new (buf) S20244C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S20244C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20244C2)");
    check_field_offset(lv, s20244c2f0, ABISELECT(16,4), "S20244C2.s20244c2f0");
    check_field_offset(lv, s20244c2f1, ABISELECT(32,16), "S20244C2.s20244c2f1");
    test_class_info(&lv, &cd_S20244C2);
    dp->~S20244C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20244C2(Test_S20244C2, "S20244C2", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S20244C2C1Ev();
extern void _ZN8S20244C2D1Ev();
Name_Map name_map_S20244C2[] = {
  NSPAIR(_ZN8S20244C2C1Ev),
  NSPAIR(_ZN8S20244C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20244C2[];
extern void _ZN8S20244C22v5Ev();
extern void _ZN8S20244C22v6Ev();
extern void _ZN8S20244C22v7Ev();
extern void _ZN8S20244C22v8Ev();
static  VTBL_ENTRY vtc_S20244C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20244C2[0]),
  (VTBL_ENTRY)&_ZN8S20244C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20244C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20244C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20244C22v8Ev,
};
extern VTBL_ENTRY _ZTI8S20244C2[];
extern  VTBL_ENTRY _ZTV8S20244C2[];
Class_Descriptor cd_S20244C2 = {  "S20244C2", // class name
  0,0,//no base classes
  &(vtc_S20244C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S20244C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20244C2),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  S20244C4  {
  void *s20244c4f0;
  virtual void  v9(); // _ZN8S20244C42v9Ev
  virtual void  v10(); // _ZN8S20244C43v10Ev
  virtual void  v11(); // _ZN8S20244C43v11Ev
  virtual void  v12(); // _ZN8S20244C43v12Ev
  ~S20244C4(); // tgen
  S20244C4(); // tgen
};
//SIG(-1 S20244C4) C1{ v1 v2 v3 v4 Fp}


void  S20244C4 ::v9(){vfunc_called(this, "_ZN8S20244C42v9Ev");}
void  S20244C4 ::v10(){vfunc_called(this, "_ZN8S20244C43v10Ev");}
void  S20244C4 ::v11(){vfunc_called(this, "_ZN8S20244C43v11Ev");}
void  S20244C4 ::v12(){vfunc_called(this, "_ZN8S20244C43v12Ev");}
S20244C4 ::~S20244C4(){ note_dtor("S20244C4", this);} // tgen
S20244C4 ::S20244C4(){ note_ctor("S20244C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20244C4C1Ev();
extern void _ZN8S20244C4D1Ev();
Name_Map name_map_S20244C4[] = {
  NSPAIR(_ZN8S20244C4C1Ev),
  NSPAIR(_ZN8S20244C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20244C4[];
extern void _ZN8S20244C42v9Ev();
extern void _ZN8S20244C43v10Ev();
extern void _ZN8S20244C43v11Ev();
extern void _ZN8S20244C43v12Ev();
static  VTBL_ENTRY vtc_S20244C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20244C4[0]),
  (VTBL_ENTRY)&_ZN8S20244C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S20244C4[];
extern  VTBL_ENTRY _ZTV8S20244C4[];
Class_Descriptor cd_S20244C4 = {  "S20244C4", // class name
  0,0,//no base classes
  &(vtc_S20244C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20244C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20244C4),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  S20244C3  : virtual S20244C4 {
  void *s20244c3f0;
  char s20244c3f1[4];
  virtual void  v13(); // _ZN8S20244C33v13Ev
  virtual void  v14(); // _ZN8S20244C33v14Ev
  virtual void  v15(); // _ZN8S20244C33v15Ev
  virtual void  v16(); // _ZN8S20244C33v16Ev
  virtual void  v17(); // _ZN8S20244C33v17Ev
  virtual void  v18(); // _ZN8S20244C33v18Ev
  virtual void  v19(); // _ZN8S20244C33v19Ev
  ~S20244C3(); // tgen
  S20244C3(); // tgen
};
//SIG(-1 S20244C3) C1{ VBC2{ v8 v9 v10 v11 Fp} v1 v2 v3 v4 v5 v6 v7 Fp Fc[4]}


void  S20244C3 ::v13(){vfunc_called(this, "_ZN8S20244C33v13Ev");}
void  S20244C3 ::v14(){vfunc_called(this, "_ZN8S20244C33v14Ev");}
void  S20244C3 ::v15(){vfunc_called(this, "_ZN8S20244C33v15Ev");}
void  S20244C3 ::v16(){vfunc_called(this, "_ZN8S20244C33v16Ev");}
void  S20244C3 ::v17(){vfunc_called(this, "_ZN8S20244C33v17Ev");}
void  S20244C3 ::v18(){vfunc_called(this, "_ZN8S20244C33v18Ev");}
void  S20244C3 ::v19(){vfunc_called(this, "_ZN8S20244C33v19Ev");}
S20244C3 ::~S20244C3(){ note_dtor("S20244C3", this);} // tgen
S20244C3 ::S20244C3(){ note_ctor("S20244C3", this);} // tgen

static void Test_S20244C3()
{
  extern Class_Descriptor cd_S20244C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20244C3, buf);
    S20244C3 *dp, &lv = *(dp=new (buf) S20244C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20244C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20244C3)");
    check_base_class_offset(lv, (S20244C4*), ABISELECT(24,12), "S20244C3");
    check_field_offset(lv, s20244c3f0, ABISELECT(8,4), "S20244C3.s20244c3f0");
    check_field_offset(lv, s20244c3f1, ABISELECT(16,8), "S20244C3.s20244c3f1");
    test_class_info(&lv, &cd_S20244C3);
    dp->~S20244C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20244C3(Test_S20244C3, "S20244C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S20244C3C1Ev();
extern void _ZN8S20244C3D1Ev();
Name_Map name_map_S20244C3[] = {
  NSPAIR(_ZN8S20244C3C1Ev),
  NSPAIR(_ZN8S20244C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20244C4;
extern VTBL_ENTRY _ZTI8S20244C4[];
extern  VTBL_ENTRY _ZTV8S20244C4[];
static Base_Class bases_S20244C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20244C4,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20244C3[];
extern void _ZN8S20244C33v13Ev();
extern void _ZN8S20244C33v14Ev();
extern void _ZN8S20244C33v15Ev();
extern void _ZN8S20244C33v16Ev();
extern void _ZN8S20244C33v17Ev();
extern void _ZN8S20244C33v18Ev();
extern void _ZN8S20244C33v19Ev();
extern void _ZN8S20244C42v9Ev();
extern void _ZN8S20244C43v10Ev();
extern void _ZN8S20244C43v11Ev();
extern void _ZN8S20244C43v12Ev();
static  VTBL_ENTRY vtc_S20244C3[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20244C3[0]),
  (VTBL_ENTRY)&_ZN8S20244C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v19Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20244C3[0]),
  (VTBL_ENTRY)&_ZN8S20244C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20244C3[];
static  VTT_ENTRY vtt_S20244C3[] = {
  {&(_ZTV8S20244C3[3]),  3,20},
  {&(_ZTV8S20244C3[16]),  16,20},
};
extern VTBL_ENTRY _ZTI8S20244C3[];
extern  VTBL_ENTRY _ZTV8S20244C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20244C3[];
Class_Descriptor cd_S20244C3 = {  "S20244C3", // class name
  bases_S20244C3, 1,
  &(vtc_S20244C3[0]), // expected_vtbl_contents
  &(vtt_S20244C3[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S20244C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20244C3),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20244C3),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  S20244C1  : virtual S20244C2 , virtual S20244C3 {
  virtual void  v1(); // _ZN8S20244C12v1Ev
  virtual void  v2(); // _ZN8S20244C12v2Ev
  virtual void  v3(); // _ZN8S20244C12v3Ev
  virtual void  v4(); // _ZN8S20244C12v4Ev
  ~S20244C1(); // tgen
  S20244C1(); // tgen
};
//SIG(1 S20244C1) C1{ VBC2{ v5 v6 v7 v8 FD Fp} VBC3{ VBC4{ v9 v10 v11 v12 Fp} v13 v14 v15 v16 v17 v18 v19 Fp Fc[4]} v1 v2 v3 v4}


void  S20244C1 ::v1(){vfunc_called(this, "_ZN8S20244C12v1Ev");}
void  S20244C1 ::v2(){vfunc_called(this, "_ZN8S20244C12v2Ev");}
void  S20244C1 ::v3(){vfunc_called(this, "_ZN8S20244C12v3Ev");}
void  S20244C1 ::v4(){vfunc_called(this, "_ZN8S20244C12v4Ev");}
S20244C1 ::~S20244C1(){ note_dtor("S20244C1", this);} // tgen
S20244C1 ::S20244C1(){ note_ctor("S20244C1", this);} // tgen

static void Test_S20244C1()
{
  extern Class_Descriptor cd_S20244C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20244C1, buf);
    S20244C1 *dp, &lv = *(dp=new (buf) S20244C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,44), "sizeof(S20244C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20244C1)");
    check_base_class_offset(lv, (S20244C2*), ABISELECT(16,4), "S20244C1");
    check_base_class_offset(lv, (S20244C4*)(S20244C3*), ABISELECT(80,36), "S20244C1");
    check_base_class_offset(lv, (S20244C3*), ABISELECT(56,24), "S20244C1");
    test_class_info(&lv, &cd_S20244C1);
    dp->~S20244C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20244C1(Test_S20244C1, "S20244C1", ABISELECT(96,44));

#else // __cplusplus

extern void _ZN8S20244C1C1Ev();
extern void _ZN8S20244C1D1Ev();
Name_Map name_map_S20244C1[] = {
  NSPAIR(_ZN8S20244C1C1Ev),
  NSPAIR(_ZN8S20244C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20244C2;
extern VTBL_ENTRY _ZTI8S20244C2[];
extern  VTBL_ENTRY _ZTV8S20244C2[];
extern Class_Descriptor cd_S20244C4;
extern VTBL_ENTRY _ZTI8S20244C4[];
extern  VTBL_ENTRY _ZTV8S20244C4[];
extern Class_Descriptor cd_S20244C3;
extern VTBL_ENTRY _ZTI8S20244C3[];
extern  VTBL_ENTRY _ZTV8S20244C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20244C3[];
static Base_Class bases_S20244C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20244C2,    ABISELECT(16,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20244C4,    ABISELECT(80,36), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20244C3,    ABISELECT(56,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20244C1[];
extern void _ZN8S20244C12v1Ev();
extern void _ZN8S20244C12v2Ev();
extern void _ZN8S20244C12v3Ev();
extern void _ZN8S20244C12v4Ev();
extern void _ZN8S20244C22v5Ev();
extern void _ZN8S20244C22v6Ev();
extern void _ZN8S20244C22v7Ev();
extern void _ZN8S20244C22v8Ev();
extern void _ZN8S20244C33v13Ev();
extern void _ZN8S20244C33v14Ev();
extern void _ZN8S20244C33v15Ev();
extern void _ZN8S20244C33v16Ev();
extern void _ZN8S20244C33v17Ev();
extern void _ZN8S20244C33v18Ev();
extern void _ZN8S20244C33v19Ev();
extern void _ZN8S20244C42v9Ev();
extern void _ZN8S20244C43v10Ev();
extern void _ZN8S20244C43v11Ev();
extern void _ZN8S20244C43v12Ev();
static  VTBL_ENTRY vtc_S20244C1[] = {
  ABISELECT(80,36),
  ABISELECT(56,24),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20244C1[0]),
  (VTBL_ENTRY)&_ZN8S20244C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20244C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20244C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20244C12v4Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20244C1[0]),
  (VTBL_ENTRY)&_ZN8S20244C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20244C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20244C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20244C22v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI8S20244C1[0]),
  (VTBL_ENTRY)&_ZN8S20244C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v19Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S20244C1[0]),
  (VTBL_ENTRY)&_ZN8S20244C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20244C1[];
extern void _ZN8S20244C33v13Ev();
extern void _ZN8S20244C33v14Ev();
extern void _ZN8S20244C33v15Ev();
extern void _ZN8S20244C33v16Ev();
extern void _ZN8S20244C33v17Ev();
extern void _ZN8S20244C33v18Ev();
extern void _ZN8S20244C33v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20244C3__8S20244C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20244C3[0]),
  (VTBL_ENTRY)&_ZN8S20244C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20244C33v19Ev,
};
extern void _ZN8S20244C42v9Ev();
extern void _ZN8S20244C43v10Ev();
extern void _ZN8S20244C43v11Ev();
extern void _ZN8S20244C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20244C4__8S20244C3__8S20244C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20244C3[0]),
  (VTBL_ENTRY)&_ZN8S20244C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20244C43v12Ev,
};
static  VTT_ENTRY vtt_S20244C1[] = {
  {&(_ZTV8S20244C1[5]),  5,46},
  {&(_ZTV8S20244C1[15]),  15,46},
  {&(_ZTV8S20244C1[29]),  29,46},
  {&(_ZTV8S20244C1[42]),  42,46},
  {&(_tg__ZTV8S20244C3__8S20244C1[3]),  3,10},
  {&(_tg__ZTV8S20244C4__8S20244C3__8S20244C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S20244C1[];
extern  VTBL_ENTRY _ZTV8S20244C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20244C1[];
Class_Descriptor cd_S20244C1 = {  "S20244C1", // class name
  bases_S20244C1, 3,
  &(vtc_S20244C1[0]), // expected_vtbl_contents
  &(vtt_S20244C1[0]), // expected_vtt_contents
  ABISELECT(96,44), // object size
  NSPAIRA(_ZTI8S20244C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20244C1),46, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20244C1),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  S20603C3  : S5228C4_nt {
  void *s20603c3f0;
  ~S20603C3(); // tgen
  S20603C3(); // tgen
};
//SIG(-1 S20603C3) C1{ BC2{ vd m} Fp}


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

static void Test_S20603C3()
{
  extern Class_Descriptor cd_S20603C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20603C3, buf);
    S20603C3 *dp, &lv = *(dp=new (buf) S20603C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20603C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20603C3)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S20603C3");
    check_field_offset(lv, s20603c3f0, ABISELECT(8,4), "S20603C3.s20603c3f0");
    test_class_info(&lv, &cd_S20603C3);
    dp->~S20603C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20603C3(Test_S20603C3, "S20603C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20603C3C1Ev();
extern void _ZN8S20603C3D1Ev();
Name_Map name_map_S20603C3[] = {
  NSPAIR(_ZN8S20603C3C1Ev),
  NSPAIR(_ZN8S20603C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S20603C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20603C3[];
extern void _ZN8S20603C3D1Ev();
extern void _ZN8S20603C3D0Ev();
static  VTBL_ENTRY vtc_S20603C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20603C3[0]),
  (VTBL_ENTRY)&_ZN8S20603C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20603C3D0Ev,
};
extern VTBL_ENTRY _ZTI8S20603C3[];
extern  VTBL_ENTRY _ZTV8S20603C3[];
Class_Descriptor cd_S20603C3 = {  "S20603C3", // class name
  bases_S20603C3, 1,
  &(vtc_S20603C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20603C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20603C3),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  S20603C5  : virtual S2367C19 , virtual S5228C4_nt {
  int s20603c5f0;
  virtual  ~S20603C5(); // _ZN8S20603C5D2Ev
  S20603C5(); // tgen
};
//SIG(-1 S20603C5) C1{ VBC2{ m Fp} VBC3{ vd m} vd Fi}


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

static void Test_S20603C5()
{
  extern Class_Descriptor cd_S20603C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20603C5, buf);
    S20603C5 *dp, &lv = *(dp=new (buf) S20603C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20603C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20603C5)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(16,8), "S20603C5");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S20603C5");
    check_field_offset(lv, s20603c5f0, ABISELECT(8,4), "S20603C5.s20603c5f0");
    test_class_info(&lv, &cd_S20603C5);
    dp->~S20603C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20603C5(Test_S20603C5, "S20603C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20603C5C1Ev();
extern void _ZN8S20603C5D2Ev();
Name_Map name_map_S20603C5[] = {
  NSPAIR(_ZN8S20603C5C1Ev),
  NSPAIR(_ZN8S20603C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S20603C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20603C5[];
extern void _ZN8S20603C5D1Ev();
extern void _ZN8S20603C5D0Ev();
static  VTBL_ENTRY vtc_S20603C5[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20603C5[0]),
  (VTBL_ENTRY)&_ZN8S20603C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20603C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S20603C5[];
static  VTT_ENTRY vtt_S20603C5[] = {
  {&(_ZTV8S20603C5[5]),  5,7},
  {&(_ZTV8S20603C5[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20603C5[];
extern  VTBL_ENTRY _ZTV8S20603C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20603C5[];
Class_Descriptor cd_S20603C5 = {  "S20603C5", // class name
  bases_S20603C5, 2,
  &(vtc_S20603C5[0]), // expected_vtbl_contents
  &(vtt_S20603C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20603C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20603C5),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20603C5),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  S20603C2  : virtual S20603C3 , virtual S20603C5 {
  virtual void  v1(); // _ZN8S20603C22v1Ev
  ~S20603C2(); // tgen
  S20603C2(); // tgen
};
//SIG(-1 S20603C2) C1{ VBC2{ BC3{ vd m} Fp} VBC4{ VBC5{ m Fp} VBC3 vd Fi} v1}


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

static void Test_S20603C2()
{
  extern Class_Descriptor cd_S20603C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20603C2, buf);
    S20603C2 *dp, &lv = *(dp=new (buf) S20603C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20603C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20603C2)");
    check_base_class_offset(lv, (S5228C4_nt*)(S20603C3*), ABISELECT(8,4), "S20603C2");
    check_base_class_offset(lv, (S20603C3*), ABISELECT(8,4), "S20603C2");
    check_base_class_offset(lv, (S2367C19*)(S20603C5*), ABISELECT(40,20), "S20603C2");
    check_base_class_offset(lv, (S5228C4_nt*)(S20603C5*), 0, "S20603C2");
    check_base_class_offset(lv, (S20603C5*), ABISELECT(24,12), "S20603C2");
    test_class_info(&lv, &cd_S20603C2);
    dp->~S20603C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20603C2(Test_S20603C2, "S20603C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S20603C2C1Ev();
extern void _ZN8S20603C2D1Ev();
Name_Map name_map_S20603C2[] = {
  NSPAIR(_ZN8S20603C2C1Ev),
  NSPAIR(_ZN8S20603C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20603C3;
extern VTBL_ENTRY _ZTI8S20603C3[];
extern  VTBL_ENTRY _ZTV8S20603C3[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20603C5;
extern VTBL_ENTRY _ZTI8S20603C5[];
extern  VTBL_ENTRY _ZTV8S20603C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20603C5[];
static Base_Class bases_S20603C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20603C3,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20603C5,    ABISELECT(24,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20603C2[];
extern void ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev)();
extern void _ZN8S20603C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev)();
extern void _ZN8S20603C2D0Ev() __attribute__((weak));
extern void _ZN8S20603C22v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S20603C2D1Ev,_ZThn4_N8S20603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S20603C2D0Ev,_ZThn4_N8S20603C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20603C2D1Ev,_ZThn12_N8S20603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20603C2D0Ev,_ZThn12_N8S20603C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20603C2[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20603C22v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20603C2[];
extern void ABISELECT(_ZTv0_n24_N8S20603C5D1Ev,_ZTv0_n12_N8S20603C5D1Ev)();
extern void _ZN8S20603C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C5D0Ev,_ZTv0_n12_N8S20603C5D0Ev)();
extern void _ZN8S20603C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20603C5__8S20603C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20603C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C5D1Ev,_ZTv0_n12_N8S20603C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C5D0Ev,_ZTv0_n12_N8S20603C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20603C5D1Ev,_ZTv0_n12_N8S20603C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20603C5D0Ev,_ZTv0_n12_N8S20603C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt__8S20603C5__8S20603C2[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20603C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C5D1Ev,_ZTv0_n12_N8S20603C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C5D0Ev,_ZTv0_n12_N8S20603C5D0Ev),
};
static  VTT_ENTRY vtt_S20603C2[] = {
  {&(_ZTV8S20603C2[7]),  7,22},
  {&(_ZTV8S20603C2[13]),  13,22},
  {&(_ZTV8S20603C2[20]),  20,22},
  {&(_ZTV8S20603C2[7]),  7,22},
  {&(_tg__ZTV8S20603C5__8S20603C2[5]),  5,7},
  {&(_tg__ZTV10S5228C4_nt__8S20603C5__8S20603C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20603C2[];
extern  VTBL_ENTRY _ZTV8S20603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20603C2[];
static VTBL_ENTRY alt_thunk_names163[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20603C5D0Ev,_ZTv0_n12_N8S20603C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20603C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20603C5D1Ev,_ZTv0_n12_N8S20603C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20603C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20603C2D0Ev,_ZThn12_N8S20603C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20603C2D0Ev,_ZThn4_N8S20603C2D0Ev),
  (VTBL_ENTRY)_ZN8S20603C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20603C2D1Ev,_ZThn12_N8S20603C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20603C2D1Ev,_ZThn4_N8S20603C2D1Ev),
  (VTBL_ENTRY)_ZN8S20603C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20603C2 = {  "S20603C2", // class name
  bases_S20603C2, 5,
  &(vtc_S20603C2[0]), // expected_vtbl_contents
  &(vtt_S20603C2[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S20603C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20603C2),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20603C2),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names163,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20603C7  : S2367C19 , S5228C4_nt {
  void *s20603c7f0;
  ~S20603C7(); // tgen
  S20603C7(); // tgen
};
//SIG(-1 S20603C7) C1{ BC2{ m Fp} BC3{ vd m} Fp}


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

static void Test_S20603C7()
{
  extern Class_Descriptor cd_S20603C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20603C7, buf);
    S20603C7 *dp, &lv = *(dp=new (buf) S20603C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20603C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20603C7)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S20603C7");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S20603C7");
    check_field_offset(lv, s20603c7f0, ABISELECT(16,8), "S20603C7.s20603c7f0");
    test_class_info(&lv, &cd_S20603C7);
    dp->~S20603C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20603C7(Test_S20603C7, "S20603C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20603C7C1Ev();
extern void _ZN8S20603C7D1Ev();
Name_Map name_map_S20603C7[] = {
  NSPAIR(_ZN8S20603C7C1Ev),
  NSPAIR(_ZN8S20603C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S20603C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20603C7[];
extern void _ZN8S20603C7D1Ev();
extern void _ZN8S20603C7D0Ev();
static  VTBL_ENTRY vtc_S20603C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20603C7[0]),
  (VTBL_ENTRY)&_ZN8S20603C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20603C7D0Ev,
};
extern VTBL_ENTRY _ZTI8S20603C7[];
extern  VTBL_ENTRY _ZTV8S20603C7[];
Class_Descriptor cd_S20603C7 = {  "S20603C7", // class name
  bases_S20603C7, 2,
  &(vtc_S20603C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20603C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20603C7),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  S20603C8  : S5228C4_nt , virtual S2367C19 {
  virtual  ~S20603C8(); // _ZN8S20603C8D2Ev
  S20603C8(); // tgen
};
//SIG(-1 S20603C8) C1{ BC2{ vd m} VBC3{ m Fp} vd}


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

static void Test_S20603C8()
{
  extern Class_Descriptor cd_S20603C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20603C8, buf);
    S20603C8 *dp, &lv = *(dp=new (buf) S20603C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20603C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20603C8)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S20603C8");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S20603C8");
    test_class_info(&lv, &cd_S20603C8);
    dp->~S20603C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20603C8(Test_S20603C8, "S20603C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20603C8C1Ev();
extern void _ZN8S20603C8D2Ev();
Name_Map name_map_S20603C8[] = {
  NSPAIR(_ZN8S20603C8C1Ev),
  NSPAIR(_ZN8S20603C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
static Base_Class bases_S20603C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20603C8[];
extern void _ZN8S20603C8D1Ev();
extern void _ZN8S20603C8D0Ev();
static  VTBL_ENTRY vtc_S20603C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20603C8[0]),
  (VTBL_ENTRY)&_ZN8S20603C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20603C8D0Ev,
};
extern VTBL_ENTRY _ZTV8S20603C8[];
static  VTT_ENTRY vtt_S20603C8[] = {
  {&(_ZTV8S20603C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20603C8[];
extern  VTBL_ENTRY _ZTV8S20603C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20603C8[];
Class_Descriptor cd_S20603C8 = {  "S20603C8", // class name
  bases_S20603C8, 2,
  &(vtc_S20603C8[0]), // expected_vtbl_contents
  &(vtt_S20603C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20603C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20603C8),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20603C8),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20603C1  : virtual S20603C2 , S20603C7 , virtual S20603C8 , virtual S3164C31_nt , S5228C4_nt {
  virtual  ~S20603C1(); // _ZN8S20603C1D2Ev
  S20603C1(); // tgen
};
//SIG(1 S20603C1) C1{ VBC2{ VBC3{ BC4{ vd m} Fp} VBC5{ VBC6{ m Fp} VBC4 vd Fi} v1} BC7{ BC6 BC4 Fp} VBC8{ BC4 VBC6 vd} VBC9{ m} BC4 vd}


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

static void Test_S20603C1()
{
  extern Class_Descriptor cd_S20603C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S20603C1, buf);
    S20603C1 *dp, &lv = *(dp=new (buf) S20603C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S20603C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20603C1)");
    check_base_class_offset(lv, (S5228C4_nt*)(S20603C3*), ABISELECT(40,20), "S20603C1");
    check_base_class_offset(lv, (S20603C3*)(S20603C2*), ABISELECT(40,20), "S20603C1");
    check_base_class_offset(lv, (S2367C19*)(S20603C5*), ABISELECT(72,36), "S20603C1");
    check_base_class_offset(lv, (S2367C19*)(S20603C8*), ABISELECT(72,36), "S20603C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S20603C5*), ABISELECT(32,16), "S20603C1");
    check_base_class_offset(lv, (S20603C5*)(S20603C2*), ABISELECT(56,28), "S20603C1");
    check_base_class_offset(lv, (S20603C2*), ABISELECT(32,16), "S20603C1");
    check_base_class_offset(lv, (S2367C19*)(S20603C7*), ABISELECT(8,4), "S20603C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S20603C7*), 0, "S20603C1");
    check_base_class_offset(lv, (S20603C7*), 0, "S20603C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S20603C8*), ABISELECT(80,40), "S20603C1");
    check_base_class_offset(lv, (S20603C8*), ABISELECT(80,40), "S20603C1");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S20603C1");
    /*is_ambiguous_... S20603C1::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(24,12), "S20603C1");
    test_class_info(&lv, &cd_S20603C1);
    dp->~S20603C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20603C1(Test_S20603C1, "S20603C1", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN8S20603C1C1Ev();
extern void _ZN8S20603C1D2Ev();
Name_Map name_map_S20603C1[] = {
  NSPAIR(_ZN8S20603C1C1Ev),
  NSPAIR(_ZN8S20603C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20603C3;
extern VTBL_ENTRY _ZTI8S20603C3[];
extern  VTBL_ENTRY _ZTV8S20603C3[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20603C5;
extern VTBL_ENTRY _ZTI8S20603C5[];
extern  VTBL_ENTRY _ZTV8S20603C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20603C5[];
extern Class_Descriptor cd_S20603C2;
extern VTBL_ENTRY _ZTI8S20603C2[];
extern  VTBL_ENTRY _ZTV8S20603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20603C2[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20603C7;
extern VTBL_ENTRY _ZTI8S20603C7[];
extern  VTBL_ENTRY _ZTV8S20603C7[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S20603C8;
extern VTBL_ENTRY _ZTI8S20603C8[];
extern  VTBL_ENTRY _ZTV8S20603C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20603C8[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S20603C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_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
    1, //immediately_derived
  0, 0},
  {&cd_S20603C3,    ABISELECT(40,20), //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S2367C19,    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
    4, //immediately_derived
  0, 1},
  {&cd_S5228C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20603C5,    ABISELECT(56,28), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20603C2,    ABISELECT(32,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20603C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S5228C4_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20603C8,    ABISELECT(80,40), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5228C4_nt,    ABISELECT(24,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20603C1[];
extern void _ZN8S20603C1D1Ev();
extern void _ZN8S20603C1D0Ev();
extern void ABISELECT(_ZThn24_N8S20603C1D1Ev,_ZThn12_N8S20603C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S20603C1D0Ev,_ZThn12_N8S20603C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20603C1D1Ev,_ZTv0_n12_N8S20603C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20603C1D1Ev,_ZThn16_N8S20603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C1D0Ev,_ZTv0_n12_N8S20603C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20603C1D0Ev,_ZThn16_N8S20603C1D0Ev)() __attribute__((weak));
extern void _ZN8S20603C22v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20603C1D1Ev,_ZTv0_n12_N8S20603C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20603C1D1Ev,_ZThn20_N8S20603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C1D0Ev,_ZTv0_n12_N8S20603C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20603C1D0Ev,_ZThn20_N8S20603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C1D1Ev,_ZTv0_n12_N8S20603C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S20603C1D1Ev,_ZThn28_N8S20603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C1D0Ev,_ZTv0_n12_N8S20603C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S20603C1D0Ev,_ZThn28_N8S20603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20603C1D1Ev,_ZTv0_n16_N8S20603C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20603C1D1Ev,_ZThn40_N8S20603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20603C1D0Ev,_ZTv0_n16_N8S20603C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20603C1D0Ev,_ZThn40_N8S20603C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20603C1[] = {
  0,
  ABISELECT(80,40),
  ABISELECT(32,16),
  ABISELECT(72,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20603C1[0]),
  (VTBL_ENTRY)&_ZN8S20603C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20603C1D0Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20603C1D1Ev,_ZThn12_N8S20603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20603C1D0Ev,_ZThn12_N8S20603C1D0Ev),
  0,
  0,
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C1D1Ev,_ZTv0_n12_N8S20603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C1D0Ev,_ZTv0_n12_N8S20603C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20603C22v1Ev,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C1D1Ev,_ZTv0_n12_N8S20603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C1D0Ev,_ZTv0_n12_N8S20603C1D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C1D1Ev,_ZTv0_n12_N8S20603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C1D0Ev,_ZTv0_n12_N8S20603C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-8,-4),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20603C1D1Ev,_ZTv0_n16_N8S20603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20603C1D0Ev,_ZTv0_n16_N8S20603C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20603C1[];
extern void ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev)();
extern void _ZN8S20603C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev)();
extern void _ZN8S20603C2D0Ev() __attribute__((weak));
extern void _ZN8S20603C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20603C2__8S20603C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20603C22v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S20603C2D1Ev,_ZThn4_N8S20603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S20603C2D0Ev,_ZThn4_N8S20603C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20603C3__8S20603C2__8S20603C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20603C2D1Ev,_ZThn12_N8S20603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20603C2D0Ev,_ZThn12_N8S20603C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20603C5__8S20603C2__8S20603C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20603C5D1Ev,_ZTv0_n12_N8S20603C5D1Ev)();
extern void _ZN8S20603C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20603C5D0Ev,_ZTv0_n12_N8S20603C5D0Ev)();
extern void _ZN8S20603C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20603C5__8S20603C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20603C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C5D1Ev,_ZTv0_n12_N8S20603C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C5D0Ev,_ZTv0_n12_N8S20603C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20603C5D1Ev,_ZTv0_n12_N8S20603C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20603C5D0Ev,_ZTv0_n12_N8S20603C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S5228C4_nt__8S20603C5__8S20603C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20603C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C5D1Ev,_ZTv0_n12_N8S20603C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20603C5D0Ev,_ZTv0_n12_N8S20603C5D0Ev),
};
extern void _ZN8S20603C8D1Ev();
extern void _ZN8S20603C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20603C8__8S20603C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20603C8[0]),
  (VTBL_ENTRY)&_ZN8S20603C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20603C8D0Ev,
};
static  VTT_ENTRY vtt_S20603C1[] = {
  {&(_ZTV8S20603C1[9]),  9,44},
  {&(_ZTV8S20603C1[23]),  23,44},
  {&(_ZTV8S20603C1[29]),  29,44},
  {&(_ZTV8S20603C1[36]),  36,44},
  {&(_ZTV8S20603C1[23]),  23,44},
  {&(_ZTV8S20603C1[42]),  42,44},
  {&(_tg__ZTV8S20603C2__8S20603C1[7]),  7,10},
  {&(_tg__ZTV8S20603C3__8S20603C2__8S20603C1[3]),  3,5},
  {&(_tg__ZTV8S20603C5__8S20603C2__8S20603C1[5]),  5,7},
  {&(_tg__ZTV8S20603C2__8S20603C1[7]),  7,10},
  {&(_tg__ZTV8S20603C5__8S20603C1[5]),  5,7},
  {&(_tg__ZTV10S5228C4_nt__8S20603C5__8S20603C1[3]),  3,5},
  {&(_tg__ZTV8S20603C8__8S20603C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20603C1[];
extern  VTBL_ENTRY _ZTV8S20603C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20603C1[];
static VTBL_ENTRY alt_thunk_names164[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20603C5D0Ev,_ZTv0_n12_N8S20603C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20603C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20603C5D1Ev,_ZTv0_n12_N8S20603C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20603C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20603C2D0Ev,_ZTv0_n12_N8S20603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20603C2D0Ev,_ZThn12_N8S20603C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20603C2D0Ev,_ZThn4_N8S20603C2D0Ev),
  (VTBL_ENTRY)_ZN8S20603C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20603C2D1Ev,_ZTv0_n12_N8S20603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20603C2D1Ev,_ZThn12_N8S20603C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20603C2D1Ev,_ZThn4_N8S20603C2D1Ev),
  (VTBL_ENTRY)_ZN8S20603C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20603C1D0Ev,_ZTv0_n16_N8S20603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20603C1D0Ev,_ZThn40_N8S20603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20603C1D1Ev,_ZTv0_n16_N8S20603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20603C1D1Ev,_ZThn40_N8S20603C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20603C1D0Ev,_ZTv0_n12_N8S20603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20603C1D0Ev,_ZThn28_N8S20603C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20603C1D0Ev,_ZThn20_N8S20603C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20603C1D0Ev,_ZThn16_N8S20603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20603C1D1Ev,_ZTv0_n12_N8S20603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20603C1D1Ev,_ZThn28_N8S20603C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20603C1D1Ev,_ZThn20_N8S20603C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20603C1D1Ev,_ZThn16_N8S20603C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20603C1 = {  "S20603C1", // class name
  bases_S20603C1, 13,
  &(vtc_S20603C1[0]), // expected_vtbl_contents
  &(vtt_S20603C1[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI8S20603C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20603C1),44, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20603C1),13, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names164,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18373C1  {
  void *s18373c1f0[5];
  int s18373c1f1;
  void *s18373c1f2;
  char s18373c1f3[2];
  ::S2137C18 s18373c1f4;
  __tsi64 s18373c1f5;
  int s18373c1f6;
  void  mf18373c1(); // _ZN8S18373C19mf18373c1Ev
};
//SIG(1 S18373C1) C1{ m Fp[5] Fi Fp Fc[2] FC2{ BC3{ m Fi Fp Fc[8] Fp FC4{ m Fi[2]} FC5{ m Fc Fi[8] Fp[4]} Fi Fp} Fp[2]} FL Fi}


void  S18373C1 ::mf18373c1(){}

static void Test_S18373C1()
{
  {
    init_simple_test("S18373C1");
    S18373C1 lv;
    check2(sizeof(lv), ABISELECT(224,140), "sizeof(S18373C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18373C1)");
    check_field_offset(lv, s18373c1f0, 0, "S18373C1.s18373c1f0");
    check_field_offset(lv, s18373c1f1, ABISELECT(40,20), "S18373C1.s18373c1f1");
    check_field_offset(lv, s18373c1f2, ABISELECT(48,24), "S18373C1.s18373c1f2");
    check_field_offset(lv, s18373c1f3, ABISELECT(56,28), "S18373C1.s18373c1f3");
    check_field_offset(lv, s18373c1f4, ABISELECT(64,32), "S18373C1.s18373c1f4");
    check_field_offset(lv, s18373c1f5, ABISELECT(208,128), "S18373C1.s18373c1f5");
    check_field_offset(lv, s18373c1f6, ABISELECT(216,136), "S18373C1.s18373c1f6");
  }
}
static Arrange_To_Call_Me vS18373C1(Test_S18373C1, "S18373C1", ABISELECT(224,140));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7617C3  {
  long double s7617c3f0;
  void *s7617c3f1[5];
  virtual void  v5(); // _ZN7S7617C32v5Ev
  virtual void  v6(); // _ZN7S7617C32v6Ev
  virtual void  v7(); // _ZN7S7617C32v7Ev
  virtual void  v8(); // _ZN7S7617C32v8Ev
  virtual void  v9(); // _ZN7S7617C32v9Ev
  virtual void  v10(); // _ZN7S7617C33v10Ev
  virtual void  v11(); // _ZN7S7617C33v11Ev
  ~S7617C3(); // tgen
  S7617C3(); // tgen
};
//SIG(-1 S7617C3) C1{ v1 v2 v3 v4 v5 v6 v7 FD Fp[5]}


void  S7617C3 ::v5(){vfunc_called(this, "_ZN7S7617C32v5Ev");}
void  S7617C3 ::v6(){vfunc_called(this, "_ZN7S7617C32v6Ev");}
void  S7617C3 ::v7(){vfunc_called(this, "_ZN7S7617C32v7Ev");}
void  S7617C3 ::v8(){vfunc_called(this, "_ZN7S7617C32v8Ev");}
void  S7617C3 ::v9(){vfunc_called(this, "_ZN7S7617C32v9Ev");}
void  S7617C3 ::v10(){vfunc_called(this, "_ZN7S7617C33v10Ev");}
void  S7617C3 ::v11(){vfunc_called(this, "_ZN7S7617C33v11Ev");}
S7617C3 ::~S7617C3(){ note_dtor("S7617C3", this);} // tgen
S7617C3 ::S7617C3(){ note_ctor("S7617C3", this);} // tgen

static void Test_S7617C3()
{
  extern Class_Descriptor cd_S7617C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S7617C3, buf);
    S7617C3 *dp, &lv = *(dp=new (buf) S7617C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S7617C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7617C3)");
    check_field_offset(lv, s7617c3f0, ABISELECT(16,4), "S7617C3.s7617c3f0");
    check_field_offset(lv, s7617c3f1, ABISELECT(32,16), "S7617C3.s7617c3f1");
    test_class_info(&lv, &cd_S7617C3);
    dp->~S7617C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7617C3(Test_S7617C3, "S7617C3", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN7S7617C3C1Ev();
extern void _ZN7S7617C3D1Ev();
Name_Map name_map_S7617C3[] = {
  NSPAIR(_ZN7S7617C3C1Ev),
  NSPAIR(_ZN7S7617C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7617C3[];
extern void _ZN7S7617C32v5Ev();
extern void _ZN7S7617C32v6Ev();
extern void _ZN7S7617C32v7Ev();
extern void _ZN7S7617C32v8Ev();
extern void _ZN7S7617C32v9Ev();
extern void _ZN7S7617C33v10Ev();
extern void _ZN7S7617C33v11Ev();
static  VTBL_ENTRY vtc_S7617C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7617C3[0]),
  (VTBL_ENTRY)&_ZN7S7617C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7617C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7617C33v11Ev,
};
extern VTBL_ENTRY _ZTI7S7617C3[];
extern  VTBL_ENTRY _ZTV7S7617C3[];
Class_Descriptor cd_S7617C3 = {  "S7617C3", // class name
  0,0,//no base classes
  &(vtc_S7617C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI7S7617C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7617C3),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  S7617C2  : virtual S7617C3 , S19553C7 {
  __tsi64 s7617c2f0;
  virtual  ~S7617C2(); // _ZN7S7617C2D2Ev
  virtual void  v12(); // _ZN7S7617C23v12Ev
  S7617C2(); // tgen
};
//SIG(-1 S7617C2) C1{ VBC2{ v2 v3 v4 v5 v6 v7 v8 FD Fp[5]} BC3{ m FC4{ v9 v10 v11 v12 v13 v14 v15 FD Fp[5]}} vd v1 FL}


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

static void Test_S7617C2()
{
  extern Class_Descriptor cd_S7617C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,22)];
    init_test(&cd_S7617C2, buf);
    S7617C2 *dp, &lv = *(dp=new (buf) S7617C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,84), "sizeof(S7617C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7617C2)");
    check_base_class_offset(lv, (S7617C3*), ABISELECT(112,48), "S7617C2");
    check_base_class_offset(lv, (S19553C7*), ABISELECT(16,4), "S7617C2");
    check_field_offset(lv, s7617c2f0, ABISELECT(96,40), "S7617C2.s7617c2f0");
    test_class_info(&lv, &cd_S7617C2);
    dp->~S7617C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7617C2(Test_S7617C2, "S7617C2", ABISELECT(192,84));

#else // __cplusplus

extern void _ZN7S7617C2C1Ev();
extern void _ZN7S7617C2D2Ev();
Name_Map name_map_S7617C2[] = {
  NSPAIR(_ZN7S7617C2C1Ev),
  NSPAIR(_ZN7S7617C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7617C3;
extern VTBL_ENTRY _ZTI7S7617C3[];
extern  VTBL_ENTRY _ZTV7S7617C3[];
extern Class_Descriptor cd_S19553C7;
extern VTBL_ENTRY _ZTI8S19553C7[];
static Base_Class bases_S7617C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7617C3,    ABISELECT(112,48), //bcp->offset
    6, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19553C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7617C2[];
extern void _ZN7S7617C2D1Ev();
extern void _ZN7S7617C2D0Ev();
extern void _ZN7S7617C23v12Ev();
extern void _ZN7S7617C32v5Ev();
extern void _ZN7S7617C32v6Ev();
extern void _ZN7S7617C32v7Ev();
extern void _ZN7S7617C32v8Ev();
extern void _ZN7S7617C32v9Ev();
extern void _ZN7S7617C33v10Ev();
extern void _ZN7S7617C33v11Ev();
static  VTBL_ENTRY vtc_S7617C2[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7617C2[0]),
  (VTBL_ENTRY)&_ZN7S7617C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7617C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7617C23v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI7S7617C2[0]),
  (VTBL_ENTRY)&_ZN7S7617C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7617C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7617C33v11Ev,
};
extern VTBL_ENTRY _ZTV7S7617C2[];
static  VTT_ENTRY vtt_S7617C2[] = {
  {&(_ZTV7S7617C2[3]),  3,22},
  {&(_ZTV7S7617C2[15]),  15,22},
};
extern VTBL_ENTRY _ZTI7S7617C2[];
extern  VTBL_ENTRY _ZTV7S7617C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7617C2[];
Class_Descriptor cd_S7617C2 = {  "S7617C2", // class name
  bases_S7617C2, 2,
  &(vtc_S7617C2[0]), // expected_vtbl_contents
  &(vtt_S7617C2[0]), // expected_vtt_contents
  ABISELECT(192,84), // object size
  NSPAIRA(_ZTI7S7617C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7617C2),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7617C2),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  S7617C5  {
  __tsi64 s7617c5f0;
  char s7617c5f1;
  virtual void  v13(); // _ZN7S7617C53v13Ev
  virtual void  v14(); // _ZN7S7617C53v14Ev
  ~S7617C5(); // tgen
  S7617C5(); // tgen
};
//SIG(-1 S7617C5) C1{ v1 v2 FL Fc}


void  S7617C5 ::v13(){vfunc_called(this, "_ZN7S7617C53v13Ev");}
void  S7617C5 ::v14(){vfunc_called(this, "_ZN7S7617C53v14Ev");}
S7617C5 ::~S7617C5(){ note_dtor("S7617C5", this);} // tgen
S7617C5 ::S7617C5(){ note_ctor("S7617C5", this);} // tgen

static void Test_S7617C5()
{
  extern Class_Descriptor cd_S7617C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7617C5, buf);
    S7617C5 *dp, &lv = *(dp=new (buf) S7617C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7617C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7617C5)");
    check_field_offset(lv, s7617c5f0, ABISELECT(8,4), "S7617C5.s7617c5f0");
    check_field_offset(lv, s7617c5f1, ABISELECT(16,12), "S7617C5.s7617c5f1");
    test_class_info(&lv, &cd_S7617C5);
    dp->~S7617C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7617C5(Test_S7617C5, "S7617C5", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7617C5C1Ev();
extern void _ZN7S7617C5D1Ev();
Name_Map name_map_S7617C5[] = {
  NSPAIR(_ZN7S7617C5C1Ev),
  NSPAIR(_ZN7S7617C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7617C5[];
extern void _ZN7S7617C53v13Ev();
extern void _ZN7S7617C53v14Ev();
static  VTBL_ENTRY vtc_S7617C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7617C5[0]),
  (VTBL_ENTRY)&_ZN7S7617C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7617C53v14Ev,
};
extern VTBL_ENTRY _ZTI7S7617C5[];
extern  VTBL_ENTRY _ZTV7S7617C5[];
Class_Descriptor cd_S7617C5 = {  "S7617C5", // class name
  0,0,//no base classes
  &(vtc_S7617C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7617C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7617C5),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  S7617C1  : S7617C2 , virtual S7617C5 {
  virtual  ~S7617C1(); // _ZN7S7617C1D2Ev
  virtual void  v1(); // _ZN7S7617C12v1Ev
  virtual void  v2(); // _ZN7S7617C12v2Ev
  virtual void  v3(); // _ZN7S7617C12v3Ev
  virtual void  v4(); // _ZN7S7617C12v4Ev
  S7617C1(); // tgen
};
//SIG(1 S7617C1) C1{ BC2{ VBC3{ v5 v6 v7 v8 v9 v10 v11 FD Fp[5]} BC4{ m FC5{ v15 v16 v17 v18 v19 v20 v21 FD Fp[5]}} vd v12 FL} VBC6{ v13 v14 FL Fc} vd v1 v2 v3 v4}


 S7617C1 ::~S7617C1(){ note_dtor("S7617C1", this);}
void  S7617C1 ::v1(){vfunc_called(this, "_ZN7S7617C12v1Ev");}
void  S7617C1 ::v2(){vfunc_called(this, "_ZN7S7617C12v2Ev");}
void  S7617C1 ::v3(){vfunc_called(this, "_ZN7S7617C12v3Ev");}
void  S7617C1 ::v4(){vfunc_called(this, "_ZN7S7617C12v4Ev");}
S7617C1 ::S7617C1(){ note_ctor("S7617C1", this);} // tgen

static void Test_S7617C1()
{
  extern Class_Descriptor cd_S7617C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,26)];
    init_test(&cd_S7617C1, buf);
    S7617C1 *dp, &lv = *(dp=new (buf) S7617C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,100), "sizeof(S7617C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7617C1)");
    check_base_class_offset(lv, (S7617C3*)(S7617C2*), ABISELECT(112,48), "S7617C1");
    check_base_class_offset(lv, (S19553C7*)(S7617C2*), ABISELECT(16,4), "S7617C1");
    check_base_class_offset(lv, (S7617C2*), 0, "S7617C1");
    check_base_class_offset(lv, (S7617C5*), ABISELECT(184,84), "S7617C1");
    test_class_info(&lv, &cd_S7617C1);
    dp->~S7617C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7617C1(Test_S7617C1, "S7617C1", ABISELECT(208,100));

#else // __cplusplus

extern void _ZN7S7617C1C1Ev();
extern void _ZN7S7617C1D2Ev();
Name_Map name_map_S7617C1[] = {
  NSPAIR(_ZN7S7617C1C1Ev),
  NSPAIR(_ZN7S7617C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7617C3;
extern VTBL_ENTRY _ZTI7S7617C3[];
extern  VTBL_ENTRY _ZTV7S7617C3[];
extern Class_Descriptor cd_S19553C7;
extern VTBL_ENTRY _ZTI8S19553C7[];
extern Class_Descriptor cd_S7617C2;
extern VTBL_ENTRY _ZTI7S7617C2[];
extern  VTBL_ENTRY _ZTV7S7617C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7617C2[];
extern Class_Descriptor cd_S7617C5;
extern VTBL_ENTRY _ZTI7S7617C5[];
extern  VTBL_ENTRY _ZTV7S7617C5[];
static Base_Class bases_S7617C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7617C3,    ABISELECT(112,48), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19553C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7617C2,    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_S7617C5,    ABISELECT(184,84), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7617C1[];
extern void _ZN7S7617C1D1Ev();
extern void _ZN7S7617C1D0Ev();
extern void _ZN7S7617C23v12Ev();
extern void _ZN7S7617C12v1Ev();
extern void _ZN7S7617C12v2Ev();
extern void _ZN7S7617C12v3Ev();
extern void _ZN7S7617C12v4Ev();
extern void _ZN7S7617C32v5Ev();
extern void _ZN7S7617C32v6Ev();
extern void _ZN7S7617C32v7Ev();
extern void _ZN7S7617C32v8Ev();
extern void _ZN7S7617C32v9Ev();
extern void _ZN7S7617C33v10Ev();
extern void _ZN7S7617C33v11Ev();
extern void _ZN7S7617C53v13Ev();
extern void _ZN7S7617C53v14Ev();
static  VTBL_ENTRY vtc_S7617C1[] = {
  ABISELECT(184,84),
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7617C1[0]),
  (VTBL_ENTRY)&_ZN7S7617C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7617C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7617C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7617C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7617C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7617C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7617C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI7S7617C1[0]),
  (VTBL_ENTRY)&_ZN7S7617C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7617C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7617C33v11Ev,
  0,
  0,
  ABISELECT(-184,-84),
  (VTBL_ENTRY)&(_ZTI7S7617C1[0]),
  (VTBL_ENTRY)&_ZN7S7617C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7617C53v14Ev,
};
extern VTBL_ENTRY _ZTV7S7617C1[];
extern void _ZN7S7617C2D1Ev();
extern void _ZN7S7617C2D0Ev();
extern void _ZN7S7617C23v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7617C2__7S7617C1[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7617C2[0]),
  (VTBL_ENTRY)&_ZN7S7617C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7617C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7617C23v12Ev,
};
extern void _ZN7S7617C32v5Ev();
extern void _ZN7S7617C32v6Ev();
extern void _ZN7S7617C32v7Ev();
extern void _ZN7S7617C32v8Ev();
extern void _ZN7S7617C32v9Ev();
extern void _ZN7S7617C33v10Ev();
extern void _ZN7S7617C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7617C3__7S7617C2__7S7617C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI7S7617C2[0]),
  (VTBL_ENTRY)&_ZN7S7617C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7617C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7617C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7617C33v11Ev,
};
static  VTT_ENTRY vtt_S7617C1[] = {
  {&(_ZTV7S7617C1[4]),  4,33},
  {&(_tg__ZTV7S7617C2__7S7617C1[3]),  3,6},
  {&(_tg__ZTV7S7617C3__7S7617C2__7S7617C1[9]),  9,16},
  {&(_ZTV7S7617C1[20]),  20,33},
  {&(_ZTV7S7617C1[31]),  31,33},
};
extern VTBL_ENTRY _ZTI7S7617C1[];
extern  VTBL_ENTRY _ZTV7S7617C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7617C1[];
Class_Descriptor cd_S7617C1 = {  "S7617C1", // class name
  bases_S7617C1, 4,
  &(vtc_S7617C1[0]), // expected_vtbl_contents
  &(vtt_S7617C1[0]), // expected_vtt_contents
  ABISELECT(208,100), // object size
  NSPAIRA(_ZTI7S7617C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7617C1),33, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7617C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16076C2_nt  {
  int s16076c2f0[5];
  void *s16076c2f1;
  void  mf16076c2(); // _ZN11S16076C2_nt9mf16076c2Ev
};
//SIG(-1 S16076C2_nt) C1{ m Fi[5] Fp}


void  S16076C2_nt ::mf16076c2(){}

//skip512 S16076C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16076C3  {
  int s16076c3f0[2];
  char s16076c3f1[12288];
  int s16076c3f2[2];
};
//SIG(-1 S16076C3) C1{ Fi[2] Fc[12288] Fi[2]}



static void Test_S16076C3()
{
  {
    init_simple_test("S16076C3");
    S16076C3 lv;
    check2(sizeof(lv), 12304, "sizeof(S16076C3)");
    check2(__alignof__(lv), 4, "__alignof__(S16076C3)");
    check_field_offset(lv, s16076c3f0, 0, "S16076C3.s16076c3f0");
    check_field_offset(lv, s16076c3f1, 8, "S16076C3.s16076c3f1");
    check_field_offset(lv, s16076c3f2, 12296, "S16076C3.s16076c3f2");
  }
}
static Arrange_To_Call_Me vS16076C3(Test_S16076C3, "S16076C3", 12304);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16076C4_nt  {
  int s16076c4f0[3];
};
//SIG(-1 S16076C4_nt) C1{ Fi[3]}



//skip512 S16076C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16076C1  {
  ::S16076C2_nt s16076c1f0;
  int s16076c1f1[4];
  void *s16076c1f2[10];
  ::S16076C3 s16076c1f3;
  void *s16076c1f4[3];
  int s16076c1f5;
  void *s16076c1f6[4];
  int s16076c1f7[5];
  ::S16076C4_nt s16076c1f8;
  int s16076c1f9[2];
  void  mf16076c1(); // _ZN8S16076C19mf16076c1Ev
};
//SIG(1 S16076C1) C1{ m FC2{ m Fi[5] Fp} Fi[4] Fp[10] FC3{ Fi[2] Fc[12288] Fi[2]} Fp[3] Fi Fp[4] Fi[5] FC4{ Fi[3]} Fi[2]}


void  S16076C1 ::mf16076c1(){}

static void Test_S16076C1()
{
  {
    init_simple_test("S16076C1");
    S16076C1 lv;
    check2(sizeof(lv), ABISELECT(12536,12456), "sizeof(S16076C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16076C1)");
    check_field_offset(lv, s16076c1f0, 0, "S16076C1.s16076c1f0");
    check_field_offset(lv, s16076c1f1, ABISELECT(32,24), "S16076C1.s16076c1f1");
    check_field_offset(lv, s16076c1f2, ABISELECT(48,40), "S16076C1.s16076c1f2");
    check_field_offset(lv, s16076c1f3, ABISELECT(128,80), "S16076C1.s16076c1f3");
    check_field_offset(lv, s16076c1f4, ABISELECT(12432,12384), "S16076C1.s16076c1f4");
    check_field_offset(lv, s16076c1f5, ABISELECT(12456,12396), "S16076C1.s16076c1f5");
    check_field_offset(lv, s16076c1f6, ABISELECT(12464,12400), "S16076C1.s16076c1f6");
    check_field_offset(lv, s16076c1f7, ABISELECT(12496,12416), "S16076C1.s16076c1f7");
    check_field_offset(lv, s16076c1f8, ABISELECT(12516,12436), "S16076C1.s16076c1f8");
    check_field_offset(lv, s16076c1f9, ABISELECT(12528,12448), "S16076C1.s16076c1f9");
  }
}
static Arrange_To_Call_Me vS16076C1(Test_S16076C1, "S16076C1", ABISELECT(12536,12456));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7080C2  {
  long double s7080c2f0;
  void *s7080c2f1;
  virtual void  v7(); // _ZN7S7080C22v7Ev
  virtual void  v8(); // _ZN7S7080C22v8Ev
  virtual void  v9(); // _ZN7S7080C22v9Ev
  virtual void  v10(); // _ZN7S7080C23v10Ev
  ~S7080C2(); // tgen
  S7080C2(); // tgen
};
//SIG(-1 S7080C2) C1{ v1 v2 v3 v4 FD Fp}


void  S7080C2 ::v7(){vfunc_called(this, "_ZN7S7080C22v7Ev");}
void  S7080C2 ::v8(){vfunc_called(this, "_ZN7S7080C22v8Ev");}
void  S7080C2 ::v9(){vfunc_called(this, "_ZN7S7080C22v9Ev");}
void  S7080C2 ::v10(){vfunc_called(this, "_ZN7S7080C23v10Ev");}
S7080C2 ::~S7080C2(){ note_dtor("S7080C2", this);} // tgen
S7080C2 ::S7080C2(){ note_ctor("S7080C2", this);} // tgen

static void Test_S7080C2()
{
  extern Class_Descriptor cd_S7080C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7080C2, buf);
    S7080C2 *dp, &lv = *(dp=new (buf) S7080C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S7080C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7080C2)");
    check_field_offset(lv, s7080c2f0, ABISELECT(16,4), "S7080C2.s7080c2f0");
    check_field_offset(lv, s7080c2f1, ABISELECT(32,16), "S7080C2.s7080c2f1");
    test_class_info(&lv, &cd_S7080C2);
    dp->~S7080C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7080C2(Test_S7080C2, "S7080C2", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN7S7080C2C1Ev();
extern void _ZN7S7080C2D1Ev();
Name_Map name_map_S7080C2[] = {
  NSPAIR(_ZN7S7080C2C1Ev),
  NSPAIR(_ZN7S7080C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7080C2[];
extern void _ZN7S7080C22v7Ev();
extern void _ZN7S7080C22v8Ev();
extern void _ZN7S7080C22v9Ev();
extern void _ZN7S7080C23v10Ev();
static  VTBL_ENTRY vtc_S7080C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7080C2[0]),
  (VTBL_ENTRY)&_ZN7S7080C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7080C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7080C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7080C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S7080C2[];
extern  VTBL_ENTRY _ZTV7S7080C2[];
Class_Descriptor cd_S7080C2 = {  "S7080C2", // class name
  0,0,//no base classes
  &(vtc_S7080C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI7S7080C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7080C2),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  S7080C3  : virtual S7080C2 {
  int s7080c3f0;
  ::S7080C2 s7080c3f1;
  virtual  ~S7080C3(); // _ZN7S7080C3D2Ev
  virtual void  v11(); // _ZN7S7080C33v11Ev
  virtual void  v12(); // _ZN7S7080C33v12Ev
  virtual void  v13(); // _ZN7S7080C33v13Ev
  virtual void  v14(); // _ZN7S7080C33v14Ev
  virtual void  v15(); // _ZN7S7080C33v15Ev
  virtual void  v16(); // _ZN7S7080C33v16Ev
  virtual void  v17(); // _ZN7S7080C33v17Ev
  S7080C3(); // tgen
};
//SIG(-1 S7080C3) C1{ VBC2{ v8 v9 v10 v11 FD Fp} vd v1 v2 v3 v4 v5 v6 v7 Fi FC2}


 S7080C3 ::~S7080C3(){ note_dtor("S7080C3", this);}
void  S7080C3 ::v11(){vfunc_called(this, "_ZN7S7080C33v11Ev");}
void  S7080C3 ::v12(){vfunc_called(this, "_ZN7S7080C33v12Ev");}
void  S7080C3 ::v13(){vfunc_called(this, "_ZN7S7080C33v13Ev");}
void  S7080C3 ::v14(){vfunc_called(this, "_ZN7S7080C33v14Ev");}
void  S7080C3 ::v15(){vfunc_called(this, "_ZN7S7080C33v15Ev");}
void  S7080C3 ::v16(){vfunc_called(this, "_ZN7S7080C33v16Ev");}
void  S7080C3 ::v17(){vfunc_called(this, "_ZN7S7080C33v17Ev");}
S7080C3 ::S7080C3(){ note_ctor("S7080C3", this);} // tgen

static void Test_S7080C3()
{
  extern Class_Descriptor cd_S7080C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,13)];
    init_test(&cd_S7080C3, buf);
    S7080C3 *dp, &lv = *(dp=new (buf) S7080C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,48), "sizeof(S7080C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7080C3)");
    check_base_class_offset(lv, (S7080C2*), ABISELECT(64,28), "S7080C3");
    check_field_offset(lv, s7080c3f0, ABISELECT(8,4), "S7080C3.s7080c3f0");
    check_field_offset(lv, s7080c3f1, ABISELECT(16,8), "S7080C3.s7080c3f1");
    test_class_info(&lv, &cd_S7080C3);
    dp->~S7080C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7080C3(Test_S7080C3, "S7080C3", ABISELECT(112,48));

#else // __cplusplus

extern void _ZN7S7080C3C1Ev();
extern void _ZN7S7080C3D2Ev();
Name_Map name_map_S7080C3[] = {
  NSPAIR(_ZN7S7080C3C1Ev),
  NSPAIR(_ZN7S7080C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7080C2;
extern VTBL_ENTRY _ZTI7S7080C2[];
extern  VTBL_ENTRY _ZTV7S7080C2[];
static Base_Class bases_S7080C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7080C2,    ABISELECT(64,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7080C3[];
extern void _ZN7S7080C3D1Ev();
extern void _ZN7S7080C3D0Ev();
extern void _ZN7S7080C33v11Ev();
extern void _ZN7S7080C33v12Ev();
extern void _ZN7S7080C33v13Ev();
extern void _ZN7S7080C33v14Ev();
extern void _ZN7S7080C33v15Ev();
extern void _ZN7S7080C33v16Ev();
extern void _ZN7S7080C33v17Ev();
extern void _ZN7S7080C22v7Ev();
extern void _ZN7S7080C22v8Ev();
extern void _ZN7S7080C22v9Ev();
extern void _ZN7S7080C23v10Ev();
static  VTBL_ENTRY vtc_S7080C3[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7080C3[0]),
  (VTBL_ENTRY)&_ZN7S7080C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7080C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7080C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7080C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7080C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7080C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7080C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7080C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7080C33v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI7S7080C3[0]),
  (VTBL_ENTRY)&_ZN7S7080C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7080C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7080C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7080C23v10Ev,
};
extern VTBL_ENTRY _ZTV7S7080C3[];
static  VTT_ENTRY vtt_S7080C3[] = {
  {&(_ZTV7S7080C3[3]),  3,22},
  {&(_ZTV7S7080C3[18]),  18,22},
};
extern VTBL_ENTRY _ZTI7S7080C3[];
extern  VTBL_ENTRY _ZTV7S7080C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7080C3[];
Class_Descriptor cd_S7080C3 = {  "S7080C3", // class name
  bases_S7080C3, 1,
  &(vtc_S7080C3[0]), // expected_vtbl_contents
  &(vtt_S7080C3[0]), // expected_vtt_contents
  ABISELECT(112,48), // object size
  NSPAIRA(_ZTI7S7080C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7080C3),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7080C3),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  S7080C1  : S7080C2 {
  ::S7080C3 s7080c1f0;
  ::S7080C2 s7080c1f1;
  virtual void  v1(); // _ZN7S7080C12v1Ev
  virtual void  v2(); // _ZN7S7080C12v2Ev
  virtual void  v3(); // _ZN7S7080C12v3Ev
  virtual void  v4(); // _ZN7S7080C12v4Ev
  virtual void  v5(); // _ZN7S7080C12v5Ev
  virtual void  v6(); // _ZN7S7080C12v6Ev
  ~S7080C1(); // tgen
  S7080C1(); // tgen
};
//SIG(1 S7080C1) C1{ BC2{ v7 v8 v9 v10 FD Fp} v1 v2 v3 v4 v5 v6 FC3{ VBC2 vd v11 v12 v13 v14 v15 v16 v17 Fi FC2} FC2}


void  S7080C1 ::v1(){vfunc_called(this, "_ZN7S7080C12v1Ev");}
void  S7080C1 ::v2(){vfunc_called(this, "_ZN7S7080C12v2Ev");}
void  S7080C1 ::v3(){vfunc_called(this, "_ZN7S7080C12v3Ev");}
void  S7080C1 ::v4(){vfunc_called(this, "_ZN7S7080C12v4Ev");}
void  S7080C1 ::v5(){vfunc_called(this, "_ZN7S7080C12v5Ev");}
void  S7080C1 ::v6(){vfunc_called(this, "_ZN7S7080C12v6Ev");}
S7080C1 ::~S7080C1(){ note_dtor("S7080C1", this);} // tgen
S7080C1 ::S7080C1(){ note_ctor("S7080C1", this);} // tgen

static void Test_S7080C1()
{
  extern Class_Descriptor cd_S7080C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,23)];
    init_test(&cd_S7080C1, buf);
    S7080C1 *dp, &lv = *(dp=new (buf) S7080C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,88), "sizeof(S7080C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7080C1)");
    check_base_class_offset(lv, (S7080C2*), 0, "S7080C1");
    check_field_offset(lv, s7080c1f0, ABISELECT(48,20), "S7080C1.s7080c1f0");
    check_field_offset(lv, s7080c1f1, ABISELECT(160,68), "S7080C1.s7080c1f1");
    test_class_info(&lv, &cd_S7080C1);
    dp->~S7080C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7080C1(Test_S7080C1, "S7080C1", ABISELECT(208,88));

#else // __cplusplus

extern void _ZN7S7080C1C1Ev();
extern void _ZN7S7080C1D1Ev();
Name_Map name_map_S7080C1[] = {
  NSPAIR(_ZN7S7080C1C1Ev),
  NSPAIR(_ZN7S7080C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7080C2;
extern VTBL_ENTRY _ZTI7S7080C2[];
extern  VTBL_ENTRY _ZTV7S7080C2[];
static Base_Class bases_S7080C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7080C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7080C1[];
extern void _ZN7S7080C22v7Ev();
extern void _ZN7S7080C22v8Ev();
extern void _ZN7S7080C22v9Ev();
extern void _ZN7S7080C23v10Ev();
extern void _ZN7S7080C12v1Ev();
extern void _ZN7S7080C12v2Ev();
extern void _ZN7S7080C12v3Ev();
extern void _ZN7S7080C12v4Ev();
extern void _ZN7S7080C12v5Ev();
extern void _ZN7S7080C12v6Ev();
static  VTBL_ENTRY vtc_S7080C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7080C1[0]),
  (VTBL_ENTRY)&_ZN7S7080C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7080C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7080C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7080C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7080C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7080C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7080C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7080C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7080C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7080C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S7080C1[];
extern  VTBL_ENTRY _ZTV7S7080C1[];
Class_Descriptor cd_S7080C1 = {  "S7080C1", // class name
  bases_S7080C1, 1,
  &(vtc_S7080C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,88), // object size
  NSPAIRA(_ZTI7S7080C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7080C1),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  S12301C1  {
  int s12301c1f0;
  char s12301c1f1[4];
  long s12301c1f2;
  int s12301c1f3[2];
  void *s12301c1f4;
  int s12301c1f5;
  void *s12301c1f6;
  int s12301c1f7;
  void *s12301c1f8;
  int s12301c1f9;
  void *s12301c1f10;
  int s12301c1f11;
  void *s12301c1f12[2];
  int s12301c1f13;
  void *s12301c1f14[2];
  int s12301c1f15;
  void *s12301c1f16;
  int s12301c1f17;
  void *s12301c1f18[2];
  int s12301c1f19;
  char s12301c1f20[4];
  void *s12301c1f21;
  char s12301c1f22[4];
};
//SIG(1 S12301C1) C1{ Fi Fc[4] Fl Fi[2] Fp Fi Fp Fi Fp Fi Fp Fi Fp[2] Fi Fp[2] Fi Fp Fi Fp[2] Fi Fc[4] Fp Fc[4]}



static void Test_S12301C1()
{
  {
    init_simple_test("S12301C1");
    S12301C1 lv;
    check2(sizeof(lv), ABISELECT(192,108), "sizeof(S12301C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12301C1)");
    check_field_offset(lv, s12301c1f0, 0, "S12301C1.s12301c1f0");
    check_field_offset(lv, s12301c1f1, 4, "S12301C1.s12301c1f1");
    check_field_offset(lv, s12301c1f2, 8, "S12301C1.s12301c1f2");
    check_field_offset(lv, s12301c1f3, ABISELECT(16,12), "S12301C1.s12301c1f3");
    check_field_offset(lv, s12301c1f4, ABISELECT(24,20), "S12301C1.s12301c1f4");
    check_field_offset(lv, s12301c1f5, ABISELECT(32,24), "S12301C1.s12301c1f5");
    check_field_offset(lv, s12301c1f6, ABISELECT(40,28), "S12301C1.s12301c1f6");
    check_field_offset(lv, s12301c1f7, ABISELECT(48,32), "S12301C1.s12301c1f7");
    check_field_offset(lv, s12301c1f8, ABISELECT(56,36), "S12301C1.s12301c1f8");
    check_field_offset(lv, s12301c1f9, ABISELECT(64,40), "S12301C1.s12301c1f9");
    check_field_offset(lv, s12301c1f10, ABISELECT(72,44), "S12301C1.s12301c1f10");
    check_field_offset(lv, s12301c1f11, ABISELECT(80,48), "S12301C1.s12301c1f11");
    check_field_offset(lv, s12301c1f12, ABISELECT(88,52), "S12301C1.s12301c1f12");
    check_field_offset(lv, s12301c1f13, ABISELECT(104,60), "S12301C1.s12301c1f13");
    check_field_offset(lv, s12301c1f14, ABISELECT(112,64), "S12301C1.s12301c1f14");
    check_field_offset(lv, s12301c1f15, ABISELECT(128,72), "S12301C1.s12301c1f15");
    check_field_offset(lv, s12301c1f16, ABISELECT(136,76), "S12301C1.s12301c1f16");
    check_field_offset(lv, s12301c1f17, ABISELECT(144,80), "S12301C1.s12301c1f17");
    check_field_offset(lv, s12301c1f18, ABISELECT(152,84), "S12301C1.s12301c1f18");
    check_field_offset(lv, s12301c1f19, ABISELECT(168,92), "S12301C1.s12301c1f19");
    check_field_offset(lv, s12301c1f20, ABISELECT(172,96), "S12301C1.s12301c1f20");
    check_field_offset(lv, s12301c1f21, ABISELECT(176,100), "S12301C1.s12301c1f21");
    check_field_offset(lv, s12301c1f22, ABISELECT(184,104), "S12301C1.s12301c1f22");
  }
}
static Arrange_To_Call_Me vS12301C1(Test_S12301C1, "S12301C1", ABISELECT(192,108));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4406C3  {
  ::S2213C20_nt s4406c3f0;
  int s4406c3f1[2];
  char s4406c3f2;
  virtual  ~S4406C3(); // _ZN7S4406C3D1Ev
  virtual void  v2(); // _ZN7S4406C32v2Ev
  virtual void  v3(); // _ZN7S4406C32v3Ev
  virtual void  v4(); // _ZN7S4406C32v4Ev
  S4406C3(); // tgen
};
//SIG(-1 S4406C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4406C3 ::~S4406C3(){ note_dtor("S4406C3", this);}
void  S4406C3 ::v2(){vfunc_called(this, "_ZN7S4406C32v2Ev");}
void  S4406C3 ::v3(){vfunc_called(this, "_ZN7S4406C32v3Ev");}
void  S4406C3 ::v4(){vfunc_called(this, "_ZN7S4406C32v4Ev");}
S4406C3 ::S4406C3(){ note_ctor("S4406C3", this);} // tgen

static void Test_S4406C3()
{
  extern Class_Descriptor cd_S4406C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4406C3, buf);
    S4406C3 *dp, &lv = *(dp=new (buf) S4406C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4406C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4406C3)");
    check_field_offset(lv, s4406c3f0, ABISELECT(8,4), "S4406C3.s4406c3f0");
    check_field_offset(lv, s4406c3f1, ABISELECT(24,16), "S4406C3.s4406c3f1");
    check_field_offset(lv, s4406c3f2, ABISELECT(32,24), "S4406C3.s4406c3f2");
    test_class_info(&lv, &cd_S4406C3);
    dp->~S4406C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4406C3(Test_S4406C3, "S4406C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4406C3C1Ev();
extern void _ZN7S4406C3D1Ev();
Name_Map name_map_S4406C3[] = {
  NSPAIR(_ZN7S4406C3C1Ev),
  NSPAIR(_ZN7S4406C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4406C3[];
extern void _ZN7S4406C3D1Ev();
extern void _ZN7S4406C3D0Ev();
extern void _ZN7S4406C32v2Ev();
extern void _ZN7S4406C32v3Ev();
extern void _ZN7S4406C32v4Ev();
static  VTBL_ENTRY vtc_S4406C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4406C3[0]),
  (VTBL_ENTRY)&_ZN7S4406C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4406C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4406C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4406C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4406C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4406C3[];
extern  VTBL_ENTRY _ZTV7S4406C3[];
Class_Descriptor cd_S4406C3 = {  "S4406C3", // class name
  0,0,//no base classes
  &(vtc_S4406C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4406C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4406C3),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  S4406C2  : S4406C3 {
  char s4406c2f0;
  int s4406c2f1;
  char s4406c2f2;
  void *s4406c2f3[4];
  virtual  ~S4406C2(); // _ZN7S4406C2D1Ev
  virtual void  v5(); // _ZN7S4406C22v5Ev
  virtual void  v6(); // _ZN7S4406C22v6Ev
  virtual void  v7(); // _ZN7S4406C22v7Ev
  virtual void  v8(); // _ZN7S4406C22v8Ev
  S4406C2(); // tgen
};
//SIG(-1 S4406C2) C1{ BC2{ vd v5 v6 v7 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 Fc Fi Fc Fp[4]}


 S4406C2 ::~S4406C2(){ note_dtor("S4406C2", this);}
void  S4406C2 ::v5(){vfunc_called(this, "_ZN7S4406C22v5Ev");}
void  S4406C2 ::v6(){vfunc_called(this, "_ZN7S4406C22v6Ev");}
void  S4406C2 ::v7(){vfunc_called(this, "_ZN7S4406C22v7Ev");}
void  S4406C2 ::v8(){vfunc_called(this, "_ZN7S4406C22v8Ev");}
S4406C2 ::S4406C2(){ note_ctor("S4406C2", this);} // tgen

static void Test_S4406C2()
{
  extern Class_Descriptor cd_S4406C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S4406C2, buf);
    S4406C2 *dp, &lv = *(dp=new (buf) S4406C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S4406C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4406C2)");
    check_base_class_offset(lv, (S4406C3*), 0, "S4406C2");
    check_field_offset(lv, s4406c2f0, ABISELECT(33,25), "S4406C2.s4406c2f0");
    check_field_offset(lv, s4406c2f1, ABISELECT(36,28), "S4406C2.s4406c2f1");
    check_field_offset(lv, s4406c2f2, ABISELECT(40,32), "S4406C2.s4406c2f2");
    check_field_offset(lv, s4406c2f3, ABISELECT(48,36), "S4406C2.s4406c2f3");
    test_class_info(&lv, &cd_S4406C2);
    dp->~S4406C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4406C2(Test_S4406C2, "S4406C2", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S4406C2C1Ev();
extern void _ZN7S4406C2D1Ev();
Name_Map name_map_S4406C2[] = {
  NSPAIR(_ZN7S4406C2C1Ev),
  NSPAIR(_ZN7S4406C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4406C3;
extern VTBL_ENTRY _ZTI7S4406C3[];
extern  VTBL_ENTRY _ZTV7S4406C3[];
static Base_Class bases_S4406C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4406C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4406C2[];
extern void _ZN7S4406C2D1Ev();
extern void _ZN7S4406C2D0Ev();
extern void _ZN7S4406C32v2Ev();
extern void _ZN7S4406C32v3Ev();
extern void _ZN7S4406C32v4Ev();
extern void _ZN7S4406C22v5Ev();
extern void _ZN7S4406C22v6Ev();
extern void _ZN7S4406C22v7Ev();
extern void _ZN7S4406C22v8Ev();
static  VTBL_ENTRY vtc_S4406C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4406C2[0]),
  (VTBL_ENTRY)&_ZN7S4406C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4406C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4406C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4406C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4406C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4406C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4406C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4406C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4406C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4406C2[];
extern  VTBL_ENTRY _ZTV7S4406C2[];
Class_Descriptor cd_S4406C2 = {  "S4406C2", // class name
  bases_S4406C2, 1,
  &(vtc_S4406C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S4406C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4406C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4406C1  : S4406C2 {
  ::S2213C20_nt s4406c1f0;
  virtual  ~S4406C1(); // _ZN7S4406C1D1Ev
  virtual void  v1(); // _ZN7S4406C12v1Ev
  S4406C1(); // tgen
};
//SIG(1 S4406C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v5 v6 v7 v8 Fc Fi Fc Fp[4]} vd v1 FC4}


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

static void Test_S4406C1()
{
  extern Class_Descriptor cd_S4406C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S4406C1, buf);
    S4406C1 *dp, &lv = *(dp=new (buf) S4406C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S4406C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4406C1)");
    check_base_class_offset(lv, (S4406C3*)(S4406C2*), 0, "S4406C1");
    check_base_class_offset(lv, (S4406C2*), 0, "S4406C1");
    check_field_offset(lv, s4406c1f0, ABISELECT(80,52), "S4406C1.s4406c1f0");
    test_class_info(&lv, &cd_S4406C1);
    dp->~S4406C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4406C1(Test_S4406C1, "S4406C1", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN7S4406C1C1Ev();
extern void _ZN7S4406C1D1Ev();
Name_Map name_map_S4406C1[] = {
  NSPAIR(_ZN7S4406C1C1Ev),
  NSPAIR(_ZN7S4406C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4406C3;
extern VTBL_ENTRY _ZTI7S4406C3[];
extern  VTBL_ENTRY _ZTV7S4406C3[];
extern Class_Descriptor cd_S4406C2;
extern VTBL_ENTRY _ZTI7S4406C2[];
extern  VTBL_ENTRY _ZTV7S4406C2[];
static Base_Class bases_S4406C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4406C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4406C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4406C1[];
extern void _ZN7S4406C1D1Ev();
extern void _ZN7S4406C1D0Ev();
extern void _ZN7S4406C32v2Ev();
extern void _ZN7S4406C32v3Ev();
extern void _ZN7S4406C32v4Ev();
extern void _ZN7S4406C22v5Ev();
extern void _ZN7S4406C22v6Ev();
extern void _ZN7S4406C22v7Ev();
extern void _ZN7S4406C22v8Ev();
extern void _ZN7S4406C12v1Ev();
static  VTBL_ENTRY vtc_S4406C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4406C1[0]),
  (VTBL_ENTRY)&_ZN7S4406C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4406C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4406C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4406C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4406C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4406C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4406C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4406C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4406C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4406C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4406C1[];
extern  VTBL_ENTRY _ZTV7S4406C1[];
Class_Descriptor cd_S4406C1 = {  "S4406C1", // class name
  bases_S4406C1, 2,
  &(vtc_S4406C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI7S4406C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4406C1),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  S7580C3  {
  int s7580c3f0[5];
  virtual void  v3(); // _ZN7S7580C32v3Ev
  virtual void  v4(); // _ZN7S7580C32v4Ev
  virtual void  v5(); // _ZN7S7580C32v5Ev
  virtual void  v6(); // _ZN7S7580C32v6Ev
  ~S7580C3(); // tgen
  S7580C3(); // tgen
};
//SIG(-1 S7580C3) C1{ v1 v2 v3 v4 Fi[5]}


void  S7580C3 ::v3(){vfunc_called(this, "_ZN7S7580C32v3Ev");}
void  S7580C3 ::v4(){vfunc_called(this, "_ZN7S7580C32v4Ev");}
void  S7580C3 ::v5(){vfunc_called(this, "_ZN7S7580C32v5Ev");}
void  S7580C3 ::v6(){vfunc_called(this, "_ZN7S7580C32v6Ev");}
S7580C3 ::~S7580C3(){ note_dtor("S7580C3", this);} // tgen
S7580C3 ::S7580C3(){ note_ctor("S7580C3", this);} // tgen

static void Test_S7580C3()
{
  extern Class_Descriptor cd_S7580C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S7580C3, buf);
    S7580C3 *dp, &lv = *(dp=new (buf) S7580C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S7580C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7580C3)");
    check_field_offset(lv, s7580c3f0, ABISELECT(8,4), "S7580C3.s7580c3f0");
    test_class_info(&lv, &cd_S7580C3);
    dp->~S7580C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7580C3(Test_S7580C3, "S7580C3", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S7580C3C1Ev();
extern void _ZN7S7580C3D1Ev();
Name_Map name_map_S7580C3[] = {
  NSPAIR(_ZN7S7580C3C1Ev),
  NSPAIR(_ZN7S7580C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7580C3[];
extern void _ZN7S7580C32v3Ev();
extern void _ZN7S7580C32v4Ev();
extern void _ZN7S7580C32v5Ev();
extern void _ZN7S7580C32v6Ev();
static  VTBL_ENTRY vtc_S7580C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7580C3[0]),
  (VTBL_ENTRY)&_ZN7S7580C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S7580C3[];
extern  VTBL_ENTRY _ZTV7S7580C3[];
Class_Descriptor cd_S7580C3 = {  "S7580C3", // class name
  0,0,//no base classes
  &(vtc_S7580C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S7580C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7580C3),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  S7580C4_nt  {
  long double s7580c4f0;
  virtual  ~S7580C4_nt(); // _ZN10S7580C4_ntD1Ev
  virtual void  v12(); // _ZN10S7580C4_nt3v12Ev
  S7580C4_nt(); // tgen
};
//SIG(-1 S7580C4_nt) C1{ vd v1 FD}


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

//skip512 S7580C4_nt

#else // __cplusplus

extern void _ZN10S7580C4_ntC1Ev();
extern void _ZN10S7580C4_ntD1Ev();
Name_Map name_map_S7580C4_nt[] = {
  NSPAIR(_ZN10S7580C4_ntC1Ev),
  NSPAIR(_ZN10S7580C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7580C4_nt[];
extern void _ZN10S7580C4_ntD1Ev();
extern void _ZN10S7580C4_ntD0Ev();
extern void _ZN10S7580C4_nt3v12Ev();
static  VTBL_ENTRY vtc_S7580C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7580C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S7580C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7580C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7580C4_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI10S7580C4_nt[];
VTBL_ENTRY *P__ZTI10S7580C4_nt = _ZTI10S7580C4_nt; 
extern  VTBL_ENTRY _ZTV10S7580C4_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7580C2  : virtual S7580C3 {
  __tsi64 s7580c2f0;
  int s7580c2f1;
  ::S7580C4_nt s7580c2f2;
  ::S7580C3 s7580c2f3;
  virtual  ~S7580C2(); // _ZN7S7580C2D2Ev
  virtual void  v7(); // _ZN7S7580C22v7Ev
  virtual void  v8(); // _ZN7S7580C22v8Ev
  virtual void  v9(); // _ZN7S7580C22v9Ev
  virtual void  v10(); // _ZN7S7580C23v10Ev
  virtual void  v11(); // _ZN7S7580C23v11Ev
  S7580C2(); // tgen
};
//SIG(-1 S7580C2) C1{ VBC2{ v6 v7 v8 v9 Fi[5]} vd v1 v2 v3 v4 v5 FL Fi FC3{ vd v10 FD} FC2}


 S7580C2 ::~S7580C2(){ note_dtor("S7580C2", this);}
void  S7580C2 ::v7(){vfunc_called(this, "_ZN7S7580C22v7Ev");}
void  S7580C2 ::v8(){vfunc_called(this, "_ZN7S7580C22v8Ev");}
void  S7580C2 ::v9(){vfunc_called(this, "_ZN7S7580C22v9Ev");}
void  S7580C2 ::v10(){vfunc_called(this, "_ZN7S7580C23v10Ev");}
void  S7580C2 ::v11(){vfunc_called(this, "_ZN7S7580C23v11Ev");}
S7580C2 ::S7580C2(){ note_ctor("S7580C2", this);} // tgen

static void Test_S7580C2()
{
  extern Class_Descriptor cd_S7580C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,21)];
    init_test(&cd_S7580C2, buf);
    S7580C2 *dp, &lv = *(dp=new (buf) S7580C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,80), "sizeof(S7580C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7580C2)");
    check_base_class_offset(lv, (S7580C3*), ABISELECT(96,56), "S7580C2");
    check_field_offset(lv, s7580c2f0, ABISELECT(8,4), "S7580C2.s7580c2f0");
    check_field_offset(lv, s7580c2f1, ABISELECT(16,12), "S7580C2.s7580c2f1");
    check_field_offset(lv, s7580c2f2, ABISELECT(32,16), "S7580C2.s7580c2f2");
    check_field_offset(lv, s7580c2f3, ABISELECT(64,32), "S7580C2.s7580c2f3");
    test_class_info(&lv, &cd_S7580C2);
    dp->~S7580C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7580C2(Test_S7580C2, "S7580C2", ABISELECT(128,80));

#else // __cplusplus

extern void _ZN7S7580C2C1Ev();
extern void _ZN7S7580C2D2Ev();
Name_Map name_map_S7580C2[] = {
  NSPAIR(_ZN7S7580C2C1Ev),
  NSPAIR(_ZN7S7580C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7580C3;
extern VTBL_ENTRY _ZTI7S7580C3[];
extern  VTBL_ENTRY _ZTV7S7580C3[];
static Base_Class bases_S7580C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7580C3,    ABISELECT(96,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7580C2[];
extern void _ZN7S7580C2D1Ev();
extern void _ZN7S7580C2D0Ev();
extern void _ZN7S7580C22v7Ev();
extern void _ZN7S7580C22v8Ev();
extern void _ZN7S7580C22v9Ev();
extern void _ZN7S7580C23v10Ev();
extern void _ZN7S7580C23v11Ev();
extern void _ZN7S7580C32v3Ev();
extern void _ZN7S7580C32v4Ev();
extern void _ZN7S7580C32v5Ev();
extern void _ZN7S7580C32v6Ev();
static  VTBL_ENTRY vtc_S7580C2[] = {
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7580C2[0]),
  (VTBL_ENTRY)&_ZN7S7580C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7580C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7580C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7580C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7580C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7580C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7580C23v11Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7580C2[0]),
  (VTBL_ENTRY)&_ZN7S7580C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v6Ev,
};
extern VTBL_ENTRY _ZTV7S7580C2[];
static  VTT_ENTRY vtt_S7580C2[] = {
  {&(_ZTV7S7580C2[3]),  3,20},
  {&(_ZTV7S7580C2[16]),  16,20},
};
extern VTBL_ENTRY _ZTI7S7580C2[];
extern  VTBL_ENTRY _ZTV7S7580C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7580C2[];
Class_Descriptor cd_S7580C2 = {  "S7580C2", // class name
  bases_S7580C2, 1,
  &(vtc_S7580C2[0]), // expected_vtbl_contents
  &(vtt_S7580C2[0]), // expected_vtt_contents
  ABISELECT(128,80), // object size
  NSPAIRA(_ZTI7S7580C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7580C2),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7580C2),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  S7580C1  : S7580C2 {
  void *s7580c1f0[2];
  unsigned char s7580c1f1:1;
  virtual void  v1(); // _ZN7S7580C12v1Ev
  virtual void  v2(); // _ZN7S7580C12v2Ev
  ~S7580C1(); // tgen
  S7580C1(); // tgen
};
//SIG(1 S7580C1) C1{ BC2{ VBC3{ v3 v4 v5 v6 Fi[5]} vd v7 v8 v9 v10 v11 FL Fi FC4{ vd v12 FD} FC3} v1 v2 Fp[2] Fc:1}


void  S7580C1 ::v1(){vfunc_called(this, "_ZN7S7580C12v1Ev");}
void  S7580C1 ::v2(){vfunc_called(this, "_ZN7S7580C12v2Ev");}
S7580C1 ::~S7580C1(){ note_dtor("S7580C1", this);} // tgen
S7580C1 ::S7580C1(){ note_ctor("S7580C1", this);} // tgen

static void Test_S7580C1()
{
  extern Class_Descriptor cd_S7580C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,24)];
    init_test(&cd_S7580C1, buf);
    S7580C1 *dp, &lv = *(dp=new (buf) S7580C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,92), "sizeof(S7580C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7580C1)");
    check_base_class_offset(lv, (S7580C3*)(S7580C2*), ABISELECT(120,68), "S7580C1");
    check_base_class_offset(lv, (S7580C2*), 0, "S7580C1");
    check_field_offset(lv, s7580c1f0, ABISELECT(96,56), "S7580C1.s7580c1f0");
    set_bf_and_test(lv, s7580c1f1, ABISELECT(112,64), 0, 1, 1, "S7580C1");
    test_class_info(&lv, &cd_S7580C1);
    dp->~S7580C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7580C1(Test_S7580C1, "S7580C1", ABISELECT(160,92));

#else // __cplusplus

extern void _ZN7S7580C1C1Ev();
extern void _ZN7S7580C1D1Ev();
Name_Map name_map_S7580C1[] = {
  NSPAIR(_ZN7S7580C1C1Ev),
  NSPAIR(_ZN7S7580C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7580C3;
extern VTBL_ENTRY _ZTI7S7580C3[];
extern  VTBL_ENTRY _ZTV7S7580C3[];
extern Class_Descriptor cd_S7580C2;
extern VTBL_ENTRY _ZTI7S7580C2[];
extern  VTBL_ENTRY _ZTV7S7580C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7580C2[];
static Base_Class bases_S7580C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7580C3,    ABISELECT(120,68), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7580C2,    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 _ZTI7S7580C1[];
extern void _ZN7S7580C1D1Ev();
extern void _ZN7S7580C1D0Ev();
extern void _ZN7S7580C22v7Ev();
extern void _ZN7S7580C22v8Ev();
extern void _ZN7S7580C22v9Ev();
extern void _ZN7S7580C23v10Ev();
extern void _ZN7S7580C23v11Ev();
extern void _ZN7S7580C12v1Ev();
extern void _ZN7S7580C12v2Ev();
extern void _ZN7S7580C32v3Ev();
extern void _ZN7S7580C32v4Ev();
extern void _ZN7S7580C32v5Ev();
extern void _ZN7S7580C32v6Ev();
static  VTBL_ENTRY vtc_S7580C1[] = {
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7580C1[0]),
  (VTBL_ENTRY)&_ZN7S7580C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7580C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7580C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7580C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7580C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7580C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7580C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7580C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7580C12v2Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7580C1[0]),
  (VTBL_ENTRY)&_ZN7S7580C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v6Ev,
};
extern VTBL_ENTRY _ZTV7S7580C1[];
extern void _ZN7S7580C2D1Ev();
extern void _ZN7S7580C2D0Ev();
extern void _ZN7S7580C22v7Ev();
extern void _ZN7S7580C22v8Ev();
extern void _ZN7S7580C22v9Ev();
extern void _ZN7S7580C23v10Ev();
extern void _ZN7S7580C23v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7580C2__7S7580C1[] = {
  ABISELECT(120,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7580C2[0]),
  (VTBL_ENTRY)&_ZN7S7580C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7580C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7580C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7580C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7580C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7580C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7580C23v11Ev,
};
extern void _ZN7S7580C32v3Ev();
extern void _ZN7S7580C32v4Ev();
extern void _ZN7S7580C32v5Ev();
extern void _ZN7S7580C32v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7580C3__7S7580C2__7S7580C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7580C2[0]),
  (VTBL_ENTRY)&_ZN7S7580C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7580C32v6Ev,
};
static  VTT_ENTRY vtt_S7580C1[] = {
  {&(_ZTV7S7580C1[3]),  3,22},
  {&(_tg__ZTV7S7580C2__7S7580C1[3]),  3,10},
  {&(_tg__ZTV7S7580C3__7S7580C2__7S7580C1[6]),  6,10},
  {&(_ZTV7S7580C1[18]),  18,22},
};
extern VTBL_ENTRY _ZTI7S7580C1[];
extern  VTBL_ENTRY _ZTV7S7580C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7580C1[];
Class_Descriptor cd_S7580C1 = {  "S7580C1", // class name
  bases_S7580C1, 2,
  &(vtc_S7580C1[0]), // expected_vtbl_contents
  &(vtt_S7580C1[0]), // expected_vtt_contents
  ABISELECT(160,92), // object size
  NSPAIRA(_ZTI7S7580C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7580C1),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7580C1),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12048C5_nt  {
  int s12048c5f0[4];
  void  mf12048c5(); // _ZN11S12048C5_nt9mf12048c5Ev
};
//SIG(-1 S12048C5_nt) C1{ m Fi[4]}


void  S12048C5_nt ::mf12048c5(){}

//skip512 S12048C5_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S12048C6_nt  {
  int s12048c6f0[3];
  void  mf12048c6(); // _ZN11S12048C6_nt9mf12048c6Ev
};
//SIG(-1 S12048C6_nt) C1{ m Fi[3]}


void  S12048C6_nt ::mf12048c6(){}

//skip512 S12048C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12048C3  {
  ::S3164C13_nt s12048c3f0;
  ::S12048C5_nt s12048c3f1;
  ::S12048C6_nt s12048c3f2;
};
//SIG(-1 S12048C3) C1{ FC2{ m Fi[3]} FC3{ m Fi[4]} FC4{ m Fi[3]}}



static void Test_S12048C3()
{
  {
    init_simple_test("S12048C3");
    S12048C3 lv;
    check2(sizeof(lv), 40, "sizeof(S12048C3)");
    check2(__alignof__(lv), 4, "__alignof__(S12048C3)");
    check_field_offset(lv, s12048c3f0, 0, "S12048C3.s12048c3f0");
    check_field_offset(lv, s12048c3f1, 12, "S12048C3.s12048c3f1");
    check_field_offset(lv, s12048c3f2, 28, "S12048C3.s12048c3f2");
  }
}
static Arrange_To_Call_Me vS12048C3(Test_S12048C3, "S12048C3", 40);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12048C1  {
  ::S3164C4_nt s12048c1f0;
  ::S12048C3 s12048c1f1;
  ::S12048C3 s12048c1f2;
  ::S12048C3 s12048c1f3;
  ::S12048C3 s12048c1f4;
  ::S12048C3 s12048c1f5;
  ::S12048C3 s12048c1f6;
  ::S12048C3 s12048c1f7;
  ::S12048C3 s12048c1f8;
  ::S12048C3 s12048c1f9;
};
//SIG(1 S12048C1) C1{ FC2{ m Fi[2]} FC3{ FC4{ m Fi[3]} FC5{ m Fi[4]} FC6{ m Fi[3]}} FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3}



static void Test_S12048C1()
{
  {
    init_simple_test("S12048C1");
    S12048C1 lv;
    check2(sizeof(lv), 368, "sizeof(S12048C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12048C1)");
    check_field_offset(lv, s12048c1f0, 0, "S12048C1.s12048c1f0");
    check_field_offset(lv, s12048c1f1, 8, "S12048C1.s12048c1f1");
    check_field_offset(lv, s12048c1f2, 48, "S12048C1.s12048c1f2");
    check_field_offset(lv, s12048c1f3, 88, "S12048C1.s12048c1f3");
    check_field_offset(lv, s12048c1f4, 128, "S12048C1.s12048c1f4");
    check_field_offset(lv, s12048c1f5, 168, "S12048C1.s12048c1f5");
    check_field_offset(lv, s12048c1f6, 208, "S12048C1.s12048c1f6");
    check_field_offset(lv, s12048c1f7, 248, "S12048C1.s12048c1f7");
    check_field_offset(lv, s12048c1f8, 288, "S12048C1.s12048c1f8");
    check_field_offset(lv, s12048c1f9, 328, "S12048C1.s12048c1f9");
  }
}
static Arrange_To_Call_Me vS12048C1(Test_S12048C1, "S12048C1", 368);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4811C3  {
  ::S2213C20_nt s4811c3f0;
  int s4811c3f1[2];
  char s4811c3f2;
  virtual  ~S4811C3(); // _ZN7S4811C3D1Ev
  virtual void  v3(); // _ZN7S4811C32v3Ev
  virtual void  v4(); // _ZN7S4811C32v4Ev
  virtual void  v5(); // _ZN7S4811C32v5Ev
  S4811C3(); // tgen
};
//SIG(-1 S4811C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4811C3 ::~S4811C3(){ note_dtor("S4811C3", this);}
void  S4811C3 ::v3(){vfunc_called(this, "_ZN7S4811C32v3Ev");}
void  S4811C3 ::v4(){vfunc_called(this, "_ZN7S4811C32v4Ev");}
void  S4811C3 ::v5(){vfunc_called(this, "_ZN7S4811C32v5Ev");}
S4811C3 ::S4811C3(){ note_ctor("S4811C3", this);} // tgen

static void Test_S4811C3()
{
  extern Class_Descriptor cd_S4811C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4811C3, buf);
    S4811C3 *dp, &lv = *(dp=new (buf) S4811C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4811C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4811C3)");
    check_field_offset(lv, s4811c3f0, ABISELECT(8,4), "S4811C3.s4811c3f0");
    check_field_offset(lv, s4811c3f1, ABISELECT(24,16), "S4811C3.s4811c3f1");
    check_field_offset(lv, s4811c3f2, ABISELECT(32,24), "S4811C3.s4811c3f2");
    test_class_info(&lv, &cd_S4811C3);
    dp->~S4811C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4811C3(Test_S4811C3, "S4811C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4811C3C1Ev();
extern void _ZN7S4811C3D1Ev();
Name_Map name_map_S4811C3[] = {
  NSPAIR(_ZN7S4811C3C1Ev),
  NSPAIR(_ZN7S4811C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4811C3[];
extern void _ZN7S4811C3D1Ev();
extern void _ZN7S4811C3D0Ev();
extern void _ZN7S4811C32v3Ev();
extern void _ZN7S4811C32v4Ev();
extern void _ZN7S4811C32v5Ev();
static  VTBL_ENTRY vtc_S4811C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4811C3[0]),
  (VTBL_ENTRY)&_ZN7S4811C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4811C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4811C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4811C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4811C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4811C3[];
extern  VTBL_ENTRY _ZTV7S4811C3[];
Class_Descriptor cd_S4811C3 = {  "S4811C3", // class name
  0,0,//no base classes
  &(vtc_S4811C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4811C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4811C3),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  S4811C2  : S4811C3 {
  char s4811c2f0[2];
  int s4811c2f1;
  void *s4811c2f2;
  int s4811c2f3;
  virtual  ~S4811C2(); // _ZN7S4811C2D1Ev
  virtual void  v6(); // _ZN7S4811C22v6Ev
  virtual void  v7(); // _ZN7S4811C22v7Ev
  S4811C2(); // tgen
};
//SIG(-1 S4811C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc[2] Fi Fp Fi}


 S4811C2 ::~S4811C2(){ note_dtor("S4811C2", this);}
void  S4811C2 ::v6(){vfunc_called(this, "_ZN7S4811C22v6Ev");}
void  S4811C2 ::v7(){vfunc_called(this, "_ZN7S4811C22v7Ev");}
S4811C2 ::S4811C2(){ note_ctor("S4811C2", this);} // tgen

static void Test_S4811C2()
{
  extern Class_Descriptor cd_S4811C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S4811C2, buf);
    S4811C2 *dp, &lv = *(dp=new (buf) S4811C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S4811C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4811C2)");
    check_base_class_offset(lv, (S4811C3*), 0, "S4811C2");
    check_field_offset(lv, s4811c2f0, ABISELECT(33,25), "S4811C2.s4811c2f0");
    check_field_offset(lv, s4811c2f1, ABISELECT(36,28), "S4811C2.s4811c2f1");
    check_field_offset(lv, s4811c2f2, ABISELECT(40,32), "S4811C2.s4811c2f2");
    check_field_offset(lv, s4811c2f3, ABISELECT(48,36), "S4811C2.s4811c2f3");
    test_class_info(&lv, &cd_S4811C2);
    dp->~S4811C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4811C2(Test_S4811C2, "S4811C2", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN7S4811C2C1Ev();
extern void _ZN7S4811C2D1Ev();
Name_Map name_map_S4811C2[] = {
  NSPAIR(_ZN7S4811C2C1Ev),
  NSPAIR(_ZN7S4811C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4811C3;
extern VTBL_ENTRY _ZTI7S4811C3[];
extern  VTBL_ENTRY _ZTV7S4811C3[];
static Base_Class bases_S4811C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4811C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4811C2[];
extern void _ZN7S4811C2D1Ev();
extern void _ZN7S4811C2D0Ev();
extern void _ZN7S4811C32v3Ev();
extern void _ZN7S4811C32v4Ev();
extern void _ZN7S4811C32v5Ev();
extern void _ZN7S4811C22v6Ev();
extern void _ZN7S4811C22v7Ev();
static  VTBL_ENTRY vtc_S4811C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4811C2[0]),
  (VTBL_ENTRY)&_ZN7S4811C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4811C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4811C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4811C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4811C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4811C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4811C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4811C2[];
extern  VTBL_ENTRY _ZTV7S4811C2[];
Class_Descriptor cd_S4811C2 = {  "S4811C2", // class name
  bases_S4811C2, 1,
  &(vtc_S4811C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI7S4811C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4811C2),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  S4811C1  : S4811C2 {
  int s4811c1f0;
  virtual  ~S4811C1(); // _ZN7S4811C1D1Ev
  virtual void  v1(); // _ZN7S4811C12v1Ev
  virtual void  v2(); // _ZN7S4811C12v2Ev
  S4811C1(); // tgen
};
//SIG(1 S4811C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v6 v7 Fc[2] Fi Fp Fi} vd v1 v2 Fi}


 S4811C1 ::~S4811C1(){ note_dtor("S4811C1", this);}
void  S4811C1 ::v1(){vfunc_called(this, "_ZN7S4811C12v1Ev");}
void  S4811C1 ::v2(){vfunc_called(this, "_ZN7S4811C12v2Ev");}
S4811C1 ::S4811C1(){ note_ctor("S4811C1", this);} // tgen

static void Test_S4811C1()
{
  extern Class_Descriptor cd_S4811C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,12)];
    init_test(&cd_S4811C1, buf);
    S4811C1 *dp, &lv = *(dp=new (buf) S4811C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S4811C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4811C1)");
    check_base_class_offset(lv, (S4811C3*)(S4811C2*), 0, "S4811C1");
    check_base_class_offset(lv, (S4811C2*), 0, "S4811C1");
    check_field_offset(lv, s4811c1f0, ABISELECT(52,40), "S4811C1.s4811c1f0");
    test_class_info(&lv, &cd_S4811C1);
    dp->~S4811C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4811C1(Test_S4811C1, "S4811C1", ABISELECT(56,44));

#else // __cplusplus

extern void _ZN7S4811C1C1Ev();
extern void _ZN7S4811C1D1Ev();
Name_Map name_map_S4811C1[] = {
  NSPAIR(_ZN7S4811C1C1Ev),
  NSPAIR(_ZN7S4811C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4811C3;
extern VTBL_ENTRY _ZTI7S4811C3[];
extern  VTBL_ENTRY _ZTV7S4811C3[];
extern Class_Descriptor cd_S4811C2;
extern VTBL_ENTRY _ZTI7S4811C2[];
extern  VTBL_ENTRY _ZTV7S4811C2[];
static Base_Class bases_S4811C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4811C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4811C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4811C1[];
extern void _ZN7S4811C1D1Ev();
extern void _ZN7S4811C1D0Ev();
extern void _ZN7S4811C32v3Ev();
extern void _ZN7S4811C32v4Ev();
extern void _ZN7S4811C32v5Ev();
extern void _ZN7S4811C22v6Ev();
extern void _ZN7S4811C22v7Ev();
extern void _ZN7S4811C12v1Ev();
extern void _ZN7S4811C12v2Ev();
static  VTBL_ENTRY vtc_S4811C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4811C1[0]),
  (VTBL_ENTRY)&_ZN7S4811C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4811C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4811C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4811C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4811C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4811C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4811C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4811C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4811C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4811C1[];
extern  VTBL_ENTRY _ZTV7S4811C1[];
Class_Descriptor cd_S4811C1 = {  "S4811C1", // class name
  bases_S4811C1, 2,
  &(vtc_S4811C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,44), // object size
  NSPAIRA(_ZTI7S4811C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4811C1),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  S4407C3  {
  ::S2213C20_nt s4407c3f0;
  int s4407c3f1[2];
  char s4407c3f2;
  virtual  ~S4407C3(); // _ZN7S4407C3D1Ev
  virtual void  v2(); // _ZN7S4407C32v2Ev
  virtual void  v3(); // _ZN7S4407C32v3Ev
  virtual void  v4(); // _ZN7S4407C32v4Ev
  S4407C3(); // tgen
};
//SIG(-1 S4407C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4407C3 ::~S4407C3(){ note_dtor("S4407C3", this);}
void  S4407C3 ::v2(){vfunc_called(this, "_ZN7S4407C32v2Ev");}
void  S4407C3 ::v3(){vfunc_called(this, "_ZN7S4407C32v3Ev");}
void  S4407C3 ::v4(){vfunc_called(this, "_ZN7S4407C32v4Ev");}
S4407C3 ::S4407C3(){ note_ctor("S4407C3", this);} // tgen

static void Test_S4407C3()
{
  extern Class_Descriptor cd_S4407C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4407C3, buf);
    S4407C3 *dp, &lv = *(dp=new (buf) S4407C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4407C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4407C3)");
    check_field_offset(lv, s4407c3f0, ABISELECT(8,4), "S4407C3.s4407c3f0");
    check_field_offset(lv, s4407c3f1, ABISELECT(24,16), "S4407C3.s4407c3f1");
    check_field_offset(lv, s4407c3f2, ABISELECT(32,24), "S4407C3.s4407c3f2");
    test_class_info(&lv, &cd_S4407C3);
    dp->~S4407C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4407C3(Test_S4407C3, "S4407C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4407C3C1Ev();
extern void _ZN7S4407C3D1Ev();
Name_Map name_map_S4407C3[] = {
  NSPAIR(_ZN7S4407C3C1Ev),
  NSPAIR(_ZN7S4407C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4407C3[];
extern void _ZN7S4407C3D1Ev();
extern void _ZN7S4407C3D0Ev();
extern void _ZN7S4407C32v2Ev();
extern void _ZN7S4407C32v3Ev();
extern void _ZN7S4407C32v4Ev();
static  VTBL_ENTRY vtc_S4407C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4407C3[0]),
  (VTBL_ENTRY)&_ZN7S4407C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4407C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4407C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4407C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4407C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4407C3[];
extern  VTBL_ENTRY _ZTV7S4407C3[];
Class_Descriptor cd_S4407C3 = {  "S4407C3", // class name
  0,0,//no base classes
  &(vtc_S4407C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4407C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4407C3),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  S4407C2  : S4407C3 {
  char s4407c2f0;
  int s4407c2f1;
  char s4407c2f2;
  void *s4407c2f3[4];
  virtual  ~S4407C2(); // _ZN7S4407C2D1Ev
  virtual void  v5(); // _ZN7S4407C22v5Ev
  virtual void  v6(); // _ZN7S4407C22v6Ev
  virtual void  v7(); // _ZN7S4407C22v7Ev
  virtual void  v8(); // _ZN7S4407C22v8Ev
  S4407C2(); // tgen
};
//SIG(-1 S4407C2) C1{ BC2{ vd v5 v6 v7 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 v4 Fc Fi Fc Fp[4]}


 S4407C2 ::~S4407C2(){ note_dtor("S4407C2", this);}
void  S4407C2 ::v5(){vfunc_called(this, "_ZN7S4407C22v5Ev");}
void  S4407C2 ::v6(){vfunc_called(this, "_ZN7S4407C22v6Ev");}
void  S4407C2 ::v7(){vfunc_called(this, "_ZN7S4407C22v7Ev");}
void  S4407C2 ::v8(){vfunc_called(this, "_ZN7S4407C22v8Ev");}
S4407C2 ::S4407C2(){ note_ctor("S4407C2", this);} // tgen

static void Test_S4407C2()
{
  extern Class_Descriptor cd_S4407C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S4407C2, buf);
    S4407C2 *dp, &lv = *(dp=new (buf) S4407C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S4407C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4407C2)");
    check_base_class_offset(lv, (S4407C3*), 0, "S4407C2");
    check_field_offset(lv, s4407c2f0, ABISELECT(33,25), "S4407C2.s4407c2f0");
    check_field_offset(lv, s4407c2f1, ABISELECT(36,28), "S4407C2.s4407c2f1");
    check_field_offset(lv, s4407c2f2, ABISELECT(40,32), "S4407C2.s4407c2f2");
    check_field_offset(lv, s4407c2f3, ABISELECT(48,36), "S4407C2.s4407c2f3");
    test_class_info(&lv, &cd_S4407C2);
    dp->~S4407C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4407C2(Test_S4407C2, "S4407C2", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S4407C2C1Ev();
extern void _ZN7S4407C2D1Ev();
Name_Map name_map_S4407C2[] = {
  NSPAIR(_ZN7S4407C2C1Ev),
  NSPAIR(_ZN7S4407C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4407C3;
extern VTBL_ENTRY _ZTI7S4407C3[];
extern  VTBL_ENTRY _ZTV7S4407C3[];
static Base_Class bases_S4407C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4407C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4407C2[];
extern void _ZN7S4407C2D1Ev();
extern void _ZN7S4407C2D0Ev();
extern void _ZN7S4407C32v2Ev();
extern void _ZN7S4407C32v3Ev();
extern void _ZN7S4407C32v4Ev();
extern void _ZN7S4407C22v5Ev();
extern void _ZN7S4407C22v6Ev();
extern void _ZN7S4407C22v7Ev();
extern void _ZN7S4407C22v8Ev();
static  VTBL_ENTRY vtc_S4407C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4407C2[0]),
  (VTBL_ENTRY)&_ZN7S4407C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4407C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4407C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4407C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4407C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4407C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4407C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4407C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4407C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4407C2[];
extern  VTBL_ENTRY _ZTV7S4407C2[];
Class_Descriptor cd_S4407C2 = {  "S4407C2", // class name
  bases_S4407C2, 1,
  &(vtc_S4407C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S4407C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4407C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4407C1  : S4407C2 {
  virtual  ~S4407C1(); // _ZN7S4407C1D1Ev
  virtual void  v1(); // _ZN7S4407C12v1Ev
  S4407C1(); // tgen
};
//SIG(1 S4407C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v5 v6 v7 v8 Fc Fi Fc Fp[4]} vd v1}


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

static void Test_S4407C1()
{
  extern Class_Descriptor cd_S4407C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S4407C1, buf);
    S4407C1 *dp, &lv = *(dp=new (buf) S4407C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S4407C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4407C1)");
    check_base_class_offset(lv, (S4407C3*)(S4407C2*), 0, "S4407C1");
    check_base_class_offset(lv, (S4407C2*), 0, "S4407C1");
    test_class_info(&lv, &cd_S4407C1);
    dp->~S4407C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4407C1(Test_S4407C1, "S4407C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S4407C1C1Ev();
extern void _ZN7S4407C1D1Ev();
Name_Map name_map_S4407C1[] = {
  NSPAIR(_ZN7S4407C1C1Ev),
  NSPAIR(_ZN7S4407C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4407C3;
extern VTBL_ENTRY _ZTI7S4407C3[];
extern  VTBL_ENTRY _ZTV7S4407C3[];
extern Class_Descriptor cd_S4407C2;
extern VTBL_ENTRY _ZTI7S4407C2[];
extern  VTBL_ENTRY _ZTV7S4407C2[];
static Base_Class bases_S4407C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4407C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4407C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4407C1[];
extern void _ZN7S4407C1D1Ev();
extern void _ZN7S4407C1D0Ev();
extern void _ZN7S4407C32v2Ev();
extern void _ZN7S4407C32v3Ev();
extern void _ZN7S4407C32v4Ev();
extern void _ZN7S4407C22v5Ev();
extern void _ZN7S4407C22v6Ev();
extern void _ZN7S4407C22v7Ev();
extern void _ZN7S4407C22v8Ev();
extern void _ZN7S4407C12v1Ev();
static  VTBL_ENTRY vtc_S4407C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4407C1[0]),
  (VTBL_ENTRY)&_ZN7S4407C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4407C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4407C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4407C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4407C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4407C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4407C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4407C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4407C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4407C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4407C1[];
extern  VTBL_ENTRY _ZTV7S4407C1[];
Class_Descriptor cd_S4407C1 = {  "S4407C1", // class name
  bases_S4407C1, 2,
  &(vtc_S4407C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S4407C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4407C1),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  S4812C3  {
  ::S2213C20_nt s4812c3f0;
  int s4812c3f1[2];
  char s4812c3f2;
  virtual  ~S4812C3(); // _ZN7S4812C3D1Ev
  virtual void  v3(); // _ZN7S4812C32v3Ev
  virtual void  v4(); // _ZN7S4812C32v4Ev
  virtual void  v5(); // _ZN7S4812C32v5Ev
  S4812C3(); // tgen
};
//SIG(-1 S4812C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4812C3 ::~S4812C3(){ note_dtor("S4812C3", this);}
void  S4812C3 ::v3(){vfunc_called(this, "_ZN7S4812C32v3Ev");}
void  S4812C3 ::v4(){vfunc_called(this, "_ZN7S4812C32v4Ev");}
void  S4812C3 ::v5(){vfunc_called(this, "_ZN7S4812C32v5Ev");}
S4812C3 ::S4812C3(){ note_ctor("S4812C3", this);} // tgen

static void Test_S4812C3()
{
  extern Class_Descriptor cd_S4812C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4812C3, buf);
    S4812C3 *dp, &lv = *(dp=new (buf) S4812C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4812C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4812C3)");
    check_field_offset(lv, s4812c3f0, ABISELECT(8,4), "S4812C3.s4812c3f0");
    check_field_offset(lv, s4812c3f1, ABISELECT(24,16), "S4812C3.s4812c3f1");
    check_field_offset(lv, s4812c3f2, ABISELECT(32,24), "S4812C3.s4812c3f2");
    test_class_info(&lv, &cd_S4812C3);
    dp->~S4812C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4812C3(Test_S4812C3, "S4812C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4812C3C1Ev();
extern void _ZN7S4812C3D1Ev();
Name_Map name_map_S4812C3[] = {
  NSPAIR(_ZN7S4812C3C1Ev),
  NSPAIR(_ZN7S4812C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4812C3[];
extern void _ZN7S4812C3D1Ev();
extern void _ZN7S4812C3D0Ev();
extern void _ZN7S4812C32v3Ev();
extern void _ZN7S4812C32v4Ev();
extern void _ZN7S4812C32v5Ev();
static  VTBL_ENTRY vtc_S4812C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4812C3[0]),
  (VTBL_ENTRY)&_ZN7S4812C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4812C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4812C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4812C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4812C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4812C3[];
extern  VTBL_ENTRY _ZTV7S4812C3[];
Class_Descriptor cd_S4812C3 = {  "S4812C3", // class name
  0,0,//no base classes
  &(vtc_S4812C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4812C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4812C3),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  S4812C2  : S4812C3 {
  char s4812c2f0[2];
  int s4812c2f1;
  void *s4812c2f2;
  int s4812c2f3;
  virtual  ~S4812C2(); // _ZN7S4812C2D1Ev
  virtual void  v6(); // _ZN7S4812C22v6Ev
  virtual void  v7(); // _ZN7S4812C22v7Ev
  S4812C2(); // tgen
};
//SIG(-1 S4812C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc[2] Fi Fp Fi}


 S4812C2 ::~S4812C2(){ note_dtor("S4812C2", this);}
void  S4812C2 ::v6(){vfunc_called(this, "_ZN7S4812C22v6Ev");}
void  S4812C2 ::v7(){vfunc_called(this, "_ZN7S4812C22v7Ev");}
S4812C2 ::S4812C2(){ note_ctor("S4812C2", this);} // tgen

static void Test_S4812C2()
{
  extern Class_Descriptor cd_S4812C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S4812C2, buf);
    S4812C2 *dp, &lv = *(dp=new (buf) S4812C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S4812C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4812C2)");
    check_base_class_offset(lv, (S4812C3*), 0, "S4812C2");
    check_field_offset(lv, s4812c2f0, ABISELECT(33,25), "S4812C2.s4812c2f0");
    check_field_offset(lv, s4812c2f1, ABISELECT(36,28), "S4812C2.s4812c2f1");
    check_field_offset(lv, s4812c2f2, ABISELECT(40,32), "S4812C2.s4812c2f2");
    check_field_offset(lv, s4812c2f3, ABISELECT(48,36), "S4812C2.s4812c2f3");
    test_class_info(&lv, &cd_S4812C2);
    dp->~S4812C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4812C2(Test_S4812C2, "S4812C2", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN7S4812C2C1Ev();
extern void _ZN7S4812C2D1Ev();
Name_Map name_map_S4812C2[] = {
  NSPAIR(_ZN7S4812C2C1Ev),
  NSPAIR(_ZN7S4812C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4812C3;
extern VTBL_ENTRY _ZTI7S4812C3[];
extern  VTBL_ENTRY _ZTV7S4812C3[];
static Base_Class bases_S4812C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4812C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4812C2[];
extern void _ZN7S4812C2D1Ev();
extern void _ZN7S4812C2D0Ev();
extern void _ZN7S4812C32v3Ev();
extern void _ZN7S4812C32v4Ev();
extern void _ZN7S4812C32v5Ev();
extern void _ZN7S4812C22v6Ev();
extern void _ZN7S4812C22v7Ev();
static  VTBL_ENTRY vtc_S4812C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4812C2[0]),
  (VTBL_ENTRY)&_ZN7S4812C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4812C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4812C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4812C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4812C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4812C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4812C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4812C2[];
extern  VTBL_ENTRY _ZTV7S4812C2[];
Class_Descriptor cd_S4812C2 = {  "S4812C2", // class name
  bases_S4812C2, 1,
  &(vtc_S4812C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI7S4812C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4812C2),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  S4812C1  : S4812C2 {
  virtual  ~S4812C1(); // _ZN7S4812C1D1Ev
  virtual void  v1(); // _ZN7S4812C12v1Ev
  virtual void  v2(); // _ZN7S4812C12v2Ev
  S4812C1(); // tgen
};
//SIG(1 S4812C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v6 v7 Fc[2] Fi Fp Fi} vd v1 v2}


 S4812C1 ::~S4812C1(){ note_dtor("S4812C1", this);}
void  S4812C1 ::v1(){vfunc_called(this, "_ZN7S4812C12v1Ev");}
void  S4812C1 ::v2(){vfunc_called(this, "_ZN7S4812C12v2Ev");}
S4812C1 ::S4812C1(){ note_ctor("S4812C1", this);} // tgen

static void Test_S4812C1()
{
  extern Class_Descriptor cd_S4812C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S4812C1, buf);
    S4812C1 *dp, &lv = *(dp=new (buf) S4812C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S4812C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4812C1)");
    check_base_class_offset(lv, (S4812C3*)(S4812C2*), 0, "S4812C1");
    check_base_class_offset(lv, (S4812C2*), 0, "S4812C1");
    test_class_info(&lv, &cd_S4812C1);
    dp->~S4812C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4812C1(Test_S4812C1, "S4812C1", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN7S4812C1C1Ev();
extern void _ZN7S4812C1D1Ev();
Name_Map name_map_S4812C1[] = {
  NSPAIR(_ZN7S4812C1C1Ev),
  NSPAIR(_ZN7S4812C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4812C3;
extern VTBL_ENTRY _ZTI7S4812C3[];
extern  VTBL_ENTRY _ZTV7S4812C3[];
extern Class_Descriptor cd_S4812C2;
extern VTBL_ENTRY _ZTI7S4812C2[];
extern  VTBL_ENTRY _ZTV7S4812C2[];
static Base_Class bases_S4812C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4812C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4812C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4812C1[];
extern void _ZN7S4812C1D1Ev();
extern void _ZN7S4812C1D0Ev();
extern void _ZN7S4812C32v3Ev();
extern void _ZN7S4812C32v4Ev();
extern void _ZN7S4812C32v5Ev();
extern void _ZN7S4812C22v6Ev();
extern void _ZN7S4812C22v7Ev();
extern void _ZN7S4812C12v1Ev();
extern void _ZN7S4812C12v2Ev();
static  VTBL_ENTRY vtc_S4812C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4812C1[0]),
  (VTBL_ENTRY)&_ZN7S4812C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4812C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4812C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4812C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4812C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4812C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4812C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4812C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4812C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4812C1[];
extern  VTBL_ENTRY _ZTV7S4812C1[];
Class_Descriptor cd_S4812C1 = {  "S4812C1", // class name
  bases_S4812C1, 2,
  &(vtc_S4812C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI7S4812C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4812C1),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  S3203C3  {
  virtual void  v4(); // _ZN7S3203C32v4Ev
  virtual void  v5(); // _ZN7S3203C32v5Ev
  virtual void  v6(); // _ZN7S3203C32v6Ev
  ~S3203C3(); // tgen
  S3203C3(); // tgen
};
//SIG(-1 S3203C3) C1{ v1 v2 v3}


void  S3203C3 ::v4(){vfunc_called(this, "_ZN7S3203C32v4Ev");}
void  S3203C3 ::v5(){vfunc_called(this, "_ZN7S3203C32v5Ev");}
void  S3203C3 ::v6(){vfunc_called(this, "_ZN7S3203C32v6Ev");}
S3203C3 ::~S3203C3(){ note_dtor("S3203C3", this);} // tgen
S3203C3 ::S3203C3(){ note_ctor("S3203C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3203C3C1Ev();
extern void _ZN7S3203C3D1Ev();
Name_Map name_map_S3203C3[] = {
  NSPAIR(_ZN7S3203C3C1Ev),
  NSPAIR(_ZN7S3203C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3203C3[];
extern void _ZN7S3203C32v4Ev();
extern void _ZN7S3203C32v5Ev();
extern void _ZN7S3203C32v6Ev();
static  VTBL_ENTRY vtc_S3203C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3203C3[0]),
  (VTBL_ENTRY)&_ZN7S3203C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3203C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3203C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S3203C3[];
extern  VTBL_ENTRY _ZTV7S3203C3[];
Class_Descriptor cd_S3203C3 = {  "S3203C3", // class name
  0,0,//no base classes
  &(vtc_S3203C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3203C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3203C3),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  S3203C5_nt  {
  virtual void  v7(); // _ZN10S3203C5_nt2v7Ev
  ~S3203C5_nt(); // tgen
  S3203C5_nt(); // tgen
};
//SIG(-1 S3203C5_nt) C1{ v1}


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

//skip512 S3203C5_nt

#else // __cplusplus

extern void _ZN10S3203C5_ntC1Ev();
extern void _ZN10S3203C5_ntD1Ev();
Name_Map name_map_S3203C5_nt[] = {
  NSPAIR(_ZN10S3203C5_ntC1Ev),
  NSPAIR(_ZN10S3203C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3203C5_nt[];
extern void _ZN10S3203C5_nt2v7Ev();
static  VTBL_ENTRY vtc_S3203C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3203C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S3203C5_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S3203C5_nt[];
VTBL_ENTRY *P__ZTI10S3203C5_nt = _ZTI10S3203C5_nt; 
extern  VTBL_ENTRY _ZTV10S3203C5_nt[];
Class_Descriptor cd_S3203C5_nt = {  "S3203C5_nt", // class name
  0,0,//no base classes
  &(vtc_S3203C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S3203C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3203C5_nt),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3203C4  : virtual S3203C5_nt {
  int s3203c4f0;
  virtual void  v8(); // _ZN7S3203C42v8Ev
  virtual void  v9(); // _ZN7S3203C42v9Ev
  virtual void  v10(); // _ZN7S3203C43v10Ev
  ~S3203C4(); // tgen
  S3203C4(); // tgen
};
//SIG(-1 S3203C4) C1{ VBC2{ v4} v1 v2 v3 Fi}


void  S3203C4 ::v8(){vfunc_called(this, "_ZN7S3203C42v8Ev");}
void  S3203C4 ::v9(){vfunc_called(this, "_ZN7S3203C42v9Ev");}
void  S3203C4 ::v10(){vfunc_called(this, "_ZN7S3203C43v10Ev");}
S3203C4 ::~S3203C4(){ note_dtor("S3203C4", this);} // tgen
S3203C4 ::S3203C4(){ note_ctor("S3203C4", this);} // tgen

static void Test_S3203C4()
{
  extern Class_Descriptor cd_S3203C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3203C4, buf);
    S3203C4 *dp, &lv = *(dp=new (buf) S3203C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3203C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3203C4)");
    check_base_class_offset(lv, (S3203C5_nt*), 0, "S3203C4");
    check_field_offset(lv, s3203c4f0, ABISELECT(8,4), "S3203C4.s3203c4f0");
    test_class_info(&lv, &cd_S3203C4);
    dp->~S3203C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3203C4(Test_S3203C4, "S3203C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3203C4C1Ev();
extern void _ZN7S3203C4D1Ev();
Name_Map name_map_S3203C4[] = {
  NSPAIR(_ZN7S3203C4C1Ev),
  NSPAIR(_ZN7S3203C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3203C5_nt;
extern VTBL_ENTRY _ZTI10S3203C5_nt[];
extern  VTBL_ENTRY _ZTV10S3203C5_nt[];
static Base_Class bases_S3203C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3203C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3203C4[];
extern void _ZN10S3203C5_nt2v7Ev();
extern void _ZN7S3203C42v8Ev();
extern void _ZN7S3203C42v9Ev();
extern void _ZN7S3203C43v10Ev();
static  VTBL_ENTRY vtc_S3203C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3203C4[0]),
  (VTBL_ENTRY)&_ZN10S3203C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3203C43v10Ev,
};
extern VTBL_ENTRY _ZTV7S3203C4[];
static  VTT_ENTRY vtt_S3203C4[] = {
  {&(_ZTV7S3203C4[4]),  4,8},
  {&(_ZTV7S3203C4[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S3203C4[];
extern  VTBL_ENTRY _ZTV7S3203C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3203C4[];
Class_Descriptor cd_S3203C4 = {  "S3203C4", // class name
  bases_S3203C4, 1,
  &(vtc_S3203C4[0]), // expected_vtbl_contents
  &(vtt_S3203C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3203C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3203C4),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3203C4),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  S3203C2  : S3203C3 , virtual S3203C4 {
  int s3203c2f0;
  long double s3203c2f1;
  virtual void  v11(); // _ZN7S3203C23v11Ev
  virtual void  v12(); // _ZN7S3203C23v12Ev
  virtual void  v13(); // _ZN7S3203C23v13Ev
  ~S3203C2(); // tgen
  S3203C2(); // tgen
};
//SIG(-1 S3203C2) C1{ BC2{ v4 v5 v6} VBC3{ VBC4{ v7} v8 v9 v10 Fi} v1 v2 v3 Fi FD}


void  S3203C2 ::v11(){vfunc_called(this, "_ZN7S3203C23v11Ev");}
void  S3203C2 ::v12(){vfunc_called(this, "_ZN7S3203C23v12Ev");}
void  S3203C2 ::v13(){vfunc_called(this, "_ZN7S3203C23v13Ev");}
S3203C2 ::~S3203C2(){ note_dtor("S3203C2", this);} // tgen
S3203C2 ::S3203C2(){ note_ctor("S3203C2", this);} // tgen

static void Test_S3203C2()
{
  extern Class_Descriptor cd_S3203C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S3203C2, buf);
    S3203C2 *dp, &lv = *(dp=new (buf) S3203C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S3203C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3203C2)");
    check_base_class_offset(lv, (S3203C3*), 0, "S3203C2");
    check_base_class_offset(lv, (S3203C5_nt*)(S3203C4*), ABISELECT(32,20), "S3203C2");
    check_base_class_offset(lv, (S3203C4*), ABISELECT(32,20), "S3203C2");
    check_field_offset(lv, s3203c2f0, ABISELECT(8,4), "S3203C2.s3203c2f0");
    check_field_offset(lv, s3203c2f1, ABISELECT(16,8), "S3203C2.s3203c2f1");
    test_class_info(&lv, &cd_S3203C2);
    dp->~S3203C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3203C2(Test_S3203C2, "S3203C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S3203C2C1Ev();
extern void _ZN7S3203C2D1Ev();
Name_Map name_map_S3203C2[] = {
  NSPAIR(_ZN7S3203C2C1Ev),
  NSPAIR(_ZN7S3203C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3203C3;
extern VTBL_ENTRY _ZTI7S3203C3[];
extern  VTBL_ENTRY _ZTV7S3203C3[];
extern Class_Descriptor cd_S3203C5_nt;
extern VTBL_ENTRY _ZTI10S3203C5_nt[];
extern  VTBL_ENTRY _ZTV10S3203C5_nt[];
extern Class_Descriptor cd_S3203C4;
extern VTBL_ENTRY _ZTI7S3203C4[];
extern  VTBL_ENTRY _ZTV7S3203C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3203C4[];
static Base_Class bases_S3203C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3203C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3203C5_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3203C4,    ABISELECT(32,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3203C2[];
extern void _ZN7S3203C32v4Ev();
extern void _ZN7S3203C32v5Ev();
extern void _ZN7S3203C32v6Ev();
extern void _ZN7S3203C23v11Ev();
extern void _ZN7S3203C23v12Ev();
extern void _ZN7S3203C23v13Ev();
extern void _ZN10S3203C5_nt2v7Ev();
extern void _ZN7S3203C42v8Ev();
extern void _ZN7S3203C42v9Ev();
extern void _ZN7S3203C43v10Ev();
static  VTBL_ENTRY vtc_S3203C2[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3203C2[0]),
  (VTBL_ENTRY)&_ZN7S3203C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3203C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3203C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3203C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3203C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3203C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S3203C2[0]),
  (VTBL_ENTRY)&_ZN10S3203C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3203C43v10Ev,
};
extern VTBL_ENTRY _ZTV7S3203C2[];
extern void _ZN10S3203C5_nt2v7Ev();
extern void _ZN7S3203C42v8Ev();
extern void _ZN7S3203C42v9Ev();
extern void _ZN7S3203C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3203C4__7S3203C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3203C4[0]),
  (VTBL_ENTRY)&_ZN10S3203C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3203C43v10Ev,
};
static  VTT_ENTRY vtt_S3203C2[] = {
  {&(_ZTV7S3203C2[4]),  4,21},
  {&(_ZTV7S3203C2[17]),  17,21},
  {&(_ZTV7S3203C2[17]),  17,21},
  {&(_tg__ZTV7S3203C4__7S3203C2[4]),  4,8},
  {&(_tg__ZTV7S3203C4__7S3203C2[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S3203C2[];
extern  VTBL_ENTRY _ZTV7S3203C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3203C2[];
Class_Descriptor cd_S3203C2 = {  "S3203C2", // class name
  bases_S3203C2, 3,
  &(vtc_S3203C2[0]), // expected_vtbl_contents
  &(vtt_S3203C2[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S3203C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3203C2),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3203C2),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  S3203C1  : S3203C2 {
  long double s3203c1f0;
  void *s3203c1f1[2];
  virtual void  v1(); // _ZN7S3203C12v1Ev
  virtual void  v2(); // _ZN7S3203C12v2Ev
  virtual void  v3(); // _ZN7S3203C12v3Ev
  ~S3203C1(); // tgen
  S3203C1(); // tgen
};
//SIG(1 S3203C1) C1{ BC2{ BC3{ v4 v5 v6} VBC4{ VBC5{ v7} v8 v9 v10 Fi} v11 v12 v13 Fi FD} v1 v2 v3 FD Fp[2]}


void  S3203C1 ::v1(){vfunc_called(this, "_ZN7S3203C12v1Ev");}
void  S3203C1 ::v2(){vfunc_called(this, "_ZN7S3203C12v2Ev");}
void  S3203C1 ::v3(){vfunc_called(this, "_ZN7S3203C12v3Ev");}
S3203C1 ::~S3203C1(){ note_dtor("S3203C1", this);} // tgen
S3203C1 ::S3203C1(){ note_ctor("S3203C1", this);} // tgen

static void Test_S3203C1()
{
  extern Class_Descriptor cd_S3203C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,13)];
    init_test(&cd_S3203C1, buf);
    S3203C1 *dp, &lv = *(dp=new (buf) S3203C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S3203C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3203C1)");
    check_base_class_offset(lv, (S3203C3*)(S3203C2*), 0, "S3203C1");
    check_base_class_offset(lv, (S3203C5_nt*)(S3203C4*), ABISELECT(64,40), "S3203C1");
    check_base_class_offset(lv, (S3203C4*)(S3203C2*), ABISELECT(64,40), "S3203C1");
    check_base_class_offset(lv, (S3203C2*), 0, "S3203C1");
    check_field_offset(lv, s3203c1f0, ABISELECT(32,20), "S3203C1.s3203c1f0");
    check_field_offset(lv, s3203c1f1, ABISELECT(48,32), "S3203C1.s3203c1f1");
    test_class_info(&lv, &cd_S3203C1);
    dp->~S3203C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3203C1(Test_S3203C1, "S3203C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S3203C1C1Ev();
extern void _ZN7S3203C1D1Ev();
Name_Map name_map_S3203C1[] = {
  NSPAIR(_ZN7S3203C1C1Ev),
  NSPAIR(_ZN7S3203C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3203C3;
extern VTBL_ENTRY _ZTI7S3203C3[];
extern  VTBL_ENTRY _ZTV7S3203C3[];
extern Class_Descriptor cd_S3203C5_nt;
extern VTBL_ENTRY _ZTI10S3203C5_nt[];
extern  VTBL_ENTRY _ZTV10S3203C5_nt[];
extern Class_Descriptor cd_S3203C4;
extern VTBL_ENTRY _ZTI7S3203C4[];
extern  VTBL_ENTRY _ZTV7S3203C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3203C4[];
extern Class_Descriptor cd_S3203C2;
extern VTBL_ENTRY _ZTI7S3203C2[];
extern  VTBL_ENTRY _ZTV7S3203C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3203C2[];
static Base_Class bases_S3203C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3203C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3203C5_nt,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3203C4,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3203C2,    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 _ZTI7S3203C1[];
extern void _ZN7S3203C32v4Ev();
extern void _ZN7S3203C32v5Ev();
extern void _ZN7S3203C32v6Ev();
extern void _ZN7S3203C23v11Ev();
extern void _ZN7S3203C23v12Ev();
extern void _ZN7S3203C23v13Ev();
extern void _ZN7S3203C12v1Ev();
extern void _ZN7S3203C12v2Ev();
extern void _ZN7S3203C12v3Ev();
extern void _ZN10S3203C5_nt2v7Ev();
extern void _ZN7S3203C42v8Ev();
extern void _ZN7S3203C42v9Ev();
extern void _ZN7S3203C43v10Ev();
static  VTBL_ENTRY vtc_S3203C1[] = {
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3203C1[0]),
  (VTBL_ENTRY)&_ZN7S3203C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3203C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3203C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3203C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3203C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3203C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3203C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3203C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3203C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3203C1[0]),
  (VTBL_ENTRY)&_ZN10S3203C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3203C43v10Ev,
};
extern VTBL_ENTRY _ZTV7S3203C1[];
extern void _ZN7S3203C32v4Ev();
extern void _ZN7S3203C32v5Ev();
extern void _ZN7S3203C32v6Ev();
extern void _ZN7S3203C23v11Ev();
extern void _ZN7S3203C23v12Ev();
extern void _ZN7S3203C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3203C2__7S3203C1[] = {
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3203C2[0]),
  (VTBL_ENTRY)&_ZN7S3203C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3203C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3203C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3203C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3203C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3203C23v13Ev,
};
extern void _ZN10S3203C5_nt2v7Ev();
extern void _ZN7S3203C42v8Ev();
extern void _ZN7S3203C42v9Ev();
extern void _ZN7S3203C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3203C4__7S3203C2__7S3203C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3203C2[0]),
  (VTBL_ENTRY)&_ZN10S3203C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3203C43v10Ev,
};
extern void _ZN10S3203C5_nt2v7Ev();
extern void _ZN7S3203C42v8Ev();
extern void _ZN7S3203C42v9Ev();
extern void _ZN7S3203C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3203C4__7S3203C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3203C4[0]),
  (VTBL_ENTRY)&_ZN10S3203C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3203C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3203C43v10Ev,
};
static  VTT_ENTRY vtt_S3203C1[] = {
  {&(_ZTV7S3203C1[4]),  4,24},
  {&(_tg__ZTV7S3203C2__7S3203C1[4]),  4,10},
  {&(_tg__ZTV7S3203C4__7S3203C2__7S3203C1[7]),  7,11},
  {&(_tg__ZTV7S3203C4__7S3203C2__7S3203C1[7]),  7,11},
  {&(_ZTV7S3203C1[20]),  20,24},
  {&(_ZTV7S3203C1[20]),  20,24},
  {&(_tg__ZTV7S3203C4__7S3203C1[4]),  4,8},
  {&(_tg__ZTV7S3203C4__7S3203C1[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S3203C1[];
extern  VTBL_ENTRY _ZTV7S3203C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3203C1[];
Class_Descriptor cd_S3203C1 = {  "S3203C1", // class name
  bases_S3203C1, 4,
  &(vtc_S3203C1[0]), // expected_vtbl_contents
  &(vtt_S3203C1[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S3203C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3203C1),24, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3203C1),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8765C2_nt  {
  int s8765c2f0;
  virtual  ~S8765C2_nt(); // _ZN10S8765C2_ntD1Ev
  virtual void  v2(); // _ZN10S8765C2_nt2v2Ev
  S8765C2_nt(); // tgen
};
//SIG(-1 S8765C2_nt) C1{ vd v1 Fi}


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

//skip512 S8765C2_nt

#else // __cplusplus

extern void _ZN10S8765C2_ntC1Ev();
extern void _ZN10S8765C2_ntD1Ev();
Name_Map name_map_S8765C2_nt[] = {
  NSPAIR(_ZN10S8765C2_ntC1Ev),
  NSPAIR(_ZN10S8765C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8765C2_nt[];
extern void _ZN10S8765C2_ntD1Ev();
extern void _ZN10S8765C2_ntD0Ev();
extern void _ZN10S8765C2_nt2v2Ev();
static  VTBL_ENTRY vtc_S8765C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8765C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8765C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8765C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8765C2_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S8765C2_nt[];
VTBL_ENTRY *P__ZTI10S8765C2_nt = _ZTI10S8765C2_nt; 
extern  VTBL_ENTRY _ZTV10S8765C2_nt[];
Class_Descriptor cd_S8765C2_nt = {  "S8765C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8765C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S8765C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8765C2_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  S8765C1  : S8765C2_nt {
  ::S2213C20_nt s8765c1f0;
  int s8765c1f1[2];
  __tsi64 s8765c1f2;
  char s8765c1f3;
  ::S2213C20_nt s8765c1f4;
  ::S2213C37 s8765c1f5;
  virtual  ~S8765C1(); // _ZN7S8765C1D1Ev
  virtual void  v1(); // _ZN7S8765C12v1Ev
  S8765C1(); // tgen
};
//SIG(1 S8765C1) C1{ BC2{ vd v2 Fi} vd v1 FC3{ m Fp Fi FC4{ m}} Fi[2] FL Fc FC3 FC5{ m Fp Fi[2] FC6{ m}}}


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

static void Test_S8765C1()
{
  extern Class_Descriptor cd_S8765C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,18)];
    init_test(&cd_S8765C1, buf);
    S8765C1 *dp, &lv = *(dp=new (buf) S8765C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S8765C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8765C1)");
    check_base_class_offset(lv, (S8765C2_nt*), 0, "S8765C1");
    check_field_offset(lv, s8765c1f0, ABISELECT(16,8), "S8765C1.s8765c1f0");
    check_field_offset(lv, s8765c1f1, ABISELECT(32,20), "S8765C1.s8765c1f1");
    check_field_offset(lv, s8765c1f2, ABISELECT(40,28), "S8765C1.s8765c1f2");
    check_field_offset(lv, s8765c1f3, ABISELECT(48,36), "S8765C1.s8765c1f3");
    check_field_offset(lv, s8765c1f4, ABISELECT(56,40), "S8765C1.s8765c1f4");
    check_field_offset(lv, s8765c1f5, ABISELECT(72,52), "S8765C1.s8765c1f5");
    test_class_info(&lv, &cd_S8765C1);
    dp->~S8765C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8765C1(Test_S8765C1, "S8765C1", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN7S8765C1C1Ev();
extern void _ZN7S8765C1D1Ev();
Name_Map name_map_S8765C1[] = {
  NSPAIR(_ZN7S8765C1C1Ev),
  NSPAIR(_ZN7S8765C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8765C2_nt;
extern VTBL_ENTRY _ZTI10S8765C2_nt[];
extern  VTBL_ENTRY _ZTV10S8765C2_nt[];
static Base_Class bases_S8765C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8765C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8765C1[];
extern void _ZN7S8765C1D1Ev();
extern void _ZN7S8765C1D0Ev();
extern void _ZN10S8765C2_nt2v2Ev();
extern void _ZN7S8765C12v1Ev();
static  VTBL_ENTRY vtc_S8765C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8765C1[0]),
  (VTBL_ENTRY)&_ZN7S8765C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8765C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8765C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S8765C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8765C1[];
extern  VTBL_ENTRY _ZTV7S8765C1[];
Class_Descriptor cd_S8765C1 = {  "S8765C1", // class name
  bases_S8765C1, 1,
  &(vtc_S8765C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI7S8765C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8765C1),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  S8159C1  : S19674C5 {
  short s8159c1f0;
  long s8159c1f1;
  int s8159c1f2;
  __tsi64 s8159c1f3;
  long double s8159c1f4;
  __tsi64 s8159c1f5;
  void *s8159c1f6;
  ::S21161C2 s8159c1f7[8];
  char s8159c1f8;
  virtual  ~S8159C1(); // _ZN7S8159C1D1Ev
  S8159C1(); // tgen
};
//SIG(1 S8159C1) C1{ BC2{ vd m FL[7] Fs Fp[3] Fi Fl Fp} vd Fs Fl Fi FL FD FL Fp FC3{ VBC2 v1}[8] Fc}


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

static void Test_S8159C1()
{
  extern Class_Descriptor cd_S8159C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(78,219)];
    init_test(&cd_S8159C1, buf);
    S8159C1 *dp, &lv = *(dp=new (buf) S8159C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1232,872), "sizeof(S8159C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8159C1)");
    check_base_class_offset(lv, (S19674C5*), 0, "S8159C1");
    check_field_offset(lv, s8159c1f0, ABISELECT(120,88), "S8159C1.s8159c1f0");
    check_field_offset(lv, s8159c1f1, ABISELECT(128,92), "S8159C1.s8159c1f1");
    check_field_offset(lv, s8159c1f2, ABISELECT(136,96), "S8159C1.s8159c1f2");
    check_field_offset(lv, s8159c1f3, ABISELECT(144,100), "S8159C1.s8159c1f3");
    check_field_offset(lv, s8159c1f4, ABISELECT(160,108), "S8159C1.s8159c1f4");
    check_field_offset(lv, s8159c1f5, ABISELECT(176,120), "S8159C1.s8159c1f5");
    check_field_offset(lv, s8159c1f6, ABISELECT(184,128), "S8159C1.s8159c1f6");
    check_field_offset(lv, s8159c1f7, ABISELECT(192,132), "S8159C1.s8159c1f7");
    check_field_offset(lv, s8159c1f8, ABISELECT(1216,868), "S8159C1.s8159c1f8");
    test_class_info(&lv, &cd_S8159C1);
    dp->~S8159C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8159C1(Test_S8159C1, "S8159C1", ABISELECT(1232,872));

#else // __cplusplus

extern void _ZN7S8159C1C1Ev();
extern void _ZN7S8159C1D1Ev();
Name_Map name_map_S8159C1[] = {
  NSPAIR(_ZN7S8159C1C1Ev),
  NSPAIR(_ZN7S8159C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19674C5;
extern VTBL_ENTRY _ZTI8S19674C5[];
extern  VTBL_ENTRY _ZTV8S19674C5[];
static Base_Class bases_S8159C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19674C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8159C1[];
extern void _ZN7S8159C1D1Ev();
extern void _ZN7S8159C1D0Ev();
static  VTBL_ENTRY vtc_S8159C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8159C1[0]),
  (VTBL_ENTRY)&_ZN7S8159C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8159C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8159C1[];
extern  VTBL_ENTRY _ZTV7S8159C1[];
Class_Descriptor cd_S8159C1 = {  "S8159C1", // class name
  bases_S8159C1, 1,
  &(vtc_S8159C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1232,872), // object size
  NSPAIRA(_ZTI7S8159C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8159C1),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  S19351C3  {
  virtual void  v4(); // _ZN8S19351C32v4Ev
  virtual void  v5(); // _ZN8S19351C32v5Ev
  virtual void  v6(); // _ZN8S19351C32v6Ev
  ~S19351C3(); // tgen
  S19351C3(); // tgen
};
//SIG(-1 S19351C3) C1{ v1 v2 v3}


void  S19351C3 ::v4(){vfunc_called(this, "_ZN8S19351C32v4Ev");}
void  S19351C3 ::v5(){vfunc_called(this, "_ZN8S19351C32v5Ev");}
void  S19351C3 ::v6(){vfunc_called(this, "_ZN8S19351C32v6Ev");}
S19351C3 ::~S19351C3(){ note_dtor("S19351C3", this);} // tgen
S19351C3 ::S19351C3(){ note_ctor("S19351C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19351C3C1Ev();
extern void _ZN8S19351C3D1Ev();
Name_Map name_map_S19351C3[] = {
  NSPAIR(_ZN8S19351C3C1Ev),
  NSPAIR(_ZN8S19351C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19351C3[];
extern void _ZN8S19351C32v4Ev();
extern void _ZN8S19351C32v5Ev();
extern void _ZN8S19351C32v6Ev();
static  VTBL_ENTRY vtc_S19351C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19351C3[0]),
  (VTBL_ENTRY)&_ZN8S19351C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19351C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19351C32v6Ev,
};
extern VTBL_ENTRY _ZTI8S19351C3[];
extern  VTBL_ENTRY _ZTV8S19351C3[];
Class_Descriptor cd_S19351C3 = {  "S19351C3", // class name
  0,0,//no base classes
  &(vtc_S19351C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19351C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19351C3),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  S19351C5  {
  virtual void  v7(); // _ZN8S19351C52v7Ev
  ~S19351C5(); // tgen
  S19351C5(); // tgen
};
//SIG(-1 S19351C5) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S19351C5C1Ev();
extern void _ZN8S19351C5D1Ev();
Name_Map name_map_S19351C5[] = {
  NSPAIR(_ZN8S19351C5C1Ev),
  NSPAIR(_ZN8S19351C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19351C5[];
extern void _ZN8S19351C52v7Ev();
static  VTBL_ENTRY vtc_S19351C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19351C5[0]),
  (VTBL_ENTRY)&_ZN8S19351C52v7Ev,
};
extern VTBL_ENTRY _ZTI8S19351C5[];
extern  VTBL_ENTRY _ZTV8S19351C5[];
Class_Descriptor cd_S19351C5 = {  "S19351C5", // class name
  0,0,//no base classes
  &(vtc_S19351C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19351C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19351C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19351C4  : virtual S19351C5 {
  int s19351c4f0;
  virtual void  v8(); // _ZN8S19351C42v8Ev
  virtual void  v9(); // _ZN8S19351C42v9Ev
  virtual void  v10(); // _ZN8S19351C43v10Ev
  ~S19351C4(); // tgen
  S19351C4(); // tgen
};
//SIG(-1 S19351C4) C1{ VBC2{ v4} v1 v2 v3 Fi}


void  S19351C4 ::v8(){vfunc_called(this, "_ZN8S19351C42v8Ev");}
void  S19351C4 ::v9(){vfunc_called(this, "_ZN8S19351C42v9Ev");}
void  S19351C4 ::v10(){vfunc_called(this, "_ZN8S19351C43v10Ev");}
S19351C4 ::~S19351C4(){ note_dtor("S19351C4", this);} // tgen
S19351C4 ::S19351C4(){ note_ctor("S19351C4", this);} // tgen

static void Test_S19351C4()
{
  extern Class_Descriptor cd_S19351C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19351C4, buf);
    S19351C4 *dp, &lv = *(dp=new (buf) S19351C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19351C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19351C4)");
    check_base_class_offset(lv, (S19351C5*), 0, "S19351C4");
    check_field_offset(lv, s19351c4f0, ABISELECT(8,4), "S19351C4.s19351c4f0");
    test_class_info(&lv, &cd_S19351C4);
    dp->~S19351C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19351C4(Test_S19351C4, "S19351C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19351C4C1Ev();
extern void _ZN8S19351C4D1Ev();
Name_Map name_map_S19351C4[] = {
  NSPAIR(_ZN8S19351C4C1Ev),
  NSPAIR(_ZN8S19351C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19351C5;
extern VTBL_ENTRY _ZTI8S19351C5[];
extern  VTBL_ENTRY _ZTV8S19351C5[];
static Base_Class bases_S19351C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19351C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19351C4[];
extern void _ZN8S19351C52v7Ev();
extern void _ZN8S19351C42v8Ev();
extern void _ZN8S19351C42v9Ev();
extern void _ZN8S19351C43v10Ev();
static  VTBL_ENTRY vtc_S19351C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19351C4[0]),
  (VTBL_ENTRY)&_ZN8S19351C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19351C43v10Ev,
};
extern VTBL_ENTRY _ZTV8S19351C4[];
static  VTT_ENTRY vtt_S19351C4[] = {
  {&(_ZTV8S19351C4[4]),  4,8},
  {&(_ZTV8S19351C4[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S19351C4[];
extern  VTBL_ENTRY _ZTV8S19351C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19351C4[];
Class_Descriptor cd_S19351C4 = {  "S19351C4", // class name
  bases_S19351C4, 1,
  &(vtc_S19351C4[0]), // expected_vtbl_contents
  &(vtt_S19351C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19351C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19351C4),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19351C4),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  S19351C2  : S19351C3 , virtual S19351C4 {
  int s19351c2f0;
  long double s19351c2f1;
  virtual void  v11(); // _ZN8S19351C23v11Ev
  virtual void  v12(); // _ZN8S19351C23v12Ev
  virtual void  v13(); // _ZN8S19351C23v13Ev
  ~S19351C2(); // tgen
  S19351C2(); // tgen
};
//SIG(-1 S19351C2) C1{ BC2{ v4 v5 v6} VBC3{ VBC4{ v7} v8 v9 v10 Fi} v1 v2 v3 Fi FD}


void  S19351C2 ::v11(){vfunc_called(this, "_ZN8S19351C23v11Ev");}
void  S19351C2 ::v12(){vfunc_called(this, "_ZN8S19351C23v12Ev");}
void  S19351C2 ::v13(){vfunc_called(this, "_ZN8S19351C23v13Ev");}
S19351C2 ::~S19351C2(){ note_dtor("S19351C2", this);} // tgen
S19351C2 ::S19351C2(){ note_ctor("S19351C2", this);} // tgen

static void Test_S19351C2()
{
  extern Class_Descriptor cd_S19351C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S19351C2, buf);
    S19351C2 *dp, &lv = *(dp=new (buf) S19351C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19351C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19351C2)");
    check_base_class_offset(lv, (S19351C3*), 0, "S19351C2");
    check_base_class_offset(lv, (S19351C5*)(S19351C4*), ABISELECT(32,20), "S19351C2");
    check_base_class_offset(lv, (S19351C4*), ABISELECT(32,20), "S19351C2");
    check_field_offset(lv, s19351c2f0, ABISELECT(8,4), "S19351C2.s19351c2f0");
    check_field_offset(lv, s19351c2f1, ABISELECT(16,8), "S19351C2.s19351c2f1");
    test_class_info(&lv, &cd_S19351C2);
    dp->~S19351C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19351C2(Test_S19351C2, "S19351C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S19351C2C1Ev();
extern void _ZN8S19351C2D1Ev();
Name_Map name_map_S19351C2[] = {
  NSPAIR(_ZN8S19351C2C1Ev),
  NSPAIR(_ZN8S19351C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19351C3;
extern VTBL_ENTRY _ZTI8S19351C3[];
extern  VTBL_ENTRY _ZTV8S19351C3[];
extern Class_Descriptor cd_S19351C5;
extern VTBL_ENTRY _ZTI8S19351C5[];
extern  VTBL_ENTRY _ZTV8S19351C5[];
extern Class_Descriptor cd_S19351C4;
extern VTBL_ENTRY _ZTI8S19351C4[];
extern  VTBL_ENTRY _ZTV8S19351C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19351C4[];
static Base_Class bases_S19351C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19351C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19351C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19351C4,    ABISELECT(32,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19351C2[];
extern void _ZN8S19351C32v4Ev();
extern void _ZN8S19351C32v5Ev();
extern void _ZN8S19351C32v6Ev();
extern void _ZN8S19351C23v11Ev();
extern void _ZN8S19351C23v12Ev();
extern void _ZN8S19351C23v13Ev();
extern void _ZN8S19351C52v7Ev();
extern void _ZN8S19351C42v8Ev();
extern void _ZN8S19351C42v9Ev();
extern void _ZN8S19351C43v10Ev();
static  VTBL_ENTRY vtc_S19351C2[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19351C2[0]),
  (VTBL_ENTRY)&_ZN8S19351C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19351C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19351C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19351C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19351C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19351C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19351C2[0]),
  (VTBL_ENTRY)&_ZN8S19351C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19351C43v10Ev,
};
extern VTBL_ENTRY _ZTV8S19351C2[];
extern void _ZN8S19351C52v7Ev();
extern void _ZN8S19351C42v8Ev();
extern void _ZN8S19351C42v9Ev();
extern void _ZN8S19351C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19351C4__8S19351C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19351C4[0]),
  (VTBL_ENTRY)&_ZN8S19351C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19351C43v10Ev,
};
static  VTT_ENTRY vtt_S19351C2[] = {
  {&(_ZTV8S19351C2[4]),  4,21},
  {&(_ZTV8S19351C2[17]),  17,21},
  {&(_ZTV8S19351C2[17]),  17,21},
  {&(_tg__ZTV8S19351C4__8S19351C2[4]),  4,8},
  {&(_tg__ZTV8S19351C4__8S19351C2[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S19351C2[];
extern  VTBL_ENTRY _ZTV8S19351C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19351C2[];
Class_Descriptor cd_S19351C2 = {  "S19351C2", // class name
  bases_S19351C2, 3,
  &(vtc_S19351C2[0]), // expected_vtbl_contents
  &(vtt_S19351C2[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S19351C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19351C2),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19351C2),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  S19351C1  : virtual S19351C2 , S19351C4 {
  virtual void  v1(); // _ZN8S19351C12v1Ev
  virtual void  v2(); // _ZN8S19351C12v2Ev
  virtual void  v3(); // _ZN8S19351C12v3Ev
  ~S19351C1(); // tgen
  S19351C1(); // tgen
};
//SIG(1 S19351C1) C1{ VBC2{ BC3{ v4 v5 v6} VBC4{ VBC5{ v7} v8 v9 v10 Fi} v11 v12 v13 Fi FD} BC4 v1 v2 v3}


void  S19351C1 ::v1(){vfunc_called(this, "_ZN8S19351C12v1Ev");}
void  S19351C1 ::v2(){vfunc_called(this, "_ZN8S19351C12v2Ev");}
void  S19351C1 ::v3(){vfunc_called(this, "_ZN8S19351C12v3Ev");}
S19351C1 ::~S19351C1(){ note_dtor("S19351C1", this);} // tgen
S19351C1 ::S19351C1(){ note_ctor("S19351C1", this);} // tgen

static void Test_S19351C1()
{
  extern Class_Descriptor cd_S19351C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,10)];
    init_test(&cd_S19351C1, buf);
    S19351C1 *dp, &lv = *(dp=new (buf) S19351C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19351C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19351C1)");
    check_base_class_offset(lv, (S19351C3*)(S19351C2*), ABISELECT(16,8), "S19351C1");
    /*is_ambiguous_... S19351C1::S19351C4 */ AMB_check_base_class_offset(lv, (S19351C5*)(S19351C4*), ABISELECT(48,28), "S19351C1");
    /*is_ambiguous_... S19351C1::S19351C4 */ AMB_check_base_class_offset(lv, (S19351C5*)(S19351C4*), ABISELECT(48,28), "S19351C1");
    check_base_class_offset(lv, (S19351C4*)(S19351C2*), ABISELECT(48,28), "S19351C1");
    check_base_class_offset(lv, (S19351C2*), ABISELECT(16,8), "S19351C1");
    /*is_ambiguous_... S19351C1::S19351C4 */ AMB_check_base_class_offset(lv, (S19351C4*), 0, "S19351C1");
    test_class_info(&lv, &cd_S19351C1);
    dp->~S19351C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19351C1(Test_S19351C1, "S19351C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S19351C1C1Ev();
extern void _ZN8S19351C1D1Ev();
Name_Map name_map_S19351C1[] = {
  NSPAIR(_ZN8S19351C1C1Ev),
  NSPAIR(_ZN8S19351C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19351C3;
extern VTBL_ENTRY _ZTI8S19351C3[];
extern  VTBL_ENTRY _ZTV8S19351C3[];
extern Class_Descriptor cd_S19351C5;
extern VTBL_ENTRY _ZTI8S19351C5[];
extern  VTBL_ENTRY _ZTV8S19351C5[];
extern Class_Descriptor cd_S19351C4;
extern VTBL_ENTRY _ZTI8S19351C4[];
extern  VTBL_ENTRY _ZTV8S19351C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19351C4[];
extern Class_Descriptor cd_S19351C2;
extern VTBL_ENTRY _ZTI8S19351C2[];
extern  VTBL_ENTRY _ZTV8S19351C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19351C2[];
extern Class_Descriptor cd_S19351C4;
extern VTBL_ENTRY _ZTI8S19351C4[];
extern  VTBL_ENTRY _ZTV8S19351C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19351C4[];
static Base_Class bases_S19351C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19351C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19351C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19351C4,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19351C2,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19351C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19351C1[];
extern void _ZN8S19351C52v7Ev();
extern void _ZN8S19351C42v8Ev();
extern void _ZN8S19351C42v9Ev();
extern void _ZN8S19351C43v10Ev();
extern void _ZN8S19351C12v1Ev();
extern void _ZN8S19351C12v2Ev();
extern void _ZN8S19351C12v3Ev();
extern void _ZN8S19351C32v4Ev();
extern void _ZN8S19351C32v5Ev();
extern void _ZN8S19351C32v6Ev();
extern void _ZN8S19351C23v11Ev();
extern void _ZN8S19351C23v12Ev();
extern void _ZN8S19351C23v13Ev();
extern void _ZN8S19351C52v7Ev();
extern void _ZN8S19351C42v8Ev();
extern void _ZN8S19351C42v9Ev();
extern void _ZN8S19351C43v10Ev();
static  VTBL_ENTRY vtc_S19351C1[] = {
  ABISELECT(48,28),
  ABISELECT(16,8),
  ABISELECT(48,28),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19351C1[0]),
  (VTBL_ENTRY)&_ZN8S19351C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19351C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19351C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19351C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19351C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19351C1[0]),
  (VTBL_ENTRY)&_ZN8S19351C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19351C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19351C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19351C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19351C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19351C23v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19351C1[0]),
  (VTBL_ENTRY)&_ZN8S19351C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19351C43v10Ev,
};
extern VTBL_ENTRY _ZTV8S19351C1[];
extern void _ZN8S19351C52v7Ev();
extern void _ZN8S19351C42v8Ev();
extern void _ZN8S19351C42v9Ev();
extern void _ZN8S19351C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19351C4__A__8S19351C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19351C4[0]),
  (VTBL_ENTRY)&_ZN8S19351C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19351C43v10Ev,
};
extern void _ZN8S19351C52v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19351C5__8S19351C4__A__8S19351C1[] = {
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19351C4[0]),
  (VTBL_ENTRY)&_ZN8S19351C52v7Ev,
};
extern void _ZN8S19351C32v4Ev();
extern void _ZN8S19351C32v5Ev();
extern void _ZN8S19351C32v6Ev();
extern void _ZN8S19351C23v11Ev();
extern void _ZN8S19351C23v12Ev();
extern void _ZN8S19351C23v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19351C2__8S19351C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19351C2[0]),
  (VTBL_ENTRY)&_ZN8S19351C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19351C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19351C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19351C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19351C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19351C23v13Ev,
};
extern void _ZN8S19351C52v7Ev();
extern void _ZN8S19351C42v8Ev();
extern void _ZN8S19351C42v9Ev();
extern void _ZN8S19351C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19351C4__8S19351C2__8S19351C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19351C2[0]),
  (VTBL_ENTRY)&_ZN8S19351C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19351C43v10Ev,
};
extern void _ZN8S19351C52v7Ev();
extern void _ZN8S19351C42v8Ev();
extern void _ZN8S19351C42v9Ev();
extern void _ZN8S19351C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19351C4__8S19351C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19351C4[0]),
  (VTBL_ENTRY)&_ZN8S19351C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19351C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19351C43v10Ev,
};
static  VTT_ENTRY vtt_S19351C1[] = {
  {&(_ZTV8S19351C1[6]),  6,40},
  {&(_tg__ZTV8S19351C4__A__8S19351C1[4]),  4,8},
  {&(_tg__ZTV8S19351C5__8S19351C4__A__8S19351C1[3]),  3,4},
  {&(_ZTV8S19351C1[23]),  23,40},
  {&(_ZTV8S19351C1[36]),  36,40},
  {&(_ZTV8S19351C1[36]),  36,40},
  {&(_tg__ZTV8S19351C2__8S19351C1[4]),  4,10},
  {&(_tg__ZTV8S19351C4__8S19351C2__8S19351C1[7]),  7,11},
  {&(_tg__ZTV8S19351C4__8S19351C2__8S19351C1[7]),  7,11},
  {&(_tg__ZTV8S19351C4__8S19351C1[4]),  4,8},
  {&(_tg__ZTV8S19351C4__8S19351C1[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S19351C1[];
extern  VTBL_ENTRY _ZTV8S19351C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19351C1[];
Class_Descriptor cd_S19351C1 = {  "S19351C1", // class name
  bases_S19351C1, 5,
  &(vtc_S19351C1[0]), // expected_vtbl_contents
  &(vtt_S19351C1[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S19351C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19351C1),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19351C1),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16316C5_nt  {
  char s16316c5f0;
  int s16316c5f1[8];
  void  mf16316c5(); // _ZN11S16316C5_nt9mf16316c5Ev
};
//SIG(-1 S16316C5_nt) C1{ m Fc Fi[8]}


void  S16316C5_nt ::mf16316c5(){}

//skip512 S16316C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16316C1  {
  ::S2213C37 s16316c1f0;
  ::S12048C6_nt s16316c1f1;
  ::S16316C5_nt s16316c1f2;
  ::S18033C5 s16316c1f3;
  ::S18033C5 s16316c1f4;
  int s16316c1f5[3];
  void  mf16316c1(); // _ZN8S16316C19mf16316c1Ev
};
//SIG(1 S16316C1) C1{ m FC2{ m Fp Fi[2] FC3{ m}} FC4{ m Fi[3]} FC5{ m Fc Fi[8]} FC6{ m Fp[2]} FC6 Fi[3]}


void  S16316C1 ::mf16316c1(){}

static void Test_S16316C1()
{
  {
    init_simple_test("S16316C1");
    S16316C1 lv;
    check2(sizeof(lv), ABISELECT(120,92), "sizeof(S16316C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16316C1)");
    check_field_offset(lv, s16316c1f0, 0, "S16316C1.s16316c1f0");
    check_field_offset(lv, s16316c1f1, ABISELECT(24,16), "S16316C1.s16316c1f1");
    check_field_offset(lv, s16316c1f2, ABISELECT(36,28), "S16316C1.s16316c1f2");
    check_field_offset(lv, s16316c1f3, ABISELECT(72,64), "S16316C1.s16316c1f3");
    check_field_offset(lv, s16316c1f4, ABISELECT(88,72), "S16316C1.s16316c1f4");
    check_field_offset(lv, s16316c1f5, ABISELECT(104,80), "S16316C1.s16316c1f5");
  }
}
static Arrange_To_Call_Me vS16316C1(Test_S16316C1, "S16316C1", ABISELECT(120,92));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2969C2_nt  : S3164C31_nt {
};
//SIG(-1 S2969C2_nt) C1{ BC2{ m}}



//skip512 S2969C2_nt

#else // __cplusplus

extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S2969C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2969C2_nt[];
VTBL_ENTRY *P__ZTI10S2969C2_nt = _ZTI10S2969C2_nt; 
Class_Descriptor cd_S2969C2_nt = {  "S2969C2_nt", // class name
  bases_S2969C2_nt, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI10S2969C2_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  S2969C7  : S2367C19 , S5228C4_nt {
  void *s2969c7f0;
  ~S2969C7(); // tgen
  S2969C7(); // tgen
};
//SIG(-1 S2969C7) C1{ BC2{ m Fp} BC3{ vd m} Fp}


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

static void Test_S2969C7()
{
  extern Class_Descriptor cd_S2969C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S2969C7, buf);
    S2969C7 *dp, &lv = *(dp=new (buf) S2969C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S2969C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2969C7)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S2969C7");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S2969C7");
    check_field_offset(lv, s2969c7f0, ABISELECT(16,8), "S2969C7.s2969c7f0");
    test_class_info(&lv, &cd_S2969C7);
    dp->~S2969C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2969C7(Test_S2969C7, "S2969C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S2969C7C1Ev();
extern void _ZN7S2969C7D1Ev();
Name_Map name_map_S2969C7[] = {
  NSPAIR(_ZN7S2969C7C1Ev),
  NSPAIR(_ZN7S2969C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S2969C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2969C7[];
extern void _ZN7S2969C7D1Ev();
extern void _ZN7S2969C7D0Ev();
static  VTBL_ENTRY vtc_S2969C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2969C7[0]),
  (VTBL_ENTRY)&_ZN7S2969C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2969C7D0Ev,
};
extern VTBL_ENTRY _ZTI7S2969C7[];
extern  VTBL_ENTRY _ZTV7S2969C7[];
Class_Descriptor cd_S2969C7 = {  "S2969C7", // class name
  bases_S2969C7, 2,
  &(vtc_S2969C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S2969C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2969C7),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  S2969C9  : S5228C4_nt {
  void *s2969c9f0;
  ~S2969C9(); // tgen
  S2969C9(); // tgen
};
//SIG(-1 S2969C9) C1{ BC2{ vd m} Fp}


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

static void Test_S2969C9()
{
  extern Class_Descriptor cd_S2969C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2969C9, buf);
    S2969C9 *dp, &lv = *(dp=new (buf) S2969C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2969C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2969C9)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S2969C9");
    check_field_offset(lv, s2969c9f0, ABISELECT(8,4), "S2969C9.s2969c9f0");
    test_class_info(&lv, &cd_S2969C9);
    dp->~S2969C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2969C9(Test_S2969C9, "S2969C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2969C9C1Ev();
extern void _ZN7S2969C9D1Ev();
Name_Map name_map_S2969C9[] = {
  NSPAIR(_ZN7S2969C9C1Ev),
  NSPAIR(_ZN7S2969C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S2969C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2969C9[];
extern void _ZN7S2969C9D1Ev();
extern void _ZN7S2969C9D0Ev();
static  VTBL_ENTRY vtc_S2969C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2969C9[0]),
  (VTBL_ENTRY)&_ZN7S2969C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2969C9D0Ev,
};
extern VTBL_ENTRY _ZTI7S2969C9[];
extern  VTBL_ENTRY _ZTV7S2969C9[];
Class_Descriptor cd_S2969C9 = {  "S2969C9", // class name
  bases_S2969C9, 1,
  &(vtc_S2969C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2969C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2969C9),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  S2969C4  : S2213C30 , virtual S2367C19 , S2969C7 , S5228C4_nt , S2969C9 {
  ~S2969C4(); // tgen
  S2969C4(); // tgen
};
//SIG(-1 S2969C4) C1{ BC2{ m} VBC3{ m Fp} BC4{ BC3 BC5{ vd m} Fp} BC5 BC6{ BC5 Fp}}


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

static void Test_S2969C4()
{
  extern Class_Descriptor cd_S2969C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S2969C4, buf);
    S2969C4 *dp, &lv = *(dp=new (buf) S2969C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S2969C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2969C4)");
    check_base_class_offset(lv, (S2213C30*), 0, "S2969C4");
    /*is_ambiguous_... S2969C4::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*), ABISELECT(48,24), "S2969C4");
    check_base_class_offset(lv, (S2367C19*)(S2969C7*), ABISELECT(8,4), "S2969C4");
    check_base_class_offset(lv, (S5228C4_nt*)(S2969C7*), 0, "S2969C4");
    check_base_class_offset(lv, (S2969C7*), 0, "S2969C4");
    /*is_ambiguous_... S2969C4::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*), ABISELECT(24,12), "S2969C4");
    check_base_class_offset(lv, (S5228C4_nt*)(S2969C9*), ABISELECT(32,16), "S2969C4");
    check_base_class_offset(lv, (S2969C9*), ABISELECT(32,16), "S2969C4");
    test_class_info(&lv, &cd_S2969C4);
    dp->~S2969C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2969C4(Test_S2969C4, "S2969C4", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S2969C4C1Ev();
extern void _ZN7S2969C4D1Ev();
Name_Map name_map_S2969C4[] = {
  NSPAIR(_ZN7S2969C4C1Ev),
  NSPAIR(_ZN7S2969C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2213C30;
extern VTBL_ENTRY _ZTI8S2213C30[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2969C7;
extern VTBL_ENTRY _ZTI7S2969C7[];
extern  VTBL_ENTRY _ZTV7S2969C7[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2969C9;
extern VTBL_ENTRY _ZTI7S2969C9[];
extern  VTBL_ENTRY _ZTV7S2969C9[];
static Base_Class bases_S2969C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2213C30,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2367C19,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2969C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S5228C4_nt,    ABISELECT(24,12), //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_S5228C4_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_S2969C9,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2969C4[];
extern void _ZN7S2969C4D1Ev();
extern void _ZN7S2969C4D0Ev();
extern void ABISELECT(_ZThn24_N7S2969C4D1Ev,_ZThn12_N7S2969C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S2969C4D0Ev,_ZThn12_N7S2969C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S2969C4D1Ev,_ZThn16_N7S2969C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S2969C4D0Ev,_ZThn16_N7S2969C4D0Ev)();
static  VTBL_ENTRY vtc_S2969C4[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2969C4[0]),
  (VTBL_ENTRY)&_ZN7S2969C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2969C4D0Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S2969C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S2969C4D1Ev,_ZThn12_N7S2969C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S2969C4D0Ev,_ZThn12_N7S2969C4D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S2969C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S2969C4D1Ev,_ZThn16_N7S2969C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S2969C4D0Ev,_ZThn16_N7S2969C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S2969C4[];
static  VTT_ENTRY vtt_S2969C4[] = {
  {&(_ZTV7S2969C4[3]),  3,13},
};
extern VTBL_ENTRY _ZTI7S2969C4[];
extern  VTBL_ENTRY _ZTV7S2969C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2969C4[];
Class_Descriptor cd_S2969C4 = {  "S2969C4", // class name
  bases_S2969C4, 8,
  &(vtc_S2969C4[0]), // expected_vtbl_contents
  &(vtt_S2969C4[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S2969C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2969C4),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2969C4),1, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2969C1  : S2969C2_nt , virtual S2969C4 , virtual S2969C7 {
  ~S2969C1(); // tgen
  S2969C1(); // tgen
};
//SIG(1 S2969C1) C1{ BC2{ BC3{ m}} VBC4{ BC5{ m} VBC6{ m Fp} BC7{ BC6 BC8{ vd m} Fp} BC8 BC9{ BC8 Fp}} VBC7}


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

static void Test_S2969C1()
{
  extern Class_Descriptor cd_S2969C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S2969C1, buf);
    S2969C1 *dp, &lv = *(dp=new (buf) S2969C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S2969C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2969C1)");
    check_base_class_offset(lv, (S3164C31_nt*)(S2969C2_nt*), 0, "S2969C1");
    check_base_class_offset(lv, (S2969C2_nt*), 0, "S2969C1");
    check_base_class_offset(lv, (S2213C30*)(S2969C4*), ABISELECT(8,4), "S2969C1");
    /*is_ambiguous_... S2969C4::S2367C19 */ AMB_check_base_class_offset(lv, (S2367C19*)(S2969C4*), ABISELECT(56,28), "S2969C1");
    check_base_class_offset(lv, (S2367C19*)(S2969C7*)(S2969C4*), ABISELECT(16,8), "S2969C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S2969C7*)(S2969C4*), ABISELECT(8,4), "S2969C1");
    check_base_class_offset(lv, (S2969C7*)(S2969C4*), ABISELECT(8,4), "S2969C1");
    /*is_ambiguous_... S2969C4::S5228C4_nt */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S2969C4*), ABISELECT(32,16), "S2969C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S2969C9*)(S2969C4*), ABISELECT(40,20), "S2969C1");
    check_base_class_offset(lv, (S2969C9*)(S2969C4*), ABISELECT(40,20), "S2969C1");
    check_base_class_offset(lv, (S2969C4*), ABISELECT(8,4), "S2969C1");
    /*is_ambiguous_... S2969C1::S2969C7 */ AMB_check_base_class_offset(lv, (S2367C19*)(S2969C7*), ABISELECT(72,36), "S2969C1");
    /*is_ambiguous_... S2969C1::S2969C7 */ AMB_check_base_class_offset(lv, (S5228C4_nt*)(S2969C7*), ABISELECT(64,32), "S2969C1");
    /*is_ambiguous_... S2969C1::S2969C7 */ AMB_check_base_class_offset(lv, (S2969C7*), ABISELECT(64,32), "S2969C1");
    test_class_info(&lv, &cd_S2969C1);
    dp->~S2969C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2969C1(Test_S2969C1, "S2969C1", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN7S2969C1C1Ev();
extern void _ZN7S2969C1D1Ev();
Name_Map name_map_S2969C1[] = {
  NSPAIR(_ZN7S2969C1C1Ev),
  NSPAIR(_ZN7S2969C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
extern Class_Descriptor cd_S2969C2_nt;
extern VTBL_ENTRY _ZTI10S2969C2_nt[];
extern Class_Descriptor cd_S2213C30;
extern VTBL_ENTRY _ZTI8S2213C30[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2969C7;
extern VTBL_ENTRY _ZTI7S2969C7[];
extern  VTBL_ENTRY _ZTV7S2969C7[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2969C9;
extern VTBL_ENTRY _ZTI7S2969C9[];
extern  VTBL_ENTRY _ZTV7S2969C9[];
extern Class_Descriptor cd_S2969C4;
extern VTBL_ENTRY _ZTI7S2969C4[];
extern  VTBL_ENTRY _ZTV7S2969C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2969C4[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2969C7;
extern VTBL_ENTRY _ZTI7S2969C7[];
extern  VTBL_ENTRY _ZTV7S2969C7[];
static Base_Class bases_S2969C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2969C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2213C30,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2367C19,    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_S2367C19,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2969C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5228C4_nt,    ABISELECT(32,16), //bcp->offset
    13, //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
    10, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2969C9,    ABISELECT(40,20), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2969C4,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2367C19,    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
    13, //immediately_derived
  0, 0},
  {&cd_S5228C4_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
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2969C7,    ABISELECT(64,32), //bcp->offset
    21, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2969C1[];
extern void _ZN7S2969C1D1Ev();
extern void _ZN7S2969C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S2969C1D1Ev,_ZTv0_n16_N7S2969C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S2969C1D1Ev,_ZThn4_N7S2969C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2969C1D0Ev,_ZTv0_n16_N7S2969C1D0Ev)();
extern void ABISELECT(_ZThn8_N7S2969C1D0Ev,_ZThn4_N7S2969C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n32_N7S2969C1D1Ev,_ZTvn12_n16_N7S2969C1D1Ev)();
extern void ABISELECT(_ZTvn24_n32_N7S2969C1D0Ev,_ZTvn12_n16_N7S2969C1D0Ev)();
extern void ABISELECT(_ZTvn32_n32_N7S2969C1D1Ev,_ZTvn16_n16_N7S2969C1D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N7S2969C1D0Ev,_ZTvn16_n16_N7S2969C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2969C1D1Ev,_ZTv0_n12_N7S2969C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S2969C1D1Ev,_ZThn32_N7S2969C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2969C1D0Ev,_ZTv0_n12_N7S2969C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S2969C1D0Ev,_ZThn32_N7S2969C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2969C1[] = {
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2969C1[0]),
  (VTBL_ENTRY)&_ZN7S2969C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2969C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(48,24),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2969C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2969C1D1Ev,_ZTv0_n16_N7S2969C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2969C1D0Ev,_ZTv0_n16_N7S2969C1D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S2969C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N7S2969C1D1Ev,_ZTvn12_n16_N7S2969C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n32_N7S2969C1D0Ev,_ZTvn12_n16_N7S2969C1D0Ev),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S2969C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N7S2969C1D1Ev,_ZTvn16_n16_N7S2969C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N7S2969C1D0Ev,_ZTvn16_n16_N7S2969C1D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S2969C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2969C1D1Ev,_ZTv0_n12_N7S2969C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2969C1D0Ev,_ZTv0_n12_N7S2969C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2969C1[];
extern void _ZN7S2969C4D1Ev();
extern void _ZN7S2969C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2969C4__7S2969C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2969C4[0]),
  (VTBL_ENTRY)&_ZN7S2969C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2969C4D0Ev,
};
static  VTT_ENTRY vtt_S2969C1[] = {
  {&(_ZTV7S2969C1[5]),  5,26},
  {&(_ZTV7S2969C1[11]),  11,26},
  {&(_ZTV7S2969C1[15]),  15,26},
  {&(_ZTV7S2969C1[19]),  19,26},
  {&(_ZTV7S2969C1[24]),  24,26},
  {&(_tg__ZTV7S2969C4__7S2969C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2969C1[];
extern  VTBL_ENTRY _ZTV7S2969C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2969C1[];
static VTBL_ENTRY alt_thunk_names165[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2969C1D0Ev,_ZTv0_n12_N7S2969C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2969C1D0Ev,_ZThn32_N7S2969C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2969C1D1Ev,_ZTv0_n12_N7S2969C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2969C1D1Ev,_ZThn32_N7S2969C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2969C1D0Ev,_ZTv0_n16_N7S2969C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2969C1D0Ev,_ZThn4_N7S2969C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2969C1D1Ev,_ZTv0_n16_N7S2969C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2969C1D1Ev,_ZThn4_N7S2969C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2969C1 = {  "S2969C1", // class name
  bases_S2969C1, 14,
  &(vtc_S2969C1[0]), // expected_vtbl_contents
  &(vtt_S2969C1[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI7S2969C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2969C1),26, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2969C1),6, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names165,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15911C3_nt  : S3164C31_nt {
  int s15911c3f0;
};
//SIG(-1 S15911C3_nt) C1{ BC2{ m} Fi}



//skip512 S15911C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S15911C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15911C2  {
  int s15911c2f0;
  unsigned char s15911c2f1:1;
  unsigned char s15911c2f2:1;
  int s15911c2f3;
  ::S15911C3_nt s15911c2f4;
  int s15911c2f5[2];
  void  mf15911c2(); // _ZN8S15911C29mf15911c2Ev
};
//SIG(-1 S15911C2) C1{ m Fi Fc:1 Fc:1 Fi FC2{ BC3{ m} Fi} Fi[2]}


void  S15911C2 ::mf15911c2(){}

static void Test_S15911C2()
{
  {
    init_simple_test("S15911C2");
    static S15911C2 lv;
    check2(sizeof(lv), 24, "sizeof(S15911C2)");
    check2(__alignof__(lv), 4, "__alignof__(S15911C2)");
    check_field_offset(lv, s15911c2f0, 0, "S15911C2.s15911c2f0");
    set_bf_and_test(lv, s15911c2f1, 4, 0, 1, 1, "S15911C2");
    set_bf_and_test(lv, s15911c2f2, 4, 1, 1, 1, "S15911C2");
    check_field_offset(lv, s15911c2f3, 8, "S15911C2.s15911c2f3");
    check_field_offset(lv, s15911c2f4, 12, "S15911C2.s15911c2f4");
    check_field_offset(lv, s15911c2f5, 16, "S15911C2.s15911c2f5");
  }
}
static Arrange_To_Call_Me vS15911C2(Test_S15911C2, "S15911C2", 24);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15911C7_nt  {
  void *s15911c7f0;
  int s15911c7f1;
  void  mf15911c7(); // _ZN11S15911C7_nt9mf15911c7Ev
};
//SIG(-1 S15911C7_nt) C1{ m Fp Fi}


void  S15911C7_nt ::mf15911c7(){}

//skip512 S15911C7_nt

#else // __cplusplus

Class_Descriptor cd_S15911C7_nt = {  "S15911C7_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  S15911C6_nt  : S15911C7_nt {
};
//SIG(-1 S15911C6_nt) C1{ BC2{ m Fp Fi}}



//skip512 S15911C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S15911C7_nt;
static Base_Class bases_S15911C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15911C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15911C5_nt  {
  int s15911c5f0;
  ::S15911C6_nt s15911c5f1;
  void  mf15911c5(); // _ZN11S15911C5_nt9mf15911c5Ev
};
//SIG(-1 S15911C5_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S15911C5_nt ::mf15911c5(){}

//skip512 S15911C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15911C1  {
  ::S15911C2 s15911c1f0;
  ::S15911C5_nt s15911c1f1;
  void  mf15911c1(); // _ZN8S15911C19mf15911c1Ev
};
//SIG(1 S15911C1) C1{ m FC2{ m Fi Fc:1 Fc:1 Fi FC3{ BC4{ m} Fi} Fi[2]} FC5{ m Fi FC6{ BC7{ m Fp Fi}}}}


void  S15911C1 ::mf15911c1(){}

static void Test_S15911C1()
{
  {
    init_simple_test("S15911C1");
    static S15911C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S15911C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15911C1)");
    check_field_offset(lv, s15911c1f0, 0, "S15911C1.s15911c1f0");
    check_field_offset(lv, s15911c1f1, 24, "S15911C1.s15911c1f1");
  }
}
static Arrange_To_Call_Me vS15911C1(Test_S15911C1, "S15911C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9315C2  {
  ::S2213C20_nt s9315c2f0;
  int s9315c2f1[2];
  char s9315c2f2;
  virtual  ~S9315C2(); // _ZN7S9315C2D1Ev
  virtual void  v3(); // _ZN7S9315C22v3Ev
  virtual void  v4(); // _ZN7S9315C22v4Ev
  virtual void  v5(); // _ZN7S9315C22v5Ev
  S9315C2(); // tgen
};
//SIG(-1 S9315C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9315C2 ::~S9315C2(){ note_dtor("S9315C2", this);}
void  S9315C2 ::v3(){vfunc_called(this, "_ZN7S9315C22v3Ev");}
void  S9315C2 ::v4(){vfunc_called(this, "_ZN7S9315C22v4Ev");}
void  S9315C2 ::v5(){vfunc_called(this, "_ZN7S9315C22v5Ev");}
S9315C2 ::S9315C2(){ note_ctor("S9315C2", this);} // tgen

static void Test_S9315C2()
{
  extern Class_Descriptor cd_S9315C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9315C2, buf);
    S9315C2 *dp, &lv = *(dp=new (buf) S9315C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9315C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9315C2)");
    check_field_offset(lv, s9315c2f0, ABISELECT(8,4), "S9315C2.s9315c2f0");
    check_field_offset(lv, s9315c2f1, ABISELECT(24,16), "S9315C2.s9315c2f1");
    check_field_offset(lv, s9315c2f2, ABISELECT(32,24), "S9315C2.s9315c2f2");
    test_class_info(&lv, &cd_S9315C2);
    dp->~S9315C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9315C2(Test_S9315C2, "S9315C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9315C2C1Ev();
extern void _ZN7S9315C2D1Ev();
Name_Map name_map_S9315C2[] = {
  NSPAIR(_ZN7S9315C2C1Ev),
  NSPAIR(_ZN7S9315C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9315C2[];
extern void _ZN7S9315C2D1Ev();
extern void _ZN7S9315C2D0Ev();
extern void _ZN7S9315C22v3Ev();
extern void _ZN7S9315C22v4Ev();
extern void _ZN7S9315C22v5Ev();
static  VTBL_ENTRY vtc_S9315C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9315C2[0]),
  (VTBL_ENTRY)&_ZN7S9315C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9315C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9315C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9315C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9315C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9315C2[];
extern  VTBL_ENTRY _ZTV7S9315C2[];
Class_Descriptor cd_S9315C2 = {  "S9315C2", // class name
  0,0,//no base classes
  &(vtc_S9315C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9315C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9315C2),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  S9315C1  : S9315C2 {
  int s9315c1f0;
  char s9315c1f1[266];
  void *s9315c1f2;
  int s9315c1f3;
  virtual  ~S9315C1(); // _ZN7S9315C1D1Ev
  virtual void  v1(); // _ZN7S9315C12v1Ev
  virtual void  v2(); // _ZN7S9315C12v2Ev
  S9315C1(); // tgen
};
//SIG(1 S9315C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fi Fc[266] Fp Fi}


 S9315C1 ::~S9315C1(){ note_dtor("S9315C1", this);}
void  S9315C1 ::v1(){vfunc_called(this, "_ZN7S9315C12v1Ev");}
void  S9315C1 ::v2(){vfunc_called(this, "_ZN7S9315C12v2Ev");}
S9315C1 ::S9315C1(){ note_ctor("S9315C1", this);} // tgen

static void Test_S9315C1()
{
  extern Class_Descriptor cd_S9315C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,78)];
    init_test(&cd_S9315C1, buf);
    S9315C1 *dp, &lv = *(dp=new (buf) S9315C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,308), "sizeof(S9315C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9315C1)");
    check_base_class_offset(lv, (S9315C2*), 0, "S9315C1");
    check_field_offset(lv, s9315c1f0, ABISELECT(36,28), "S9315C1.s9315c1f0");
    check_field_offset(lv, s9315c1f1, ABISELECT(40,32), "S9315C1.s9315c1f1");
    check_field_offset(lv, s9315c1f2, ABISELECT(312,300), "S9315C1.s9315c1f2");
    check_field_offset(lv, s9315c1f3, ABISELECT(320,304), "S9315C1.s9315c1f3");
    test_class_info(&lv, &cd_S9315C1);
    dp->~S9315C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9315C1(Test_S9315C1, "S9315C1", ABISELECT(328,308));

#else // __cplusplus

extern void _ZN7S9315C1C1Ev();
extern void _ZN7S9315C1D1Ev();
Name_Map name_map_S9315C1[] = {
  NSPAIR(_ZN7S9315C1C1Ev),
  NSPAIR(_ZN7S9315C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9315C2;
extern VTBL_ENTRY _ZTI7S9315C2[];
extern  VTBL_ENTRY _ZTV7S9315C2[];
static Base_Class bases_S9315C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9315C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9315C1[];
extern void _ZN7S9315C1D1Ev();
extern void _ZN7S9315C1D0Ev();
extern void _ZN7S9315C22v3Ev();
extern void _ZN7S9315C22v4Ev();
extern void _ZN7S9315C22v5Ev();
extern void _ZN7S9315C12v1Ev();
extern void _ZN7S9315C12v2Ev();
static  VTBL_ENTRY vtc_S9315C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9315C1[0]),
  (VTBL_ENTRY)&_ZN7S9315C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9315C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9315C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9315C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9315C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9315C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9315C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9315C1[];
extern  VTBL_ENTRY _ZTV7S9315C1[];
Class_Descriptor cd_S9315C1 = {  "S9315C1", // class name
  bases_S9315C1, 1,
  &(vtc_S9315C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(328,308), // object size
  NSPAIRA(_ZTI7S9315C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9315C1),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  S9248C2  {
  ::S2213C20_nt s9248c2f0;
  int s9248c2f1[2];
  char s9248c2f2;
  virtual  ~S9248C2(); // _ZN7S9248C2D1Ev
  virtual void  v3(); // _ZN7S9248C22v3Ev
  virtual void  v4(); // _ZN7S9248C22v4Ev
  virtual void  v5(); // _ZN7S9248C22v5Ev
  S9248C2(); // tgen
};
//SIG(-1 S9248C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9248C2 ::~S9248C2(){ note_dtor("S9248C2", this);}
void  S9248C2 ::v3(){vfunc_called(this, "_ZN7S9248C22v3Ev");}
void  S9248C2 ::v4(){vfunc_called(this, "_ZN7S9248C22v4Ev");}
void  S9248C2 ::v5(){vfunc_called(this, "_ZN7S9248C22v5Ev");}
S9248C2 ::S9248C2(){ note_ctor("S9248C2", this);} // tgen

static void Test_S9248C2()
{
  extern Class_Descriptor cd_S9248C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9248C2, buf);
    S9248C2 *dp, &lv = *(dp=new (buf) S9248C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9248C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9248C2)");
    check_field_offset(lv, s9248c2f0, ABISELECT(8,4), "S9248C2.s9248c2f0");
    check_field_offset(lv, s9248c2f1, ABISELECT(24,16), "S9248C2.s9248c2f1");
    check_field_offset(lv, s9248c2f2, ABISELECT(32,24), "S9248C2.s9248c2f2");
    test_class_info(&lv, &cd_S9248C2);
    dp->~S9248C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9248C2(Test_S9248C2, "S9248C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9248C2C1Ev();
extern void _ZN7S9248C2D1Ev();
Name_Map name_map_S9248C2[] = {
  NSPAIR(_ZN7S9248C2C1Ev),
  NSPAIR(_ZN7S9248C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9248C2[];
extern void _ZN7S9248C2D1Ev();
extern void _ZN7S9248C2D0Ev();
extern void _ZN7S9248C22v3Ev();
extern void _ZN7S9248C22v4Ev();
extern void _ZN7S9248C22v5Ev();
static  VTBL_ENTRY vtc_S9248C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9248C2[0]),
  (VTBL_ENTRY)&_ZN7S9248C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9248C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9248C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9248C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9248C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9248C2[];
extern  VTBL_ENTRY _ZTV7S9248C2[];
Class_Descriptor cd_S9248C2 = {  "S9248C2", // class name
  0,0,//no base classes
  &(vtc_S9248C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9248C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9248C2),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  S9248C1  : S9248C2 {
  char s9248c1f0[2];
  int s9248c1f1;
  __tsi64 s9248c1f2;
  int s9248c1f3;
  virtual  ~S9248C1(); // _ZN7S9248C1D1Ev
  virtual void  v1(); // _ZN7S9248C12v1Ev
  virtual void  v2(); // _ZN7S9248C12v2Ev
  S9248C1(); // tgen
};
//SIG(1 S9248C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc[2] Fi FL Fi}


 S9248C1 ::~S9248C1(){ note_dtor("S9248C1", this);}
void  S9248C1 ::v1(){vfunc_called(this, "_ZN7S9248C12v1Ev");}
void  S9248C1 ::v2(){vfunc_called(this, "_ZN7S9248C12v2Ev");}
S9248C1 ::S9248C1(){ note_ctor("S9248C1", this);} // tgen

static void Test_S9248C1()
{
  extern Class_Descriptor cd_S9248C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,12)];
    init_test(&cd_S9248C1, buf);
    S9248C1 *dp, &lv = *(dp=new (buf) S9248C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S9248C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9248C1)");
    check_base_class_offset(lv, (S9248C2*), 0, "S9248C1");
    check_field_offset(lv, s9248c1f0, ABISELECT(33,25), "S9248C1.s9248c1f0");
    check_field_offset(lv, s9248c1f1, ABISELECT(36,28), "S9248C1.s9248c1f1");
    check_field_offset(lv, s9248c1f2, ABISELECT(40,32), "S9248C1.s9248c1f2");
    check_field_offset(lv, s9248c1f3, ABISELECT(48,40), "S9248C1.s9248c1f3");
    test_class_info(&lv, &cd_S9248C1);
    dp->~S9248C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9248C1(Test_S9248C1, "S9248C1", ABISELECT(56,44));

#else // __cplusplus

extern void _ZN7S9248C1C1Ev();
extern void _ZN7S9248C1D1Ev();
Name_Map name_map_S9248C1[] = {
  NSPAIR(_ZN7S9248C1C1Ev),
  NSPAIR(_ZN7S9248C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9248C2;
extern VTBL_ENTRY _ZTI7S9248C2[];
extern  VTBL_ENTRY _ZTV7S9248C2[];
static Base_Class bases_S9248C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9248C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9248C1[];
extern void _ZN7S9248C1D1Ev();
extern void _ZN7S9248C1D0Ev();
extern void _ZN7S9248C22v3Ev();
extern void _ZN7S9248C22v4Ev();
extern void _ZN7S9248C22v5Ev();
extern void _ZN7S9248C12v1Ev();
extern void _ZN7S9248C12v2Ev();
static  VTBL_ENTRY vtc_S9248C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9248C1[0]),
  (VTBL_ENTRY)&_ZN7S9248C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9248C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9248C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9248C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9248C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9248C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9248C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9248C1[];
extern  VTBL_ENTRY _ZTV7S9248C1[];
Class_Descriptor cd_S9248C1 = {  "S9248C1", // class name
  bases_S9248C1, 1,
  &(vtc_S9248C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,44), // object size
  NSPAIRA(_ZTI7S9248C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9248C1),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  S9207C2  {
  ::S2213C20_nt s9207c2f0;
  int s9207c2f1[2];
  char s9207c2f2;
  virtual  ~S9207C2(); // _ZN7S9207C2D1Ev
  virtual void  v3(); // _ZN7S9207C22v3Ev
  virtual void  v4(); // _ZN7S9207C22v4Ev
  virtual void  v5(); // _ZN7S9207C22v5Ev
  S9207C2(); // tgen
};
//SIG(-1 S9207C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9207C2 ::~S9207C2(){ note_dtor("S9207C2", this);}
void  S9207C2 ::v3(){vfunc_called(this, "_ZN7S9207C22v3Ev");}
void  S9207C2 ::v4(){vfunc_called(this, "_ZN7S9207C22v4Ev");}
void  S9207C2 ::v5(){vfunc_called(this, "_ZN7S9207C22v5Ev");}
S9207C2 ::S9207C2(){ note_ctor("S9207C2", this);} // tgen

static void Test_S9207C2()
{
  extern Class_Descriptor cd_S9207C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9207C2, buf);
    S9207C2 *dp, &lv = *(dp=new (buf) S9207C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9207C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9207C2)");
    check_field_offset(lv, s9207c2f0, ABISELECT(8,4), "S9207C2.s9207c2f0");
    check_field_offset(lv, s9207c2f1, ABISELECT(24,16), "S9207C2.s9207c2f1");
    check_field_offset(lv, s9207c2f2, ABISELECT(32,24), "S9207C2.s9207c2f2");
    test_class_info(&lv, &cd_S9207C2);
    dp->~S9207C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9207C2(Test_S9207C2, "S9207C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9207C2C1Ev();
extern void _ZN7S9207C2D1Ev();
Name_Map name_map_S9207C2[] = {
  NSPAIR(_ZN7S9207C2C1Ev),
  NSPAIR(_ZN7S9207C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9207C2[];
extern void _ZN7S9207C2D1Ev();
extern void _ZN7S9207C2D0Ev();
extern void _ZN7S9207C22v3Ev();
extern void _ZN7S9207C22v4Ev();
extern void _ZN7S9207C22v5Ev();
static  VTBL_ENTRY vtc_S9207C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9207C2[0]),
  (VTBL_ENTRY)&_ZN7S9207C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9207C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9207C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9207C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9207C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9207C2[];
extern  VTBL_ENTRY _ZTV7S9207C2[];
Class_Descriptor cd_S9207C2 = {  "S9207C2", // class name
  0,0,//no base classes
  &(vtc_S9207C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9207C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9207C2),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  S9207C6_nt  {
  int s9207c6f0;
};
//SIG(-1 S9207C6_nt) C1{ Fi}



//skip512 S9207C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9207C1  : S9207C2 , S3164C31_nt {
  ::S9207C6_nt s9207c1f0;
  virtual  ~S9207C1(); // _ZN7S9207C1D1Ev
  virtual void  v1(); // _ZN7S9207C12v1Ev
  virtual void  v2(); // _ZN7S9207C12v2Ev
  S9207C1(); // tgen
};
//SIG(1 S9207C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ m} vd v1 v2 FC6{ Fi}}


 S9207C1 ::~S9207C1(){ note_dtor("S9207C1", this);}
void  S9207C1 ::v1(){vfunc_called(this, "_ZN7S9207C12v1Ev");}
void  S9207C1 ::v2(){vfunc_called(this, "_ZN7S9207C12v2Ev");}
S9207C1 ::S9207C1(){ note_ctor("S9207C1", this);} // tgen

static void Test_S9207C1()
{
  extern Class_Descriptor cd_S9207C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S9207C1, buf);
    S9207C1 *dp, &lv = *(dp=new (buf) S9207C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S9207C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9207C1)");
    check_base_class_offset(lv, (S9207C2*), 0, "S9207C1");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S9207C1");
    check_field_offset(lv, s9207c1f0, ABISELECT(36,28), "S9207C1.s9207c1f0");
    test_class_info(&lv, &cd_S9207C1);
    dp->~S9207C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9207C1(Test_S9207C1, "S9207C1", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN7S9207C1C1Ev();
extern void _ZN7S9207C1D1Ev();
Name_Map name_map_S9207C1[] = {
  NSPAIR(_ZN7S9207C1C1Ev),
  NSPAIR(_ZN7S9207C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9207C2;
extern VTBL_ENTRY _ZTI7S9207C2[];
extern  VTBL_ENTRY _ZTV7S9207C2[];
extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S9207C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9207C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9207C1[];
extern void _ZN7S9207C1D1Ev();
extern void _ZN7S9207C1D0Ev();
extern void _ZN7S9207C22v3Ev();
extern void _ZN7S9207C22v4Ev();
extern void _ZN7S9207C22v5Ev();
extern void _ZN7S9207C12v1Ev();
extern void _ZN7S9207C12v2Ev();
static  VTBL_ENTRY vtc_S9207C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9207C1[0]),
  (VTBL_ENTRY)&_ZN7S9207C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9207C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9207C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9207C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9207C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9207C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9207C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9207C1[];
extern  VTBL_ENTRY _ZTV7S9207C1[];
Class_Descriptor cd_S9207C1 = {  "S9207C1", // class name
  bases_S9207C1, 2,
  &(vtc_S9207C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI7S9207C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9207C1),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  S18855C1  {
  char s18855c1f0;
  ::S21061C6 s18855c1f1;
  virtual  ~S18855C1(); // _ZN8S18855C1D1Ev
  virtual void  v1(); // _ZN8S18855C12v1Ev
  virtual void  v2(); // _ZN8S18855C12v2Ev
  virtual void  v3(); // _ZN8S18855C12v3Ev
  virtual void  v4(); // _ZN8S18855C12v4Ev
  virtual void  v5(); // _ZN8S18855C12v5Ev
  virtual void  v6(); // _ZN8S18855C12v6Ev
  virtual void  v7(); // _ZN8S18855C12v7Ev
  S18855C1(); // tgen
};
//SIG(1 S18855C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 Fc FC2{ v8 v9 v10 v11 v12 v13 v14 FD Fp[5]}}


 S18855C1 ::~S18855C1(){ note_dtor("S18855C1", this);}
void  S18855C1 ::v1(){vfunc_called(this, "_ZN8S18855C12v1Ev");}
void  S18855C1 ::v2(){vfunc_called(this, "_ZN8S18855C12v2Ev");}
void  S18855C1 ::v3(){vfunc_called(this, "_ZN8S18855C12v3Ev");}
void  S18855C1 ::v4(){vfunc_called(this, "_ZN8S18855C12v4Ev");}
void  S18855C1 ::v5(){vfunc_called(this, "_ZN8S18855C12v5Ev");}
void  S18855C1 ::v6(){vfunc_called(this, "_ZN8S18855C12v6Ev");}
void  S18855C1 ::v7(){vfunc_called(this, "_ZN8S18855C12v7Ev");}
S18855C1 ::S18855C1(){ note_ctor("S18855C1", this);} // tgen

static void Test_S18855C1()
{
  extern Class_Descriptor cd_S18855C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,12)];
    init_test(&cd_S18855C1, buf);
    S18855C1 *dp, &lv = *(dp=new (buf) S18855C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,44), "sizeof(S18855C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18855C1)");
    check_field_offset(lv, s18855c1f0, ABISELECT(8,4), "S18855C1.s18855c1f0");
    check_field_offset(lv, s18855c1f1, ABISELECT(16,8), "S18855C1.s18855c1f1");
    test_class_info(&lv, &cd_S18855C1);
    dp->~S18855C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18855C1(Test_S18855C1, "S18855C1", ABISELECT(96,44));

#else // __cplusplus

extern void _ZN8S18855C1C1Ev();
extern void _ZN8S18855C1D1Ev();
Name_Map name_map_S18855C1[] = {
  NSPAIR(_ZN8S18855C1C1Ev),
  NSPAIR(_ZN8S18855C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18855C1[];
extern void _ZN8S18855C1D1Ev();
extern void _ZN8S18855C1D0Ev();
extern void _ZN8S18855C12v1Ev();
extern void _ZN8S18855C12v2Ev();
extern void _ZN8S18855C12v3Ev();
extern void _ZN8S18855C12v4Ev();
extern void _ZN8S18855C12v5Ev();
extern void _ZN8S18855C12v6Ev();
extern void _ZN8S18855C12v7Ev();
static  VTBL_ENTRY vtc_S18855C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18855C1[0]),
  (VTBL_ENTRY)&_ZN8S18855C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18855C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18855C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18855C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18855C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18855C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18855C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18855C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18855C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S18855C1[];
extern  VTBL_ENTRY _ZTV8S18855C1[];
Class_Descriptor cd_S18855C1 = {  "S18855C1", // class name
  0,0,//no base classes
  &(vtc_S18855C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,44), // object size
  NSPAIRA(_ZTI8S18855C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18855C1),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3835C2_nt  : S13735C5_nt {
  virtual  ~S3835C2_nt(); // _ZN10S3835C2_ntD1Ev
  virtual void  v2(); // _ZN10S3835C2_nt2v2Ev
  S3835C2_nt(); // tgen
};
//SIG(-1 S3835C2_nt) C1{ BC2{ vd m Fi} vd v1}


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

//skip512 S3835C2_nt

#else // __cplusplus

extern void _ZN10S3835C2_ntC1Ev();
extern void _ZN10S3835C2_ntD1Ev();
Name_Map name_map_S3835C2_nt[] = {
  NSPAIR(_ZN10S3835C2_ntC1Ev),
  NSPAIR(_ZN10S3835C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S13735C5_nt;
extern VTBL_ENTRY _ZTI11S13735C5_nt[];
extern  VTBL_ENTRY _ZTV11S13735C5_nt[];
static Base_Class bases_S3835C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S13735C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3835C2_nt[];
extern void _ZN10S3835C2_ntD1Ev();
extern void _ZN10S3835C2_ntD0Ev();
extern void _ZN10S3835C2_nt2v2Ev();
static  VTBL_ENTRY vtc_S3835C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3835C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3835C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3835C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3835C2_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S3835C2_nt[];
VTBL_ENTRY *P__ZTI10S3835C2_nt = _ZTI10S3835C2_nt; 
extern  VTBL_ENTRY _ZTV10S3835C2_nt[];
Class_Descriptor cd_S3835C2_nt = {  "S3835C2_nt", // class name
  bases_S3835C2_nt, 1,
  &(vtc_S3835C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3835C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3835C2_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3835C1  : S3835C2_nt {
  void *s3835c1f0[2];
  ::S2213C25 s3835c1f1;
  virtual  ~S3835C1(); // _ZN7S3835C1D1Ev
  virtual void  v1(); // _ZN7S3835C12v1Ev
  S3835C1(); // tgen
};
//SIG(1 S3835C1) C1{ BC2{ BC3{ vd m Fi} vd v2} vd v1 Fp[2] FC4{ BC5{ m Fp Fi FC6{ m} FC6}}}


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

static void Test_S3835C1()
{
  extern Class_Descriptor cd_S3835C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S3835C1, buf);
    S3835C1 *dp, &lv = *(dp=new (buf) S3835C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S3835C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3835C1)");
    check_base_class_offset(lv, (S13735C5_nt*)(S3835C2_nt*), 0, "S3835C1");
    check_base_class_offset(lv, (S3835C2_nt*), 0, "S3835C1");
    check_field_offset(lv, s3835c1f0, ABISELECT(16,8), "S3835C1.s3835c1f0");
    check_field_offset(lv, s3835c1f1, ABISELECT(32,16), "S3835C1.s3835c1f1");
    test_class_info(&lv, &cd_S3835C1);
    dp->~S3835C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3835C1(Test_S3835C1, "S3835C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S3835C1C1Ev();
extern void _ZN7S3835C1D1Ev();
Name_Map name_map_S3835C1[] = {
  NSPAIR(_ZN7S3835C1C1Ev),
  NSPAIR(_ZN7S3835C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S13735C5_nt;
extern VTBL_ENTRY _ZTI11S13735C5_nt[];
extern  VTBL_ENTRY _ZTV11S13735C5_nt[];
extern Class_Descriptor cd_S3835C2_nt;
extern VTBL_ENTRY _ZTI10S3835C2_nt[];
extern  VTBL_ENTRY _ZTV10S3835C2_nt[];
static Base_Class bases_S3835C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S13735C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3835C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3835C1[];
extern void _ZN7S3835C1D1Ev();
extern void _ZN7S3835C1D0Ev();
extern void _ZN10S3835C2_nt2v2Ev();
extern void _ZN7S3835C12v1Ev();
static  VTBL_ENTRY vtc_S3835C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3835C1[0]),
  (VTBL_ENTRY)&_ZN7S3835C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3835C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3835C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S3835C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3835C1[];
extern  VTBL_ENTRY _ZTV7S3835C1[];
Class_Descriptor cd_S3835C1 = {  "S3835C1", // class name
  bases_S3835C1, 2,
  &(vtc_S3835C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S3835C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3835C1),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  S19003C4_nt  {
  char s19003c4f0;
  void *s19003c4f1;
  void  mf19003c4(); // _ZN11S19003C4_nt9mf19003c4Ev
};
//SIG(-1 S19003C4_nt) C1{ m Fc Fp}


void  S19003C4_nt ::mf19003c4(){}

//skip512 S19003C4_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19003C4_nt[];
VTBL_ENTRY *P__ZTI11S19003C4_nt = _ZTI11S19003C4_nt; 
Class_Descriptor cd_S19003C4_nt = {  "S19003C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S19003C4_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  S19003C3_nt  : S19003C4_nt {
  virtual void  v1(); // _ZN11S19003C3_nt2v1Ev
  virtual void  v2(); // _ZN11S19003C3_nt2v2Ev
  virtual void  v3(); // _ZN11S19003C3_nt2v3Ev
  virtual void  v4(); // _ZN11S19003C3_nt2v4Ev
  ~S19003C3_nt(); // tgen
  S19003C3_nt(); // tgen
};
//SIG(-1 S19003C3_nt) C1{ BC2{ m Fc Fp} v1 v2 v3 v4}


void  S19003C3_nt ::v1(){vfunc_called(this, "_ZN11S19003C3_nt2v1Ev");}
void  S19003C3_nt ::v2(){vfunc_called(this, "_ZN11S19003C3_nt2v2Ev");}
void  S19003C3_nt ::v3(){vfunc_called(this, "_ZN11S19003C3_nt2v3Ev");}
void  S19003C3_nt ::v4(){vfunc_called(this, "_ZN11S19003C3_nt2v4Ev");}
S19003C3_nt ::~S19003C3_nt(){ note_dtor("S19003C3_nt", this);} // tgen
S19003C3_nt ::S19003C3_nt(){ note_ctor("S19003C3_nt", this);} // tgen

//skip512 S19003C3_nt

#else // __cplusplus

extern void _ZN11S19003C3_ntC1Ev();
extern void _ZN11S19003C3_ntD1Ev();
Name_Map name_map_S19003C3_nt[] = {
  NSPAIR(_ZN11S19003C3_ntC1Ev),
  NSPAIR(_ZN11S19003C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19003C4_nt;
extern VTBL_ENTRY _ZTI11S19003C4_nt[];
static Base_Class bases_S19003C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19003C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S19003C3_nt[];
extern void _ZN11S19003C3_nt2v1Ev();
extern void _ZN11S19003C3_nt2v2Ev();
extern void _ZN11S19003C3_nt2v3Ev();
extern void _ZN11S19003C3_nt2v4Ev();
static  VTBL_ENTRY vtc_S19003C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19003C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI11S19003C3_nt[];
VTBL_ENTRY *P__ZTI11S19003C3_nt = _ZTI11S19003C3_nt; 
extern  VTBL_ENTRY _ZTV11S19003C3_nt[];
Class_Descriptor cd_S19003C3_nt = {  "S19003C3_nt", // class name
  bases_S19003C3_nt, 1,
  &(vtc_S19003C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI11S19003C3_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S19003C3_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  S19003C2  : S19003C3_nt {
  ::S19003C4_nt s19003c2f0;
  virtual void  v5(); // _ZN8S19003C22v5Ev
  virtual void  v6(); // _ZN8S19003C22v6Ev
  virtual void  v7(); // _ZN8S19003C22v7Ev
  virtual void  v8(); // _ZN8S19003C22v8Ev
  virtual void  v9(); // _ZN8S19003C22v9Ev
  virtual void  v10(); // _ZN8S19003C23v10Ev
  ~S19003C2(); // tgen
  S19003C2(); // tgen
};
//SIG(-1 S19003C2) C1{ BC2{ BC3{ m Fc Fp} v7 v8 v9 v10} v1 v2 v3 v4 v5 v6 FC3}


void  S19003C2 ::v5(){vfunc_called(this, "_ZN8S19003C22v5Ev");}
void  S19003C2 ::v6(){vfunc_called(this, "_ZN8S19003C22v6Ev");}
void  S19003C2 ::v7(){vfunc_called(this, "_ZN8S19003C22v7Ev");}
void  S19003C2 ::v8(){vfunc_called(this, "_ZN8S19003C22v8Ev");}
void  S19003C2 ::v9(){vfunc_called(this, "_ZN8S19003C22v9Ev");}
void  S19003C2 ::v10(){vfunc_called(this, "_ZN8S19003C23v10Ev");}
S19003C2 ::~S19003C2(){ note_dtor("S19003C2", this);} // tgen
S19003C2 ::S19003C2(){ note_ctor("S19003C2", this);} // tgen

static void Test_S19003C2()
{
  extern Class_Descriptor cd_S19003C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S19003C2, buf);
    S19003C2 *dp, &lv = *(dp=new (buf) S19003C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S19003C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19003C2)");
    check_base_class_offset(lv, (S19003C4_nt*)(S19003C3_nt*), ABISELECT(8,4), "S19003C2");
    check_base_class_offset(lv, (S19003C3_nt*), 0, "S19003C2");
    check_field_offset(lv, s19003c2f0, ABISELECT(24,12), "S19003C2.s19003c2f0");
    test_class_info(&lv, &cd_S19003C2);
    dp->~S19003C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19003C2(Test_S19003C2, "S19003C2", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S19003C2C1Ev();
extern void _ZN8S19003C2D1Ev();
Name_Map name_map_S19003C2[] = {
  NSPAIR(_ZN8S19003C2C1Ev),
  NSPAIR(_ZN8S19003C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19003C4_nt;
extern VTBL_ENTRY _ZTI11S19003C4_nt[];
extern Class_Descriptor cd_S19003C3_nt;
extern VTBL_ENTRY _ZTI11S19003C3_nt[];
extern  VTBL_ENTRY _ZTV11S19003C3_nt[];
static Base_Class bases_S19003C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19003C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19003C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19003C2[];
extern void _ZN11S19003C3_nt2v1Ev();
extern void _ZN11S19003C3_nt2v2Ev();
extern void _ZN11S19003C3_nt2v3Ev();
extern void _ZN11S19003C3_nt2v4Ev();
extern void _ZN8S19003C22v5Ev();
extern void _ZN8S19003C22v6Ev();
extern void _ZN8S19003C22v7Ev();
extern void _ZN8S19003C22v8Ev();
extern void _ZN8S19003C22v9Ev();
extern void _ZN8S19003C23v10Ev();
static  VTBL_ENTRY vtc_S19003C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19003C2[0]),
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S19003C22v5Ev,
  (VTBL_ENTRY)&_ZN8S19003C22v6Ev,
  (VTBL_ENTRY)&_ZN8S19003C22v7Ev,
  (VTBL_ENTRY)&_ZN8S19003C22v8Ev,
  (VTBL_ENTRY)&_ZN8S19003C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19003C23v10Ev,
};
extern VTBL_ENTRY _ZTI8S19003C2[];
extern  VTBL_ENTRY _ZTV8S19003C2[];
Class_Descriptor cd_S19003C2 = {  "S19003C2", // class name
  bases_S19003C2, 2,
  &(vtc_S19003C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S19003C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19003C2),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  S19003C1  : virtual S19003C2 , virtual S19003C3_nt {
  int s19003c1f0;
  ~S19003C1(); // tgen
  S19003C1(); // tgen
};
//SIG(1 S19003C1) C1{ VBC2{ BC3{ BC4{ m Fc Fp} v1 v2 v3 v4} v5 v6 v7 v8 v9 v10 FC4} VBC3 Fi}


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

static void Test_S19003C1()
{
  extern Class_Descriptor cd_S19003C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S19003C1, buf);
    S19003C1 *dp, &lv = *(dp=new (buf) S19003C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19003C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19003C1)");
    check_base_class_offset(lv, (S19003C4_nt*)(S19003C3_nt*)(S19003C2*), ABISELECT(24,12), "S19003C1");
    check_base_class_offset(lv, (S19003C3_nt*)(S19003C2*), ABISELECT(16,8), "S19003C1");
    check_base_class_offset(lv, (S19003C2*), ABISELECT(16,8), "S19003C1");
    /*is_ambiguous_... S19003C1::S19003C3_nt */ AMB_check_base_class_offset(lv, (S19003C4_nt*)(S19003C3_nt*), ABISELECT(64,32), "S19003C1");
    /*is_ambiguous_... S19003C1::S19003C3_nt */ AMB_check_base_class_offset(lv, (S19003C3_nt*), ABISELECT(56,28), "S19003C1");
    check_field_offset(lv, s19003c1f0, ABISELECT(8,4), "S19003C1.s19003c1f0");
    test_class_info(&lv, &cd_S19003C1);
    dp->~S19003C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19003C1(Test_S19003C1, "S19003C1", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19003C1C1Ev();
extern void _ZN8S19003C1D1Ev();
Name_Map name_map_S19003C1[] = {
  NSPAIR(_ZN8S19003C1C1Ev),
  NSPAIR(_ZN8S19003C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19003C4_nt;
extern VTBL_ENTRY _ZTI11S19003C4_nt[];
extern Class_Descriptor cd_S19003C3_nt;
extern VTBL_ENTRY _ZTI11S19003C3_nt[];
extern  VTBL_ENTRY _ZTV11S19003C3_nt[];
extern Class_Descriptor cd_S19003C2;
extern VTBL_ENTRY _ZTI8S19003C2[];
extern  VTBL_ENTRY _ZTV8S19003C2[];
extern Class_Descriptor cd_S19003C4_nt;
extern VTBL_ENTRY _ZTI11S19003C4_nt[];
extern Class_Descriptor cd_S19003C3_nt;
extern VTBL_ENTRY _ZTI11S19003C3_nt[];
extern  VTBL_ENTRY _ZTV11S19003C3_nt[];
static Base_Class bases_S19003C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19003C4_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_S19003C3_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_S19003C2,    ABISELECT(16,8), //bcp->offset
    4, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19003C4_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
    4, //immediately_derived
  0, 0},
  {&cd_S19003C3_nt,    ABISELECT(56,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19003C1[];
extern void _ZN11S19003C3_nt2v1Ev();
extern void _ZN11S19003C3_nt2v2Ev();
extern void _ZN11S19003C3_nt2v3Ev();
extern void _ZN11S19003C3_nt2v4Ev();
extern void _ZN8S19003C22v5Ev();
extern void _ZN8S19003C22v6Ev();
extern void _ZN8S19003C22v7Ev();
extern void _ZN8S19003C22v8Ev();
extern void _ZN8S19003C22v9Ev();
extern void _ZN8S19003C23v10Ev();
extern void _ZN11S19003C3_nt2v1Ev();
extern void _ZN11S19003C3_nt2v2Ev();
extern void _ZN11S19003C3_nt2v3Ev();
extern void _ZN11S19003C3_nt2v4Ev();
static  VTBL_ENTRY vtc_S19003C1[] = {
  ABISELECT(56,28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19003C1[0]),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19003C1[0]),
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S19003C22v5Ev,
  (VTBL_ENTRY)&_ZN8S19003C22v6Ev,
  (VTBL_ENTRY)&_ZN8S19003C22v7Ev,
  (VTBL_ENTRY)&_ZN8S19003C22v8Ev,
  (VTBL_ENTRY)&_ZN8S19003C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19003C23v10Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19003C1[0]),
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S19003C3_nt2v4Ev,
};
extern VTBL_ENTRY _ZTV8S19003C1[];
static  VTT_ENTRY vtt_S19003C1[] = {
  {&(_ZTV8S19003C1[4]),  4,36},
  {&(_ZTV8S19003C1[16]),  16,36},
  {&(_ZTV8S19003C1[32]),  32,36},
};
extern VTBL_ENTRY _ZTI8S19003C1[];
extern  VTBL_ENTRY _ZTV8S19003C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19003C1[];
Class_Descriptor cd_S19003C1 = {  "S19003C1", // class name
  bases_S19003C1, 5,
  &(vtc_S19003C1[0]), // expected_vtbl_contents
  &(vtt_S19003C1[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19003C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19003C1),36, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19003C1),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7558C3  {
  void *s7558c3f0;
  virtual void  v2(); // _ZN7S7558C32v2Ev
  virtual void  v3(); // _ZN7S7558C32v3Ev
  virtual void  v4(); // _ZN7S7558C32v4Ev
  virtual void  v5(); // _ZN7S7558C32v5Ev
  ~S7558C3(); // tgen
  S7558C3(); // tgen
};
//SIG(-1 S7558C3) C1{ v1 v2 v3 v4 Fp}


void  S7558C3 ::v2(){vfunc_called(this, "_ZN7S7558C32v2Ev");}
void  S7558C3 ::v3(){vfunc_called(this, "_ZN7S7558C32v3Ev");}
void  S7558C3 ::v4(){vfunc_called(this, "_ZN7S7558C32v4Ev");}
void  S7558C3 ::v5(){vfunc_called(this, "_ZN7S7558C32v5Ev");}
S7558C3 ::~S7558C3(){ note_dtor("S7558C3", this);} // tgen
S7558C3 ::S7558C3(){ note_ctor("S7558C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7558C3C1Ev();
extern void _ZN7S7558C3D1Ev();
Name_Map name_map_S7558C3[] = {
  NSPAIR(_ZN7S7558C3C1Ev),
  NSPAIR(_ZN7S7558C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7558C3[];
extern void _ZN7S7558C32v2Ev();
extern void _ZN7S7558C32v3Ev();
extern void _ZN7S7558C32v4Ev();
extern void _ZN7S7558C32v5Ev();
static  VTBL_ENTRY vtc_S7558C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7558C3[0]),
  (VTBL_ENTRY)&_ZN7S7558C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S7558C3[];
extern  VTBL_ENTRY _ZTV7S7558C3[];
Class_Descriptor cd_S7558C3 = {  "S7558C3", // class name
  0,0,//no base classes
  &(vtc_S7558C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7558C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7558C3),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  S7558C2  : virtual S7558C3 {
  void *s7558c2f0;
  char s7558c2f1[4];
  virtual void  v6(); // _ZN7S7558C22v6Ev
  virtual void  v7(); // _ZN7S7558C22v7Ev
  virtual void  v8(); // _ZN7S7558C22v8Ev
  virtual void  v9(); // _ZN7S7558C22v9Ev
  virtual void  v10(); // _ZN7S7558C23v10Ev
  virtual void  v11(); // _ZN7S7558C23v11Ev
  virtual void  v12(); // _ZN7S7558C23v12Ev
  ~S7558C2(); // tgen
  S7558C2(); // tgen
};
//SIG(-1 S7558C2) C1{ VBC2{ v8 v9 v10 v11 Fp} v1 v2 v3 v4 v5 v6 v7 Fp Fc[4]}


void  S7558C2 ::v6(){vfunc_called(this, "_ZN7S7558C22v6Ev");}
void  S7558C2 ::v7(){vfunc_called(this, "_ZN7S7558C22v7Ev");}
void  S7558C2 ::v8(){vfunc_called(this, "_ZN7S7558C22v8Ev");}
void  S7558C2 ::v9(){vfunc_called(this, "_ZN7S7558C22v9Ev");}
void  S7558C2 ::v10(){vfunc_called(this, "_ZN7S7558C23v10Ev");}
void  S7558C2 ::v11(){vfunc_called(this, "_ZN7S7558C23v11Ev");}
void  S7558C2 ::v12(){vfunc_called(this, "_ZN7S7558C23v12Ev");}
S7558C2 ::~S7558C2(){ note_dtor("S7558C2", this);} // tgen
S7558C2 ::S7558C2(){ note_ctor("S7558C2", this);} // tgen

static void Test_S7558C2()
{
  extern Class_Descriptor cd_S7558C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7558C2, buf);
    S7558C2 *dp, &lv = *(dp=new (buf) S7558C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7558C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7558C2)");
    check_base_class_offset(lv, (S7558C3*), ABISELECT(24,12), "S7558C2");
    check_field_offset(lv, s7558c2f0, ABISELECT(8,4), "S7558C2.s7558c2f0");
    check_field_offset(lv, s7558c2f1, ABISELECT(16,8), "S7558C2.s7558c2f1");
    test_class_info(&lv, &cd_S7558C2);
    dp->~S7558C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7558C2(Test_S7558C2, "S7558C2", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S7558C2C1Ev();
extern void _ZN7S7558C2D1Ev();
Name_Map name_map_S7558C2[] = {
  NSPAIR(_ZN7S7558C2C1Ev),
  NSPAIR(_ZN7S7558C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7558C3;
extern VTBL_ENTRY _ZTI7S7558C3[];
extern  VTBL_ENTRY _ZTV7S7558C3[];
static Base_Class bases_S7558C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7558C3,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7558C2[];
extern void _ZN7S7558C22v6Ev();
extern void _ZN7S7558C22v7Ev();
extern void _ZN7S7558C22v8Ev();
extern void _ZN7S7558C22v9Ev();
extern void _ZN7S7558C23v10Ev();
extern void _ZN7S7558C23v11Ev();
extern void _ZN7S7558C23v12Ev();
extern void _ZN7S7558C32v2Ev();
extern void _ZN7S7558C32v3Ev();
extern void _ZN7S7558C32v4Ev();
extern void _ZN7S7558C32v5Ev();
static  VTBL_ENTRY vtc_S7558C2[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7558C2[0]),
  (VTBL_ENTRY)&_ZN7S7558C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7558C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7558C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7558C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7558C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7558C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7558C23v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7558C2[0]),
  (VTBL_ENTRY)&_ZN7S7558C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7558C2[];
static  VTT_ENTRY vtt_S7558C2[] = {
  {&(_ZTV7S7558C2[3]),  3,20},
  {&(_ZTV7S7558C2[16]),  16,20},
};
extern VTBL_ENTRY _ZTI7S7558C2[];
extern  VTBL_ENTRY _ZTV7S7558C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7558C2[];
Class_Descriptor cd_S7558C2 = {  "S7558C2", // class name
  bases_S7558C2, 1,
  &(vtc_S7558C2[0]), // expected_vtbl_contents
  &(vtt_S7558C2[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S7558C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7558C2),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7558C2),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  S7558C1  : S7558C2 {
  int s7558c1f0;
  virtual void  v1(); // _ZN7S7558C12v1Ev
  ~S7558C1(); // tgen
  S7558C1(); // tgen
};
//SIG(1 S7558C1) C1{ BC2{ VBC3{ v2 v3 v4 v5 Fp} v6 v7 v8 v9 v10 v11 v12 Fp Fc[4]} v1 Fi}


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

static void Test_S7558C1()
{
  extern Class_Descriptor cd_S7558C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7558C1, buf);
    S7558C1 *dp, &lv = *(dp=new (buf) S7558C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7558C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7558C1)");
    check_base_class_offset(lv, (S7558C3*)(S7558C2*), ABISELECT(24,16), "S7558C1");
    check_base_class_offset(lv, (S7558C2*), 0, "S7558C1");
    check_field_offset(lv, s7558c1f0, ABISELECT(20,12), "S7558C1.s7558c1f0");
    test_class_info(&lv, &cd_S7558C1);
    dp->~S7558C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7558C1(Test_S7558C1, "S7558C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7558C1C1Ev();
extern void _ZN7S7558C1D1Ev();
Name_Map name_map_S7558C1[] = {
  NSPAIR(_ZN7S7558C1C1Ev),
  NSPAIR(_ZN7S7558C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7558C3;
extern VTBL_ENTRY _ZTI7S7558C3[];
extern  VTBL_ENTRY _ZTV7S7558C3[];
extern Class_Descriptor cd_S7558C2;
extern VTBL_ENTRY _ZTI7S7558C2[];
extern  VTBL_ENTRY _ZTV7S7558C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7558C2[];
static Base_Class bases_S7558C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7558C3,    ABISELECT(24,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7558C2,    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 _ZTI7S7558C1[];
extern void _ZN7S7558C22v6Ev();
extern void _ZN7S7558C22v7Ev();
extern void _ZN7S7558C22v8Ev();
extern void _ZN7S7558C22v9Ev();
extern void _ZN7S7558C23v10Ev();
extern void _ZN7S7558C23v11Ev();
extern void _ZN7S7558C23v12Ev();
extern void _ZN7S7558C12v1Ev();
extern void _ZN7S7558C32v2Ev();
extern void _ZN7S7558C32v3Ev();
extern void _ZN7S7558C32v4Ev();
extern void _ZN7S7558C32v5Ev();
static  VTBL_ENTRY vtc_S7558C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7558C1[0]),
  (VTBL_ENTRY)&_ZN7S7558C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7558C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7558C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7558C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7558C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7558C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7558C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7558C12v1Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7558C1[0]),
  (VTBL_ENTRY)&_ZN7S7558C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7558C1[];
extern void _ZN7S7558C22v6Ev();
extern void _ZN7S7558C22v7Ev();
extern void _ZN7S7558C22v8Ev();
extern void _ZN7S7558C22v9Ev();
extern void _ZN7S7558C23v10Ev();
extern void _ZN7S7558C23v11Ev();
extern void _ZN7S7558C23v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7558C2__7S7558C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7558C2[0]),
  (VTBL_ENTRY)&_ZN7S7558C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7558C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7558C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7558C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7558C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7558C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7558C23v12Ev,
};
extern void _ZN7S7558C32v2Ev();
extern void _ZN7S7558C32v3Ev();
extern void _ZN7S7558C32v4Ev();
extern void _ZN7S7558C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7558C3__7S7558C2__7S7558C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7558C2[0]),
  (VTBL_ENTRY)&_ZN7S7558C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7558C32v5Ev,
};
static  VTT_ENTRY vtt_S7558C1[] = {
  {&(_ZTV7S7558C1[3]),  3,21},
  {&(_tg__ZTV7S7558C2__7S7558C1[3]),  3,10},
  {&(_tg__ZTV7S7558C3__7S7558C2__7S7558C1[6]),  6,10},
  {&(_ZTV7S7558C1[17]),  17,21},
};
extern VTBL_ENTRY _ZTI7S7558C1[];
extern  VTBL_ENTRY _ZTV7S7558C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7558C1[];
Class_Descriptor cd_S7558C1 = {  "S7558C1", // class name
  bases_S7558C1, 2,
  &(vtc_S7558C1[0]), // expected_vtbl_contents
  &(vtt_S7558C1[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7558C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7558C1),21, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7558C1),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  S16367C3  {
  int s16367c3f0;
  ::S18033C3_nt s16367c3f1;
  void  mf16367c3(); // _ZN8S16367C39mf16367c3Ev
};
//SIG(-1 S16367C3) C1{ m Fi FC2{ m Fp[2]}}


void  S16367C3 ::mf16367c3(){}

static void Test_S16367C3()
{
  {
    init_simple_test("S16367C3");
    S16367C3 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S16367C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16367C3)");
    check_field_offset(lv, s16367c3f0, 0, "S16367C3.s16367c3f0");
    check_field_offset(lv, s16367c3f1, ABISELECT(8,4), "S16367C3.s16367c3f1");
  }
}
static Arrange_To_Call_Me vS16367C3(Test_S16367C3, "S16367C3", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16367C1  {
  ::S18033C5 s16367c1f0;
  ::S16367C3 s16367c1f1;
  ::S2213C26 s16367c1f2;
  void  mf16367c1(); // _ZN8S16367C19mf16367c1Ev
};
//SIG(1 S16367C1) C1{ m FC2{ m Fp[2]} FC3{ m Fi FC4{ m Fp[2]}} FC5{ m Fp Fi FC6{ m} FC6}}


void  S16367C1 ::mf16367c1(){}

static void Test_S16367C1()
{
  {
    init_simple_test("S16367C1");
    S16367C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S16367C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16367C1)");
    check_field_offset(lv, s16367c1f0, 0, "S16367C1.s16367c1f0");
    check_field_offset(lv, s16367c1f1, ABISELECT(16,8), "S16367C1.s16367c1f1");
    check_field_offset(lv, s16367c1f2, ABISELECT(40,20), "S16367C1.s16367c1f2");
  }
}
static Arrange_To_Call_Me vS16367C1(Test_S16367C1, "S16367C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16487C3  {
  int s16487c3f0[2];
  void *s16487c3f1;
  __tsi64 s16487c3f2[10];
  void  mf16487c3(); // _ZN8S16487C39mf16487c3Ev
};
//SIG(-1 S16487C3) C1{ m Fi[2] Fp FL[10]}


void  S16487C3 ::mf16487c3(){}

static void Test_S16487C3()
{
  {
    init_simple_test("S16487C3");
    S16487C3 lv;
    check2(sizeof(lv), ABISELECT(96,92), "sizeof(S16487C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16487C3)");
    check_field_offset(lv, s16487c3f0, 0, "S16487C3.s16487c3f0");
    check_field_offset(lv, s16487c3f1, 8, "S16487C3.s16487c3f1");
    check_field_offset(lv, s16487c3f2, ABISELECT(16,12), "S16487C3.s16487c3f2");
  }
}
static Arrange_To_Call_Me vS16487C3(Test_S16487C3, "S16487C3", ABISELECT(96,92));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S16487C3[];
VTBL_ENTRY *P__ZTI8S16487C3 = _ZTI8S16487C3; 
Class_Descriptor cd_S16487C3 = {  "S16487C3", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(96,92), // object size
  NSPAIRA(_ZTI8S16487C3),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  S16487C2  : virtual S16487C3 {
  __tsi64 s16487c2f0;
  void *s16487c2f1[9];
  virtual  ~S16487C2(); // _ZN8S16487C2D2Ev
  virtual void  v1(); // _ZN8S16487C22v1Ev
  S16487C2(); // tgen
};
//SIG(-1 S16487C2) C1{ VBC2{ m Fi[2] Fp FL[10]} vd v1 FL Fp[9]}


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

static void Test_S16487C2()
{
  extern Class_Descriptor cd_S16487C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,36)];
    init_test(&cd_S16487C2, buf);
    S16487C2 *dp, &lv = *(dp=new (buf) S16487C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,140), "sizeof(S16487C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16487C2)");
    check_base_class_offset(lv, (S16487C3*), ABISELECT(88,48), "S16487C2");
    check_field_offset(lv, s16487c2f0, ABISELECT(8,4), "S16487C2.s16487c2f0");
    check_field_offset(lv, s16487c2f1, ABISELECT(16,12), "S16487C2.s16487c2f1");
    test_class_info(&lv, &cd_S16487C2);
    dp->~S16487C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS16487C2(Test_S16487C2, "S16487C2", ABISELECT(184,140));

#else // __cplusplus

extern void _ZN8S16487C2C1Ev();
extern void _ZN8S16487C2D2Ev();
Name_Map name_map_S16487C2[] = {
  NSPAIR(_ZN8S16487C2C1Ev),
  NSPAIR(_ZN8S16487C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S16487C3;
extern VTBL_ENTRY _ZTI8S16487C3[];
static Base_Class bases_S16487C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S16487C3,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S16487C2[];
extern void _ZN8S16487C2D1Ev();
extern void _ZN8S16487C2D0Ev();
extern void _ZN8S16487C22v1Ev();
static  VTBL_ENTRY vtc_S16487C2[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S16487C2[0]),
  (VTBL_ENTRY)&_ZN8S16487C2D1Ev,
  (VTBL_ENTRY)&_ZN8S16487C2D0Ev,
  (VTBL_ENTRY)&_ZN8S16487C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S16487C2[];
static  VTT_ENTRY vtt_S16487C2[] = {
  {&(_ZTV8S16487C2[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S16487C2[];
extern  VTBL_ENTRY _ZTV8S16487C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S16487C2[];
Class_Descriptor cd_S16487C2 = {  "S16487C2", // class name
  bases_S16487C2, 1,
  &(vtc_S16487C2[0]), // expected_vtbl_contents
  &(vtt_S16487C2[0]), // expected_vtt_contents
  ABISELECT(184,140), // object size
  NSPAIRA(_ZTI8S16487C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S16487C2),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S16487C2),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  S16487C1  {
  ::S16487C2 s16487c1f0;
  ::S16487C2 s16487c1f1[4];
  ::S16487C3 s16487c1f2;
  int s16487c1f3;
  __tsi64 s16487c1f4;
  void  mf16487c1(); // _ZN8S16487C19mf16487c1Ev
};
//SIG(1 S16487C1) C1{ m FC2{ VBC3{ m Fi[2] Fp FL[10]} vd v1 FL Fp[9]} FC2[4] FC3 Fi FL}


void  S16487C1 ::mf16487c1(){}

static void Test_S16487C1()
{
  {
    init_simple_test("S16487C1");
    S16487C1 lv;
    check2(sizeof(lv), ABISELECT(1032,804), "sizeof(S16487C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16487C1)");
    check_field_offset(lv, s16487c1f0, 0, "S16487C1.s16487c1f0");
    check_field_offset(lv, s16487c1f1, ABISELECT(184,140), "S16487C1.s16487c1f1");
    check_field_offset(lv, s16487c1f2, ABISELECT(920,700), "S16487C1.s16487c1f2");
    check_field_offset(lv, s16487c1f3, ABISELECT(1016,792), "S16487C1.s16487c1f3");
    check_field_offset(lv, s16487c1f4, ABISELECT(1024,796), "S16487C1.s16487c1f4");
  }
}
static Arrange_To_Call_Me vS16487C1(Test_S16487C1, "S16487C1", ABISELECT(1032,804));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21994C1  {
  ::S2213C20_nt s21994c1f0;
  ::S2213C37 s21994c1f1;
  ::S2213C37 s21994c1f2;
  virtual  ~S21994C1(); // _ZN8S21994C1D1Ev
  virtual void  v1(); // _ZN8S21994C12v1Ev
  virtual void  v2(); // _ZN8S21994C12v2Ev
  virtual void  v3(); // _ZN8S21994C12v3Ev
  virtual void  v4(); // _ZN8S21994C12v4Ev
  S21994C1(); // tgen
};
//SIG(1 S21994C1) C1{ vd v1 v2 v3 v4 FC2{ m Fp Fi FC3{ m}} FC4{ m Fp Fi[2] FC5{ m}} FC4}


 S21994C1 ::~S21994C1(){ note_dtor("S21994C1", this);}
void  S21994C1 ::v1(){vfunc_called(this, "_ZN8S21994C12v1Ev");}
void  S21994C1 ::v2(){vfunc_called(this, "_ZN8S21994C12v2Ev");}
void  S21994C1 ::v3(){vfunc_called(this, "_ZN8S21994C12v3Ev");}
void  S21994C1 ::v4(){vfunc_called(this, "_ZN8S21994C12v4Ev");}
S21994C1 ::S21994C1(){ note_ctor("S21994C1", this);} // tgen

static void Test_S21994C1()
{
  extern Class_Descriptor cd_S21994C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S21994C1, buf);
    S21994C1 *dp, &lv = *(dp=new (buf) S21994C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S21994C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21994C1)");
    check_field_offset(lv, s21994c1f0, ABISELECT(8,4), "S21994C1.s21994c1f0");
    check_field_offset(lv, s21994c1f1, ABISELECT(24,16), "S21994C1.s21994c1f1");
    check_field_offset(lv, s21994c1f2, ABISELECT(48,32), "S21994C1.s21994c1f2");
    test_class_info(&lv, &cd_S21994C1);
    dp->~S21994C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21994C1(Test_S21994C1, "S21994C1", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN8S21994C1C1Ev();
extern void _ZN8S21994C1D1Ev();
Name_Map name_map_S21994C1[] = {
  NSPAIR(_ZN8S21994C1C1Ev),
  NSPAIR(_ZN8S21994C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21994C1[];
extern void _ZN8S21994C1D1Ev();
extern void _ZN8S21994C1D0Ev();
extern void _ZN8S21994C12v1Ev();
extern void _ZN8S21994C12v2Ev();
extern void _ZN8S21994C12v3Ev();
extern void _ZN8S21994C12v4Ev();
static  VTBL_ENTRY vtc_S21994C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21994C1[0]),
  (VTBL_ENTRY)&_ZN8S21994C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21994C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21994C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21994C12v2Ev,
  (VTBL_ENTRY)&_ZN8S21994C12v3Ev,
  (VTBL_ENTRY)&_ZN8S21994C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S21994C1[];
extern  VTBL_ENTRY _ZTV8S21994C1[];
Class_Descriptor cd_S21994C1 = {  "S21994C1", // class name
  0,0,//no base classes
  &(vtc_S21994C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI8S21994C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21994C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9316C2  {
  ::S2213C20_nt s9316c2f0;
  int s9316c2f1[2];
  char s9316c2f2;
  virtual  ~S9316C2(); // _ZN7S9316C2D1Ev
  virtual void  v3(); // _ZN7S9316C22v3Ev
  virtual void  v4(); // _ZN7S9316C22v4Ev
  virtual void  v5(); // _ZN7S9316C22v5Ev
  S9316C2(); // tgen
};
//SIG(-1 S9316C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9316C2 ::~S9316C2(){ note_dtor("S9316C2", this);}
void  S9316C2 ::v3(){vfunc_called(this, "_ZN7S9316C22v3Ev");}
void  S9316C2 ::v4(){vfunc_called(this, "_ZN7S9316C22v4Ev");}
void  S9316C2 ::v5(){vfunc_called(this, "_ZN7S9316C22v5Ev");}
S9316C2 ::S9316C2(){ note_ctor("S9316C2", this);} // tgen

static void Test_S9316C2()
{
  extern Class_Descriptor cd_S9316C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9316C2, buf);
    S9316C2 *dp, &lv = *(dp=new (buf) S9316C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9316C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9316C2)");
    check_field_offset(lv, s9316c2f0, ABISELECT(8,4), "S9316C2.s9316c2f0");
    check_field_offset(lv, s9316c2f1, ABISELECT(24,16), "S9316C2.s9316c2f1");
    check_field_offset(lv, s9316c2f2, ABISELECT(32,24), "S9316C2.s9316c2f2");
    test_class_info(&lv, &cd_S9316C2);
    dp->~S9316C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9316C2(Test_S9316C2, "S9316C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9316C2C1Ev();
extern void _ZN7S9316C2D1Ev();
Name_Map name_map_S9316C2[] = {
  NSPAIR(_ZN7S9316C2C1Ev),
  NSPAIR(_ZN7S9316C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9316C2[];
extern void _ZN7S9316C2D1Ev();
extern void _ZN7S9316C2D0Ev();
extern void _ZN7S9316C22v3Ev();
extern void _ZN7S9316C22v4Ev();
extern void _ZN7S9316C22v5Ev();
static  VTBL_ENTRY vtc_S9316C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9316C2[0]),
  (VTBL_ENTRY)&_ZN7S9316C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9316C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9316C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9316C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9316C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9316C2[];
extern  VTBL_ENTRY _ZTV7S9316C2[];
Class_Descriptor cd_S9316C2 = {  "S9316C2", // class name
  0,0,//no base classes
  &(vtc_S9316C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9316C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9316C2),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  S9316C1  : S9316C2 {
  int s9316c1f0;
  char s9316c1f1;
  virtual  ~S9316C1(); // _ZN7S9316C1D1Ev
  virtual void  v1(); // _ZN7S9316C12v1Ev
  virtual void  v2(); // _ZN7S9316C12v2Ev
  S9316C1(); // tgen
};
//SIG(1 S9316C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fi Fc}


 S9316C1 ::~S9316C1(){ note_dtor("S9316C1", this);}
void  S9316C1 ::v1(){vfunc_called(this, "_ZN7S9316C12v1Ev");}
void  S9316C1 ::v2(){vfunc_called(this, "_ZN7S9316C12v2Ev");}
S9316C1 ::S9316C1(){ note_ctor("S9316C1", this);} // tgen

static void Test_S9316C1()
{
  extern Class_Descriptor cd_S9316C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S9316C1, buf);
    S9316C1 *dp, &lv = *(dp=new (buf) S9316C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S9316C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9316C1)");
    check_base_class_offset(lv, (S9316C2*), 0, "S9316C1");
    check_field_offset(lv, s9316c1f0, ABISELECT(36,28), "S9316C1.s9316c1f0");
    check_field_offset(lv, s9316c1f1, ABISELECT(40,32), "S9316C1.s9316c1f1");
    test_class_info(&lv, &cd_S9316C1);
    dp->~S9316C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9316C1(Test_S9316C1, "S9316C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN7S9316C1C1Ev();
extern void _ZN7S9316C1D1Ev();
Name_Map name_map_S9316C1[] = {
  NSPAIR(_ZN7S9316C1C1Ev),
  NSPAIR(_ZN7S9316C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9316C2;
extern VTBL_ENTRY _ZTI7S9316C2[];
extern  VTBL_ENTRY _ZTV7S9316C2[];
static Base_Class bases_S9316C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9316C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9316C1[];
extern void _ZN7S9316C1D1Ev();
extern void _ZN7S9316C1D0Ev();
extern void _ZN7S9316C22v3Ev();
extern void _ZN7S9316C22v4Ev();
extern void _ZN7S9316C22v5Ev();
extern void _ZN7S9316C12v1Ev();
extern void _ZN7S9316C12v2Ev();
static  VTBL_ENTRY vtc_S9316C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9316C1[0]),
  (VTBL_ENTRY)&_ZN7S9316C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9316C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9316C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9316C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9316C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9316C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9316C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9316C1[];
extern  VTBL_ENTRY _ZTV7S9316C1[];
Class_Descriptor cd_S9316C1 = {  "S9316C1", // class name
  bases_S9316C1, 1,
  &(vtc_S9316C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI7S9316C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9316C1),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  S4031C4_nt  {
  void *s4031c4f0[2];
};
//SIG(-1 S4031C4_nt) C1{ Fp[2]}



//skip512 S4031C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4031C2  : S5228C4_nt {
  ::S4031C4_nt s4031c2f0;
  ::S4031C4_nt s4031c2f1;
  int s4031c2f2[2];
  ::S12048C6_nt s4031c2f3;
  virtual  ~S4031C2(); // _ZN7S4031C2D1Ev
  S4031C2(); // tgen
};
//SIG(-1 S4031C2) C1{ BC2{ vd m} vd FC3{ Fp[2]} FC3 Fi[2] FC4{ m Fi[3]}}


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

static void Test_S4031C2()
{
  extern Class_Descriptor cd_S4031C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S4031C2, buf);
    S4031C2 *dp, &lv = *(dp=new (buf) S4031C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S4031C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4031C2)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S4031C2");
    check_field_offset(lv, s4031c2f0, ABISELECT(8,4), "S4031C2.s4031c2f0");
    check_field_offset(lv, s4031c2f1, ABISELECT(24,12), "S4031C2.s4031c2f1");
    check_field_offset(lv, s4031c2f2, ABISELECT(40,20), "S4031C2.s4031c2f2");
    check_field_offset(lv, s4031c2f3, ABISELECT(48,28), "S4031C2.s4031c2f3");
    test_class_info(&lv, &cd_S4031C2);
    dp->~S4031C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4031C2(Test_S4031C2, "S4031C2", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S4031C2C1Ev();
extern void _ZN7S4031C2D1Ev();
Name_Map name_map_S4031C2[] = {
  NSPAIR(_ZN7S4031C2C1Ev),
  NSPAIR(_ZN7S4031C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S4031C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4031C2[];
extern void _ZN7S4031C2D1Ev();
extern void _ZN7S4031C2D0Ev();
static  VTBL_ENTRY vtc_S4031C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4031C2[0]),
  (VTBL_ENTRY)&_ZN7S4031C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4031C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S4031C2[];
extern  VTBL_ENTRY _ZTV7S4031C2[];
Class_Descriptor cd_S4031C2 = {  "S4031C2", // class name
  bases_S4031C2, 1,
  &(vtc_S4031C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S4031C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4031C2),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  S4031C1  : S4031C2 {
  virtual  ~S4031C1(); // _ZN7S4031C1D1Ev
  S4031C1(); // tgen
};
//SIG(1 S4031C1) C1{ BC2{ BC3{ vd m} vd FC4{ Fp[2]} FC4 Fi[2] FC5{ m Fi[3]}} vd}


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

static void Test_S4031C1()
{
  extern Class_Descriptor cd_S4031C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S4031C1, buf);
    S4031C1 *dp, &lv = *(dp=new (buf) S4031C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S4031C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4031C1)");
    check_base_class_offset(lv, (S5228C4_nt*)(S4031C2*), 0, "S4031C1");
    check_base_class_offset(lv, (S4031C2*), 0, "S4031C1");
    test_class_info(&lv, &cd_S4031C1);
    dp->~S4031C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4031C1(Test_S4031C1, "S4031C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S4031C1C1Ev();
extern void _ZN7S4031C1D1Ev();
Name_Map name_map_S4031C1[] = {
  NSPAIR(_ZN7S4031C1C1Ev),
  NSPAIR(_ZN7S4031C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4031C2;
extern VTBL_ENTRY _ZTI7S4031C2[];
extern  VTBL_ENTRY _ZTV7S4031C2[];
static Base_Class bases_S4031C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4031C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4031C1[];
extern void _ZN7S4031C1D1Ev();
extern void _ZN7S4031C1D0Ev();
static  VTBL_ENTRY vtc_S4031C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4031C1[0]),
  (VTBL_ENTRY)&_ZN7S4031C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4031C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S4031C1[];
extern  VTBL_ENTRY _ZTV7S4031C1[];
Class_Descriptor cd_S4031C1 = {  "S4031C1", // class name
  bases_S4031C1, 2,
  &(vtc_S4031C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S4031C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4031C1),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  S13256C1  {
  int s13256c1f0[2];
  short s13256c1f1[241];
  int s13256c1f2;
  short s13256c1f3[14];
  int s13256c1f4[2];
  short s13256c1f5[128];
  int s13256c1f6[5];
  short s13256c1f7[51];
  int s13256c1f8[9];
};
//SIG(1 S13256C1) C1{ Fi[2] Fs[241] Fi Fs[14] Fi[2] Fs[128] Fi[5] Fs[51] Fi[9]}



static void Test_S13256C1()
{
  {
    init_simple_test("S13256C1");
    S13256C1 lv;
    check2(sizeof(lv), 948, "sizeof(S13256C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13256C1)");
    check_field_offset(lv, s13256c1f0, 0, "S13256C1.s13256c1f0");
    check_field_offset(lv, s13256c1f1, 8, "S13256C1.s13256c1f1");
    check_field_offset(lv, s13256c1f2, 492, "S13256C1.s13256c1f2");
    check_field_offset(lv, s13256c1f3, 496, "S13256C1.s13256c1f3");
    check_field_offset(lv, s13256c1f4, 524, "S13256C1.s13256c1f4");
    check_field_offset(lv, s13256c1f5, 532, "S13256C1.s13256c1f5");
    check_field_offset(lv, s13256c1f6, 788, "S13256C1.s13256c1f6");
    check_field_offset(lv, s13256c1f7, 808, "S13256C1.s13256c1f7");
    check_field_offset(lv, s13256c1f8, 912, "S13256C1.s13256c1f8");
  }
}
static Arrange_To_Call_Me vS13256C1(Test_S13256C1, "S13256C1", 948);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21292C1  {
  ::S2213C25 s21292c1f0;
  void *s21292c1f1;
  ::S2342C13_nt s21292c1f2;
  void  mf21292c1(); // _ZN8S21292C19mf21292c1Ev
  virtual  ~S21292C1(); // _ZN8S21292C1D1Ev
  S21292C1(); // tgen
};
//SIG(1 S21292C1) C1{ vd m FC2{ BC3{ m Fp Fi FC4{ m} FC4}} Fp FC5{ m FC6{ Fl[4]}}}


void  S21292C1 ::mf21292c1(){}
 S21292C1 ::~S21292C1(){ note_dtor("S21292C1", this);}
S21292C1 ::S21292C1(){ note_ctor("S21292C1", this);} // tgen

static void Test_S21292C1()
{
  extern Class_Descriptor cd_S21292C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S21292C1, buf);
    S21292C1 *dp, &lv = *(dp=new (buf) S21292C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S21292C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21292C1)");
    check_field_offset(lv, s21292c1f0, ABISELECT(8,4), "S21292C1.s21292c1f0");
    check_field_offset(lv, s21292c1f1, ABISELECT(24,16), "S21292C1.s21292c1f1");
    check_field_offset(lv, s21292c1f2, ABISELECT(32,20), "S21292C1.s21292c1f2");
    test_class_info(&lv, &cd_S21292C1);
    dp->~S21292C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21292C1(Test_S21292C1, "S21292C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S21292C1C1Ev();
extern void _ZN8S21292C1D1Ev();
Name_Map name_map_S21292C1[] = {
  NSPAIR(_ZN8S21292C1C1Ev),
  NSPAIR(_ZN8S21292C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21292C1[];
extern void _ZN8S21292C1D1Ev();
extern void _ZN8S21292C1D0Ev();
static  VTBL_ENTRY vtc_S21292C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21292C1[0]),
  (VTBL_ENTRY)&_ZN8S21292C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21292C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21292C1[];
extern  VTBL_ENTRY _ZTV8S21292C1[];
Class_Descriptor cd_S21292C1 = {  "S21292C1", // class name
  0,0,//no base classes
  &(vtc_S21292C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S21292C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21292C1),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  S18258C3  {
  ::S2213C20_nt s18258c3f0;
  __tsi64 s18258c3f1;
  int s18258c3f2;
  void  mf18258c3(); // _ZN8S18258C39mf18258c3Ev
};
//SIG(-1 S18258C3) C1{ m FC2{ m Fp Fi FC3{ m}} FL Fi}


void  S18258C3 ::mf18258c3(){}

static void Test_S18258C3()
{
  {
    init_simple_test("S18258C3");
    S18258C3 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S18258C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18258C3)");
    check_field_offset(lv, s18258c3f0, 0, "S18258C3.s18258c3f0");
    check_field_offset(lv, s18258c3f1, ABISELECT(16,12), "S18258C3.s18258c3f1");
    check_field_offset(lv, s18258c3f2, ABISELECT(24,20), "S18258C3.s18258c3f2");
  }
}
static Arrange_To_Call_Me vS18258C3(Test_S18258C3, "S18258C3", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18258C2  {
  __tsi64 s18258c2f0;
  ::S18258C3 s18258c2f1;
  void  mf18258c2(); // _ZN8S18258C29mf18258c2Ev
};
//SIG(-1 S18258C2) C1{ m FL FC2{ m FC3{ m Fp Fi FC4{ m}} FL Fi}}


void  S18258C2 ::mf18258c2(){}

static void Test_S18258C2()
{
  {
    init_simple_test("S18258C2");
    S18258C2 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S18258C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18258C2)");
    check_field_offset(lv, s18258c2f0, 0, "S18258C2.s18258c2f0");
    check_field_offset(lv, s18258c2f1, 8, "S18258C2.s18258c2f1");
  }
}
static Arrange_To_Call_Me vS18258C2(Test_S18258C2, "S18258C2", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18258C1  {
  void *s18258c1f0[3];
  ::S18258C2 s18258c1f1;
  char s18258c1f2[2];
  void  mf18258c1(); // _ZN8S18258C19mf18258c1Ev
};
//SIG(1 S18258C1) C1{ m Fp[3] FC2{ m FL FC3{ m FC4{ m Fp Fi FC5{ m}} FL Fi}} Fc[2]}


void  S18258C1 ::mf18258c1(){}

static void Test_S18258C1()
{
  {
    init_simple_test("S18258C1");
    S18258C1 lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S18258C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18258C1)");
    check_field_offset(lv, s18258c1f0, 0, "S18258C1.s18258c1f0");
    check_field_offset(lv, s18258c1f1, ABISELECT(24,12), "S18258C1.s18258c1f1");
    check_field_offset(lv, s18258c1f2, ABISELECT(64,44), "S18258C1.s18258c1f2");
  }
}
static Arrange_To_Call_Me vS18258C1(Test_S18258C1, "S18258C1", ABISELECT(72,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14408C1  {
  void *s14408c1f0;
  short s14408c1f1;
  char s14408c1f2[2];
  int s14408c1f3;
  char s14408c1f4[4];
  long s14408c1f5;
  int s14408c1f6[3];
  void *s14408c1f7;
  int s14408c1f8;
  void *s14408c1f9;
  int s14408c1f10;
  void *s14408c1f11;
  int s14408c1f12;
  char s14408c1f13[4];
};
//SIG(1 S14408C1) C1{ Fp Fs Fc[2] Fi Fc[4] Fl Fi[3] Fp Fi Fp Fi Fp Fi Fc[4]}



static void Test_S14408C1()
{
  {
    init_simple_test("S14408C1");
    S14408C1 lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S14408C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14408C1)");
    check_field_offset(lv, s14408c1f0, 0, "S14408C1.s14408c1f0");
    check_field_offset(lv, s14408c1f1, ABISELECT(8,4), "S14408C1.s14408c1f1");
    check_field_offset(lv, s14408c1f2, ABISELECT(10,6), "S14408C1.s14408c1f2");
    check_field_offset(lv, s14408c1f3, ABISELECT(12,8), "S14408C1.s14408c1f3");
    check_field_offset(lv, s14408c1f4, ABISELECT(16,12), "S14408C1.s14408c1f4");
    check_field_offset(lv, s14408c1f5, ABISELECT(24,16), "S14408C1.s14408c1f5");
    check_field_offset(lv, s14408c1f6, ABISELECT(32,20), "S14408C1.s14408c1f6");
    check_field_offset(lv, s14408c1f7, ABISELECT(48,32), "S14408C1.s14408c1f7");
    check_field_offset(lv, s14408c1f8, ABISELECT(56,36), "S14408C1.s14408c1f8");
    check_field_offset(lv, s14408c1f9, ABISELECT(64,40), "S14408C1.s14408c1f9");
    check_field_offset(lv, s14408c1f10, ABISELECT(72,44), "S14408C1.s14408c1f10");
    check_field_offset(lv, s14408c1f11, ABISELECT(80,48), "S14408C1.s14408c1f11");
    check_field_offset(lv, s14408c1f12, ABISELECT(88,52), "S14408C1.s14408c1f12");
    check_field_offset(lv, s14408c1f13, ABISELECT(92,56), "S14408C1.s14408c1f13");
  }
}
static Arrange_To_Call_Me vS14408C1(Test_S14408C1, "S14408C1", ABISELECT(96,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13994C2  {
  void *s13994c2f0;
  long s13994c2f1[2];
  void *s13994c2f2;
};
//SIG(-1 S13994C2) C1{ Fp Fl[2] Fp}



static void Test_S13994C2()
{
  {
    init_simple_test("S13994C2");
    S13994C2 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S13994C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13994C2)");
    check_field_offset(lv, s13994c2f0, 0, "S13994C2.s13994c2f0");
    check_field_offset(lv, s13994c2f1, ABISELECT(8,4), "S13994C2.s13994c2f1");
    check_field_offset(lv, s13994c2f2, ABISELECT(24,12), "S13994C2.s13994c2f2");
  }
}
static Arrange_To_Call_Me vS13994C2(Test_S13994C2, "S13994C2", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13994C1  {
  long s13994c1f0[3];
  short s13994c1f1[6];
  void *s13994c1f2;
  long s13994c1f3;
  void *s13994c1f4[2];
  long s13994c1f5[34816];
  ::S13994C2 s13994c1f6;
  void *s13994c1f7;
};
//SIG(1 S13994C1) C1{ Fl[3] Fs[6] Fp Fl Fp[2] Fl[34816] FC2{ Fp Fl[2] Fp} Fp}



static void Test_S13994C1()
{
  {
    init_simple_test("S13994C1");
    S13994C1 lv;
    check2(sizeof(lv), ABISELECT(278640,139324), "sizeof(S13994C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13994C1)");
    check_field_offset(lv, s13994c1f0, 0, "S13994C1.s13994c1f0");
    check_field_offset(lv, s13994c1f1, ABISELECT(24,12), "S13994C1.s13994c1f1");
    check_field_offset(lv, s13994c1f2, ABISELECT(40,24), "S13994C1.s13994c1f2");
    check_field_offset(lv, s13994c1f3, ABISELECT(48,28), "S13994C1.s13994c1f3");
    check_field_offset(lv, s13994c1f4, ABISELECT(56,32), "S13994C1.s13994c1f4");
    check_field_offset(lv, s13994c1f5, ABISELECT(72,40), "S13994C1.s13994c1f5");
    check_field_offset(lv, s13994c1f6, ABISELECT(278600,139304), "S13994C1.s13994c1f6");
    check_field_offset(lv, s13994c1f7, ABISELECT(278632,139320), "S13994C1.s13994c1f7");
  }
}
static Arrange_To_Call_Me vS13994C1(Test_S13994C1, "S13994C1", ABISELECT(278640,139324));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4028C2  : S5228C4_nt , virtual S2367C19 {
  virtual  ~S4028C2(); // _ZN7S4028C2D2Ev
  S4028C2(); // tgen
};
//SIG(-1 S4028C2) C1{ BC2{ vd m} VBC3{ m Fp} vd}


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

static void Test_S4028C2()
{
  extern Class_Descriptor cd_S4028C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S4028C2, buf);
    S4028C2 *dp, &lv = *(dp=new (buf) S4028C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S4028C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4028C2)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S4028C2");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S4028C2");
    test_class_info(&lv, &cd_S4028C2);
    dp->~S4028C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4028C2(Test_S4028C2, "S4028C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S4028C2C1Ev();
extern void _ZN7S4028C2D2Ev();
Name_Map name_map_S4028C2[] = {
  NSPAIR(_ZN7S4028C2C1Ev),
  NSPAIR(_ZN7S4028C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
static Base_Class bases_S4028C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4028C2[];
extern void _ZN7S4028C2D1Ev();
extern void _ZN7S4028C2D0Ev();
static  VTBL_ENTRY vtc_S4028C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S4028C2[0]),
  (VTBL_ENTRY)&_ZN7S4028C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4028C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S4028C2[];
static  VTT_ENTRY vtt_S4028C2[] = {
  {&(_ZTV7S4028C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S4028C2[];
extern  VTBL_ENTRY _ZTV7S4028C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S4028C2[];
Class_Descriptor cd_S4028C2 = {  "S4028C2", // class name
  bases_S4028C2, 2,
  &(vtc_S4028C2[0]), // expected_vtbl_contents
  &(vtt_S4028C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S4028C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4028C2),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S4028C2),1, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4028C5  : virtual S2367C19 , virtual S5228C4_nt {
  int s4028c5f0;
  virtual  ~S4028C5(); // _ZN7S4028C5D2Ev
  S4028C5(); // tgen
};
//SIG(-1 S4028C5) C1{ VBC2{ m Fp} VBC3{ vd m} vd Fi}


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

static void Test_S4028C5()
{
  extern Class_Descriptor cd_S4028C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4028C5, buf);
    S4028C5 *dp, &lv = *(dp=new (buf) S4028C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4028C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4028C5)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(16,8), "S4028C5");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S4028C5");
    check_field_offset(lv, s4028c5f0, ABISELECT(8,4), "S4028C5.s4028c5f0");
    test_class_info(&lv, &cd_S4028C5);
    dp->~S4028C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4028C5(Test_S4028C5, "S4028C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S4028C5C1Ev();
extern void _ZN7S4028C5D2Ev();
Name_Map name_map_S4028C5[] = {
  NSPAIR(_ZN7S4028C5C1Ev),
  NSPAIR(_ZN7S4028C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S4028C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S4028C5[];
extern void _ZN7S4028C5D1Ev();
extern void _ZN7S4028C5D0Ev();
static  VTBL_ENTRY vtc_S4028C5[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S4028C5[0]),
  (VTBL_ENTRY)&_ZN7S4028C5D1Ev,
  (VTBL_ENTRY)&_ZN7S4028C5D0Ev,
};
extern VTBL_ENTRY _ZTV7S4028C5[];
static  VTT_ENTRY vtt_S4028C5[] = {
  {&(_ZTV7S4028C5[5]),  5,7},
  {&(_ZTV7S4028C5[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S4028C5[];
extern  VTBL_ENTRY _ZTV7S4028C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S4028C5[];
Class_Descriptor cd_S4028C5 = {  "S4028C5", // class name
  bases_S4028C5, 2,
  &(vtc_S4028C5[0]), // expected_vtbl_contents
  &(vtt_S4028C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S4028C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4028C5),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S4028C5),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  S4028C1  : S4028C2 , S4028C5 {
  virtual  ~S4028C1(); // _ZN7S4028C1D2Ev
  virtual void  v1(); // _ZN7S4028C12v1Ev
  S4028C1(); // tgen
};
//SIG(1 S4028C1) C1{ BC2{ BC3{ vd m} VBC4{ m Fp} vd} BC5{ VBC4 VBC3 vd Fi} vd v1}


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

static void Test_S4028C1()
{
  extern Class_Descriptor cd_S4028C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S4028C1, buf);
    S4028C1 *dp, &lv = *(dp=new (buf) S4028C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S4028C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4028C1)");
    check_base_class_offset(lv, (S5228C4_nt*)(S4028C2*), 0, "S4028C1");
    check_base_class_offset(lv, (S2367C19*)(S4028C2*), ABISELECT(24,12), "S4028C1");
    check_base_class_offset(lv, (S2367C19*)(S4028C5*), ABISELECT(24,12), "S4028C1");
    check_base_class_offset(lv, (S4028C2*), 0, "S4028C1");
    check_base_class_offset(lv, (S5228C4_nt*)(S4028C5*), ABISELECT(8,4), "S4028C1");
    check_base_class_offset(lv, (S4028C5*), ABISELECT(8,4), "S4028C1");
    test_class_info(&lv, &cd_S4028C1);
    dp->~S4028C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4028C1(Test_S4028C1, "S4028C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S4028C1C1Ev();
extern void _ZN7S4028C1D2Ev();
Name_Map name_map_S4028C1[] = {
  NSPAIR(_ZN7S4028C1C1Ev),
  NSPAIR(_ZN7S4028C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
extern Class_Descriptor cd_S4028C2;
extern VTBL_ENTRY _ZTI7S4028C2[];
extern  VTBL_ENTRY _ZTV7S4028C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S4028C2[];
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S4028C5;
extern VTBL_ENTRY _ZTI7S4028C5[];
extern  VTBL_ENTRY _ZTV7S4028C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S4028C5[];
static Base_Class bases_S4028C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2367C19,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S4028C2,    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_S5228C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4028C5,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4028C1[];
extern void _ZN7S4028C1D1Ev();
extern void _ZN7S4028C1D0Ev();
extern void _ZN7S4028C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S4028C1D1Ev,_ZTv0_n12_N7S4028C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S4028C1D1Ev,_ZThn4_N7S4028C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4028C1D0Ev,_ZTv0_n12_N7S4028C1D0Ev)();
extern void ABISELECT(_ZThn8_N7S4028C1D0Ev,_ZThn4_N7S4028C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S4028C1[] = {
  ABISELECT(8,4),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S4028C1[0]),
  (VTBL_ENTRY)&_ZN7S4028C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4028C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4028C12v1Ev,
  0,
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S4028C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4028C1D1Ev,_ZTv0_n12_N7S4028C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4028C1D0Ev,_ZTv0_n12_N7S4028C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S4028C1[];
extern void _ZN7S4028C2D1Ev();
extern void _ZN7S4028C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S4028C2__7S4028C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S4028C2[0]),
  (VTBL_ENTRY)&_ZN7S4028C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4028C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S4028C5D1Ev,_ZTv0_n12_N7S4028C5D1Ev)();
extern void _ZN7S4028C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S4028C5D0Ev,_ZTv0_n12_N7S4028C5D0Ev)();
extern void _ZN7S4028C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S4028C5__7S4028C1[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S4028C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4028C5D1Ev,_ZTv0_n12_N7S4028C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S4028C5D0Ev,_ZTv0_n12_N7S4028C5D0Ev),
};
static  VTT_ENTRY vtt_S4028C1[] = {
  {&(_ZTV7S4028C1[4]),  4,14},
  {&(_tg__ZTV7S4028C2__7S4028C1[3]),  3,5},
  {&(_tg__ZTV7S4028C5__7S4028C1[5]),  5,7},
  {&(_tg__ZTV7S4028C5__7S4028C1[5]),  5,7},
  {&(_ZTV7S4028C1[12]),  12,14},
  {&(_ZTV7S4028C1[12]),  12,14},
};
extern VTBL_ENTRY _ZTI7S4028C1[];
extern  VTBL_ENTRY _ZTV7S4028C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S4028C1[];
static VTBL_ENTRY alt_thunk_names166[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4028C5D0Ev,_ZTv0_n12_N7S4028C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S4028C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4028C5D1Ev,_ZTv0_n12_N7S4028C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S4028C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4028C1D0Ev,_ZTv0_n12_N7S4028C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S4028C1D0Ev,_ZThn4_N7S4028C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S4028C1D1Ev,_ZTv0_n12_N7S4028C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S4028C1D1Ev,_ZThn4_N7S4028C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S4028C1 = {  "S4028C1", // class name
  bases_S4028C1, 5,
  &(vtc_S4028C1[0]), // expected_vtbl_contents
  &(vtt_S4028C1[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S4028C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4028C1),14, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S4028C1),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names166,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15990C1  {
  ::S3164C4_nt s15990c1f0;
  ::S3164C27 s15990c1f1;
  int s15990c1f2;
  unsigned int s15990c1f3:1;
  ::S3164C4_nt s15990c1f4;
  void  mf15990c1(); // _ZN8S15990C19mf15990c1Ev
};
//SIG(1 S15990C1) C1{ m FC2{ m Fi[2]} FC3{ BC4{ BC5{ m Fp Fi[2]}}} Fi Fi:1 FC2}


void  S15990C1 ::mf15990c1(){}

static void Test_S15990C1()
{
  {
    init_simple_test("S15990C1");
    static S15990C1 lv;
    check2(sizeof(lv), ABISELECT(40,36), "sizeof(S15990C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15990C1)");
    check_field_offset(lv, s15990c1f0, 0, "S15990C1.s15990c1f0");
    check_field_offset(lv, s15990c1f1, 8, "S15990C1.s15990c1f1");
    check_field_offset(lv, s15990c1f2, ABISELECT(24,20), "S15990C1.s15990c1f2");
    set_bf_and_test(lv, s15990c1f3, ABISELECT(28,24), 0, 1, 1, "S15990C1");
    check_field_offset(lv, s15990c1f4, ABISELECT(32,28), "S15990C1.s15990c1f4");
  }
}
static Arrange_To_Call_Me vS15990C1(Test_S15990C1, "S15990C1", ABISELECT(40,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8108C5_nt  {
  __tsi64 s8108c5f0;
};
//SIG(-1 S8108C5_nt) C1{ FL}



//skip512 S8108C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8108C1  : S13735C5_nt {
  ::S18288C8_nt s8108c1f0;
  int s8108c1f1;
  ::S8108C5_nt s8108c1f2;
  int s8108c1f3;
  virtual  ~S8108C1(); // _ZN7S8108C1D1Ev
  S8108C1(); // tgen
};
//SIG(1 S8108C1) C1{ BC2{ vd m Fi} vd FC3{ FC4{ Fc[20]} Fc[16]} Fi FC5{ FL} Fi}


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

static void Test_S8108C1()
{
  extern Class_Descriptor cd_S8108C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S8108C1, buf);
    S8108C1 *dp, &lv = *(dp=new (buf) S8108C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S8108C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8108C1)");
    check_base_class_offset(lv, (S13735C5_nt*), 0, "S8108C1");
    check_field_offset(lv, s8108c1f0, ABISELECT(12,8), "S8108C1.s8108c1f0");
    check_field_offset(lv, s8108c1f1, ABISELECT(48,44), "S8108C1.s8108c1f1");
    check_field_offset(lv, s8108c1f2, ABISELECT(56,48), "S8108C1.s8108c1f2");
    check_field_offset(lv, s8108c1f3, ABISELECT(64,56), "S8108C1.s8108c1f3");
    test_class_info(&lv, &cd_S8108C1);
    dp->~S8108C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8108C1(Test_S8108C1, "S8108C1", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN7S8108C1C1Ev();
extern void _ZN7S8108C1D1Ev();
Name_Map name_map_S8108C1[] = {
  NSPAIR(_ZN7S8108C1C1Ev),
  NSPAIR(_ZN7S8108C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S13735C5_nt;
extern VTBL_ENTRY _ZTI11S13735C5_nt[];
extern  VTBL_ENTRY _ZTV11S13735C5_nt[];
static Base_Class bases_S8108C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S13735C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8108C1[];
extern void _ZN7S8108C1D1Ev();
extern void _ZN7S8108C1D0Ev();
static  VTBL_ENTRY vtc_S8108C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8108C1[0]),
  (VTBL_ENTRY)&_ZN7S8108C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8108C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8108C1[];
extern  VTBL_ENTRY _ZTV7S8108C1[];
Class_Descriptor cd_S8108C1 = {  "S8108C1", // class name
  bases_S8108C1, 1,
  &(vtc_S8108C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI7S8108C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8108C1),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  S9610C2_nt  {
  virtual  ~S9610C2_nt(); // _ZN10S9610C2_ntD1Ev
  virtual void  v3(); // _ZN10S9610C2_nt2v3Ev
  virtual void  v4(); // _ZN10S9610C2_nt2v4Ev
  S9610C2_nt(); // tgen
};
//SIG(-1 S9610C2_nt) C1{ vd v1 v2}


 S9610C2_nt ::~S9610C2_nt(){ note_dtor("S9610C2_nt", this);}
void  S9610C2_nt ::v3(){vfunc_called(this, "_ZN10S9610C2_nt2v3Ev");}
void  S9610C2_nt ::v4(){vfunc_called(this, "_ZN10S9610C2_nt2v4Ev");}
S9610C2_nt ::S9610C2_nt(){ note_ctor("S9610C2_nt", this);} // tgen

//skip512 S9610C2_nt

#else // __cplusplus

extern void _ZN10S9610C2_ntC1Ev();
extern void _ZN10S9610C2_ntD1Ev();
Name_Map name_map_S9610C2_nt[] = {
  NSPAIR(_ZN10S9610C2_ntC1Ev),
  NSPAIR(_ZN10S9610C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9610C2_nt[];
extern void _ZN10S9610C2_ntD1Ev();
extern void _ZN10S9610C2_ntD0Ev();
extern void _ZN10S9610C2_nt2v3Ev();
extern void _ZN10S9610C2_nt2v4Ev();
static  VTBL_ENTRY vtc_S9610C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9610C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S9610C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9610C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9610C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S9610C2_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S9610C2_nt[];
VTBL_ENTRY *P__ZTI10S9610C2_nt = _ZTI10S9610C2_nt; 
extern  VTBL_ENTRY _ZTV10S9610C2_nt[];
Class_Descriptor cd_S9610C2_nt = {  "S9610C2_nt", // class name
  0,0,//no base classes
  &(vtc_S9610C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S9610C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9610C2_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  S9610C1  : S9610C2_nt {
  void *s9610c1f0;
  ::S2213C20_nt s9610c1f1;
  void *s9610c1f2[3];
  virtual  ~S9610C1(); // _ZN7S9610C1D1Ev
  virtual void  v1(); // _ZN7S9610C12v1Ev
  virtual void  v2(); // _ZN7S9610C12v2Ev
  S9610C1(); // tgen
};
//SIG(1 S9610C1) C1{ BC2{ vd v3 v4} vd v1 v2 Fp FC3{ m Fp Fi FC4{ m}} Fp[3]}


 S9610C1 ::~S9610C1(){ note_dtor("S9610C1", this);}
void  S9610C1 ::v1(){vfunc_called(this, "_ZN7S9610C12v1Ev");}
void  S9610C1 ::v2(){vfunc_called(this, "_ZN7S9610C12v2Ev");}
S9610C1 ::S9610C1(){ note_ctor("S9610C1", this);} // tgen

static void Test_S9610C1()
{
  extern Class_Descriptor cd_S9610C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S9610C1, buf);
    S9610C1 *dp, &lv = *(dp=new (buf) S9610C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S9610C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9610C1)");
    check_base_class_offset(lv, (S9610C2_nt*), 0, "S9610C1");
    check_field_offset(lv, s9610c1f0, ABISELECT(8,4), "S9610C1.s9610c1f0");
    check_field_offset(lv, s9610c1f1, ABISELECT(16,8), "S9610C1.s9610c1f1");
    check_field_offset(lv, s9610c1f2, ABISELECT(32,20), "S9610C1.s9610c1f2");
    test_class_info(&lv, &cd_S9610C1);
    dp->~S9610C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9610C1(Test_S9610C1, "S9610C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S9610C1C1Ev();
extern void _ZN7S9610C1D1Ev();
Name_Map name_map_S9610C1[] = {
  NSPAIR(_ZN7S9610C1C1Ev),
  NSPAIR(_ZN7S9610C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9610C2_nt;
extern VTBL_ENTRY _ZTI10S9610C2_nt[];
extern  VTBL_ENTRY _ZTV10S9610C2_nt[];
static Base_Class bases_S9610C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9610C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9610C1[];
extern void _ZN7S9610C1D1Ev();
extern void _ZN7S9610C1D0Ev();
extern void _ZN10S9610C2_nt2v3Ev();
extern void _ZN10S9610C2_nt2v4Ev();
extern void _ZN7S9610C12v1Ev();
extern void _ZN7S9610C12v2Ev();
static  VTBL_ENTRY vtc_S9610C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9610C1[0]),
  (VTBL_ENTRY)&_ZN7S9610C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9610C1D0Ev,
  (VTBL_ENTRY)&_ZN10S9610C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S9610C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S9610C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9610C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9610C1[];
extern  VTBL_ENTRY _ZTV7S9610C1[];
Class_Descriptor cd_S9610C1 = {  "S9610C1", // class name
  bases_S9610C1, 1,
  &(vtc_S9610C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S9610C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9610C1),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  S17361C4_nt  : S2367C19 {
};
//SIG(-1 S17361C4_nt) C1{ BC2{ m Fp}}



//skip512 S17361C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
static Base_Class bases_S17361C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S17361C1  {
  __tsi64 s17361c1f0;
  int s17361c1f1[2];
  ::S2213C37 s17361c1f2;
  ::S17361C4_nt s17361c1f3;
  void  mf17361c1(); // _ZN8S17361C19mf17361c1Ev
};
//SIG(1 S17361C1) C1{ m FL Fi[2] FC2{ m Fp Fi[2] FC3{ m}} FC4{ BC5{ m Fp}}}


void  S17361C1 ::mf17361c1(){}

static void Test_S17361C1()
{
  {
    init_simple_test("S17361C1");
    S17361C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S17361C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17361C1)");
    check_field_offset(lv, s17361c1f0, 0, "S17361C1.s17361c1f0");
    check_field_offset(lv, s17361c1f1, 8, "S17361C1.s17361c1f1");
    check_field_offset(lv, s17361c1f2, 16, "S17361C1.s17361c1f2");
    check_field_offset(lv, s17361c1f3, ABISELECT(40,32), "S17361C1.s17361c1f3");
  }
}
static Arrange_To_Call_Me vS17361C1(Test_S17361C1, "S17361C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19307C3  {
  void *s19307c3f0;
  virtual  ~S19307C3(); // _ZN8S19307C3D1Ev
  virtual void  v2(); // _ZN8S19307C32v2Ev
  virtual void  v3(); // _ZN8S19307C32v3Ev
  virtual void  v4(); // _ZN8S19307C32v4Ev
  virtual void  v5(); // _ZN8S19307C32v5Ev
  virtual void  v6(); // _ZN8S19307C32v6Ev
  virtual void  v7(); // _ZN8S19307C32v7Ev
  S19307C3(); // tgen
};
//SIG(-1 S19307C3) C1{ vd v1 v2 v3 v4 v5 v6 Fp}


 S19307C3 ::~S19307C3(){ note_dtor("S19307C3", this);}
void  S19307C3 ::v2(){vfunc_called(this, "_ZN8S19307C32v2Ev");}
void  S19307C3 ::v3(){vfunc_called(this, "_ZN8S19307C32v3Ev");}
void  S19307C3 ::v4(){vfunc_called(this, "_ZN8S19307C32v4Ev");}
void  S19307C3 ::v5(){vfunc_called(this, "_ZN8S19307C32v5Ev");}
void  S19307C3 ::v6(){vfunc_called(this, "_ZN8S19307C32v6Ev");}
void  S19307C3 ::v7(){vfunc_called(this, "_ZN8S19307C32v7Ev");}
S19307C3 ::S19307C3(){ note_ctor("S19307C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19307C3C1Ev();
extern void _ZN8S19307C3D1Ev();
Name_Map name_map_S19307C3[] = {
  NSPAIR(_ZN8S19307C3C1Ev),
  NSPAIR(_ZN8S19307C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19307C3[];
extern void _ZN8S19307C3D1Ev();
extern void _ZN8S19307C3D0Ev();
extern void _ZN8S19307C32v2Ev();
extern void _ZN8S19307C32v3Ev();
extern void _ZN8S19307C32v4Ev();
extern void _ZN8S19307C32v5Ev();
extern void _ZN8S19307C32v6Ev();
extern void _ZN8S19307C32v7Ev();
static  VTBL_ENTRY vtc_S19307C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19307C3[0]),
  (VTBL_ENTRY)&_ZN8S19307C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19307C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v7Ev,
};
extern VTBL_ENTRY _ZTI8S19307C3[];
extern  VTBL_ENTRY _ZTV8S19307C3[];
Class_Descriptor cd_S19307C3 = {  "S19307C3", // class name
  0,0,//no base classes
  &(vtc_S19307C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19307C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19307C3),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19307C2  : S19307C3 {
  virtual  ~S19307C2(); // _ZN8S19307C2D1Ev
  virtual void  v8(); // _ZN8S19307C22v8Ev
  S19307C2(); // tgen
};
//SIG(-1 S19307C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 Fp} vd v1}


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

static void Test_S19307C2()
{
  extern Class_Descriptor cd_S19307C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19307C2, buf);
    S19307C2 *dp, &lv = *(dp=new (buf) S19307C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19307C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19307C2)");
    check_base_class_offset(lv, (S19307C3*), 0, "S19307C2");
    test_class_info(&lv, &cd_S19307C2);
    dp->~S19307C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19307C2(Test_S19307C2, "S19307C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19307C2C1Ev();
extern void _ZN8S19307C2D1Ev();
Name_Map name_map_S19307C2[] = {
  NSPAIR(_ZN8S19307C2C1Ev),
  NSPAIR(_ZN8S19307C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19307C3;
extern VTBL_ENTRY _ZTI8S19307C3[];
extern  VTBL_ENTRY _ZTV8S19307C3[];
static Base_Class bases_S19307C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19307C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19307C2[];
extern void _ZN8S19307C2D1Ev();
extern void _ZN8S19307C2D0Ev();
extern void _ZN8S19307C32v2Ev();
extern void _ZN8S19307C32v3Ev();
extern void _ZN8S19307C32v4Ev();
extern void _ZN8S19307C32v5Ev();
extern void _ZN8S19307C32v6Ev();
extern void _ZN8S19307C32v7Ev();
extern void _ZN8S19307C22v8Ev();
static  VTBL_ENTRY vtc_S19307C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19307C2[0]),
  (VTBL_ENTRY)&_ZN8S19307C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19307C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19307C22v8Ev,
};
extern VTBL_ENTRY _ZTI8S19307C2[];
extern  VTBL_ENTRY _ZTV8S19307C2[];
Class_Descriptor cd_S19307C2 = {  "S19307C2", // class name
  bases_S19307C2, 1,
  &(vtc_S19307C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19307C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19307C2),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  S19307C1  : virtual S19307C2 {
  char s19307c1f0;
  virtual  ~S19307C1(); // _ZN8S19307C1D2Ev
  virtual void  v1(); // _ZN8S19307C12v1Ev
  S19307C1(); // tgen
};
//SIG(1 S19307C1) C1{ VBC2{ BC3{ vd v2 v3 v4 v5 v6 v7 Fp} vd v8} vd v1 Fc}


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

static void Test_S19307C1()
{
  extern Class_Descriptor cd_S19307C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19307C1, buf);
    S19307C1 *dp, &lv = *(dp=new (buf) S19307C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19307C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19307C1)");
    check_base_class_offset(lv, (S19307C3*)(S19307C2*), ABISELECT(16,8), "S19307C1");
    check_base_class_offset(lv, (S19307C2*), ABISELECT(16,8), "S19307C1");
    check_field_offset(lv, s19307c1f0, ABISELECT(8,4), "S19307C1.s19307c1f0");
    test_class_info(&lv, &cd_S19307C1);
    dp->~S19307C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19307C1(Test_S19307C1, "S19307C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19307C1C1Ev();
extern void _ZN8S19307C1D2Ev();
Name_Map name_map_S19307C1[] = {
  NSPAIR(_ZN8S19307C1C1Ev),
  NSPAIR(_ZN8S19307C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19307C3;
extern VTBL_ENTRY _ZTI8S19307C3[];
extern  VTBL_ENTRY _ZTV8S19307C3[];
extern Class_Descriptor cd_S19307C2;
extern VTBL_ENTRY _ZTI8S19307C2[];
extern  VTBL_ENTRY _ZTV8S19307C2[];
static Base_Class bases_S19307C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19307C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19307C2,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19307C1[];
extern void _ZN8S19307C1D1Ev();
extern void _ZN8S19307C1D0Ev();
extern void _ZN8S19307C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19307C1D1Ev,_ZTv0_n12_N8S19307C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19307C1D1Ev,_ZThn8_N8S19307C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19307C1D0Ev,_ZTv0_n12_N8S19307C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19307C1D0Ev,_ZThn8_N8S19307C1D0Ev)() __attribute__((weak));
extern void _ZN8S19307C32v2Ev();
extern void _ZN8S19307C32v3Ev();
extern void _ZN8S19307C32v4Ev();
extern void _ZN8S19307C32v5Ev();
extern void _ZN8S19307C32v6Ev();
extern void _ZN8S19307C32v7Ev();
extern void _ZN8S19307C22v8Ev();
static  VTBL_ENTRY vtc_S19307C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19307C1[0]),
  (VTBL_ENTRY)&_ZN8S19307C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19307C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19307C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19307C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19307C1D1Ev,_ZTv0_n12_N8S19307C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19307C1D0Ev,_ZTv0_n12_N8S19307C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19307C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19307C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19307C22v8Ev,
};
extern VTBL_ENTRY _ZTV8S19307C1[];
static  VTT_ENTRY vtt_S19307C1[] = {
  {&(_ZTV8S19307C1[3]),  3,25},
  {&(_ZTV8S19307C1[16]),  16,25},
};
extern VTBL_ENTRY _ZTI8S19307C1[];
extern  VTBL_ENTRY _ZTV8S19307C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19307C1[];
static VTBL_ENTRY alt_thunk_names167[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19307C1D0Ev,_ZTv0_n12_N8S19307C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19307C1D0Ev,_ZThn8_N8S19307C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19307C1D1Ev,_ZTv0_n12_N8S19307C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19307C1D1Ev,_ZThn8_N8S19307C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19307C1 = {  "S19307C1", // class name
  bases_S19307C1, 2,
  &(vtc_S19307C1[0]), // expected_vtbl_contents
  &(vtt_S19307C1[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19307C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19307C1),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19307C1),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names167,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4331C3  {
  void *s4331c3f0[2];
  int s4331c3f1:16;
  int s4331c3f2:16;
  virtual  ~S4331C3(); // _ZN7S4331C3D1Ev
  virtual void  v2(); // _ZN7S4331C32v2Ev
  S4331C3(); // tgen
};
//SIG(-1 S4331C3) C1{ vd v1 Fp[2] Fi:16 Fi:16}


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

static void Test_S4331C3()
{
  extern Class_Descriptor cd_S4331C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S4331C3, buf);
    S4331C3 *dp, &lv = *(dp=new (buf) S4331C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S4331C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4331C3)");
    check_field_offset(lv, s4331c3f0, ABISELECT(8,4), "S4331C3.s4331c3f0");
    set_bf_and_test(lv, s4331c3f1, ABISELECT(24,12), 0, 16, 1, "S4331C3");
    set_bf_and_test(lv, s4331c3f1, ABISELECT(24,12), 0, 16, hide_sll(1LL<<15), "S4331C3");
    set_bf_and_test(lv, s4331c3f2, ABISELECT(26,14), 0, 16, 1, "S4331C3");
    set_bf_and_test(lv, s4331c3f2, ABISELECT(26,14), 0, 16, hide_sll(1LL<<15), "S4331C3");
    test_class_info(&lv, &cd_S4331C3);
    dp->~S4331C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4331C3(Test_S4331C3, "S4331C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S4331C3C1Ev();
extern void _ZN7S4331C3D1Ev();
Name_Map name_map_S4331C3[] = {
  NSPAIR(_ZN7S4331C3C1Ev),
  NSPAIR(_ZN7S4331C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4331C3[];
extern void _ZN7S4331C3D1Ev();
extern void _ZN7S4331C3D0Ev();
extern void _ZN7S4331C32v2Ev();
static  VTBL_ENTRY vtc_S4331C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4331C3[0]),
  (VTBL_ENTRY)&_ZN7S4331C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4331C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4331C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4331C3[];
extern  VTBL_ENTRY _ZTV7S4331C3[];
Class_Descriptor cd_S4331C3 = {  "S4331C3", // class name
  0,0,//no base classes
  &(vtc_S4331C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S4331C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4331C3),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  S4331C2  : S4331C3 {
  int s4331c2f0[6];
  virtual void  v3(); // _ZN7S4331C22v3Ev
  virtual void  v4(); // _ZN7S4331C22v4Ev
  ~S4331C2(); // tgen
  S4331C2(); // tgen
};
//SIG(-1 S4331C2) C1{ BC2{ vd v3 Fp[2] Fi:16 Fi:16} v1 v2 Fi[6]}


void  S4331C2 ::v3(){vfunc_called(this, "_ZN7S4331C22v3Ev");}
void  S4331C2 ::v4(){vfunc_called(this, "_ZN7S4331C22v4Ev");}
S4331C2 ::~S4331C2(){ note_dtor("S4331C2", this);} // tgen
S4331C2 ::S4331C2(){ note_ctor("S4331C2", this);} // tgen

static void Test_S4331C2()
{
  extern Class_Descriptor cd_S4331C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S4331C2, buf);
    S4331C2 *dp, &lv = *(dp=new (buf) S4331C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S4331C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4331C2)");
    check_base_class_offset(lv, (S4331C3*), 0, "S4331C2");
    check_field_offset(lv, s4331c2f0, ABISELECT(28,16), "S4331C2.s4331c2f0");
    test_class_info(&lv, &cd_S4331C2);
    dp->~S4331C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4331C2(Test_S4331C2, "S4331C2", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN7S4331C2C1Ev();
extern void _ZN7S4331C2D1Ev();
Name_Map name_map_S4331C2[] = {
  NSPAIR(_ZN7S4331C2C1Ev),
  NSPAIR(_ZN7S4331C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4331C3;
extern VTBL_ENTRY _ZTI7S4331C3[];
extern  VTBL_ENTRY _ZTV7S4331C3[];
static Base_Class bases_S4331C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4331C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4331C2[];
extern void _ZN7S4331C2D1Ev();
extern void _ZN7S4331C2D0Ev();
extern void _ZN7S4331C32v2Ev();
extern void _ZN7S4331C22v3Ev();
extern void _ZN7S4331C22v4Ev();
static  VTBL_ENTRY vtc_S4331C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4331C2[0]),
  (VTBL_ENTRY)&_ZN7S4331C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4331C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4331C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4331C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4331C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S4331C2[];
extern  VTBL_ENTRY _ZTV7S4331C2[];
Class_Descriptor cd_S4331C2 = {  "S4331C2", // class name
  bases_S4331C2, 1,
  &(vtc_S4331C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI7S4331C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4331C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4331C1  : S4331C2 {
  virtual void  v1(); // _ZN7S4331C12v1Ev
  ~S4331C1(); // tgen
  S4331C1(); // tgen
};
//SIG(1 S4331C1) C1{ BC2{ BC3{ vd v2 Fp[2] Fi:16 Fi:16} v3 v4 Fi[6]} v1}


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

static void Test_S4331C1()
{
  extern Class_Descriptor cd_S4331C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S4331C1, buf);
    S4331C1 *dp, &lv = *(dp=new (buf) S4331C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S4331C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4331C1)");
    check_base_class_offset(lv, (S4331C3*)(S4331C2*), 0, "S4331C1");
    check_base_class_offset(lv, (S4331C2*), 0, "S4331C1");
    test_class_info(&lv, &cd_S4331C1);
    dp->~S4331C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4331C1(Test_S4331C1, "S4331C1", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN7S4331C1C1Ev();
extern void _ZN7S4331C1D1Ev();
Name_Map name_map_S4331C1[] = {
  NSPAIR(_ZN7S4331C1C1Ev),
  NSPAIR(_ZN7S4331C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4331C3;
extern VTBL_ENTRY _ZTI7S4331C3[];
extern  VTBL_ENTRY _ZTV7S4331C3[];
extern Class_Descriptor cd_S4331C2;
extern VTBL_ENTRY _ZTI7S4331C2[];
extern  VTBL_ENTRY _ZTV7S4331C2[];
static Base_Class bases_S4331C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4331C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4331C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4331C1[];
extern void _ZN7S4331C1D1Ev();
extern void _ZN7S4331C1D0Ev();
extern void _ZN7S4331C32v2Ev();
extern void _ZN7S4331C22v3Ev();
extern void _ZN7S4331C22v4Ev();
extern void _ZN7S4331C12v1Ev();
static  VTBL_ENTRY vtc_S4331C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4331C1[0]),
  (VTBL_ENTRY)&_ZN7S4331C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4331C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4331C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4331C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4331C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4331C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4331C1[];
extern  VTBL_ENTRY _ZTV7S4331C1[];
Class_Descriptor cd_S4331C1 = {  "S4331C1", // class name
  bases_S4331C1, 2,
  &(vtc_S4331C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI7S4331C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4331C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18840C1  {
  virtual  ~S18840C1(); // _ZN8S18840C1D1Ev
  virtual void  v1(); // _ZN8S18840C12v1Ev
  virtual void  v2(); // _ZN8S18840C12v2Ev
  virtual void  v3(); // _ZN8S18840C12v3Ev
  virtual void  v4(); // _ZN8S18840C12v4Ev
  virtual void  v5(); // _ZN8S18840C12v5Ev
  virtual void  v6(); // _ZN8S18840C12v6Ev
  virtual void  v7(); // _ZN8S18840C12v7Ev
  virtual void  v8(); // _ZN8S18840C12v8Ev
  virtual void  v9(); // _ZN8S18840C12v9Ev
  virtual void  v10(); // _ZN8S18840C13v10Ev
  virtual void  v11(); // _ZN8S18840C13v11Ev
  virtual void  v12(); // _ZN8S18840C13v12Ev
  virtual void  v13(); // _ZN8S18840C13v13Ev
  S18840C1(); // tgen
};
//SIG(1 S18840C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13}


 S18840C1 ::~S18840C1(){ note_dtor("S18840C1", this);}
void  S18840C1 ::v1(){vfunc_called(this, "_ZN8S18840C12v1Ev");}
void  S18840C1 ::v2(){vfunc_called(this, "_ZN8S18840C12v2Ev");}
void  S18840C1 ::v3(){vfunc_called(this, "_ZN8S18840C12v3Ev");}
void  S18840C1 ::v4(){vfunc_called(this, "_ZN8S18840C12v4Ev");}
void  S18840C1 ::v5(){vfunc_called(this, "_ZN8S18840C12v5Ev");}
void  S18840C1 ::v6(){vfunc_called(this, "_ZN8S18840C12v6Ev");}
void  S18840C1 ::v7(){vfunc_called(this, "_ZN8S18840C12v7Ev");}
void  S18840C1 ::v8(){vfunc_called(this, "_ZN8S18840C12v8Ev");}
void  S18840C1 ::v9(){vfunc_called(this, "_ZN8S18840C12v9Ev");}
void  S18840C1 ::v10(){vfunc_called(this, "_ZN8S18840C13v10Ev");}
void  S18840C1 ::v11(){vfunc_called(this, "_ZN8S18840C13v11Ev");}
void  S18840C1 ::v12(){vfunc_called(this, "_ZN8S18840C13v12Ev");}
void  S18840C1 ::v13(){vfunc_called(this, "_ZN8S18840C13v13Ev");}
S18840C1 ::S18840C1(){ note_ctor("S18840C1", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S18840C1C1Ev();
extern void _ZN8S18840C1D1Ev();
Name_Map name_map_S18840C1[] = {
  NSPAIR(_ZN8S18840C1C1Ev),
  NSPAIR(_ZN8S18840C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18840C1[];
extern void _ZN8S18840C1D1Ev();
extern void _ZN8S18840C1D0Ev();
extern void _ZN8S18840C12v1Ev();
extern void _ZN8S18840C12v2Ev();
extern void _ZN8S18840C12v3Ev();
extern void _ZN8S18840C12v4Ev();
extern void _ZN8S18840C12v5Ev();
extern void _ZN8S18840C12v6Ev();
extern void _ZN8S18840C12v7Ev();
extern void _ZN8S18840C12v8Ev();
extern void _ZN8S18840C12v9Ev();
extern void _ZN8S18840C13v10Ev();
extern void _ZN8S18840C13v11Ev();
extern void _ZN8S18840C13v12Ev();
extern void _ZN8S18840C13v13Ev();
static  VTBL_ENTRY vtc_S18840C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18840C1[0]),
  (VTBL_ENTRY)&_ZN8S18840C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18840C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18840C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18840C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18840C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18840C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18840C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18840C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18840C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18840C12v8Ev,
  (VTBL_ENTRY)&_ZN8S18840C12v9Ev,
  (VTBL_ENTRY)&_ZN8S18840C13v10Ev,
  (VTBL_ENTRY)&_ZN8S18840C13v11Ev,
  (VTBL_ENTRY)&_ZN8S18840C13v12Ev,
  (VTBL_ENTRY)&_ZN8S18840C13v13Ev,
};
extern VTBL_ENTRY _ZTI8S18840C1[];
extern  VTBL_ENTRY _ZTV8S18840C1[];
Class_Descriptor cd_S18840C1 = {  "S18840C1", // class name
  0,0,//no base classes
  &(vtc_S18840C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18840C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18840C1),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8009C2  {
  ::S2213C20_nt s8009c2f0;
  int s8009c2f1;
  void *s8009c2f2[2];
  void  mf8009c2(); // _ZN7S8009C28mf8009c2Ev
  virtual  ~S8009C2(); // _ZN7S8009C2D1Ev
  S8009C2(); // tgen
};
//SIG(-1 S8009C2) C1{ vd m FC2{ m Fp Fi FC3{ m}} Fi Fp[2]}


void  S8009C2 ::mf8009c2(){}
 S8009C2 ::~S8009C2(){ note_dtor("S8009C2", this);}
S8009C2 ::S8009C2(){ note_ctor("S8009C2", this);} // tgen

static void Test_S8009C2()
{
  extern Class_Descriptor cd_S8009C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S8009C2, buf);
    S8009C2 *dp, &lv = *(dp=new (buf) S8009C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S8009C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8009C2)");
    check_field_offset(lv, s8009c2f0, ABISELECT(8,4), "S8009C2.s8009c2f0");
    check_field_offset(lv, s8009c2f1, ABISELECT(24,16), "S8009C2.s8009c2f1");
    check_field_offset(lv, s8009c2f2, ABISELECT(32,20), "S8009C2.s8009c2f2");
    test_class_info(&lv, &cd_S8009C2);
    dp->~S8009C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8009C2(Test_S8009C2, "S8009C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S8009C2C1Ev();
extern void _ZN7S8009C2D1Ev();
Name_Map name_map_S8009C2[] = {
  NSPAIR(_ZN7S8009C2C1Ev),
  NSPAIR(_ZN7S8009C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8009C2[];
extern void _ZN7S8009C2D1Ev();
extern void _ZN7S8009C2D0Ev();
static  VTBL_ENTRY vtc_S8009C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8009C2[0]),
  (VTBL_ENTRY)&_ZN7S8009C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8009C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S8009C2[];
extern  VTBL_ENTRY _ZTV7S8009C2[];
Class_Descriptor cd_S8009C2 = {  "S8009C2", // class name
  0,0,//no base classes
  &(vtc_S8009C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S8009C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8009C2),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  S8009C1  : S8009C2 {
  int s8009c1f0;
  void *s8009c1f1;
  virtual  ~S8009C1(); // _ZN7S8009C1D1Ev
  S8009C1(); // tgen
};
//SIG(1 S8009C1) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m}} Fi Fp[2]} vd Fi Fp}


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

static void Test_S8009C1()
{
  extern Class_Descriptor cd_S8009C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S8009C1, buf);
    S8009C1 *dp, &lv = *(dp=new (buf) S8009C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S8009C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8009C1)");
    check_base_class_offset(lv, (S8009C2*), 0, "S8009C1");
    check_field_offset(lv, s8009c1f0, ABISELECT(48,28), "S8009C1.s8009c1f0");
    check_field_offset(lv, s8009c1f1, ABISELECT(56,32), "S8009C1.s8009c1f1");
    test_class_info(&lv, &cd_S8009C1);
    dp->~S8009C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8009C1(Test_S8009C1, "S8009C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S8009C1C1Ev();
extern void _ZN7S8009C1D1Ev();
Name_Map name_map_S8009C1[] = {
  NSPAIR(_ZN7S8009C1C1Ev),
  NSPAIR(_ZN7S8009C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8009C2;
extern VTBL_ENTRY _ZTI7S8009C2[];
extern  VTBL_ENTRY _ZTV7S8009C2[];
static Base_Class bases_S8009C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8009C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8009C1[];
extern void _ZN7S8009C1D1Ev();
extern void _ZN7S8009C1D0Ev();
static  VTBL_ENTRY vtc_S8009C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8009C1[0]),
  (VTBL_ENTRY)&_ZN7S8009C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8009C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8009C1[];
extern  VTBL_ENTRY _ZTV7S8009C1[];
Class_Descriptor cd_S8009C1 = {  "S8009C1", // class name
  bases_S8009C1, 1,
  &(vtc_S8009C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S8009C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8009C1),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  S18261C2  {
  __tsi64 s18261c2f0;
  ::S16367C3 s18261c2f1;
  void  mf18261c2(); // _ZN8S18261C29mf18261c2Ev
};
//SIG(-1 S18261C2) C1{ m FL FC2{ m Fi FC3{ m Fp[2]}}}


void  S18261C2 ::mf18261c2(){}

static void Test_S18261C2()
{
  {
    init_simple_test("S18261C2");
    S18261C2 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18261C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18261C2)");
    check_field_offset(lv, s18261c2f0, 0, "S18261C2.s18261c2f0");
    check_field_offset(lv, s18261c2f1, 8, "S18261C2.s18261c2f1");
  }
}
static Arrange_To_Call_Me vS18261C2(Test_S18261C2, "S18261C2", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18261C1  {
  void *s18261c1f0[3];
  ::S18261C2 s18261c1f1;
  char s18261c1f2[2];
  void  mf18261c1(); // _ZN8S18261C19mf18261c1Ev
};
//SIG(1 S18261C1) C1{ m Fp[3] FC2{ m FL FC3{ m Fi FC4{ m Fp[2]}}} Fc[2]}


void  S18261C1 ::mf18261c1(){}

static void Test_S18261C1()
{
  {
    init_simple_test("S18261C1");
    S18261C1 lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S18261C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18261C1)");
    check_field_offset(lv, s18261c1f0, 0, "S18261C1.s18261c1f0");
    check_field_offset(lv, s18261c1f1, ABISELECT(24,12), "S18261C1.s18261c1f1");
    check_field_offset(lv, s18261c1f2, ABISELECT(56,32), "S18261C1.s18261c1f2");
  }
}
static Arrange_To_Call_Me vS18261C1(Test_S18261C1, "S18261C1", ABISELECT(64,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16561C1  {
  int s16561c1f0;
  char s16561c1f1;
  long s16561c1f2;
  __tsi64 s16561c1f3;
  int s16561c1f4;
  long s16561c1f5[6];
  long double s16561c1f6[6];
  short s16561c1f7[6];
  void *s16561c1f8;
  int s16561c1f9[2];
  void  mf16561c1(); // _ZN8S16561C19mf16561c1Ev
};
//SIG(1 S16561C1) C1{ m Fi Fc Fl FL Fi Fl[6] FD[6] Fs[6] Fp Fi[2]}


void  S16561C1 ::mf16561c1(){}

static void Test_S16561C1()
{
  {
    init_simple_test("S16561C1");
    S16561C1 lv;
    check2(sizeof(lv), ABISELECT(208,144), "sizeof(S16561C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S16561C1)");
    check_field_offset(lv, s16561c1f0, 0, "S16561C1.s16561c1f0");
    check_field_offset(lv, s16561c1f1, 4, "S16561C1.s16561c1f1");
    check_field_offset(lv, s16561c1f2, 8, "S16561C1.s16561c1f2");
    check_field_offset(lv, s16561c1f3, ABISELECT(16,12), "S16561C1.s16561c1f3");
    check_field_offset(lv, s16561c1f4, ABISELECT(24,20), "S16561C1.s16561c1f4");
    check_field_offset(lv, s16561c1f5, ABISELECT(32,24), "S16561C1.s16561c1f5");
    check_field_offset(lv, s16561c1f6, ABISELECT(80,48), "S16561C1.s16561c1f6");
    check_field_offset(lv, s16561c1f7, ABISELECT(176,120), "S16561C1.s16561c1f7");
    check_field_offset(lv, s16561c1f8, ABISELECT(192,132), "S16561C1.s16561c1f8");
    check_field_offset(lv, s16561c1f9, ABISELECT(200,136), "S16561C1.s16561c1f9");
  }
}
static Arrange_To_Call_Me vS16561C1(Test_S16561C1, "S16561C1", ABISELECT(208,144));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10943C1  {
  char s10943c1f0[5];
  unsigned char s10943c1f1:1;
  char s10943c1f2:2;
  unsigned char s10943c1f3:1;
  char s10943c1f4:4;
  char s10943c1f5:2;
  unsigned char s10943c1f6:1;
  char s10943c1f7:5;
  char s10943c1f8;
};
//SIG(1 S10943C1) C1{ Fc[5] Fc:1 Fc:2 Fc:1 Fc:4 Fc:2 Fc:1 Fc:5 Fc}



static void Test_S10943C1()
{
  {
    init_simple_test("S10943C1");
    static S10943C1 lv;
    check2(sizeof(lv), 8, "sizeof(S10943C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10943C1)");
    check_field_offset(lv, s10943c1f0, 0, "S10943C1.s10943c1f0");
    set_bf_and_test(lv, s10943c1f1, 5, 0, 1, 1, "S10943C1");
    set_bf_and_test(lv, s10943c1f2, 5, 1, 2, 1, "S10943C1");
    set_bf_and_test(lv, s10943c1f2, 5, 1, 2, hide_sll(1LL<<1), "S10943C1");
    set_bf_and_test(lv, s10943c1f3, 5, 3, 1, 1, "S10943C1");
    set_bf_and_test(lv, s10943c1f4, 5, 4, 4, 1, "S10943C1");
    set_bf_and_test(lv, s10943c1f4, 5, 4, 4, hide_sll(1LL<<3), "S10943C1");
    set_bf_and_test(lv, s10943c1f5, 6, 0, 2, 1, "S10943C1");
    set_bf_and_test(lv, s10943c1f5, 6, 0, 2, hide_sll(1LL<<1), "S10943C1");
    set_bf_and_test(lv, s10943c1f6, 6, 2, 1, 1, "S10943C1");
    set_bf_and_test(lv, s10943c1f7, 6, 3, 5, 1, "S10943C1");
    set_bf_and_test(lv, s10943c1f7, 6, 3, 5, hide_sll(1LL<<4), "S10943C1");
    check_field_offset(lv, s10943c1f8, 7, "S10943C1.s10943c1f8");
  }
}
static Arrange_To_Call_Me vS10943C1(Test_S10943C1, "S10943C1", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8010C1  : S8009C2 {
  void *s8010c1f0;
  virtual  ~S8010C1(); // _ZN7S8010C1D1Ev
  S8010C1(); // tgen
};
//SIG(1 S8010C1) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m}} Fi Fp[2]} vd Fp}


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

static void Test_S8010C1()
{
  extern Class_Descriptor cd_S8010C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S8010C1, buf);
    S8010C1 *dp, &lv = *(dp=new (buf) S8010C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S8010C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8010C1)");
    check_base_class_offset(lv, (S8009C2*), 0, "S8010C1");
    check_field_offset(lv, s8010c1f0, ABISELECT(48,28), "S8010C1.s8010c1f0");
    test_class_info(&lv, &cd_S8010C1);
    dp->~S8010C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8010C1(Test_S8010C1, "S8010C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S8010C1C1Ev();
extern void _ZN7S8010C1D1Ev();
Name_Map name_map_S8010C1[] = {
  NSPAIR(_ZN7S8010C1C1Ev),
  NSPAIR(_ZN7S8010C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8009C2;
extern VTBL_ENTRY _ZTI7S8009C2[];
extern  VTBL_ENTRY _ZTV7S8009C2[];
static Base_Class bases_S8010C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8009C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8010C1[];
extern void _ZN7S8010C1D1Ev();
extern void _ZN7S8010C1D0Ev();
static  VTBL_ENTRY vtc_S8010C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8010C1[0]),
  (VTBL_ENTRY)&_ZN7S8010C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8010C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8010C1[];
extern  VTBL_ENTRY _ZTV7S8010C1[];
Class_Descriptor cd_S8010C1 = {  "S8010C1", // class name
  bases_S8010C1, 1,
  &(vtc_S8010C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S8010C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8010C1),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  S16851C1  {
  int s16851c1f0;
  int s16851c1f1:8;
  int s16851c1f2:24;
  int s16851c1f3;
  ::S2213C20_nt s16851c1f4;
  ::S2213C20_nt s16851c1f5;
  void  mf16851c1(); // _ZN8S16851C19mf16851c1Ev
};
//SIG(1 S16851C1) C1{ m Fi Fi:8 Fi:24 Fi FC2{ m Fp Fi FC3{ m}} FC2}


void  S16851C1 ::mf16851c1(){}

static void Test_S16851C1()
{
  {
    init_simple_test("S16851C1");
    static S16851C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S16851C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16851C1)");
    check_field_offset(lv, s16851c1f0, 0, "S16851C1.s16851c1f0");
    set_bf_and_test(lv, s16851c1f1, 4, 0, 8, 1, "S16851C1");
    set_bf_and_test(lv, s16851c1f1, 4, 0, 8, hide_sll(1LL<<7), "S16851C1");
    set_bf_and_test(lv, s16851c1f2, 5, 0, 24, 1, "S16851C1");
    set_bf_and_test(lv, s16851c1f2, 5, 0, 24, hide_sll(1LL<<23), "S16851C1");
    check_field_offset(lv, s16851c1f3, 8, "S16851C1.s16851c1f3");
    check_field_offset(lv, s16851c1f4, ABISELECT(16,12), "S16851C1.s16851c1f4");
    check_field_offset(lv, s16851c1f5, ABISELECT(32,24), "S16851C1.s16851c1f5");
  }
}
static Arrange_To_Call_Me vS16851C1(Test_S16851C1, "S16851C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12968C2_nt  {
  void *s12968c2f0[3];
  int s12968c2f1[3];
  char s12968c2f2;
};
//SIG(-1 S12968C2_nt) C1{ Fp[3] Fi[3] Fc}



//skip512 S12968C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12968C1  {
  int s12968c1f0[16];
  ::S12968C2_nt s12968c1f1;
  void *s12968c1f2[3];
  int s12968c1f3;
  char s12968c1f4[3];
};
//SIG(1 S12968C1) C1{ Fi[16] FC2{ Fp[3] Fi[3] Fc} Fp[3] Fi Fc[3]}



static void Test_S12968C1()
{
  {
    init_simple_test("S12968C1");
    S12968C1 lv;
    check2(sizeof(lv), ABISELECT(136,112), "sizeof(S12968C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12968C1)");
    check_field_offset(lv, s12968c1f0, 0, "S12968C1.s12968c1f0");
    check_field_offset(lv, s12968c1f1, 64, "S12968C1.s12968c1f1");
    check_field_offset(lv, s12968c1f2, ABISELECT(104,92), "S12968C1.s12968c1f2");
    check_field_offset(lv, s12968c1f3, ABISELECT(128,104), "S12968C1.s12968c1f3");
    check_field_offset(lv, s12968c1f4, ABISELECT(132,108), "S12968C1.s12968c1f4");
  }
}
static Arrange_To_Call_Me vS12968C1(Test_S12968C1, "S12968C1", ABISELECT(136,112));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15008C3_nt  {
  void *s15008c3f0;
  int s15008c3f1[5];
  void  mf15008c3(); // _ZN11S15008C3_nt9mf15008c3Ev
};
//SIG(1 S15008C3_nt) C1{ m Fp Fi[5]}


void  S15008C3_nt ::mf15008c3(){}

//skip512 S15008C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15008C1  {
  int s15008c1f0;
  int s15008c1f1[3];
  ::S3164C8_nt s15008c1f2;
  ::S15008C3_nt s15008c1f3[3];
  void  mf15008c1(); // _ZN8S15008C19mf15008c1Ev
};
//SIG(1 S15008C1) C1{ m Fi[4] FC2{ m Fi} FC3{ m Fp Fi[5]}[3]}


void  S15008C1 ::mf15008c1(){}

static void Test_S15008C1()
{
  {
    init_simple_test("S15008C1");
    S15008C1 lv;
    check2(sizeof(lv), ABISELECT(120,92), "sizeof(S15008C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15008C1)");
    check_field_offset(lv, s15008c1f0, 0, "S15008C1.s15008c1f0");
    check_field_offset(lv, s15008c1f1, 4, "S15008C1.s15008c1f1");
    check_field_offset(lv, s15008c1f2, 16, "S15008C1.s15008c1f2");
    check_field_offset(lv, s15008c1f3, ABISELECT(24,20), "S15008C1.s15008c1f3");
  }
}
static Arrange_To_Call_Me vS15008C1(Test_S15008C1, "S15008C1", ABISELECT(120,92));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13404C2  {
  long s13404c2f0;
  int s13404c2f1;
  short s13404c2f2;
  char s13404c2f3[2];
};
//SIG(1 S13404C2) C1{ Fl Fi Fs Fc[2]}



static void Test_S13404C2()
{
  {
    init_simple_test("S13404C2");
    S13404C2 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S13404C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13404C2)");
    check_field_offset(lv, s13404c2f0, 0, "S13404C2.s13404c2f0");
    check_field_offset(lv, s13404c2f1, ABISELECT(8,4), "S13404C2.s13404c2f1");
    check_field_offset(lv, s13404c2f2, ABISELECT(12,8), "S13404C2.s13404c2f2");
    check_field_offset(lv, s13404c2f3, ABISELECT(14,10), "S13404C2.s13404c2f3");
  }
}
static Arrange_To_Call_Me vS13404C2(Test_S13404C2, "S13404C2", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13404C1  {
  int s13404c1f0[3];
  short s13404c1f1;
  char s13404c1f2[18];
  ::S13404C2 s13404c1f3[50];
};
//SIG(1 S13404C1) C1{ Fi[3] Fs Fc[18] FC2{ Fl Fi Fs Fc[2]}[50]}



static void Test_S13404C1()
{
  {
    init_simple_test("S13404C1");
    S13404C1 lv;
    check2(sizeof(lv), ABISELECT(832,632), "sizeof(S13404C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13404C1)");
    check_field_offset(lv, s13404c1f0, 0, "S13404C1.s13404c1f0");
    check_field_offset(lv, s13404c1f1, 12, "S13404C1.s13404c1f1");
    check_field_offset(lv, s13404c1f2, 14, "S13404C1.s13404c1f2");
    check_field_offset(lv, s13404c1f3, 32, "S13404C1.s13404c1f3");
  }
}
static Arrange_To_Call_Me vS13404C1(Test_S13404C1, "S13404C1", ABISELECT(832,632));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20050C2  {
  long s20050c2f0;
  virtual void  v2(); // _ZN8S20050C22v2Ev
  virtual void  v3(); // _ZN8S20050C22v3Ev
  virtual void  v4(); // _ZN8S20050C22v4Ev
  virtual void  v5(); // _ZN8S20050C22v5Ev
  virtual void  v6(); // _ZN8S20050C22v6Ev
  ~S20050C2(); // tgen
  S20050C2(); // tgen
};
//SIG(-1 S20050C2) C1{ v1 v2 v3 v4 v5 Fl}


void  S20050C2 ::v2(){vfunc_called(this, "_ZN8S20050C22v2Ev");}
void  S20050C2 ::v3(){vfunc_called(this, "_ZN8S20050C22v3Ev");}
void  S20050C2 ::v4(){vfunc_called(this, "_ZN8S20050C22v4Ev");}
void  S20050C2 ::v5(){vfunc_called(this, "_ZN8S20050C22v5Ev");}
void  S20050C2 ::v6(){vfunc_called(this, "_ZN8S20050C22v6Ev");}
S20050C2 ::~S20050C2(){ note_dtor("S20050C2", this);} // tgen
S20050C2 ::S20050C2(){ note_ctor("S20050C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20050C2C1Ev();
extern void _ZN8S20050C2D1Ev();
Name_Map name_map_S20050C2[] = {
  NSPAIR(_ZN8S20050C2C1Ev),
  NSPAIR(_ZN8S20050C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20050C2[];
extern void _ZN8S20050C22v2Ev();
extern void _ZN8S20050C22v3Ev();
extern void _ZN8S20050C22v4Ev();
extern void _ZN8S20050C22v5Ev();
extern void _ZN8S20050C22v6Ev();
static  VTBL_ENTRY vtc_S20050C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20050C2[0]),
  (VTBL_ENTRY)&_ZN8S20050C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20050C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20050C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20050C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20050C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20050C2[];
extern  VTBL_ENTRY _ZTV8S20050C2[];
Class_Descriptor cd_S20050C2 = {  "S20050C2", // class name
  0,0,//no base classes
  &(vtc_S20050C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20050C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20050C2),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  S20050C3  {
  virtual void  v7(); // _ZN8S20050C32v7Ev
  virtual void  v8(); // _ZN8S20050C32v8Ev
  virtual void  v9(); // _ZN8S20050C32v9Ev
  ~S20050C3(); // tgen
  S20050C3(); // tgen
};
//SIG(-1 S20050C3) C1{ v1 v2 v3}


void  S20050C3 ::v7(){vfunc_called(this, "_ZN8S20050C32v7Ev");}
void  S20050C3 ::v8(){vfunc_called(this, "_ZN8S20050C32v8Ev");}
void  S20050C3 ::v9(){vfunc_called(this, "_ZN8S20050C32v9Ev");}
S20050C3 ::~S20050C3(){ note_dtor("S20050C3", this);} // tgen
S20050C3 ::S20050C3(){ note_ctor("S20050C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20050C3C1Ev();
extern void _ZN8S20050C3D1Ev();
Name_Map name_map_S20050C3[] = {
  NSPAIR(_ZN8S20050C3C1Ev),
  NSPAIR(_ZN8S20050C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20050C3[];
extern void _ZN8S20050C32v7Ev();
extern void _ZN8S20050C32v8Ev();
extern void _ZN8S20050C32v9Ev();
static  VTBL_ENTRY vtc_S20050C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20050C3[0]),
  (VTBL_ENTRY)&_ZN8S20050C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20050C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20050C32v9Ev,
};
extern VTBL_ENTRY _ZTI8S20050C3[];
extern  VTBL_ENTRY _ZTV8S20050C3[];
Class_Descriptor cd_S20050C3 = {  "S20050C3", // class name
  0,0,//no base classes
  &(vtc_S20050C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20050C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20050C3),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  S20050C1  : virtual S20050C2 , S20050C3 {
  virtual void  v1(); // _ZN8S20050C12v1Ev
  ~S20050C1(); // tgen
  S20050C1(); // tgen
};
//SIG(1 S20050C1) C1{ VBC2{ v2 v3 v4 v5 v6 Fl} BC3{ v7 v8 v9} v1}


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

static void Test_S20050C1()
{
  extern Class_Descriptor cd_S20050C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20050C1, buf);
    S20050C1 *dp, &lv = *(dp=new (buf) S20050C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20050C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20050C1)");
    check_base_class_offset(lv, (S20050C2*), ABISELECT(8,4), "S20050C1");
    check_base_class_offset(lv, (S20050C3*), 0, "S20050C1");
    test_class_info(&lv, &cd_S20050C1);
    dp->~S20050C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20050C1(Test_S20050C1, "S20050C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20050C1C1Ev();
extern void _ZN8S20050C1D1Ev();
Name_Map name_map_S20050C1[] = {
  NSPAIR(_ZN8S20050C1C1Ev),
  NSPAIR(_ZN8S20050C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20050C2;
extern VTBL_ENTRY _ZTI8S20050C2[];
extern  VTBL_ENTRY _ZTV8S20050C2[];
extern Class_Descriptor cd_S20050C3;
extern VTBL_ENTRY _ZTI8S20050C3[];
extern  VTBL_ENTRY _ZTV8S20050C3[];
static Base_Class bases_S20050C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20050C2,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20050C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20050C1[];
extern void _ZN8S20050C32v7Ev();
extern void _ZN8S20050C32v8Ev();
extern void _ZN8S20050C32v9Ev();
extern void _ZN8S20050C12v1Ev();
extern void _ZN8S20050C22v2Ev();
extern void _ZN8S20050C22v3Ev();
extern void _ZN8S20050C22v4Ev();
extern void _ZN8S20050C22v5Ev();
extern void _ZN8S20050C22v6Ev();
static  VTBL_ENTRY vtc_S20050C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20050C1[0]),
  (VTBL_ENTRY)&_ZN8S20050C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20050C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20050C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20050C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20050C1[0]),
  (VTBL_ENTRY)&_ZN8S20050C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20050C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20050C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20050C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20050C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20050C1[];
static  VTT_ENTRY vtt_S20050C1[] = {
  {&(_ZTV8S20050C1[3]),  3,19},
  {&(_ZTV8S20050C1[14]),  14,19},
};
extern VTBL_ENTRY _ZTI8S20050C1[];
extern  VTBL_ENTRY _ZTV8S20050C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20050C1[];
Class_Descriptor cd_S20050C1 = {  "S20050C1", // class name
  bases_S20050C1, 2,
  &(vtc_S20050C1[0]), // expected_vtbl_contents
  &(vtt_S20050C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20050C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20050C1),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20050C1),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  S13882C2_nt  {
  __tsi64 s13882c2f0[2];
};
//SIG(-1 S13882C2_nt) C1{ FL[2]}



//skip512 S13882C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13882C1  {
  long s13882c1f0;
  short s13882c1f1[2];
  long s13882c1f2[2];
  short s13882c1f3;
  char s13882c1f4[32];
  short s13882c1f5;
  ::S13882C2_nt s13882c1f6;
};
//SIG(1 S13882C1) C1{ Fl Fs[2] Fl[2] Fs Fc[32] Fs FC2{ FL[2]}}



static void Test_S13882C1()
{
  {
    init_simple_test("S13882C1");
    S13882C1 lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S13882C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13882C1)");
    check_field_offset(lv, s13882c1f0, 0, "S13882C1.s13882c1f0");
    check_field_offset(lv, s13882c1f1, ABISELECT(8,4), "S13882C1.s13882c1f1");
    check_field_offset(lv, s13882c1f2, ABISELECT(16,8), "S13882C1.s13882c1f2");
    check_field_offset(lv, s13882c1f3, ABISELECT(32,16), "S13882C1.s13882c1f3");
    check_field_offset(lv, s13882c1f4, ABISELECT(34,18), "S13882C1.s13882c1f4");
    check_field_offset(lv, s13882c1f5, ABISELECT(66,50), "S13882C1.s13882c1f5");
    check_field_offset(lv, s13882c1f6, ABISELECT(72,52), "S13882C1.s13882c1f6");
  }
}
static Arrange_To_Call_Me vS13882C1(Test_S13882C1, "S13882C1", ABISELECT(88,68));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15258C1  {
  char s15258c1f0[512];
  int s15258c1f1[11];
  char s15258c1f2;
  int s15258c1f3[3];
  char s15258c1f4;
  int s15258c1f5[6];
  char s15258c1f6;
  void  mf15258c1(); // _ZN8S15258C19mf15258c1Ev
};
//SIG(1 S15258C1) C1{ m Fc[512] Fi[11] Fc Fi[3] Fc Fi[6] Fc}


void  S15258C1 ::mf15258c1(){}

static void Test_S15258C1()
{
  {
    init_simple_test("S15258C1");
    S15258C1 lv;
    check2(sizeof(lv), 604, "sizeof(S15258C1)");
    check2(__alignof__(lv), 4, "__alignof__(S15258C1)");
    check_field_offset(lv, s15258c1f0, 0, "S15258C1.s15258c1f0");
    check_field_offset(lv, s15258c1f1, 512, "S15258C1.s15258c1f1");
    check_field_offset(lv, s15258c1f2, 556, "S15258C1.s15258c1f2");
    check_field_offset(lv, s15258c1f3, 560, "S15258C1.s15258c1f3");
    check_field_offset(lv, s15258c1f4, 572, "S15258C1.s15258c1f4");
    check_field_offset(lv, s15258c1f5, 576, "S15258C1.s15258c1f5");
    check_field_offset(lv, s15258c1f6, 600, "S15258C1.s15258c1f6");
  }
}
static Arrange_To_Call_Me vS15258C1(Test_S15258C1, "S15258C1", 604);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6769C2  {
  virtual  ~S6769C2(); // _ZN7S6769C2D1Ev
  virtual void  v3(); // _ZN7S6769C22v3Ev
  virtual void  v4(); // _ZN7S6769C22v4Ev
  S6769C2(); // tgen
};
//SIG(-1 S6769C2) C1{ vd v1 v2}


 S6769C2 ::~S6769C2(){ note_dtor("S6769C2", this);}
void  S6769C2 ::v3(){vfunc_called(this, "_ZN7S6769C22v3Ev");}
void  S6769C2 ::v4(){vfunc_called(this, "_ZN7S6769C22v4Ev");}
S6769C2 ::S6769C2(){ note_ctor("S6769C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6769C2C1Ev();
extern void _ZN7S6769C2D1Ev();
Name_Map name_map_S6769C2[] = {
  NSPAIR(_ZN7S6769C2C1Ev),
  NSPAIR(_ZN7S6769C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6769C2[];
extern void _ZN7S6769C2D1Ev();
extern void _ZN7S6769C2D0Ev();
extern void _ZN7S6769C22v3Ev();
extern void _ZN7S6769C22v4Ev();
static  VTBL_ENTRY vtc_S6769C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6769C2[0]),
  (VTBL_ENTRY)&_ZN7S6769C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6769C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6769C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6769C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6769C2[];
extern  VTBL_ENTRY _ZTV7S6769C2[];
Class_Descriptor cd_S6769C2 = {  "S6769C2", // class name
  0,0,//no base classes
  &(vtc_S6769C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6769C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6769C2),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  S6769C1  : S6769C2 {
  void *s6769c1f0[3];
  int s6769c1f1;
  char s6769c1f2;
  void *s6769c1f3;
  virtual  ~S6769C1(); // _ZN7S6769C1D1Ev
  virtual void  v1(); // _ZN7S6769C12v1Ev
  virtual void  v2(); // _ZN7S6769C12v2Ev
  S6769C1(); // tgen
};
//SIG(1 S6769C1) C1{ BC2{ vd v3 v4} vd v1 v2 Fp[3] Fi Fc Fp}


 S6769C1 ::~S6769C1(){ note_dtor("S6769C1", this);}
void  S6769C1 ::v1(){vfunc_called(this, "_ZN7S6769C12v1Ev");}
void  S6769C1 ::v2(){vfunc_called(this, "_ZN7S6769C12v2Ev");}
S6769C1 ::S6769C1(){ note_ctor("S6769C1", this);} // tgen

static void Test_S6769C1()
{
  extern Class_Descriptor cd_S6769C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S6769C1, buf);
    S6769C1 *dp, &lv = *(dp=new (buf) S6769C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6769C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6769C1)");
    check_base_class_offset(lv, (S6769C2*), 0, "S6769C1");
    check_field_offset(lv, s6769c1f0, ABISELECT(8,4), "S6769C1.s6769c1f0");
    check_field_offset(lv, s6769c1f1, ABISELECT(32,16), "S6769C1.s6769c1f1");
    check_field_offset(lv, s6769c1f2, ABISELECT(36,20), "S6769C1.s6769c1f2");
    check_field_offset(lv, s6769c1f3, ABISELECT(40,24), "S6769C1.s6769c1f3");
    test_class_info(&lv, &cd_S6769C1);
    dp->~S6769C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6769C1(Test_S6769C1, "S6769C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S6769C1C1Ev();
extern void _ZN7S6769C1D1Ev();
Name_Map name_map_S6769C1[] = {
  NSPAIR(_ZN7S6769C1C1Ev),
  NSPAIR(_ZN7S6769C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6769C2;
extern VTBL_ENTRY _ZTI7S6769C2[];
extern  VTBL_ENTRY _ZTV7S6769C2[];
static Base_Class bases_S6769C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6769C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6769C1[];
extern void _ZN7S6769C1D1Ev();
extern void _ZN7S6769C1D0Ev();
extern void _ZN7S6769C22v3Ev();
extern void _ZN7S6769C22v4Ev();
extern void _ZN7S6769C12v1Ev();
extern void _ZN7S6769C12v2Ev();
static  VTBL_ENTRY vtc_S6769C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6769C1[0]),
  (VTBL_ENTRY)&_ZN7S6769C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6769C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6769C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6769C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6769C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6769C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6769C1[];
extern  VTBL_ENTRY _ZTV7S6769C1[];
Class_Descriptor cd_S6769C1 = {  "S6769C1", // class name
  bases_S6769C1, 1,
  &(vtc_S6769C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S6769C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6769C1),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  S8804C2  {
  void *s8804c2f0[2];
  int s8804c2f1:16;
  int s8804c2f2:16;
  virtual  ~S8804C2(); // _ZN7S8804C2D1Ev
  virtual void  v2(); // _ZN7S8804C22v2Ev
  S8804C2(); // tgen
};
//SIG(-1 S8804C2) C1{ vd v1 Fp[2] Fi:16 Fi:16}


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

static void Test_S8804C2()
{
  extern Class_Descriptor cd_S8804C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S8804C2, buf);
    S8804C2 *dp, &lv = *(dp=new (buf) S8804C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S8804C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8804C2)");
    check_field_offset(lv, s8804c2f0, ABISELECT(8,4), "S8804C2.s8804c2f0");
    set_bf_and_test(lv, s8804c2f1, ABISELECT(24,12), 0, 16, 1, "S8804C2");
    set_bf_and_test(lv, s8804c2f1, ABISELECT(24,12), 0, 16, hide_sll(1LL<<15), "S8804C2");
    set_bf_and_test(lv, s8804c2f2, ABISELECT(26,14), 0, 16, 1, "S8804C2");
    set_bf_and_test(lv, s8804c2f2, ABISELECT(26,14), 0, 16, hide_sll(1LL<<15), "S8804C2");
    test_class_info(&lv, &cd_S8804C2);
    dp->~S8804C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8804C2(Test_S8804C2, "S8804C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S8804C2C1Ev();
extern void _ZN7S8804C2D1Ev();
Name_Map name_map_S8804C2[] = {
  NSPAIR(_ZN7S8804C2C1Ev),
  NSPAIR(_ZN7S8804C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8804C2[];
extern void _ZN7S8804C2D1Ev();
extern void _ZN7S8804C2D0Ev();
extern void _ZN7S8804C22v2Ev();
static  VTBL_ENTRY vtc_S8804C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8804C2[0]),
  (VTBL_ENTRY)&_ZN7S8804C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8804C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8804C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S8804C2[];
extern  VTBL_ENTRY _ZTV7S8804C2[];
Class_Descriptor cd_S8804C2 = {  "S8804C2", // class name
  0,0,//no base classes
  &(vtc_S8804C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S8804C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8804C2),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  S8804C1  : S8804C2 {
  int s8804c1f0[2];
  virtual void  v1(); // _ZN7S8804C12v1Ev
  ~S8804C1(); // tgen
  S8804C1(); // tgen
};
//SIG(1 S8804C1) C1{ BC2{ vd v2 Fp[2] Fi:16 Fi:16} v1 Fi[2]}


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

static void Test_S8804C1()
{
  extern Class_Descriptor cd_S8804C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S8804C1, buf);
    S8804C1 *dp, &lv = *(dp=new (buf) S8804C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S8804C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8804C1)");
    check_base_class_offset(lv, (S8804C2*), 0, "S8804C1");
    check_field_offset(lv, s8804c1f0, ABISELECT(28,16), "S8804C1.s8804c1f0");
    test_class_info(&lv, &cd_S8804C1);
    dp->~S8804C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8804C1(Test_S8804C1, "S8804C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S8804C1C1Ev();
extern void _ZN7S8804C1D1Ev();
Name_Map name_map_S8804C1[] = {
  NSPAIR(_ZN7S8804C1C1Ev),
  NSPAIR(_ZN7S8804C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8804C2;
extern VTBL_ENTRY _ZTI7S8804C2[];
extern  VTBL_ENTRY _ZTV7S8804C2[];
static Base_Class bases_S8804C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8804C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8804C1[];
extern void _ZN7S8804C1D1Ev();
extern void _ZN7S8804C1D0Ev();
extern void _ZN7S8804C22v2Ev();
extern void _ZN7S8804C12v1Ev();
static  VTBL_ENTRY vtc_S8804C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8804C1[0]),
  (VTBL_ENTRY)&_ZN7S8804C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8804C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8804C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8804C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8804C1[];
extern  VTBL_ENTRY _ZTV7S8804C1[];
Class_Descriptor cd_S8804C1 = {  "S8804C1", // class name
  bases_S8804C1, 1,
  &(vtc_S8804C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S8804C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8804C1),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  S16648C4  {
  char s16648c4f0[4096];
};
//SIG(-1 S16648C4) C1{ Fc[4096]}



static void Test_S16648C4()
{
  {
    init_simple_test("S16648C4");
    S16648C4 lv;
    check2(sizeof(lv), 4096, "sizeof(S16648C4)");
    check2(__alignof__(lv), 1, "__alignof__(S16648C4)");
    check_field_offset(lv, s16648c4f0, 0, "S16648C4.s16648c4f0");
  }
}
static Arrange_To_Call_Me vS16648C4(Test_S16648C4, "S16648C4", 4096);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16648C2  : S15911C7_nt {
  ::S16648C4 s16648c2f0;
};
//SIG(-1 S16648C2) C1{ BC2{ m Fp Fi} FC3{ Fc[4096]}}



static void Test_S16648C2()
{
  extern Class_Descriptor cd_S16648C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(515,1027)];
    init_test(&cd_S16648C2, buf);
    S16648C2 &lv = *(new (buf) S16648C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4112,4104), "sizeof(S16648C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16648C2)");
    check_base_class_offset(lv, (S15911C7_nt*), 0, "S16648C2");
    check_field_offset(lv, s16648c2f0, ABISELECT(16,8), "S16648C2.s16648c2f0");
    test_class_info(&lv, &cd_S16648C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS16648C2(Test_S16648C2, "S16648C2", ABISELECT(4112,4104));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S16648C1  {
  int s16648c1f0;
  ::S16648C2 s16648c1f1;
  void  mf16648c1(); // _ZN8S16648C19mf16648c1Ev
};
//SIG(1 S16648C1) C1{ m Fi FC2{ BC3{ m Fp Fi} FC4{ Fc[4096]}}}


void  S16648C1 ::mf16648c1(){}

static void Test_S16648C1()
{
  {
    init_simple_test("S16648C1");
    S16648C1 lv;
    check2(sizeof(lv), ABISELECT(4120,4108), "sizeof(S16648C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16648C1)");
    check_field_offset(lv, s16648c1f0, 0, "S16648C1.s16648c1f0");
    check_field_offset(lv, s16648c1f1, ABISELECT(8,4), "S16648C1.s16648c1f1");
  }
}
static Arrange_To_Call_Me vS16648C1(Test_S16648C1, "S16648C1", ABISELECT(4120,4108));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16292C1  {
  ::S2213C20_nt s16292c1f0;
  void *s16292c1f1;
  int s16292c1f2;
  void *s16292c1f3[2];
  char s16292c1f4;
  void  mf16292c1(); // _ZN8S16292C19mf16292c1Ev
};
//SIG(1 S16292C1) C1{ m FC2{ m Fp Fi FC3{ m}} Fp Fi Fp[2] Fc}


void  S16292C1 ::mf16292c1(){}

static void Test_S16292C1()
{
  {
    init_simple_test("S16292C1");
    S16292C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S16292C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16292C1)");
    check_field_offset(lv, s16292c1f0, 0, "S16292C1.s16292c1f0");
    check_field_offset(lv, s16292c1f1, ABISELECT(16,12), "S16292C1.s16292c1f1");
    check_field_offset(lv, s16292c1f2, ABISELECT(24,16), "S16292C1.s16292c1f2");
    check_field_offset(lv, s16292c1f3, ABISELECT(32,20), "S16292C1.s16292c1f3");
    check_field_offset(lv, s16292c1f4, ABISELECT(48,28), "S16292C1.s16292c1f4");
  }
}
static Arrange_To_Call_Me vS16292C1(Test_S16292C1, "S16292C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18244C1  {
  void *s18244c1f0[3];
  ::S16367C3 s18244c1f1;
  char s18244c1f2[2];
  void  mf18244c1(); // _ZN8S18244C19mf18244c1Ev
};
//SIG(1 S18244C1) C1{ m Fp[3] FC2{ m Fi FC3{ m Fp[2]}} Fc[2]}


void  S18244C1 ::mf18244c1(){}

static void Test_S18244C1()
{
  {
    init_simple_test("S18244C1");
    S18244C1 lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S18244C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18244C1)");
    check_field_offset(lv, s18244c1f0, 0, "S18244C1.s18244c1f0");
    check_field_offset(lv, s18244c1f1, ABISELECT(24,12), "S18244C1.s18244c1f1");
    check_field_offset(lv, s18244c1f2, ABISELECT(48,24), "S18244C1.s18244c1f2");
  }
}
static Arrange_To_Call_Me vS18244C1(Test_S18244C1, "S18244C1", ABISELECT(56,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20067C2  {
  void *s20067c2f0;
  virtual  ~S20067C2(); // _ZN8S20067C2D1Ev
  virtual void  v2(); // _ZN8S20067C22v2Ev
  virtual void  v3(); // _ZN8S20067C22v3Ev
  virtual void  v4(); // _ZN8S20067C22v4Ev
  virtual void  v5(); // _ZN8S20067C22v5Ev
  virtual void  v6(); // _ZN8S20067C22v6Ev
  virtual void  v7(); // _ZN8S20067C22v7Ev
  S20067C2(); // tgen
};
//SIG(-1 S20067C2) C1{ vd v1 v2 v3 v4 v5 v6 Fp}


 S20067C2 ::~S20067C2(){ note_dtor("S20067C2", this);}
void  S20067C2 ::v2(){vfunc_called(this, "_ZN8S20067C22v2Ev");}
void  S20067C2 ::v3(){vfunc_called(this, "_ZN8S20067C22v3Ev");}
void  S20067C2 ::v4(){vfunc_called(this, "_ZN8S20067C22v4Ev");}
void  S20067C2 ::v5(){vfunc_called(this, "_ZN8S20067C22v5Ev");}
void  S20067C2 ::v6(){vfunc_called(this, "_ZN8S20067C22v6Ev");}
void  S20067C2 ::v7(){vfunc_called(this, "_ZN8S20067C22v7Ev");}
S20067C2 ::S20067C2(){ note_ctor("S20067C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20067C2C1Ev();
extern void _ZN8S20067C2D1Ev();
Name_Map name_map_S20067C2[] = {
  NSPAIR(_ZN8S20067C2C1Ev),
  NSPAIR(_ZN8S20067C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20067C2[];
extern void _ZN8S20067C2D1Ev();
extern void _ZN8S20067C2D0Ev();
extern void _ZN8S20067C22v2Ev();
extern void _ZN8S20067C22v3Ev();
extern void _ZN8S20067C22v4Ev();
extern void _ZN8S20067C22v5Ev();
extern void _ZN8S20067C22v6Ev();
extern void _ZN8S20067C22v7Ev();
static  VTBL_ENTRY vtc_S20067C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20067C2[0]),
  (VTBL_ENTRY)&_ZN8S20067C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20067C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v7Ev,
};
extern VTBL_ENTRY _ZTI8S20067C2[];
extern  VTBL_ENTRY _ZTV8S20067C2[];
Class_Descriptor cd_S20067C2 = {  "S20067C2", // class name
  0,0,//no base classes
  &(vtc_S20067C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20067C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20067C2),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20067C1  : virtual S20067C2 {
  virtual  ~S20067C1(); // _ZN8S20067C1D2Ev
  virtual void  v1(); // _ZN8S20067C12v1Ev
  S20067C1(); // tgen
};
//SIG(1 S20067C1) C1{ VBC2{ vd v2 v3 v4 v5 v6 v7 Fp} vd v1}


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

static void Test_S20067C1()
{
  extern Class_Descriptor cd_S20067C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20067C1, buf);
    S20067C1 *dp, &lv = *(dp=new (buf) S20067C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20067C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20067C1)");
    check_base_class_offset(lv, (S20067C2*), ABISELECT(8,4), "S20067C1");
    test_class_info(&lv, &cd_S20067C1);
    dp->~S20067C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20067C1(Test_S20067C1, "S20067C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20067C1C1Ev();
extern void _ZN8S20067C1D2Ev();
Name_Map name_map_S20067C1[] = {
  NSPAIR(_ZN8S20067C1C1Ev),
  NSPAIR(_ZN8S20067C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20067C2;
extern VTBL_ENTRY _ZTI8S20067C2[];
extern  VTBL_ENTRY _ZTV8S20067C2[];
static Base_Class bases_S20067C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20067C2,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20067C1[];
extern void _ZN8S20067C1D1Ev();
extern void _ZN8S20067C1D0Ev();
extern void _ZN8S20067C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20067C1D1Ev,_ZTv0_n12_N8S20067C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20067C1D1Ev,_ZThn4_N8S20067C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20067C1D0Ev,_ZTv0_n12_N8S20067C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20067C1D0Ev,_ZThn4_N8S20067C1D0Ev)() __attribute__((weak));
extern void _ZN8S20067C22v2Ev();
extern void _ZN8S20067C22v3Ev();
extern void _ZN8S20067C22v4Ev();
extern void _ZN8S20067C22v5Ev();
extern void _ZN8S20067C22v6Ev();
extern void _ZN8S20067C22v7Ev();
static  VTBL_ENTRY vtc_S20067C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20067C1[0]),
  (VTBL_ENTRY)&_ZN8S20067C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20067C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20067C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20067C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20067C1D1Ev,_ZTv0_n12_N8S20067C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20067C1D0Ev,_ZTv0_n12_N8S20067C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20067C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20067C22v7Ev,
};
extern VTBL_ENTRY _ZTV8S20067C1[];
static  VTT_ENTRY vtt_S20067C1[] = {
  {&(_ZTV8S20067C1[3]),  3,23},
  {&(_ZTV8S20067C1[15]),  15,23},
};
extern VTBL_ENTRY _ZTI8S20067C1[];
extern  VTBL_ENTRY _ZTV8S20067C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20067C1[];
static VTBL_ENTRY alt_thunk_names168[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20067C1D0Ev,_ZTv0_n12_N8S20067C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20067C1D0Ev,_ZThn4_N8S20067C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20067C1D1Ev,_ZTv0_n12_N8S20067C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20067C1D1Ev,_ZThn4_N8S20067C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20067C1 = {  "S20067C1", // class name
  bases_S20067C1, 1,
  &(vtc_S20067C1[0]), // expected_vtbl_contents
  &(vtt_S20067C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20067C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20067C1),23, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20067C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names168,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16798C1  {
  int s16798c1f0;
  ::S2213C20_nt s16798c1f1;
  ::S3164C8_nt s16798c1f2;
  void  mf16798c1(); // _ZN8S16798C19mf16798c1Ev
};
//SIG(1 S16798C1) C1{ m Fi FC2{ m Fp Fi FC3{ m}} FC4{ m Fi}}


void  S16798C1 ::mf16798c1(){}

static void Test_S16798C1()
{
  {
    init_simple_test("S16798C1");
    S16798C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S16798C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16798C1)");
    check_field_offset(lv, s16798c1f0, 0, "S16798C1.s16798c1f0");
    check_field_offset(lv, s16798c1f1, ABISELECT(8,4), "S16798C1.s16798c1f1");
    check_field_offset(lv, s16798c1f2, ABISELECT(24,16), "S16798C1.s16798c1f2");
  }
}
static Arrange_To_Call_Me vS16798C1(Test_S16798C1, "S16798C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11861C2  {
  void *s11861c2f0[2];
  int s11861c2f1[5];
  char s11861c2f2[32];
};
//SIG(-1 S11861C2) C1{ Fp[2] Fi[5] Fc[32]}



static void Test_S11861C2()
{
  {
    init_simple_test("S11861C2");
    S11861C2 lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S11861C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11861C2)");
    check_field_offset(lv, s11861c2f0, 0, "S11861C2.s11861c2f0");
    check_field_offset(lv, s11861c2f1, ABISELECT(16,8), "S11861C2.s11861c2f1");
    check_field_offset(lv, s11861c2f2, ABISELECT(36,28), "S11861C2.s11861c2f2");
  }
}
static Arrange_To_Call_Me vS11861C2(Test_S11861C2, "S11861C2", ABISELECT(72,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11861C1  {
  ::S11861C2 s11861c1f0;
  void *s11861c1f1;
  char s11861c1f2[32];
};
//SIG(1 S11861C1) C1{ FC2{ Fp[2] Fi[5] Fc[32]} Fp Fc[32]}



static void Test_S11861C1()
{
  {
    init_simple_test("S11861C1");
    S11861C1 lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S11861C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11861C1)");
    check_field_offset(lv, s11861c1f0, 0, "S11861C1.s11861c1f0");
    check_field_offset(lv, s11861c1f1, ABISELECT(72,60), "S11861C1.s11861c1f1");
    check_field_offset(lv, s11861c1f2, ABISELECT(80,64), "S11861C1.s11861c1f2");
  }
}
static Arrange_To_Call_Me vS11861C1(Test_S11861C1, "S11861C1", ABISELECT(112,96));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10944C1  {
  char s10944c1f0[5];
  ::S4031C4_nt s10944c1f1;
  ::S4031C4_nt s10944c1f2;
  int s10944c1f3;
  char s10944c1f4[3];
  ::S4031C4_nt s10944c1f5;
};
//SIG(1 S10944C1) C1{ Fc[5] FC2{ Fp[2]} FC2 Fi Fc[3] FC2}



static void Test_S10944C1()
{
  {
    init_simple_test("S10944C1");
    S10944C1 lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S10944C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10944C1)");
    check_field_offset(lv, s10944c1f0, 0, "S10944C1.s10944c1f0");
    check_field_offset(lv, s10944c1f1, 8, "S10944C1.s10944c1f1");
    check_field_offset(lv, s10944c1f2, ABISELECT(24,16), "S10944C1.s10944c1f2");
    check_field_offset(lv, s10944c1f3, ABISELECT(40,24), "S10944C1.s10944c1f3");
    check_field_offset(lv, s10944c1f4, ABISELECT(44,28), "S10944C1.s10944c1f4");
    check_field_offset(lv, s10944c1f5, ABISELECT(48,32), "S10944C1.s10944c1f5");
  }
}
static Arrange_To_Call_Me vS10944C1(Test_S10944C1, "S10944C1", ABISELECT(64,40));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7383C3  : S5228C4_nt {
  virtual  ~S7383C3(); // _ZN7S7383C3D1Ev
  S7383C3(); // tgen
};
//SIG(-1 S7383C3) C1{ BC2{ vd m} vd}


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

static void Test_S7383C3()
{
  extern Class_Descriptor cd_S7383C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7383C3, buf);
    S7383C3 *dp, &lv = *(dp=new (buf) S7383C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7383C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7383C3)");
    check_base_class_offset(lv, (S5228C4_nt*), 0, "S7383C3");
    test_class_info(&lv, &cd_S7383C3);
    dp->~S7383C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7383C3(Test_S7383C3, "S7383C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7383C3C1Ev();
extern void _ZN7S7383C3D1Ev();
Name_Map name_map_S7383C3[] = {
  NSPAIR(_ZN7S7383C3C1Ev),
  NSPAIR(_ZN7S7383C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
static Base_Class bases_S7383C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7383C3[];
extern void _ZN7S7383C3D1Ev();
extern void _ZN7S7383C3D0Ev();
static  VTBL_ENTRY vtc_S7383C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7383C3[0]),
  (VTBL_ENTRY)&_ZN7S7383C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7383C3D0Ev,
};
extern VTBL_ENTRY _ZTI7S7383C3[];
extern  VTBL_ENTRY _ZTV7S7383C3[];
Class_Descriptor cd_S7383C3 = {  "S7383C3", // class name
  bases_S7383C3, 1,
  &(vtc_S7383C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7383C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7383C3),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  S7383C2  : virtual S7383C3 {
  int s7383c2f0;
  virtual  ~S7383C2(); // _ZN7S7383C2D2Ev
  S7383C2(); // tgen
};
//SIG(-1 S7383C2) C1{ VBC2{ BC3{ vd m} vd} vd Fi}


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

static void Test_S7383C2()
{
  extern Class_Descriptor cd_S7383C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7383C2, buf);
    S7383C2 *dp, &lv = *(dp=new (buf) S7383C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7383C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7383C2)");
    check_base_class_offset(lv, (S5228C4_nt*)(S7383C3*), 0, "S7383C2");
    check_base_class_offset(lv, (S7383C3*), 0, "S7383C2");
    check_field_offset(lv, s7383c2f0, ABISELECT(8,4), "S7383C2.s7383c2f0");
    test_class_info(&lv, &cd_S7383C2);
    dp->~S7383C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7383C2(Test_S7383C2, "S7383C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7383C2C1Ev();
extern void _ZN7S7383C2D2Ev();
Name_Map name_map_S7383C2[] = {
  NSPAIR(_ZN7S7383C2C1Ev),
  NSPAIR(_ZN7S7383C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S7383C3;
extern VTBL_ENTRY _ZTI7S7383C3[];
extern  VTBL_ENTRY _ZTV7S7383C3[];
static Base_Class bases_S7383C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7383C3,    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 _ZTI7S7383C2[];
extern void _ZN7S7383C2D1Ev();
extern void _ZN7S7383C2D0Ev();
static  VTBL_ENTRY vtc_S7383C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7383C2[0]),
  (VTBL_ENTRY)&_ZN7S7383C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7383C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S7383C2[];
static  VTT_ENTRY vtt_S7383C2[] = {
  {&(_ZTV7S7383C2[4]),  4,6},
  {&(_ZTV7S7383C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7383C2[];
extern  VTBL_ENTRY _ZTV7S7383C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7383C2[];
Class_Descriptor cd_S7383C2 = {  "S7383C2", // class name
  bases_S7383C2, 2,
  &(vtc_S7383C2[0]), // expected_vtbl_contents
  &(vtt_S7383C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7383C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7383C2),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7383C2),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  S7383C1  : S7383C2 {
  __tsi64 s7383c1f0;
  virtual  ~S7383C1(); // _ZN7S7383C1D2Ev
  S7383C1(); // tgen
};
//SIG(1 S7383C1) C1{ BC2{ VBC3{ BC4{ vd m} vd} vd Fi} vd FL}


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

static void Test_S7383C1()
{
  extern Class_Descriptor cd_S7383C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7383C1, buf);
    S7383C1 *dp, &lv = *(dp=new (buf) S7383C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7383C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7383C1)");
    check_base_class_offset(lv, (S5228C4_nt*)(S7383C3*), 0, "S7383C1");
    check_base_class_offset(lv, (S7383C3*)(S7383C2*), 0, "S7383C1");
    check_base_class_offset(lv, (S7383C2*), 0, "S7383C1");
    check_field_offset(lv, s7383c1f0, ABISELECT(16,8), "S7383C1.s7383c1f0");
    test_class_info(&lv, &cd_S7383C1);
    dp->~S7383C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7383C1(Test_S7383C1, "S7383C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7383C1C1Ev();
extern void _ZN7S7383C1D2Ev();
Name_Map name_map_S7383C1[] = {
  NSPAIR(_ZN7S7383C1C1Ev),
  NSPAIR(_ZN7S7383C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5228C4_nt;
extern VTBL_ENTRY _ZTI10S5228C4_nt[];
extern  VTBL_ENTRY _ZTV10S5228C4_nt[];
extern Class_Descriptor cd_S7383C3;
extern VTBL_ENTRY _ZTI7S7383C3[];
extern  VTBL_ENTRY _ZTV7S7383C3[];
extern Class_Descriptor cd_S7383C2;
extern VTBL_ENTRY _ZTI7S7383C2[];
extern  VTBL_ENTRY _ZTV7S7383C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7383C2[];
static Base_Class bases_S7383C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5228C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7383C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7383C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7383C1[];
extern void _ZN7S7383C1D1Ev();
extern void _ZN7S7383C1D0Ev();
static  VTBL_ENTRY vtc_S7383C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7383C1[0]),
  (VTBL_ENTRY)&_ZN7S7383C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7383C1D0Ev,
};
extern VTBL_ENTRY _ZTV7S7383C1[];
extern void _ZN7S7383C2D1Ev();
extern void _ZN7S7383C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7383C2__7S7383C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7383C2[0]),
  (VTBL_ENTRY)&_ZN7S7383C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7383C2D0Ev,
};
static  VTT_ENTRY vtt_S7383C1[] = {
  {&(_ZTV7S7383C1[4]),  4,6},
  {&(_tg__ZTV7S7383C2__7S7383C1[4]),  4,6},
  {&(_tg__ZTV7S7383C2__7S7383C1[4]),  4,6},
  {&(_ZTV7S7383C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7383C1[];
extern  VTBL_ENTRY _ZTV7S7383C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7383C1[];
Class_Descriptor cd_S7383C1 = {  "S7383C1", // class name
  bases_S7383C1, 3,
  &(vtc_S7383C1[0]), // expected_vtbl_contents
  &(vtt_S7383C1[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7383C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7383C1),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7383C1),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16639C2_nt  : S12048C5_nt {
};
//SIG(-1 S16639C2_nt) C1{ BC2{ m Fi[4]}}



//skip512 S16639C2_nt

#else // __cplusplus

extern Class_Descriptor cd_S12048C5_nt;
static Base_Class bases_S16639C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S12048C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S16639C1  {
  int s16639c1f0;
  ::S16639C2_nt s16639c1f1;
  ::S16639C2_nt s16639c1f2;
  void  mf16639c1(); // _ZN8S16639C19mf16639c1Ev
};
//SIG(1 S16639C1) C1{ m Fi FC2{ BC3{ m Fi[4]}} FC2}


void  S16639C1 ::mf16639c1(){}

static void Test_S16639C1()
{
  {
    init_simple_test("S16639C1");
    S16639C1 lv;
    check2(sizeof(lv), 36, "sizeof(S16639C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16639C1)");
    check_field_offset(lv, s16639c1f0, 0, "S16639C1.s16639c1f0");
    check_field_offset(lv, s16639c1f1, 4, "S16639C1.s16639c1f1");
    check_field_offset(lv, s16639c1f2, 20, "S16639C1.s16639c1f2");
  }
}
static Arrange_To_Call_Me vS16639C1(Test_S16639C1, "S16639C1", 36);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17990C1  {
  void *s17990c1f0[2];
  ::S16367C3 s17990c1f1;
  void  mf17990c1(); // _ZN8S17990C19mf17990c1Ev
};
//SIG(1 S17990C1) C1{ m Fp[2] FC2{ m Fi FC3{ m Fp[2]}}}


void  S17990C1 ::mf17990c1(){}

static void Test_S17990C1()
{
  {
    init_simple_test("S17990C1");
    S17990C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S17990C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17990C1)");
    check_field_offset(lv, s17990c1f0, 0, "S17990C1.s17990c1f0");
    check_field_offset(lv, s17990c1f1, ABISELECT(16,8), "S17990C1.s17990c1f1");
  }
}
static Arrange_To_Call_Me vS17990C1(Test_S17990C1, "S17990C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17528C2  {
  int s17528c2f0;
  short s17528c2f1[4];
  int s17528c2f2[2];
};
//SIG(-1 S17528C2) C1{ Fi Fs[4] Fi[2]}



static void Test_S17528C2()
{
  {
    init_simple_test("S17528C2");
    S17528C2 lv;
    check2(sizeof(lv), 20, "sizeof(S17528C2)");
    check2(__alignof__(lv), 4, "__alignof__(S17528C2)");
    check_field_offset(lv, s17528c2f0, 0, "S17528C2.s17528c2f0");
    check_field_offset(lv, s17528c2f1, 4, "S17528C2.s17528c2f1");
    check_field_offset(lv, s17528c2f2, 12, "S17528C2.s17528c2f2");
  }
}
static Arrange_To_Call_Me vS17528C2(Test_S17528C2, "S17528C2", 20);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17528C1  {
  void *s17528c1f0;
  ::S17528C2 s17528c1f1;
  int s17528c1f2[2];
  void  mf17528c1(); // _ZN8S17528C19mf17528c1Ev
};
//SIG(1 S17528C1) C1{ m Fp FC2{ Fi Fs[4] Fi[2]} Fi[2]}


void  S17528C1 ::mf17528c1(){}

static void Test_S17528C1()
{
  {
    init_simple_test("S17528C1");
    S17528C1 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S17528C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17528C1)");
    check_field_offset(lv, s17528c1f0, 0, "S17528C1.s17528c1f0");
    check_field_offset(lv, s17528c1f1, ABISELECT(8,4), "S17528C1.s17528c1f1");
    check_field_offset(lv, s17528c1f2, ABISELECT(28,24), "S17528C1.s17528c1f2");
  }
}
static Arrange_To_Call_Me vS17528C1(Test_S17528C1, "S17528C1", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13453C2  {
  int s13453c2f0;
  char s13453c2f1[32];
  int s13453c2f2[2];
};
//SIG(1 S13453C2) C1{ Fi Fc[32] Fi[2]}



static void Test_S13453C2()
{
  {
    init_simple_test("S13453C2");
    S13453C2 lv;
    check2(sizeof(lv), 44, "sizeof(S13453C2)");
    check2(__alignof__(lv), 4, "__alignof__(S13453C2)");
    check_field_offset(lv, s13453c2f0, 0, "S13453C2.s13453c2f0");
    check_field_offset(lv, s13453c2f1, 4, "S13453C2.s13453c2f1");
    check_field_offset(lv, s13453c2f2, 36, "S13453C2.s13453c2f2");
  }
}
static Arrange_To_Call_Me vS13453C2(Test_S13453C2, "S13453C2", 44);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13453C1  {
  int s13453c1f0[4];
  ::S13453C2 s13453c1f1[8];
};
//SIG(1 S13453C1) C1{ Fi[4] FC2{ Fi Fc[32] Fi[2]}[8]}



static void Test_S13453C1()
{
  {
    init_simple_test("S13453C1");
    S13453C1 lv;
    check2(sizeof(lv), 368, "sizeof(S13453C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13453C1)");
    check_field_offset(lv, s13453c1f0, 0, "S13453C1.s13453c1f0");
    check_field_offset(lv, s13453c1f1, 16, "S13453C1.s13453c1f1");
  }
}
static Arrange_To_Call_Me vS13453C1(Test_S13453C1, "S13453C1", 368);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4604C3  {
  virtual  ~S4604C3(); // _ZN7S4604C3D1Ev
  virtual void  v2(); // _ZN7S4604C32v2Ev
  S4604C3(); // tgen
};
//SIG(-1 S4604C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S4604C3C1Ev();
extern void _ZN7S4604C3D1Ev();
Name_Map name_map_S4604C3[] = {
  NSPAIR(_ZN7S4604C3C1Ev),
  NSPAIR(_ZN7S4604C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4604C3[];
extern void _ZN7S4604C3D1Ev();
extern void _ZN7S4604C3D0Ev();
extern void _ZN7S4604C32v2Ev();
static  VTBL_ENTRY vtc_S4604C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4604C3[0]),
  (VTBL_ENTRY)&_ZN7S4604C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4604C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4604C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4604C3[];
extern  VTBL_ENTRY _ZTV7S4604C3[];
Class_Descriptor cd_S4604C3 = {  "S4604C3", // class name
  0,0,//no base classes
  &(vtc_S4604C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4604C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4604C3),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  S4604C2_nt  : S4604C3 {
  virtual  ~S4604C2_nt(); // _ZN10S4604C2_ntD1Ev
  S4604C2_nt(); // tgen
};
//SIG(-1 S4604C2_nt) C1{ BC2{ vd v1} vd}


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

//skip512 S4604C2_nt

#else // __cplusplus

extern void _ZN10S4604C2_ntC1Ev();
extern void _ZN10S4604C2_ntD1Ev();
Name_Map name_map_S4604C2_nt[] = {
  NSPAIR(_ZN10S4604C2_ntC1Ev),
  NSPAIR(_ZN10S4604C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4604C3;
extern VTBL_ENTRY _ZTI7S4604C3[];
extern  VTBL_ENTRY _ZTV7S4604C3[];
static Base_Class bases_S4604C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4604C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4604C2_nt[];
extern void _ZN10S4604C2_ntD1Ev();
extern void _ZN10S4604C2_ntD0Ev();
extern void _ZN7S4604C32v2Ev();
static  VTBL_ENTRY vtc_S4604C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4604C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4604C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4604C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S4604C32v2Ev,
};
extern VTBL_ENTRY _ZTI10S4604C2_nt[];
VTBL_ENTRY *P__ZTI10S4604C2_nt = _ZTI10S4604C2_nt; 
extern  VTBL_ENTRY _ZTV10S4604C2_nt[];
Class_Descriptor cd_S4604C2_nt = {  "S4604C2_nt", // class name
  bases_S4604C2_nt, 1,
  &(vtc_S4604C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4604C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4604C2_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4604C1  : S4604C2_nt {
  void *s4604c1f0;
  char s4604c1f1;
  virtual  ~S4604C1(); // _ZN7S4604C1D1Ev
  virtual void  v1(); // _ZN7S4604C12v1Ev
  S4604C1(); // tgen
};
//SIG(1 S4604C1) C1{ BC2{ BC3{ vd v2} vd} vd v1 Fp Fc}


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

static void Test_S4604C1()
{
  extern Class_Descriptor cd_S4604C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4604C1, buf);
    S4604C1 *dp, &lv = *(dp=new (buf) S4604C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4604C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4604C1)");
    check_base_class_offset(lv, (S4604C3*)(S4604C2_nt*), 0, "S4604C1");
    check_base_class_offset(lv, (S4604C2_nt*), 0, "S4604C1");
    check_field_offset(lv, s4604c1f0, ABISELECT(8,4), "S4604C1.s4604c1f0");
    check_field_offset(lv, s4604c1f1, ABISELECT(16,8), "S4604C1.s4604c1f1");
    test_class_info(&lv, &cd_S4604C1);
    dp->~S4604C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4604C1(Test_S4604C1, "S4604C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S4604C1C1Ev();
extern void _ZN7S4604C1D1Ev();
Name_Map name_map_S4604C1[] = {
  NSPAIR(_ZN7S4604C1C1Ev),
  NSPAIR(_ZN7S4604C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4604C3;
extern VTBL_ENTRY _ZTI7S4604C3[];
extern  VTBL_ENTRY _ZTV7S4604C3[];
extern Class_Descriptor cd_S4604C2_nt;
extern VTBL_ENTRY _ZTI10S4604C2_nt[];
extern  VTBL_ENTRY _ZTV10S4604C2_nt[];
static Base_Class bases_S4604C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4604C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4604C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4604C1[];
extern void _ZN7S4604C1D1Ev();
extern void _ZN7S4604C1D0Ev();
extern void _ZN7S4604C32v2Ev();
extern void _ZN7S4604C12v1Ev();
static  VTBL_ENTRY vtc_S4604C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4604C1[0]),
  (VTBL_ENTRY)&_ZN7S4604C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4604C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4604C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4604C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4604C1[];
extern  VTBL_ENTRY _ZTV7S4604C1[];
Class_Descriptor cd_S4604C1 = {  "S4604C1", // class name
  bases_S4604C1, 2,
  &(vtc_S4604C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S4604C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4604C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21805C1  {
  void *s21805c1f0[2];
  int s21805c1f1;
  ::S3164C31_nt s21805c1f2;
  int s21805c1f3;
  void *s21805c1f4[2];
  void  mf21805c1(); // _ZN8S21805C19mf21805c1Ev
  virtual  ~S21805C1(); // _ZN8S21805C1D1Ev
  S21805C1(); // tgen
};
//SIG(1 S21805C1) C1{ vd m Fp[2] Fi FC2{ m} Fi Fp[2]}


void  S21805C1 ::mf21805c1(){}
 S21805C1 ::~S21805C1(){ note_dtor("S21805C1", this);}
S21805C1 ::S21805C1(){ note_ctor("S21805C1", this);} // tgen

static void Test_S21805C1()
{
  extern Class_Descriptor cd_S21805C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S21805C1, buf);
    S21805C1 *dp, &lv = *(dp=new (buf) S21805C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S21805C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21805C1)");
    check_field_offset(lv, s21805c1f0, ABISELECT(8,4), "S21805C1.s21805c1f0");
    check_field_offset(lv, s21805c1f1, ABISELECT(24,12), "S21805C1.s21805c1f1");
    check_field_offset(lv, s21805c1f2, ABISELECT(28,16), "S21805C1.s21805c1f2");
    check_field_offset(lv, s21805c1f3, ABISELECT(32,20), "S21805C1.s21805c1f3");
    check_field_offset(lv, s21805c1f4, ABISELECT(40,24), "S21805C1.s21805c1f4");
    test_class_info(&lv, &cd_S21805C1);
    dp->~S21805C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21805C1(Test_S21805C1, "S21805C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S21805C1C1Ev();
extern void _ZN8S21805C1D1Ev();
Name_Map name_map_S21805C1[] = {
  NSPAIR(_ZN8S21805C1C1Ev),
  NSPAIR(_ZN8S21805C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21805C1[];
extern void _ZN8S21805C1D1Ev();
extern void _ZN8S21805C1D0Ev();
static  VTBL_ENTRY vtc_S21805C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21805C1[0]),
  (VTBL_ENTRY)&_ZN8S21805C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21805C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21805C1[];
extern  VTBL_ENTRY _ZTV8S21805C1[];
Class_Descriptor cd_S21805C1 = {  "S21805C1", // class name
  0,0,//no base classes
  &(vtc_S21805C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S21805C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21805C1),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  S17883C3_nt  {
  void *s17883c3f0;
  void  mf17883c3(); // _ZN11S17883C3_nt9mf17883c3Ev
  virtual  ~S17883C3_nt(); // _ZN11S17883C3_ntD1Ev
  S17883C3_nt(); // tgen
};
//SIG(-1 S17883C3_nt) C1{ vd m Fp}


void  S17883C3_nt ::mf17883c3(){}
 S17883C3_nt ::~S17883C3_nt(){ note_dtor("S17883C3_nt", this);}
S17883C3_nt ::S17883C3_nt(){ note_ctor("S17883C3_nt", this);} // tgen

//skip512 S17883C3_nt

#else // __cplusplus

extern void _ZN11S17883C3_ntC1Ev();
extern void _ZN11S17883C3_ntD1Ev();
Name_Map name_map_S17883C3_nt[] = {
  NSPAIR(_ZN11S17883C3_ntC1Ev),
  NSPAIR(_ZN11S17883C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S17883C3_nt[];
extern void _ZN11S17883C3_ntD1Ev();
extern void _ZN11S17883C3_ntD0Ev();
static  VTBL_ENTRY vtc_S17883C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S17883C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S17883C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S17883C3_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S17883C3_nt[];
VTBL_ENTRY *P__ZTI11S17883C3_nt = _ZTI11S17883C3_nt; 
extern  VTBL_ENTRY _ZTV11S17883C3_nt[];
Class_Descriptor cd_S17883C3_nt = {  "S17883C3_nt", // class name
  0,0,//no base classes
  &(vtc_S17883C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S17883C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S17883C3_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  S17883C2  : S17883C3_nt {
  virtual  ~S17883C2(); // _ZN8S17883C2D1Ev
  S17883C2(); // tgen
};
//SIG(-1 S17883C2) C1{ BC2{ vd m Fp} vd}


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

static void Test_S17883C2()
{
  extern Class_Descriptor cd_S17883C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S17883C2, buf);
    S17883C2 *dp, &lv = *(dp=new (buf) S17883C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S17883C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17883C2)");
    check_base_class_offset(lv, (S17883C3_nt*), 0, "S17883C2");
    test_class_info(&lv, &cd_S17883C2);
    dp->~S17883C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS17883C2(Test_S17883C2, "S17883C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S17883C2C1Ev();
extern void _ZN8S17883C2D1Ev();
Name_Map name_map_S17883C2[] = {
  NSPAIR(_ZN8S17883C2C1Ev),
  NSPAIR(_ZN8S17883C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17883C3_nt;
extern VTBL_ENTRY _ZTI11S17883C3_nt[];
extern  VTBL_ENTRY _ZTV11S17883C3_nt[];
static Base_Class bases_S17883C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S17883C2[];
extern void _ZN8S17883C2D1Ev();
extern void _ZN8S17883C2D0Ev();
static  VTBL_ENTRY vtc_S17883C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S17883C2[0]),
  (VTBL_ENTRY)&_ZN8S17883C2D1Ev,
  (VTBL_ENTRY)&_ZN8S17883C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S17883C2[];
extern  VTBL_ENTRY _ZTV8S17883C2[];
Class_Descriptor cd_S17883C2 = {  "S17883C2", // class name
  bases_S17883C2, 1,
  &(vtc_S17883C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S17883C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S17883C2),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  S17883C1  {
  void *s17883c1f0[2];
  ::S17883C2 s17883c1f1;
  void  mf17883c1(); // _ZN8S17883C19mf17883c1Ev
};
//SIG(1 S17883C1) C1{ m Fp[2] FC2{ BC3{ vd m Fp} vd}}


void  S17883C1 ::mf17883c1(){}

static void Test_S17883C1()
{
  {
    init_simple_test("S17883C1");
    S17883C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S17883C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17883C1)");
    check_field_offset(lv, s17883c1f0, 0, "S17883C1.s17883c1f0");
    check_field_offset(lv, s17883c1f1, ABISELECT(16,8), "S17883C1.s17883c1f1");
  }
}
static Arrange_To_Call_Me vS17883C1(Test_S17883C1, "S17883C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5929C2  {
  __tsi64 s5929c2f0[20];
  int s5929c2f1;
  __tsi64 s5929c2f2[2];
  void  mf5929c2(); // _ZN7S5929C28mf5929c2Ev
};
//SIG(-1 S5929C2) C1{ m FL[20] Fi FL[2]}


void  S5929C2 ::mf5929c2(){}

static void Test_S5929C2()
{
  {
    init_simple_test("S5929C2");
    S5929C2 lv;
    check2(sizeof(lv), ABISELECT(184,180), "sizeof(S5929C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5929C2)");
    check_field_offset(lv, s5929c2f0, 0, "S5929C2.s5929c2f0");
    check_field_offset(lv, s5929c2f1, 160, "S5929C2.s5929c2f1");
    check_field_offset(lv, s5929c2f2, ABISELECT(168,164), "S5929C2.s5929c2f2");
  }
}
static Arrange_To_Call_Me vS5929C2(Test_S5929C2, "S5929C2", ABISELECT(184,180));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5929C1  : S5929C2 {
  __tsi64 s5929c1f0[2];
};
//SIG(1 S5929C1) C1{ BC2{ m FL[20] Fi FL[2]} FL[2]}



static void Test_S5929C1()
{
  extern Class_Descriptor cd_S5929C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,50)];
    init_test(&cd_S5929C1, buf);
    S5929C1 &lv = *(new (buf) S5929C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,196), "sizeof(S5929C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5929C1)");
    check_base_class_offset(lv, (S5929C2*), 0, "S5929C1");
    check_field_offset(lv, s5929c1f0, ABISELECT(184,180), "S5929C1.s5929c1f0");
    test_class_info(&lv, &cd_S5929C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5929C1(Test_S5929C1, "S5929C1", ABISELECT(200,196));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S10742C1  {
  char s10742c1f0[21];
  int s10742c1f1[2];
  char s10742c1f2[288];
  int s10742c1f3;
  char s10742c1f4;
};
//SIG(1 S10742C1) C1{ Fc[21] Fi[2] Fc[288] Fi Fc}



static void Test_S10742C1()
{
  {
    init_simple_test("S10742C1");
    S10742C1 lv;
    check2(sizeof(lv), 328, "sizeof(S10742C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10742C1)");
    check_field_offset(lv, s10742c1f0, 0, "S10742C1.s10742c1f0");
    check_field_offset(lv, s10742c1f1, 24, "S10742C1.s10742c1f1");
    check_field_offset(lv, s10742c1f2, 32, "S10742C1.s10742c1f2");
    check_field_offset(lv, s10742c1f3, 320, "S10742C1.s10742c1f3");
    check_field_offset(lv, s10742c1f4, 324, "S10742C1.s10742c1f4");
  }
}
static Arrange_To_Call_Me vS10742C1(Test_S10742C1, "S10742C1", 328);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8086C1  : S13735C5_nt {
  short s8086c1f0;
  int s8086c1f1;
  short s8086c1f2;
  int s8086c1f3[2];
  ~S8086C1(); // tgen
  S8086C1(); // tgen
};
//SIG(1 S8086C1) C1{ BC2{ vd m Fi} Fs Fi Fs Fi[2]}


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

static void Test_S8086C1()
{
  extern Class_Descriptor cd_S8086C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S8086C1, buf);
    S8086C1 *dp, &lv = *(dp=new (buf) S8086C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S8086C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8086C1)");
    check_base_class_offset(lv, (S13735C5_nt*), 0, "S8086C1");
    check_field_offset(lv, s8086c1f0, ABISELECT(12,8), "S8086C1.s8086c1f0");
    check_field_offset(lv, s8086c1f1, ABISELECT(16,12), "S8086C1.s8086c1f1");
    check_field_offset(lv, s8086c1f2, ABISELECT(20,16), "S8086C1.s8086c1f2");
    check_field_offset(lv, s8086c1f3, ABISELECT(24,20), "S8086C1.s8086c1f3");
    test_class_info(&lv, &cd_S8086C1);
    dp->~S8086C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8086C1(Test_S8086C1, "S8086C1", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN7S8086C1C1Ev();
extern void _ZN7S8086C1D1Ev();
Name_Map name_map_S8086C1[] = {
  NSPAIR(_ZN7S8086C1C1Ev),
  NSPAIR(_ZN7S8086C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S13735C5_nt;
extern VTBL_ENTRY _ZTI11S13735C5_nt[];
extern  VTBL_ENTRY _ZTV11S13735C5_nt[];
static Base_Class bases_S8086C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S13735C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8086C1[];
extern void _ZN7S8086C1D1Ev();
extern void _ZN7S8086C1D0Ev();
static  VTBL_ENTRY vtc_S8086C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8086C1[0]),
  (VTBL_ENTRY)&_ZN7S8086C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8086C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8086C1[];
extern  VTBL_ENTRY _ZTV7S8086C1[];
Class_Descriptor cd_S8086C1 = {  "S8086C1", // class name
  bases_S8086C1, 1,
  &(vtc_S8086C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI7S8086C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8086C1),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  S21887C1  {
  ::S3164C28 s21887c1f0;
  virtual  ~S21887C1(); // _ZN8S21887C1D1Ev
  virtual void  v1(); // _ZN8S21887C12v1Ev
  S21887C1(); // tgen
};
//SIG(1 S21887C1) C1{ vd v1 FC2{ BC3{ m Fp Fi[2]}}}


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

static void Test_S21887C1()
{
  extern Class_Descriptor cd_S21887C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21887C1, buf);
    S21887C1 *dp, &lv = *(dp=new (buf) S21887C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21887C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21887C1)");
    check_field_offset(lv, s21887c1f0, ABISELECT(8,4), "S21887C1.s21887c1f0");
    test_class_info(&lv, &cd_S21887C1);
    dp->~S21887C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21887C1(Test_S21887C1, "S21887C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S21887C1C1Ev();
extern void _ZN8S21887C1D1Ev();
Name_Map name_map_S21887C1[] = {
  NSPAIR(_ZN8S21887C1C1Ev),
  NSPAIR(_ZN8S21887C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21887C1[];
extern void _ZN8S21887C1D1Ev();
extern void _ZN8S21887C1D0Ev();
extern void _ZN8S21887C12v1Ev();
static  VTBL_ENTRY vtc_S21887C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21887C1[0]),
  (VTBL_ENTRY)&_ZN8S21887C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21887C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21887C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S21887C1[];
extern  VTBL_ENTRY _ZTV8S21887C1[];
Class_Descriptor cd_S21887C1 = {  "S21887C1", // class name
  0,0,//no base classes
  &(vtc_S21887C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S21887C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21887C1),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16734C1  {
  int s16734c1f0;
  ::S3164C4_nt s16734c1f1;
  char s16734c1f2;
  int s16734c1f3[3];
  void  mf16734c1(); // _ZN8S16734C19mf16734c1Ev
};
//SIG(1 S16734C1) C1{ m Fi FC2{ m Fi[2]} Fc Fi[3]}


void  S16734C1 ::mf16734c1(){}

static void Test_S16734C1()
{
  {
    init_simple_test("S16734C1");
    S16734C1 lv;
    check2(sizeof(lv), 28, "sizeof(S16734C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16734C1)");
    check_field_offset(lv, s16734c1f0, 0, "S16734C1.s16734c1f0");
    check_field_offset(lv, s16734c1f1, 4, "S16734C1.s16734c1f1");
    check_field_offset(lv, s16734c1f2, 12, "S16734C1.s16734c1f2");
    check_field_offset(lv, s16734c1f3, 16, "S16734C1.s16734c1f3");
  }
}
static Arrange_To_Call_Me vS16734C1(Test_S16734C1, "S16734C1", 28);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12002C3_nt  {
  __tsi64 s12002c3f0;
  void  mf12002c3(); // _ZN11S12002C3_nt9mf12002c3Ev
};
//SIG(-1 S12002C3_nt) C1{ m FL}


void  S12002C3_nt ::mf12002c3(){}

//skip512 S12002C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12002C2_nt  {
  ::S12002C3_nt s12002c2f0;
  void  mf12002c2(); // _ZN11S12002C2_nt9mf12002c2Ev
};
//SIG(-1 S12002C2_nt) C1{ m FC2{ m FL}}


void  S12002C2_nt ::mf12002c2(){}

//skip512 S12002C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12002C1  {
  ::S12002C2_nt s12002c1f0;
  ::S12002C2_nt s12002c1f1;
  int s12002c1f2[2];
};
//SIG(1 S12002C1) C1{ FC2{ m FC3{ m FL}} FC2 Fi[2]}



static void Test_S12002C1()
{
  {
    init_simple_test("S12002C1");
    S12002C1 lv;
    check2(sizeof(lv), 24, "sizeof(S12002C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12002C1)");
    check_field_offset(lv, s12002c1f0, 0, "S12002C1.s12002c1f0");
    check_field_offset(lv, s12002c1f1, 8, "S12002C1.s12002c1f1");
    check_field_offset(lv, s12002c1f2, 16, "S12002C1.s12002c1f2");
  }
}
static Arrange_To_Call_Me vS12002C1(Test_S12002C1, "S12002C1", 24);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14063C1  {
  void *s14063c1f0;
  char s14063c1f1[1287];
  int s14063c1f2[13];
  void *s14063c1f3[2];
};
//SIG(1 S14063C1) C1{ Fp Fc[1287] Fi[13] Fp[2]}



static void Test_S14063C1()
{
  {
    init_simple_test("S14063C1");
    S14063C1 lv;
    check2(sizeof(lv), ABISELECT(1368,1352), "sizeof(S14063C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14063C1)");
    check_field_offset(lv, s14063c1f0, 0, "S14063C1.s14063c1f0");
    check_field_offset(lv, s14063c1f1, ABISELECT(8,4), "S14063C1.s14063c1f1");
    check_field_offset(lv, s14063c1f2, ABISELECT(1296,1292), "S14063C1.s14063c1f2");
    check_field_offset(lv, s14063c1f3, ABISELECT(1352,1344), "S14063C1.s14063c1f3");
  }
}
static Arrange_To_Call_Me vS14063C1(Test_S14063C1, "S14063C1", ABISELECT(1368,1352));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16050C1  {
  ::S12048C6_nt s16050c1f0;
  int s16050c1f1[2];
  ::S12048C6_nt s16050c1f2;
  void  mf16050c1(); // _ZN8S16050C19mf16050c1Ev
};
//SIG(1 S16050C1) C1{ m FC2{ m Fi[3]} Fi[2] FC2}


void  S16050C1 ::mf16050c1(){}

static void Test_S16050C1()
{
  {
    init_simple_test("S16050C1");
    S16050C1 lv;
    check2(sizeof(lv), 32, "sizeof(S16050C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16050C1)");
    check_field_offset(lv, s16050c1f0, 0, "S16050C1.s16050c1f0");
    check_field_offset(lv, s16050c1f1, 12, "S16050C1.s16050c1f1");
    check_field_offset(lv, s16050c1f2, 20, "S16050C1.s16050c1f2");
  }
}
static Arrange_To_Call_Me vS16050C1(Test_S16050C1, "S16050C1", 32);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13361C1  {
  int s13361c1f0[3];
  long s13361c1f1;
  void *s13361c1f2[7];
  int s13361c1f3[7];
  void *s13361c1f4;
};
//SIG(1 S13361C1) C1{ Fi[3] Fl Fp[7] Fi[7] Fp}



static void Test_S13361C1()
{
  {
    init_simple_test("S13361C1");
    S13361C1 lv;
    check2(sizeof(lv), ABISELECT(120,76), "sizeof(S13361C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13361C1)");
    check_field_offset(lv, s13361c1f0, 0, "S13361C1.s13361c1f0");
    check_field_offset(lv, s13361c1f1, ABISELECT(16,12), "S13361C1.s13361c1f1");
    check_field_offset(lv, s13361c1f2, ABISELECT(24,16), "S13361C1.s13361c1f2");
    check_field_offset(lv, s13361c1f3, ABISELECT(80,44), "S13361C1.s13361c1f3");
    check_field_offset(lv, s13361c1f4, ABISELECT(112,72), "S13361C1.s13361c1f4");
  }
}
static Arrange_To_Call_Me vS13361C1(Test_S13361C1, "S13361C1", ABISELECT(120,76));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11083C1  {
  ::S3164C28 s11083c1f0;
  ::S3164C28 s11083c1f1;
};
//SIG(1 S11083C1) C1{ FC2{ BC3{ m Fp Fi[2]}} FC2}



static void Test_S11083C1()
{
  {
    init_simple_test("S11083C1");
    S11083C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S11083C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11083C1)");
    check_field_offset(lv, s11083c1f0, 0, "S11083C1.s11083c1f0");
    check_field_offset(lv, s11083c1f1, ABISELECT(16,12), "S11083C1.s11083c1f1");
  }
}
static Arrange_To_Call_Me vS11083C1(Test_S11083C1, "S11083C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18748C1  {
  char  :0;
  virtual void  v1(); // _ZN8S18748C12v1Ev
  virtual void  v2(); // _ZN8S18748C12v2Ev
  virtual void  v3(); // _ZN8S18748C12v3Ev
  virtual void  v4(); // _ZN8S18748C12v4Ev
  virtual void  v5(); // _ZN8S18748C12v5Ev
  virtual void  v6(); // _ZN8S18748C12v6Ev
  ~S18748C1(); // tgen
  S18748C1(); // tgen
};
//SIG(1 S18748C1) C1{ v1 v2 v3 v4 v5 v6 Fc:0}


void  S18748C1 ::v1(){vfunc_called(this, "_ZN8S18748C12v1Ev");}
void  S18748C1 ::v2(){vfunc_called(this, "_ZN8S18748C12v2Ev");}
void  S18748C1 ::v3(){vfunc_called(this, "_ZN8S18748C12v3Ev");}
void  S18748C1 ::v4(){vfunc_called(this, "_ZN8S18748C12v4Ev");}
void  S18748C1 ::v5(){vfunc_called(this, "_ZN8S18748C12v5Ev");}
void  S18748C1 ::v6(){vfunc_called(this, "_ZN8S18748C12v6Ev");}
S18748C1 ::~S18748C1(){ note_dtor("S18748C1", this);} // tgen
S18748C1 ::S18748C1(){ note_ctor("S18748C1", this);} // tgen

static void Test_S18748C1()
{
  extern Class_Descriptor cd_S18748C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18748C1, buf);
    S18748C1 *dp, &lv = *(dp=new (buf) S18748C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18748C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18748C1)");
    test_class_info(&lv, &cd_S18748C1);
    dp->~S18748C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18748C1(Test_S18748C1, "S18748C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18748C1C1Ev();
extern void _ZN8S18748C1D1Ev();
Name_Map name_map_S18748C1[] = {
  NSPAIR(_ZN8S18748C1C1Ev),
  NSPAIR(_ZN8S18748C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18748C1[];
extern void _ZN8S18748C12v1Ev();
extern void _ZN8S18748C12v2Ev();
extern void _ZN8S18748C12v3Ev();
extern void _ZN8S18748C12v4Ev();
extern void _ZN8S18748C12v5Ev();
extern void _ZN8S18748C12v6Ev();
static  VTBL_ENTRY vtc_S18748C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18748C1[0]),
  (VTBL_ENTRY)&_ZN8S18748C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18748C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18748C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18748C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18748C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18748C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18748C1[];
extern  VTBL_ENTRY _ZTV8S18748C1[];
Class_Descriptor cd_S18748C1 = {  "S18748C1", // class name
  0,0,//no base classes
  &(vtc_S18748C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18748C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18748C1),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  S14001C1  {
  long s14001c1f0[32];
  short s14001c1f1[32];
  char s14001c1f2[2048];
};
//SIG(1 S14001C1) C1{ Fl[32] Fs[32] Fc[2048]}



static void Test_S14001C1()
{
  {
    init_simple_test("S14001C1");
    S14001C1 lv;
    check2(sizeof(lv), ABISELECT(2368,2240), "sizeof(S14001C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14001C1)");
    check_field_offset(lv, s14001c1f0, 0, "S14001C1.s14001c1f0");
    check_field_offset(lv, s14001c1f1, ABISELECT(256,128), "S14001C1.s14001c1f1");
    check_field_offset(lv, s14001c1f2, ABISELECT(320,192), "S14001C1.s14001c1f2");
  }
}
static Arrange_To_Call_Me vS14001C1(Test_S14001C1, "S14001C1", ABISELECT(2368,2240));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15178C1  {
  char s15178c1f0[163];
  void *s15178c1f1;
  int s15178c1f2[7];
  char s15178c1f3;
  void  mf15178c1(); // _ZN8S15178C19mf15178c1Ev
};
//SIG(1 S15178C1) C1{ m Fc[163] Fp Fi[7] Fc}


void  S15178C1 ::mf15178c1(){}

static void Test_S15178C1()
{
  {
    init_simple_test("S15178C1");
    S15178C1 lv;
    check2(sizeof(lv), ABISELECT(208,200), "sizeof(S15178C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15178C1)");
    check_field_offset(lv, s15178c1f0, 0, "S15178C1.s15178c1f0");
    check_field_offset(lv, s15178c1f1, ABISELECT(168,164), "S15178C1.s15178c1f1");
    check_field_offset(lv, s15178c1f2, ABISELECT(176,168), "S15178C1.s15178c1f2");
    check_field_offset(lv, s15178c1f3, ABISELECT(204,196), "S15178C1.s15178c1f3");
  }
}
static Arrange_To_Call_Me vS15178C1(Test_S15178C1, "S15178C1", ABISELECT(208,200));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16474C1  {
  ::S3164C31_nt s16474c1f0;
  int s16474c1f1;
  unsigned int s16474c1f2:1;
  unsigned int s16474c1f3:1;
  void  mf16474c1(); // _ZN8S16474C19mf16474c1Ev
};
//SIG(1 S16474C1) C1{ m FC2{ m} Fi Fi:1 Fi:1}


void  S16474C1 ::mf16474c1(){}

static void Test_S16474C1()
{
  {
    init_simple_test("S16474C1");
    static S16474C1 lv;
    check2(sizeof(lv), 12, "sizeof(S16474C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16474C1)");
    check_field_offset(lv, s16474c1f0, 0, "S16474C1.s16474c1f0");
    check_field_offset(lv, s16474c1f1, 4, "S16474C1.s16474c1f1");
    set_bf_and_test(lv, s16474c1f2, 8, 0, 1, 1, "S16474C1");
    set_bf_and_test(lv, s16474c1f3, 8, 1, 1, 1, "S16474C1");
  }
}
static Arrange_To_Call_Me vS16474C1(Test_S16474C1, "S16474C1", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18655C1  {
  char s18655c1f0[3];
  int s18655c1f1;
  virtual void  v1(); // _ZN8S18655C12v1Ev
  virtual void  v2(); // _ZN8S18655C12v2Ev
  virtual void  v3(); // _ZN8S18655C12v3Ev
  virtual void  v4(); // _ZN8S18655C12v4Ev
  ~S18655C1(); // tgen
  S18655C1(); // tgen
};
//SIG(1 S18655C1) C1{ v1 v2 v3 v4 Fc[3] Fi}


void  S18655C1 ::v1(){vfunc_called(this, "_ZN8S18655C12v1Ev");}
void  S18655C1 ::v2(){vfunc_called(this, "_ZN8S18655C12v2Ev");}
void  S18655C1 ::v3(){vfunc_called(this, "_ZN8S18655C12v3Ev");}
void  S18655C1 ::v4(){vfunc_called(this, "_ZN8S18655C12v4Ev");}
S18655C1 ::~S18655C1(){ note_dtor("S18655C1", this);} // tgen
S18655C1 ::S18655C1(){ note_ctor("S18655C1", this);} // tgen

static void Test_S18655C1()
{
  extern Class_Descriptor cd_S18655C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S18655C1, buf);
    S18655C1 *dp, &lv = *(dp=new (buf) S18655C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S18655C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18655C1)");
    check_field_offset(lv, s18655c1f0, ABISELECT(8,4), "S18655C1.s18655c1f0");
    check_field_offset(lv, s18655c1f1, ABISELECT(12,8), "S18655C1.s18655c1f1");
    test_class_info(&lv, &cd_S18655C1);
    dp->~S18655C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18655C1(Test_S18655C1, "S18655C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S18655C1C1Ev();
extern void _ZN8S18655C1D1Ev();
Name_Map name_map_S18655C1[] = {
  NSPAIR(_ZN8S18655C1C1Ev),
  NSPAIR(_ZN8S18655C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18655C1[];
extern void _ZN8S18655C12v1Ev();
extern void _ZN8S18655C12v2Ev();
extern void _ZN8S18655C12v3Ev();
extern void _ZN8S18655C12v4Ev();
static  VTBL_ENTRY vtc_S18655C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18655C1[0]),
  (VTBL_ENTRY)&_ZN8S18655C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18655C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18655C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18655C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18655C1[];
extern  VTBL_ENTRY _ZTV8S18655C1[];
Class_Descriptor cd_S18655C1 = {  "S18655C1", // class name
  0,0,//no base classes
  &(vtc_S18655C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S18655C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18655C1),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  S14254C1  {
  void *s14254c1f0;
  int s14254c1f1;
  void *s14254c1f2[7];
  int s14254c1f3;
  void *s14254c1f4[4];
};
//SIG(1 S14254C1) C1{ Fp Fi Fp[7] Fi Fp[4]}



static void Test_S14254C1()
{
  {
    init_simple_test("S14254C1");
    S14254C1 lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S14254C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14254C1)");
    check_field_offset(lv, s14254c1f0, 0, "S14254C1.s14254c1f0");
    check_field_offset(lv, s14254c1f1, ABISELECT(8,4), "S14254C1.s14254c1f1");
    check_field_offset(lv, s14254c1f2, ABISELECT(16,8), "S14254C1.s14254c1f2");
    check_field_offset(lv, s14254c1f3, ABISELECT(72,36), "S14254C1.s14254c1f3");
    check_field_offset(lv, s14254c1f4, ABISELECT(80,40), "S14254C1.s14254c1f4");
  }
}
static Arrange_To_Call_Me vS14254C1(Test_S14254C1, "S14254C1", ABISELECT(112,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16024C1  {
  ::S3164C4_nt s16024c1f0;
  void *s16024c1f1;
  int s16024c1f2;
  void  mf16024c1(); // _ZN8S16024C19mf16024c1Ev
};
//SIG(1 S16024C1) C1{ m FC2{ m Fi[2]} Fp Fi}


void  S16024C1 ::mf16024c1(){}

static void Test_S16024C1()
{
  {
    init_simple_test("S16024C1");
    S16024C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S16024C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16024C1)");
    check_field_offset(lv, s16024c1f0, 0, "S16024C1.s16024c1f0");
    check_field_offset(lv, s16024c1f1, 8, "S16024C1.s16024c1f1");
    check_field_offset(lv, s16024c1f2, ABISELECT(16,12), "S16024C1.s16024c1f2");
  }
}
static Arrange_To_Call_Me vS16024C1(Test_S16024C1, "S16024C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13339C2_nt  {
  int s13339c2f0[2];
};
//SIG(1 S13339C2_nt) C1{ Fi[2]}



//skip512 S13339C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13339C1  {
  int s13339c1f0[3];
  ::S13339C2_nt s13339c1f1[4];
};
//SIG(1 S13339C1) C1{ Fi[3] FC2{ Fi[2]}[4]}



static void Test_S13339C1()
{
  {
    init_simple_test("S13339C1");
    S13339C1 lv;
    check2(sizeof(lv), 44, "sizeof(S13339C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13339C1)");
    check_field_offset(lv, s13339c1f0, 0, "S13339C1.s13339c1f0");
    check_field_offset(lv, s13339c1f1, 12, "S13339C1.s13339c1f1");
  }
}
static Arrange_To_Call_Me vS13339C1(Test_S13339C1, "S13339C1", 44);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17745C1  {
  void *s17745c1f0;
  int s17745c1f1;
  void *s17745c1f2;
  int s17745c1f3;
  void *s17745c1f4[4];
  void  mf17745c1(); // _ZN8S17745C19mf17745c1Ev
};
//SIG(1 S17745C1) C1{ m Fp Fi Fp Fi Fp[4]}


void  S17745C1 ::mf17745c1(){}

static void Test_S17745C1()
{
  {
    init_simple_test("S17745C1");
    S17745C1 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S17745C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17745C1)");
    check_field_offset(lv, s17745c1f0, 0, "S17745C1.s17745c1f0");
    check_field_offset(lv, s17745c1f1, ABISELECT(8,4), "S17745C1.s17745c1f1");
    check_field_offset(lv, s17745c1f2, ABISELECT(16,8), "S17745C1.s17745c1f2");
    check_field_offset(lv, s17745c1f3, ABISELECT(24,12), "S17745C1.s17745c1f3");
    check_field_offset(lv, s17745c1f4, ABISELECT(32,16), "S17745C1.s17745c1f4");
  }
}
static Arrange_To_Call_Me vS17745C1(Test_S17745C1, "S17745C1", ABISELECT(64,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13132C1  {
  int s13132c1f0[2];
  ::S12048C6_nt s13132c1f1;
};
//SIG(1 S13132C1) C1{ Fi[2] FC2{ m Fi[3]}}



static void Test_S13132C1()
{
  {
    init_simple_test("S13132C1");
    S13132C1 lv;
    check2(sizeof(lv), 20, "sizeof(S13132C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13132C1)");
    check_field_offset(lv, s13132c1f0, 0, "S13132C1.s13132c1f0");
    check_field_offset(lv, s13132c1f1, 8, "S13132C1.s13132c1f1");
  }
}
static Arrange_To_Call_Me vS13132C1(Test_S13132C1, "S13132C1", 20);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11626C1  {
  ::S16076C4_nt s11626c1f0[16];
  int s11626c1f1;
};
//SIG(1 S11626C1) C1{ FC2{ Fi[3]}[16] Fi}



static void Test_S11626C1()
{
  {
    init_simple_test("S11626C1");
    S11626C1 lv;
    check2(sizeof(lv), 196, "sizeof(S11626C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11626C1)");
    check_field_offset(lv, s11626c1f0, 0, "S11626C1.s11626c1f0");
    check_field_offset(lv, s11626c1f1, 192, "S11626C1.s11626c1f1");
  }
}
static Arrange_To_Call_Me vS11626C1(Test_S11626C1, "S11626C1", 196);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6005C1  : S3164C7_nt {
  void *s6005c1f0;
};
//SIG(1 S6005C1) C1{ BC2{ m Fp Fi[2]} Fp}



static void Test_S6005C1()
{
  extern Class_Descriptor cd_S6005C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6005C1, buf);
    S6005C1 &lv = *(new (buf) S6005C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6005C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6005C1)");
    check_base_class_offset(lv, (S3164C7_nt*), 0, "S6005C1");
    check_field_offset(lv, s6005c1f0, ABISELECT(16,12), "S6005C1.s6005c1f0");
    test_class_info(&lv, &cd_S6005C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6005C1(Test_S6005C1, "S6005C1", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S3164C7_nt;
static Base_Class bases_S6005C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6005C1 = {  "S6005C1", // class name
  bases_S6005C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12066C1  {
  ::S3164C4_nt s12066c1f0;
  short s12066c1f1;
  int s12066c1f2;
};
//SIG(1 S12066C1) C1{ FC2{ m Fi[2]} Fs Fi}



static void Test_S12066C1()
{
  {
    init_simple_test("S12066C1");
    S12066C1 lv;
    check2(sizeof(lv), 16, "sizeof(S12066C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12066C1)");
    check_field_offset(lv, s12066c1f0, 0, "S12066C1.s12066c1f0");
    check_field_offset(lv, s12066c1f1, 8, "S12066C1.s12066c1f1");
    check_field_offset(lv, s12066c1f2, 12, "S12066C1.s12066c1f2");
  }
}
static Arrange_To_Call_Me vS12066C1(Test_S12066C1, "S12066C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15242C1  {
  char s15242c1f0[32768];
  void *s15242c1f1[3];
  void  mf15242c1(); // _ZN8S15242C19mf15242c1Ev
};
//SIG(1 S15242C1) C1{ m Fc[32768] Fp[3]}


void  S15242C1 ::mf15242c1(){}

static void Test_S15242C1()
{
  {
    init_simple_test("S15242C1");
    S15242C1 lv;
    check2(sizeof(lv), ABISELECT(32792,32780), "sizeof(S15242C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15242C1)");
    check_field_offset(lv, s15242c1f0, 0, "S15242C1.s15242c1f0");
    check_field_offset(lv, s15242c1f1, 32768, "S15242C1.s15242c1f1");
  }
}
static Arrange_To_Call_Me vS15242C1(Test_S15242C1, "S15242C1", ABISELECT(32792,32780));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18418C1  {
  short s18418c1f0;
  char s18418c1f1;
  long s18418c1f2;
  __tsi64 s18418c1f3;
  void *s18418c1f4;
  void  mf18418c1(); // _ZN8S18418C19mf18418c1Ev
};
//SIG(1 S18418C1) C1{ m Fs Fc Fl FL Fp}


void  S18418C1 ::mf18418c1(){}

static void Test_S18418C1()
{
  {
    init_simple_test("S18418C1");
    S18418C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18418C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18418C1)");
    check_field_offset(lv, s18418c1f0, 0, "S18418C1.s18418c1f0");
    check_field_offset(lv, s18418c1f1, 2, "S18418C1.s18418c1f1");
    check_field_offset(lv, s18418c1f2, ABISELECT(8,4), "S18418C1.s18418c1f2");
    check_field_offset(lv, s18418c1f3, ABISELECT(16,8), "S18418C1.s18418c1f3");
    check_field_offset(lv, s18418c1f4, ABISELECT(24,16), "S18418C1.s18418c1f4");
  }
}
static Arrange_To_Call_Me vS18418C1(Test_S18418C1, "S18418C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21636C1  {
  int s21636c1f0;
  void *s21636c1f1[4];
  int s21636c1f2;
  void  mf21636c1(); // _ZN8S21636C19mf21636c1Ev
  virtual  ~S21636C1(); // _ZN8S21636C1D1Ev
  S21636C1(); // tgen
};
//SIG(1 S21636C1) C1{ vd m Fi Fp[4] Fi}


void  S21636C1 ::mf21636c1(){}
 S21636C1 ::~S21636C1(){ note_dtor("S21636C1", this);}
S21636C1 ::S21636C1(){ note_ctor("S21636C1", this);} // tgen

static void Test_S21636C1()
{
  extern Class_Descriptor cd_S21636C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S21636C1, buf);
    S21636C1 *dp, &lv = *(dp=new (buf) S21636C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S21636C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21636C1)");
    check_field_offset(lv, s21636c1f0, ABISELECT(8,4), "S21636C1.s21636c1f0");
    check_field_offset(lv, s21636c1f1, ABISELECT(16,8), "S21636C1.s21636c1f1");
    check_field_offset(lv, s21636c1f2, ABISELECT(48,24), "S21636C1.s21636c1f2");
    test_class_info(&lv, &cd_S21636C1);
    dp->~S21636C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21636C1(Test_S21636C1, "S21636C1", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S21636C1C1Ev();
extern void _ZN8S21636C1D1Ev();
Name_Map name_map_S21636C1[] = {
  NSPAIR(_ZN8S21636C1C1Ev),
  NSPAIR(_ZN8S21636C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21636C1[];
extern void _ZN8S21636C1D1Ev();
extern void _ZN8S21636C1D0Ev();
static  VTBL_ENTRY vtc_S21636C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21636C1[0]),
  (VTBL_ENTRY)&_ZN8S21636C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21636C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21636C1[];
extern  VTBL_ENTRY _ZTV8S21636C1[];
Class_Descriptor cd_S21636C1 = {  "S21636C1", // class name
  0,0,//no base classes
  &(vtc_S21636C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S21636C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21636C1),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  S19790C1  : virtual S2367C19 {
  virtual  ~S19790C1(); // _ZN8S19790C1D2Ev
  virtual void  v1(); // _ZN8S19790C12v1Ev
  S19790C1(); // tgen
};
//SIG(1 S19790C1) C1{ VBC2{ m Fp} vd v1}


 S19790C1 ::~S19790C1(){ note_dtor("S19790C1", this);}
void  S19790C1 ::v1(){vfunc_called(this, "_ZN8S19790C12v1Ev");}
S19790C1 ::S19790C1(){ note_ctor("S19790C1", this);} // tgen

static void Test_S19790C1()
{
  extern Class_Descriptor cd_S19790C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19790C1, buf);
    S19790C1 *dp, &lv = *(dp=new (buf) S19790C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19790C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19790C1)");
    check_base_class_offset(lv, (S2367C19*), ABISELECT(8,4), "S19790C1");
    test_class_info(&lv, &cd_S19790C1);
    dp->~S19790C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19790C1(Test_S19790C1, "S19790C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19790C1C1Ev();
extern void _ZN8S19790C1D2Ev();
Name_Map name_map_S19790C1[] = {
  NSPAIR(_ZN8S19790C1C1Ev),
  NSPAIR(_ZN8S19790C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2367C19;
extern VTBL_ENTRY _ZTI8S2367C19[];
static Base_Class bases_S19790C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2367C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19790C1[];
extern void _ZN8S19790C1D1Ev();
extern void _ZN8S19790C1D0Ev();
extern void _ZN8S19790C12v1Ev();
static  VTBL_ENTRY vtc_S19790C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19790C1[0]),
  (VTBL_ENTRY)&_ZN8S19790C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19790C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19790C12v1Ev,
};
extern VTBL_ENTRY _ZTV8S19790C1[];
static  VTT_ENTRY vtt_S19790C1[] = {
  {&(_ZTV8S19790C1[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S19790C1[];
extern  VTBL_ENTRY _ZTV8S19790C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19790C1[];
Class_Descriptor cd_S19790C1 = {  "S19790C1", // class name
  bases_S19790C1, 1,
  &(vtc_S19790C1[0]), // expected_vtbl_contents
  &(vtt_S19790C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19790C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19790C1),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19790C1),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  S10620C1  {
  char s10620c1f0[16];
  int s10620c1f1[5];
  void *s10620c1f2;
};
//SIG(1 S10620C1) C1{ Fc[16] Fi[5] Fp}



static void Test_S10620C1()
{
  {
    init_simple_test("S10620C1");
    S10620C1 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S10620C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10620C1)");
    check_field_offset(lv, s10620c1f0, 0, "S10620C1.s10620c1f0");
    check_field_offset(lv, s10620c1f1, 16, "S10620C1.s10620c1f1");
    check_field_offset(lv, s10620c1f2, ABISELECT(40,36), "S10620C1.s10620c1f2");
  }
}
static Arrange_To_Call_Me vS10620C1(Test_S10620C1, "S10620C1", ABISELECT(48,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6242C1  : S3164C31_nt {
  void *s6242c1f0[2];
  int s6242c1f1;
};
//SIG(1 S6242C1) C1{ BC2{ m} Fp[2] Fi}



static void Test_S6242C1()
{
  extern Class_Descriptor cd_S6242C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6242C1, buf);
    S6242C1 &lv = *(new (buf) S6242C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6242C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6242C1)");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S6242C1");
    check_field_offset(lv, s6242c1f0, 0, "S6242C1.s6242c1f0");
    check_field_offset(lv, s6242c1f1, ABISELECT(16,8), "S6242C1.s6242c1f1");
    test_class_info(&lv, &cd_S6242C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6242C1(Test_S6242C1, "S6242C1", ABISELECT(24,12));

#else // __cplusplus

extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S6242C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6242C1 = {  "S6242C1", // class name
  bases_S6242C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10482C1  {
  char s10482c1f0;
  int s10482c1f1[4];
  void *s10482c1f2;
  int s10482c1f3;
};
//SIG(1 S10482C1) C1{ Fc Fi[4] Fp Fi}



static void Test_S10482C1()
{
  {
    init_simple_test("S10482C1");
    S10482C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S10482C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10482C1)");
    check_field_offset(lv, s10482c1f0, 0, "S10482C1.s10482c1f0");
    check_field_offset(lv, s10482c1f1, 4, "S10482C1.s10482c1f1");
    check_field_offset(lv, s10482c1f2, ABISELECT(24,20), "S10482C1.s10482c1f2");
    check_field_offset(lv, s10482c1f3, ABISELECT(32,24), "S10482C1.s10482c1f3");
  }
}
static Arrange_To_Call_Me vS10482C1(Test_S10482C1, "S10482C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10351C1  : S19553C10_nt {
  ::S2367C19 s10351c1f0;
};
//SIG(1 S10351C1) C1{ BC2{} FC3{ m Fp}}



static void Test_S10351C1()
{
  extern Class_Descriptor cd_S10351C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S10351C1, buf);
    S10351C1 &lv = *(new (buf) S10351C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S10351C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10351C1)");
    check_base_class_offset(lv, (S19553C10_nt*), 0, "S10351C1");
    check_field_offset(lv, s10351c1f0, 0, "S10351C1.s10351c1f0");
    test_class_info(&lv, &cd_S10351C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10351C1(Test_S10351C1, "S10351C1", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S19553C10_nt;
static Base_Class bases_S10351C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19553C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S10351C1 = {  "S10351C1", // class name
  bases_S10351C1, 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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17760C1  {
  void *s17760c1f0;
  int s17760c1f1;
  void *s17760c1f2[3];
  void  mf17760c1(); // _ZN8S17760C19mf17760c1Ev
};
//SIG(1 S17760C1) C1{ m Fp Fi Fp[3]}


void  S17760C1 ::mf17760c1(){}

static void Test_S17760C1()
{
  {
    init_simple_test("S17760C1");
    S17760C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S17760C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17760C1)");
    check_field_offset(lv, s17760c1f0, 0, "S17760C1.s17760c1f0");
    check_field_offset(lv, s17760c1f1, ABISELECT(8,4), "S17760C1.s17760c1f1");
    check_field_offset(lv, s17760c1f2, ABISELECT(16,8), "S17760C1.s17760c1f2");
  }
}
static Arrange_To_Call_Me vS17760C1(Test_S17760C1, "S17760C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17793C1  {
  void *s17793c1f0;
  int s17793c1f1[2];
  long s17793c1f2;
  void  mf17793c1(); // _ZN8S17793C19mf17793c1Ev
};
//SIG(1 S17793C1) C1{ m Fp Fi[2] Fl}


void  S17793C1 ::mf17793c1(){}

static void Test_S17793C1()
{
  {
    init_simple_test("S17793C1");
    S17793C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S17793C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17793C1)");
    check_field_offset(lv, s17793c1f0, 0, "S17793C1.s17793c1f0");
    check_field_offset(lv, s17793c1f1, ABISELECT(8,4), "S17793C1.s17793c1f1");
    check_field_offset(lv, s17793c1f2, ABISELECT(16,12), "S17793C1.s17793c1f2");
  }
}
static Arrange_To_Call_Me vS17793C1(Test_S17793C1, "S17793C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12955C1  {
  int s12955c1f0[12];
  long s12955c1f1;
  void *s12955c1f2;
};
//SIG(1 S12955C1) C1{ Fi[12] Fl Fp}



static void Test_S12955C1()
{
  {
    init_simple_test("S12955C1");
    S12955C1 lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S12955C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12955C1)");
    check_field_offset(lv, s12955c1f0, 0, "S12955C1.s12955c1f0");
    check_field_offset(lv, s12955c1f1, 48, "S12955C1.s12955c1f1");
    check_field_offset(lv, s12955c1f2, ABISELECT(56,52), "S12955C1.s12955c1f2");
  }
}
static Arrange_To_Call_Me vS12955C1(Test_S12955C1, "S12955C1", ABISELECT(64,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14369C1  {
  void *s14369c1f0;
  int s14369c1f1[6];
  void *s14369c1f2;
};
//SIG(1 S14369C1) C1{ Fp Fi[6] Fp}



static void Test_S14369C1()
{
  {
    init_simple_test("S14369C1");
    S14369C1 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S14369C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14369C1)");
    check_field_offset(lv, s14369c1f0, 0, "S14369C1.s14369c1f0");
    check_field_offset(lv, s14369c1f1, ABISELECT(8,4), "S14369C1.s14369c1f1");
    check_field_offset(lv, s14369c1f2, ABISELECT(32,28), "S14369C1.s14369c1f2");
  }
}
static Arrange_To_Call_Me vS14369C1(Test_S14369C1, "S14369C1", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14197C1  {
  void *s14197c1f0;
  int s14197c1f1;
  __tsi64 s14197c1f2;
  char s14197c1f3;
};
//SIG(1 S14197C1) C1{ Fp Fi FL Fc}



static void Test_S14197C1()
{
  {
    init_simple_test("S14197C1");
    S14197C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S14197C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14197C1)");
    check_field_offset(lv, s14197c1f0, 0, "S14197C1.s14197c1f0");
    check_field_offset(lv, s14197c1f1, ABISELECT(8,4), "S14197C1.s14197c1f1");
    check_field_offset(lv, s14197c1f2, ABISELECT(16,8), "S14197C1.s14197c1f2");
    check_field_offset(lv, s14197c1f3, ABISELECT(24,16), "S14197C1.s14197c1f3");
  }
}
static Arrange_To_Call_Me vS14197C1(Test_S14197C1, "S14197C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13446C1  {
  int s13446c1f0[4];
  char s13446c1f1[4];
};
//SIG(1 S13446C1) C1{ Fi[4] Fc[4]}



static void Test_S13446C1()
{
  {
    init_simple_test("S13446C1");
    S13446C1 lv;
    check2(sizeof(lv), 20, "sizeof(S13446C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13446C1)");
    check_field_offset(lv, s13446c1f0, 0, "S13446C1.s13446c1f0");
    check_field_offset(lv, s13446c1f1, 16, "S13446C1.s13446c1f1");
  }
}
static Arrange_To_Call_Me vS13446C1(Test_S13446C1, "S13446C1", 20);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6251C1  : S3164C31_nt {
  short s6251c1f0;
  long double s6251c1f1;
};
//SIG(1 S6251C1) C1{ BC2{ m} Fs FD}



static void Test_S6251C1()
{
  extern Class_Descriptor cd_S6251C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S6251C1, buf);
    S6251C1 &lv = *(new (buf) S6251C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6251C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6251C1)");
    check_base_class_offset(lv, (S3164C31_nt*), 0, "S6251C1");
    check_field_offset(lv, s6251c1f0, 0, "S6251C1.s6251c1f0");
    check_field_offset(lv, s6251c1f1, ABISELECT(16,4), "S6251C1.s6251c1f1");
    test_class_info(&lv, &cd_S6251C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6251C1(Test_S6251C1, "S6251C1", ABISELECT(32,16));

#else // __cplusplus

extern Class_Descriptor cd_S3164C31_nt;
extern VTBL_ENTRY _ZTI11S3164C31_nt[];
static Base_Class bases_S6251C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3164C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6251C1 = {  "S6251C1", // class name
  bases_S6251C1, 1,
  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  S10791C1  {
  char s10791c1f0[272];
  void *s10791c1f1;
};
//SIG(1 S10791C1) C1{ Fc[272] Fp}



static void Test_S10791C1()
{
  {
    init_simple_test("S10791C1");
    S10791C1 lv;
    check2(sizeof(lv), ABISELECT(280,276), "sizeof(S10791C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10791C1)");
    check_field_offset(lv, s10791c1f0, 0, "S10791C1.s10791c1f0");
    check_field_offset(lv, s10791c1f1, 272, "S10791C1.s10791c1f1");
  }
}
static Arrange_To_Call_Me vS10791C1(Test_S10791C1, "S10791C1", ABISELECT(280,276));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14830C1  {
  short s14830c1f0;
  void *s14830c1f1;
  int s14830c1f2;
};
//SIG(1 S14830C1) C1{ Fs Fp Fi}



static void Test_S14830C1()
{
  {
    init_simple_test("S14830C1");
    S14830C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S14830C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14830C1)");
    check_field_offset(lv, s14830c1f0, 0, "S14830C1.s14830c1f0");
    check_field_offset(lv, s14830c1f1, ABISELECT(8,4), "S14830C1.s14830c1f1");
    check_field_offset(lv, s14830c1f2, ABISELECT(16,8), "S14830C1.s14830c1f2");
  }
}
static Arrange_To_Call_Me vS14830C1(Test_S14830C1, "S14830C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18529C1  {
  __tsi64 s18529c1f0[9];
  virtual void  v1(); // _ZN8S18529C12v1Ev
  ~S18529C1(); // tgen
  S18529C1(); // tgen
};
//SIG(1 S18529C1) C1{ v1 FL[9]}


void  S18529C1 ::v1(){vfunc_called(this, "_ZN8S18529C12v1Ev");}
S18529C1 ::~S18529C1(){ note_dtor("S18529C1", this);} // tgen
S18529C1 ::S18529C1(){ note_ctor("S18529C1", this);} // tgen

static void Test_S18529C1()
{
  extern Class_Descriptor cd_S18529C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,20)];
    init_test(&cd_S18529C1, buf);
    S18529C1 *dp, &lv = *(dp=new (buf) S18529C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,76), "sizeof(S18529C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18529C1)");
    check_field_offset(lv, s18529c1f0, ABISELECT(8,4), "S18529C1.s18529c1f0");
    test_class_info(&lv, &cd_S18529C1);
    dp->~S18529C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18529C1(Test_S18529C1, "S18529C1", ABISELECT(80,76));

#else // __cplusplus

extern void _ZN8S18529C1C1Ev();
extern void _ZN8S18529C1D1Ev();
Name_Map name_map_S18529C1[] = {
  NSPAIR(_ZN8S18529C1C1Ev),
  NSPAIR(_ZN8S18529C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18529C1[];
extern void _ZN8S18529C12v1Ev();
static  VTBL_ENTRY vtc_S18529C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18529C1[0]),
  (VTBL_ENTRY)&_ZN8S18529C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18529C1[];
extern  VTBL_ENTRY _ZTV8S18529C1[];
Class_Descriptor cd_S18529C1 = {  "S18529C1", // class name
  0,0,//no base classes
  &(vtc_S18529C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,76), // object size
  NSPAIRA(_ZTI8S18529C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18529C1),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17009C1  {
  int s17009c1f0:12;
  void  mf17009c1(); // _ZN8S17009C19mf17009c1Ev
};
//SIG(1 S17009C1) C1{ m Fi:12}


void  S17009C1 ::mf17009c1(){}

static void Test_S17009C1()
{
  {
    init_simple_test("S17009C1");
    static S17009C1 lv;
    check2(sizeof(lv), 4, "sizeof(S17009C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17009C1)");
    set_bf_and_test(lv, s17009c1f0, 0, 0, 12, 1, "S17009C1");
    set_bf_and_test(lv, s17009c1f0, 0, 0, 12, hide_sll(1LL<<11), "S17009C1");
  }
}
static Arrange_To_Call_Me vS17009C1(Test_S17009C1, "S17009C1", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13277C1  {
  int s13277c1f0[22];
};
//SIG(1 S13277C1) C1{ Fi[22]}



static void Test_S13277C1()
{
  {
    init_simple_test("S13277C1");
    S13277C1 lv;
    check2(sizeof(lv), 88, "sizeof(S13277C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13277C1)");
    check_field_offset(lv, s13277c1f0, 0, "S13277C1.s13277c1f0");
  }
}
static Arrange_To_Call_Me vS13277C1(Test_S13277C1, "S13277C1", 88);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

